CSC111 Exercises on Classes and Objects

From dftwiki3
Revision as of 11:19, 14 April 2014 by Thiebaut (talk | contribs) (Exercise 4)
Jump to: navigation, search

--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()