Classes and Objects, Part 1 Victor Norman CS104. Reading Quiz, Q1 A class definition define these...

27
Classes and Objects, Part 1 Victor Norman CS104

Transcript of Classes and Objects, Part 1 Victor Norman CS104. Reading Quiz, Q1 A class definition define these...

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

Classes and Objects, Part 1

Victor NormanCS104

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

Reading Quiz, Q1

A class definition define these two elements.

A. attributes and functionsB. attributes and propertiesC. functions and methodsD. attributes and methods

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

Reading Quiz, Q2

In code written in a class definition, the following parameter is used to refer to the object:

A. __init__B. selfC. thisD. attribute

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

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.

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

“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.

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

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?

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

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?

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

What types of variables can we make?

• Is this good enough?

Wouldn’t it be nice if we could create our own types?

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

Big Question

What defines a type?

• Data + operations– what you can store.– what you can do to or with it.

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

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.

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

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!”

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

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.

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

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.”

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

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’]

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

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.

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

Clicker Q

Which of the following is not a good attribute name of a Car?A. numWheelsB. accelerateC. colorD. yearE. manufacturer

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

Clicker Q2

Which of the following is not a good method name of a Person class?A. hairColorB. speakC. climbStairsD. walkE. jump

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

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.

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

Syntax of class definitionclass 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

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

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

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

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.

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

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

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

cs104Student.clickAgain()Given this class definition:class Car: def __init__(self, make, model, year): self.myMake = make self.myModel = model self.myYear = yearwhich 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)

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

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.xyzdef setXyz(self, newXyz): “””set the attribute xyz to the new value””” self.xyz = newXyz

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

Exampleclass 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 studentstudent1 = Student( “Angelina”, 10, [] )

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

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

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

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.