CIT 590 Intro to Programming Classes Schedule change
















- Slides: 16

CIT 590 Intro to Programming Classes

Schedule change • The upcoming HW (HW 6) is your last major Python HW. It will involve object oriented programming (Classes etc) • 2 week HW • Submit before spring break. No HW over spring break. • Recursion and functional programming will be covered next week • You will receive a small HW(worth 10 pts as opposed to the usual 20) sometime next week that needs to be completed by Mar 6. • Small HW to be done individually. • Small HW due same date as the larger HWs

What is a class? • Easiest to understand it as the creating new data types • Lists, files, dictionaries etc do not represent the world Wouldn’t it be nice if in the movie database assignment you could say something like movie. get_actors

Writing a class is like creating a template Nothing happens until you start using your class.

Classes • Encapsulate functions that can be used for a common purpose • bank. Account. py • Classes implicitly apply the principles of abstraction and information hiding • The user of the bank account class does not need to know how balance is being maintained • Just get a handle to the class and use the deposit and withdrawal functions

Class definition class Bank. Account(object): Parent class def __init__ (self, init. Balance): self. balance = init. Balance def deposit(self, amount): self. balance += amount methods

Creating an instance of the class • The class definition by itself does not create an instance of the class • The class definition is like the ice tray and the ‘create an instance’ is like pouring water into the ice tray and getting to set • my. First. Account = Bank. Account() • An instance of a class is called an object

Methods inside a class • A class method looks very much like a regular function • The first argument HAS to be ‘self’ • Calling methods within other methods • We have to always refer to which object we are calling the method on def transfer (self, amount, to. Account): self. withdraw(amount) to. Account. deposit(amount)

Constructors (the method for creation) • The __init__ is implicitly called when you say B = Bank. Account() • First time we are seeing the __<function name>__ convention • Python uses this when we have functions that are used behind the scenes

Objects are references => be careful • Very similar to the situation of two lists • The copy module is your best friend • import copy • bank. Account 2 = copy(bank. Account 1) • Passing an object as a function parameter • Again similar to lists, the object will be modified • Sometimes you want the modification • Sometimes you want to copy

How to print out an object • __str__ When you call print <objectname> this internal function will be called. Python will always provide some kind of default However the default is ‘lame’ Try commenting out the __str__ in the bank. Account object

Let’s make our own class!

Accessing the data fields • Python classes expose their data fields. • For the bankaccount example you could always manipulate the balance data field directly BUT this is considered bad programming practice • It is considered much better form to provide what is called a getter and a setter • In this bank account example, a getter for balance is fully justified since that is a service you would want • However a direct setting of bank balance = xyz seems inappropriate. • We have deposit and withdraw • More on this when we get to Java

Inheritance • You’ve already seen it without it being explicitly called as such • Idea = Using methods defined on the parent class • Software reuse • By inheriting from a class you only need to define the specialized methods • Often you might be inheriting from a different developer’s class • Checking account example class Checking. Account(bank. Account. Bank. Account) • Checking account inherits from bankaccount • Checking account is a special type of bankaccount • When should I use inheritance • Apply the ‘is-a’ method • A real number is a complex number • A checking account is a bank account

Inbuilt functions to help explore inheritance • Use isinstance • issubclass • Using the types module (import types) • You can check for an int by doing • Isinstance(3, types. Int. Type)

The is-a versus has-a concept • A common method used to identify inheritance is to ask the question ‘Is class B a special case of class A? ’ If the answer is yes, B extends A. • If the answer is no, then you might want one class contained inside the other – composition • A Bank contains Bank. Accounts - composition • A Checking. Account is a Bank. Account - inheritance