Difference between revisions of "CSC111 Exercises on Classes and Objects"

From dftwiki3
Jump to: navigation, search
(Exercise 3)
(Exercise 4)
Line 56: Line 56:
 
<br />
 
<br />
 
<br />
 
<br />
 +
=Solution Put Together in Class=
 +
<br />
 +
<source lang="python">
 +
class Bob:
 +
  def __init__( self ):
 +
        self._a = None
 +
 +
  def setA( self, x ):
 +
        self._a = x
 +
 +
  def getA( self ):
 +
      return self._a
 +
 +
  def __str__( self ):
 +
      return "*** %d ***" % self._a
 +
 +
class Bobs:
 +
    def __init__( self ):
 +
        self._L = []
 +
 +
    def myAppend( self, bobObject ):
 +
        self._L.append( bobObject )
 +
 +
    def __str__( self ):
 +
        s = "Bobs List:\n"
 +
        for x in self._L:
 +
            s = s + x.__str__() + "\n"
 +
        return s
 +
       
 +
def main():
 +
 +
    L3 = Bobs()
 +
    for i in range( 1, 21 ):
 +
        z = Bob()
 +
        z.setA( i )
 +
        L3.myAppend( z )
 +
 +
    print( L3 )
 +
   
 +
def firstPart():
 +
        # Exercise 1
 +
    """
 +
    x = Bob()
 +
    x.setA( 4 )
 +
    print( x.getA() )
 +
    #print( x )
 +
    #x.setA( x.getA() + 10 )
 +
    value = x.getA()
 +
    x.setA( value + 10 )
 +
   
 +
    print( x )
 +
    """
 +
    # Exercise 2
 +
    """
 +
    x = Bob()
 +
    x.a = 4
 +
    print( x )
 +
    x.a += 10
 +
    #x.a = x.a + 10
 +
    print( x )
 +
    """
 +
 +
    # Exercise 3
 +
    """
 +
    x = Bob()
 +
    y = Bob()
 +
    x.setA( 45 )
 +
    y.setA( 70 )
 +
    L = [ x, y ]
 +
   
 +
    for z in L:
 +
        print( z )
 +
 +
    x = None
 +
    y = None
 +
 +
    #L[0].setA( 10 )
 +
    #L[1].setA( 20 )
 +
    z = L[0]
 +
    z.setA( 10 )
 +
    z = L[1]
 +
    z.setA( 20 )
 +
    """
 +
    """
 +
    L2 = []
 +
    for i in range( 1, 21 ):
 +
       
 +
        #print( "i=", i )
 +
        z = Bob()
 +
        z.setA( i )
 +
        L2.append( z )
 +
 +
    for z in L2:
 +
        print( "z = ", z )
 +
    """
 +
main()
 +
 +
</source>
 
<br />
 
<br />
 
<br />
 
<br />

Revision as of 12:19, 14 April 2014

--D. Thiebaut (talk) 13:05, 13 April 2014 (EDT)


Exercise 1


class Bob:
   def __init__( self ):
        self._a = None

   def setA( self, x ):
        self._a = x

   def getA( self ):
       return self._a


Question 1
Create an object of type Bob, call it x, and set its member variable to 4
Question 2
Add 10 to the member variable of x.
Question 3
print the object contents of Object x. First by getting _a from x and printing it, then by adding a new method to Bob so that we can print objects just by passing them to print()


Exercise 2


This exercise is very similar to Exercise 1, but the definition of self._a is now self.a. Answer the same 3 questions.



Exercise 3


Go back to Bob containing a private member variable.

Question 1
Create 2 objects of type Bob, each containing the values 45 and 70, respectively, and save them in a list called L. Verify that the list contains these 2 objects.


Question 2
Change the value of the first element of the list to 10, and the value of the second one to 20. Verify that the change was made.


Question 3
Create 20 objects of type Bob, each containing 1, 2, 3,... 20, respectively, and save them in a list called L2. Display the contents of the list.


Question 4
Reset the values in all 20 objects in L2 to 0. Verify that the reset operation was successful.


Exercise 4


This exercise is very similar to Exercise 3, but we construct a new class that contains a list of objects of type Bob. Answer the same questions as in Exercise 3.




Solution Put Together in Class


class Bob:
   def __init__( self ):
        self._a = None

   def setA( self, x ):
        self._a = x

   def getA( self ):
       return self._a

   def __str__( self ):
       return "*** %d ***" % self._a

class Bobs:
    def __init__( self ):
        self._L = []

    def myAppend( self, bobObject ):
        self._L.append( bobObject )

    def __str__( self ):
        s = "Bobs List:\n"
        for x in self._L:
            s = s + x.__str__() + "\n"
        return s
        
def main():

    L3 = Bobs()
    for i in range( 1, 21 ):
        z = Bob()
        z.setA( i )
        L3.myAppend( z )

    print( L3 )
    
def firstPart():
        # Exercise 1
    """
    x = Bob()
    x.setA( 4 )
    print( x.getA() )
    #print( x )
    #x.setA( x.getA() + 10 )
    value = x.getA()
    x.setA( value + 10 )
    
    print( x )
    """
    # Exercise 2
    """
    x = Bob()
    x.a = 4
    print( x )
    x.a += 10
    #x.a = x.a + 10
    print( x )
    """

    # Exercise 3
    """
    x = Bob()
    y = Bob()
    x.setA( 45 )
    y.setA( 70 )
    L = [ x, y ]
    
    for z in L:
        print( z )

    x = None
    y = None

    #L[0].setA( 10 )
    #L[1].setA( 20 )
    z = L[0]
    z.setA( 10 )
    z = L[1]
    z.setA( 20 )
    """
    """
    L2 = []
    for i in range( 1, 21 ):
        
        #print( "i=", i )
        z = Bob()
        z.setA( i )
        L2.append( z )

    for z in L2:
        print( "z = ", z )
    """
main()