180 likes | 287 Views
Section 6.1. CS 106, Fall 2013. The Big Q. What do we get by being able to define a class?! Or Do we really need this?!. What do you think?. How to represent a playing card?. A card is a tuple with 2 parts, a suit (one of “s”, “d”, “c”, “h”) and a denom (2 – 14).
E N D
Section 6.1 CS 106, Fall 2013
The Big Q What do we get by being able to define a class?! Or Do we really need this?!
How to represent a playing card? • A card is a tuple with 2 parts, a suit (one of “s”, “d”, “c”, “h”) and a denom (2 – 14). • We create a card by making a tuple. • We access the suit via card[0] and denom via card[1]. • What is good and what is bad about this implementation?
What types of variables can we make? • Is this good enough?
Second big Q What defines a type? • Data + operations • what you can store. • what you can do to or with it.
Lecture... • 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.
Class (or Type) • Marriage of data and methods. • Boundary between caller and implementer • perspective on the world. • self is a pointer to the object, from within the code. • Each object has its own namespace, accessible via self. (In fact, isn't an object just a namespace? Could be...)
Creating class instances Q: One creates a new instance of a class by calling the class ______________. A: constructor
What does constructor code do? Q: When code instantiates a class, the __init__ method is called. This method's "primary purpose is to establish initial values for the ____________ of the newly created object." A: attributes
Code for Car constructor Q: I have a class Car that I instantiate this way: car = Car() Write the method definition for Car’s constructor. A: def __init__(self): # code here to initialize attributes to # default values … self._color = “black”
Signature Q: After creating a Car instance (i.e., object), my main code wants to set the Car's color to a new color. Write the signature of the Car member function, setColor(), to set the car's color. A: def setColor(self, color): ‘’’set the color of this car to the given color’’’ self._color = color
Signature Q: Then, my main code wants to get the color from my car instance. Write the signature for the member function getColor(). A: def getColor(self): ‘’’return the color of this Car to the caller.’’’ return self._color # my color
Designing a Class When you design a class, you decide: • what are the important properties (or attributes, characteristics, or state) of an instance. • what information a caller should be able to get from an object • what state a caller should be able to change in an object • what a caller should be able to ask an object to do to itself.
Naming Conventions • A class name always starts with a capital letter. Each word in the class starts with a capital letter. • class MyFathersCar: • class Cs106Lab: • A class attribute always starts with an underscore: _ • self._x_loc, self._y_loc, self._color
Naming Conventions • local variables must start with a lowercase letter. • global variables must also start with a lowercase letter, unless they are CONSTANTS, which must be all uppercase. • function names start with a lowercase letter. • Either use camelCase for function names and variables or use _'s between words in a name. • myXLocation, or, my_x_location • getLocation(), or, get_location()
Order of methods in a class Q: Does the order the methods are defined in a class matter? A: No. By convention the constructor method is always first, however.
Attribute names Q: Why would the coder choose _x and _y instead of x and y? A: It is a convention to name your attributes with names starting with _. The reader of the code can then know what something is when it sees the _ in front of the name.