46
Andreas Savva University of Cyprus 24 January 2008 Introduction to Object- Oriented Programming

Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Andreas SavvaUniversity of Cyprus

24 January 2008

Introduction to Object- Oriented Programming

Page 2: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

What is Object Oriented

Design, programming, and languagesAn alternative to procedural programming

anything done using O-O can also be done using a procedural paradigm

Considering a problem from the perspective of objects and how they interact

Page 3: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Skills for Object Oriented programming

Understanding of subprograms and parameters

stepwise refinementShould understand references/pointersCoding still involves basic concepts

selection structures, repetition structures, …

Page 4: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Object Oriented vs. Procedural

Procedural ParadigmProgram defines data and then calls subprogram to act on the data

Object ParadigmProgram creates objects that encapsulatethe data and procedures that operate on the data

Page 5: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Top down vs. Object Oriented

Top-down structured design: uses algorithmic decomposition where each module denotes a major step in some overall process

Object-oriented design: divides the problem into a set of objects that interacts to solve the problem. Your program’s properties and behaviors are modelled based upon real objects like cars, books, houses, etc.

Page 6: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Why Object OrientedSoftware is complex (too many people is doing too many things – the mess is inevitable ☺ )

One of the main goals in programming is to avoid the redundancy and objects can help to do this (inheritance)

Objects can help increase modularity through data hiding (encapsulation)

Page 7: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Basic Concepts of Object OrientedObjects

Hidden data that is accessed and manipulated through a well-defined interface

ClassesA template or “blueprint” for creating objects, each with their own data

InheritanceA new class created by modification of an existing class

Page 8: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

ObjectsPart of a program which

models some real or conceptual objecthas behaviouralresponsibilities (behaviours)has informational responsibilities (attributes)

Behaviours (methods)things an object can “do”like procedures and functions in other languages

Attributes (fields)information an object “knows” (has-a)like data and variables in other languages (records)

Page 9: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

ClassesA class is a template. No data is allocated until an object is created from the class. However attributes and behaviours are generically defined

The creation (construction) of an object is called instantiation. The created object is often called an instance (or an instance of class X)

Page 10: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Objects and Classes

An object is an instance of a class.

If we have a class definition called Car, then we can think of Audi, BMW, and Corvette as each being an instance (object) of the class Car, i.e., they are each a type of car.

Page 11: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

ClassesOnce a class is defined you can create as many instances of the class (objects from the class) as you would like.Once a blue print is completed for the 2003 Porsche 911, Porsche will use an assembly line to build as many instances of the 2003 Porsche 911 as they wish.

Page 12: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Class car and objects- graphically

Audi 6 BMW Z3 Corvette

Car Car Car

CarThis line shows an

instance-of relationship.

Page 13: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Defining a classProperties are variables which describe the essential characteristics of an object.• Properties of a car: color, model, make,

how many doors, transmission type, direction of movement, etc.

Behaviors are methods that describe how the object behaves and how the properties may be modified. • Behavior of a car: braking, changing gears,

opening doors, moving forwards or backwards, etc.

Page 14: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Defining a class

Behavior or Method 1

Behavior Behavior or or

Method 4 Method 2

Behavior or Method 3

Properties

or

Instance Variables

Page 15: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Instance variablesThe class definition will include parameter definitions (properties) that represent data about a particular object, instance variables.

Example, Jessica's car may have 4 gallons of gas in it while Clint's car has 10 gallons.

• The amount of gas in each car may change without affecting the amount of gas in the any other cars.

• All instances (objects) of a class will have a set of instance variables that are specific to that individual object.

• The combination of the values of these instance variables is known as the object’s state.

Page 16: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Instance variables

Audi 6 BMW Z3 CorvetteCar Car Car

Car

MaxSpeed = 155 MaxSpeed = 165 MaxSpeed = 145

MaxSpeed

Page 17: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Class variablesThe class definitions may also include parameter definitions that represent data that is shared by all class instances (objects), called class variables.

In the case of the car class, we will define a maximum allowed speed, by the law (variable LMaxSpeed). This will be the same for each individual car (that’s why your car have those annoying speed limiters ☺).

Page 18: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Class variables

Audi 6 BMW Z3 CorvetteCar Car Car

Car

MaxSpeed = 155 MaxSpeed = 165 MaxSpeed = 145

MaxSpeed

LMaxSpeed=155

Page 19: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Class variables

Class variables may also be used to keep track of things such as how many instances of a class exist.

Example: let’s create a counter the records how many cars are in the garage.

Page 20: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Class variables

Audi 6 BMW Z3 CorvetteCar Car Car

Car

MaxSpeed = 155 MaxSpeed = 165 MaxSpeed = 145

MaxSpeed

LMaxSpeed=155

NumCars = 3

Page 21: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Constant parametersIf it was variables instead of parameters, that would be oxymoron.

If there is a parameter whose value should not change while your program is running, that parameter type is called a constant.

The LMaxSpeed parameter that we defined for the Car class is a constant. The maximal speed is limited by the low, and it cannot be changed once the car has been built.

Page 22: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Messages

For Objects

The object to whom the message is being sent.

• The name of the method (behavior) that object is to execute.

• Any parameters (variables) needed by that method.

For Humans

Who the message is for.

What we want the person to do.

• What information is needed to do it.

Audi 6 • turnOnHazard()

Page 23: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Messages and Methods

In order to process a message, an object needs to have a method defined for the requested task.A method is a small, well-defined piece of code that completes a specific task.For our previous example, we need to define a method to turn on the car's hazard lights.

Page 24: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Messages and Methods

Audi 6 BMW Z3 CorvetteCar Car Car

Car

MaxSpeed = 155

turnOnHazard()

MaxSpeed = 165

turnOnHazard()

MaxSpeed = 145

turnOnHazard()

MaxSpeed

LMaxSpeed=155

NumCars = 3

turnOnHazard()

Page 25: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Instance methodsEach class can have methods that are specific to each object, called instance methods.

These can only affect that object's parameters, i.e., it’s instance variables.

Example: If BMW has 4 gallons of gas and someone puts 6 more gallons of gas in his/her car, the car now has 10 gallons. The amount of gas in Audi and Corvette is unchanged.

Page 26: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Messages and Methods

Audi 6 BMW Z3 CorvetteCar Car Car

Car

MaxSpeed = 155

turnOnHazard()addGass(amount)

MaxSpeed = 165

turnOnHazard()addGass(amount)

MaxSpeed = 145

turnOnHazard()addGass(amount)

MaxSpeedLMaxSpeed=155NumCars = 3turnOnHazard()addGass(amount)

Page 27: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

MethodsIt is also possible that you want information from an object; in this case, you would define a method that sends (returns) a message back to the requester containing that information.

We need to know how much gas is in our cars, so we will create a new method that returns the value of GasLevel variable for our car.

Page 28: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Messages and Methods

Audi 6BMW Z3

CorvetteCar

CarCar

Car

MaxSpeed = 155GasLevel = 4

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeed = 165GasLevel = 10

MaxSpeed = 145GasLevel = 6

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeedGasLevelLMaxSpeed=155NumCars = 3

addGass(amount) getGasLevel():GasLevel

turnOnHazard()

addGass(amount) getGasLevel():GasLevel

turnOnHazard()

Page 29: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Class methodsClass methods are used to get or manipulate information about all objects created from the class.

Typically, class methods are changing class variables. For example:

Each time we move the car in or out of the garage, we need to add/subtract one to the number of cars: carIn( ) & carOut( )Also, we may want to know how many cars are actually in the garage: getNumCars( )

Page 30: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Messages and Methods

Audi 6 BMW Z3 CorvetteCar Car Car

Car

MaxSpeed = 155GasLevel = 4

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeed = 165GasLevel = 10

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeed = 145GasLevel = 6

turnOnHazard()addGass(amount)getGasLevel():GasLevel

MaxSpeedGasLevelLMaxSpeed=155NumCars = 3

addGass(amount) getGasLevel():GasLevel

turnOnHazard()

carIn()

carOut()

getNumCars():NumCars

Page 31: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Object Oriented Programming

When writing object-oriented programs, first one must define the classes (like Car).

Then, while the program is running, the instances of the classes (objects) (such as Audi, BMW, Corvette in our example) are created.

Page 32: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Object Oriented Programming

Object-oriented programming allows the programmer to hide the implementation details from the other objects and the users.

In other words the implementation is transparent to the other objects or the user.

Example: Although our computers all are different “under the hood”, we don’t need to know what’s there to be able to use them.

Page 33: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Benefits

An object can be written and maintained separately from the rest of the program, modularity.

An object has a “public face” that it uses to communicate with other objects, but other objects can not directly access its instance variables, information hiding.

Page 34: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Encapsulation

Bank machineHidden data

account balancepersonal information

Interfacedeposit, withdraw, transferdisplay account information

Page 35: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Classes - Programming

Robot GameHidden data

locationnumber of Things

Interfacemove, turnLeftpickThing, putThing

Page 36: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Multiple Instances of a Class

No limit to the number of objects that can be created from a classEach object is independent. Changing one object doesn’t change the others

Page 37: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Interaction Among Classes

A program is composed of multiple classesClasses may contain references to other classes within the set of attributes or behavioursStart in an application class (main)

construct one or more objects and call methods associated with those objects

Page 38: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Schematic Design

Every class has a boxclass nameattributes/instance variablesbehaviours/methods

Arrows indicate the relationships among classes* indicates 0-many

BankAccountint acctNum Client acctHolder double balanceBankAccount(Client info) void deposit(double amt) boolean withdraw(double amt)

Bank

1

*

Client

String firstName String lastName int creditRatingClient(...) void updateCredit(double amt)

Page 39: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Schematic for the Robot Game

City

robotswallsthings

City()City(String descriptionFile)void showThingCounts(boolean show)

Robot

streetavenuedirectionspeedbackpack

Robot(City city, int avenue, int street,int direction, int numThings)void move()void turnLeft()void pickThing()void putThing()boolean frontIsClear()boolean isBesideThing()int countThingsInBackpack()void setSpeed(int newSpeed)int getAvenue()...

Wall

Thing

*

**

A thing may be associatedwith one robot or onelocation in the city, butnot both at the same time.

*

Page 40: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

InheritanceThe inheriting class contains all the attributes and behaviours of the class it inherited from plus any attributes and behaviours it definesThe inheriting class can override the definition of existing methods by providing its own implementationThe code of the inheriting class consists only of the changes and additions to the base class

Page 41: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Inheritance Diagram

GeneralOutline

Interface

method

method

method

method

method

method

method

Fields ofThe Object

methodmethod

method

override

AdditionalFields

Page 42: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Why Use Inheritance?Modular coding

less code, easier to understandCode reuse

don’t break what is already workingeasier updates

May not have access to modify the original source codePolymorphism

Page 43: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Inheritance Terminology

Class one aboveParent class, Super class

Class one belowChild class

Class one or more aboveAncestor class, Base class

Class one or more belowDescendent class

Page 44: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Inheritance: Bank AccountBankAccount

int acctNum Client acctHolder double balanceBankAccount(Client info) void deposit(double amt) boolean withdraw(double amt) void printStatement()

SavingsAccountdouble interestRate double accruedInterest Time lastBalanceChangeSavingsAccount(...) void updateIntRate(double rate) void deposit(double amt) boolean withdraw(double amt)

ChequingAccountdouble minBalanceChequingAccount(…) boolean withdraw(double amt) double calcServiceFee()

Page 45: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Inheritance: Robot Game

increase functionality (behaviours)turnAroundpickAllThings

increase attributesstarting positionnumber of steps taken

Page 46: Introduction to Object-Oriented Programming · What is Object Oriented Design, programming, and languages An alternative to procedural programming. ¾. anything done using O-O can

Basic ConceptsObjects

Hidden data that is accessed and manipulated through a well-defined interface

ClassesA template or “blueprint” for creating objects, each with their own data

InheritanceA new class created by modification of an existing class