33
Object-Oriented Programming

Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Embed Size (px)

Citation preview

Page 1: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Object-Oriented Programming

Page 2: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Objectives

• Distinguish between object-oriented and procedure-oriented design.

• Define the terms class and object.

• Distinguish between a data member and a method.

• Define the term encapsulation.

• Explain the purpose of a driver program.

Page 3: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Objectives (Continued)

• Define the term instantiation.

• Explain the purpose of a constructor and a destructor.

• Distinguish between parameters and arguments.

• Define the terms overloading and overriding.

Page 4: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Objectives (Continued)

• Explain what is meant by inheritance.

• Explain what is meant by polymorphism.

• Distinguish between a base class and a derived class.

Page 5: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Introduction

• Traditional procedure-oriented program focus on what is being done.

• Increasing complexity makes these programs more difficult to understand.

• Modern programming is largely GUI-oriented.

• Difficult to design procedure-oriented programs to handle multiple windows.

Page 6: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Object-Oriented Programming

• Methodology which bases application design around the data and operations on the data.

• Characteristics of data defined in abstract form.

• One program may include many windows.• Window abstraction implemented by means

of a construct called a class.

Page 7: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Classes

• Object-oriented design based on organizing program around a collection of classes.

• A class is a template from which objects are created.

• Class definition contains both data (what object looks like) and behavior (what it does).

Page 8: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Classes (Continued)

• Data can be referred to as properties, data members (of the class), or instance variables.

• Behaviors can be referred to as methods or member functions.

Page 9: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Grade Book Class

• Defined by program designer.

• Made up of five data members: Name, Grade1, Grade2, Grade3, and Average.

• Could also contain a method to input student name and grades, one to compute the student’s average, and one to output the student’s name and average.

Page 10: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Grade Book Class Abstraction

Class Name

Data Members

Methods

GradeBook

Name

Grade1

Grade2

Grade3

Average

GetStudent

ComputeAverage

ShowStudent

Page 11: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Implementation 1Class GradeBook

private Nameprivate Grade1private Grade2private Grade3private Averagepublic GetStudent

Input Name, Grade1, Grade2, Grade3Endpublic ComputeAverage

Average = (Grade1 + Grade2 + Grade3) / 3Endpublic ShowStudent

Display Name, AverageEnd

End Class

Page 12: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

GradeBook Class (Continued)

• Members and methods are encapsulated within the class - meaning the data can only be accessed and manipulated using one of the methods defined in the class.

• Data members defined as private cannot be accessed outside the class.

• Methods are public, meaning they can be accessed from outside the class.

Page 13: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Use of Class

• Once defined, a class can be used when building a program.

• Program begins by creating an instance of this class, called an object.

• In this example the programmer might create two GradeBooks - two objects belonging to the GradeBook class.

Page 14: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Driver Program

• Creates and interfaces with objects.

• Gets things going - “drives” them.

• Creates and manipulates objects of a particular class.

• Creating an instance of an object is called instantiation.

Page 15: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

GradeBook Class DriverStart

GradeBook: GradeBook1

GradeBook: GradeBook2

GradeBook1.GetStudent

GradeBook2.GetStudent

GradeBook1.ComputeAverage

GradeBook2.ComputeAverage

GradeBook1.ShowStudent

GradeBook2.ShowStudent

Stop

Page 16: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Constructors

• Memory is allocated automatically when an object is created, by a special program called a constructor.

• Default constructor called at object creation time does not necessarily initialize any of the data members.

• This could cause problems in computations if methods invoked incorrectly.

Page 17: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Build Your Own Constructor

• We can create our own constructor to prevent this problem.

• This constructor is simply another method in the class except it has the same name as the class.

• Matching name identifies method as a constructor.

• Example follows:

Page 18: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

GradeBook Constructor

public GradeBook

Name = “Any Student”

Grade1 = 0

Grade2 = 0

Grade3 = 0

Average = 0

End

Not very interesting, is it?

Page 19: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Constructor with Parameters

public GradeBook(AnyName,AnyGr1,AnyGr2,AnyGr3)

Name = AnyName

Grade1 = AnyGr1

Grade2 = AnyGr2

Grade3 = AnyGr3

Average = 0

End

Page 20: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Use of Parameters• This constructor makes use of a list of parameters

in parentheses after the constructor name.• Parameters are a list of names which act as

placeholders.• Modify the driver program so that when a new

object is created, the driver program provides initial values for the first four data members in the list.

Page 21: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

ExampleThe statement:

GradeBook: AnotherBook(“Sally”,100,90,80)

causes a new object called AnotherBook to be created.

When the constructor is executed, the four values in

parentheses (arguments) are assigned to the four

variables in the constructor parameter list:

AnyName = “Sally”

AnyGr1 = 100

AnyGr2 = 90

AnyGr3 = 80

Page 22: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Example (Continued)

This kind of constructor provides more flexibility - now the values of the first four data members can be set when the object is created.

We can still use the GetStudent method to input data values during program execution.

Page 23: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Overloading

• See Figure 10-7 on page 235.• Note there are two constructors (same

name).• Which one do we use?• It depends …• … on the number or type of arguments used

when the method is invoked.• This is called overloading.

Page 24: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Destructors

• Just as constructors are used when an object is created, destructors are used when an object is destroyed.

• Default one used if none specified - deallocates memory used by object.

• We can write our own but they are not commonly used.

• You only need to know what they are.

Page 25: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Inheritance

• Object-oriented design offers the power of class reusability - classes can be saved in a class library and reused when needed - saves “reinventing the wheel.”

• May be cases when a saved class is close to, but not quite what we need.

• We can create a subclass based on the original one.

Page 26: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Inheritance (Continued)• A subclass contains all data members and

methods of the original class, plus any additional members and methods the programmer includes.

• This means by which one class acquires the data and methods of another is called inheritance.

• See Figure 10-10 on page 238 for an example of inheritance.

Page 27: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Base and Derived Classes

• Refer to Figure 10-10 again.• Employee class is the base class (or parent

class or super class) containing data and methods that apply to all employees.

• Faculty and Staff classes are derived from the Employee base class - they are derived classes (also called a child class or subclass).

Page 28: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Base and Derived Classes (Continued)

• Each class has a constructor and several other methods.

• All three classes have two methods called GetEmployee and ShowEmployee.

• A subclass can reimplement or redesign any method from a base class - this is called overriding.

Page 29: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Base and Derived Classes (Continued)

• Methods not re-implemented in a subclass will be reused (same as they are in the parent class).

• Both subclasses include a ComputePay method not inherited from the parent class.

• ComputePay is implemented differently for each class. This is an example of polymorphism.

Page 30: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Driver Program - Employee ExampleStart

Faculty: Faculty1

Staff: Staff1

Faculty1.GetEmployee

Faculty1.ComputePay

Faculty1.ShowEmployee

Staff1.GetEmployee

Staff1.ComputePay

Staff1:ShowEmployee

Faculty1.ZapEmployee

Stop

Page 31: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Object-Oriented Programming Benefits

• Object-oriented programs are easier to maintain:– Class definition changes are picked up by all

programs that use an object of that class.– No need to find and change all occurrences of

class.

Page 32: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Benefits (Continued)

• Object-oriented programming leads to higher productivity:– Class libraries save much work.– Programmer need not concentrate on technical

detail but on business requirement.– Objects can be defined in easy-to-use scripting

languages.

Page 33: Object-Oriented Programming. Objectives Distinguish between object-oriented and procedure-oriented design. Define the terms class and object. Distinguish

Benefits (Continued)

• Object-oriented programming facilitates design and code reuse:– Class can be reused even if it is not a perfect fit.– Programmer can use overriding to tailor a

previously-defined class to his or her needs.