Presentation is loading. Please wait.

Presentation is loading. Please wait.

Classes and Objects, Part 1 Victor Norman CS104. Reading Quiz, Q1 A class definition define these two elements. A. attributes and functions B. attributes.

Similar presentations


Presentation on theme: "Classes and Objects, Part 1 Victor Norman CS104. Reading Quiz, Q1 A class definition define these two elements. A. attributes and functions B. attributes."— Presentation transcript:

1 Classes and Objects, Part 1 Victor Norman CS104

2 Reading Quiz, Q1 A class definition define these two elements. A. attributes and functions B. attributes and properties C. functions and methods D. attributes and methods

3 Reading Quiz, Q2 In code written in a class definition, the following parameter is used to refer to the object: A.__init__ B.self C.this D.attribute

4 Reading Quiz, Q3 Given the following class definition, which line of code creates a new object? class Car: def __init__(self, make, model): self._make = make self._model = model A.Car.__init__(car, “Honda”, “Accord”) B.car = Car.__init__(self, “Honda”, “Accord”) C.car = __init__(Car, “Honda”, “Accord”) D.None of the above.

5 “Records” In Excel, you can create rows that represent individual things, with each column representing some property of that thing. E.g., each row could represent a student, with – column 1: student id – column 2: student last name – column 3: student first name – column 4: gpa – column 5: how much tuition is owed… Each row *must* stay together: don’t want to move values from one row to another.

6 How to do this in python? How could we make a collection of items/values that belong together? – Have to use a composite data type. – i.e., lists or tuples. Question: does order of items/values really matter?

7 Ancient History (last Thursday) A card is a tuple with 2 parts, a suit (one of “s”, “d”, “c”, “h”) and a number (2 – 14). We create a card by making a tuple. We access the suit via card[0] and number via card[1]. What is good and what is bad about this implementation?

8 What types of variables can we make? Is this good enough? Wouldn’t it be nice if we could create our own types?

9 Big Question What defines a type? Data + operations – what you can store. – what you can do to or with it.

10 Terminology a class is like a recipe (or template). – you don't eat the recipe, right? an object is an instantiation of that class – that's what you eat. Or, a class is a new type. Each class is defined by its – name – attributes (characteristics, properties, fields) – methods (functions) We already know how to define functions, but we don’t know how to group them together, to say, “These belong together, and they operate on this data.”

11 Using a List/Tuple to store data If we want to group together data into one structure/record, we could use a list (or a tuple): student1 = [‘Dan’, 4, [80, 82, 6]] student2 = [‘Paula’, 2, [49, 90, 87]] Disadvantages: – Looking at the list, cannot tell what the “fields” mean. (What is the 1th item?) – List has order, which we don’t need.

12 One fix: use functions We could create functions to extract and name the data: def getName(stud): return stud[0] def getYear(stud): return stud[1] def getLowestGrade(stud): # code here to iterate through stud[2] name = getName(student1) year = getYear(student2) if getLowestGrade(student1) > getLowestGrade(student2): print “Good job, student!”

13 Thoughts on this… It is a big improvement, but… Change the order of the data in the list  you have to change the function code. What is stud[1]? The code in the functions is still unreadable. (First grade is stud[2][0].) You cannot enforce that users of this list will use the provided functions to get the values. First parameter to every function is the student data structure.

14 Better: classes and objects a class is like a recipe (or template). – you don't eat the recipe, right? an object is an instantiation of that class – that's what you eat. Or, a class is a new type. Each class is defined by its – name – attributes (characteristics, properties, fields) – methods (functions) We already know how to define functions, but we don’t know how to group them together, to say, “These belong together, and they operate on this data.”

15 Examples list is a built-in python class. – holds ordered objects. – has methods defined: append(), extend(), index(), [], [x:y], +, pop(), etc. Instantiate it as often as you want. girls = [‘Kim’, ‘Taylor’, ‘Beyonce’] guys = [‘Stone’, ‘Rock’, ‘Lance’]

16 Attributes and Methods Attribute: a “field” in an object. – A.k.a. a characteristic, property, or an instance variable. – a “noun”: something an object “has”. Method: Operation/function you ask an object to do to itself. – it is a verb.

17 Clicker Q Which of the following is not a good attribute name of a Car? A.numWheels B.accelerate C.color D.year E.manufacturer

18 Clicker Q2 Which of the following is not a good method name of a Person class? A.hairColor B.speak C.climbStairs D.walk E.jump

19 Syntax to do all this Need to define the class… – name – attributes of an object – methods that can be called to operate on the object.

20 Syntax of class definition class Student: # use Capital Letter “””A class that represents a Student.””” def __init__(self, name, year, grades): “””Constructor to make a new students instance (object).””” self.myName = name self.myYear = year self.myGrades = grades student1 = Student( “Dan”, 4, [80, 82, 6] ) First, define how to create an instance of a Student class. Assign given parameter values to attributes in new object. self is the new instance (object) being created and initialized

21 self Note that there is code “on the inside” – code inside the class definition. Code in __init__, getName(), etc. This code refers to the object as self. Then, there is code on the outside: stud1 = Student( “Dan”, 4, [100, 90, 80] ) This code refers to the object as stud1 (or whatever variable refers to the object).

22 Differences from using a list fields have clear names! –self.name is the student’s name, instead of stud[0]. fields are not stored in any order: just “owned” by the object.

23 cs104Student.click() How many syntax errors are there in this code?: class Car def _init_(make, model, year): self.myMake = make self.myModel = model myYear = year

24 cs104Student.clickAgain() Given this class definition: class Car: def __init__(self, make, model, year): self.myMake = make self.myModel = model self.myYear = year which is legal code to make a new Car instance? A.aCar = Car.__init__(self, “Honda”, “Odyssey”, 2001) B.aCar = Car.__init__("Honda", "Odyssey", 2001) C.aCar = Car("Honda", "Odyssey", 2001) D.aCar = Car(self, "Honda", "Odyssey", 2001) E.Car(aCar, "Honda", "Odyssey", 2001)

25 getters/accessors and setters/mutators First methods typically written are to allow code that uses the class to access/change the attributes: If you define attribute xyz, you create: def getXyz(self): “”“return the xyz value for this object””” return self.xyz def setXyz(self, newXyz): “””set the attribute xyz to the new value””” self.xyz = newXyz

26 Example class Student: def __init__(self, name, year, grades): self.myName = name self.myYear = year def getName(self): return self.myName def setName(self, newName): self.myName = newName def getYear(self): return self.myYear def setYear(self, newYear): self.myYear = newYear # Create a student student1 = Student( “Angelina”, 10, [] )

27 Example Continued # Old Code: name = getName(student1) year = getYear(student2) if getLowestGrade(student1) > getLowestGrade(student2): print “Good job, student!” # Now: name = student1.getName() year = student2.getYear() if student1.getLowestGrade() > student2.getLowestGrade(): print “God job, student!” self “inside” the code

28 If there is time… List 8 properties you might want to store about a Car. List the type of each property. Write the first line of the class definition, and the constructor. The constructor initializes attributes to given values. Write a getter method for each of 2 attributes. Write a setter method for 2 attributes that can be changed.


Download ppt "Classes and Objects, Part 1 Victor Norman CS104. Reading Quiz, Q1 A class definition define these two elements. A. attributes and functions B. attributes."

Similar presentations


Ads by Google