1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and...

30
1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate Well-defined interfaces Procedural programming language C is an example Action-oriented Functions are units of programming Object-oriented programming language Java is an example Object-oriented Classes are units of programming Functions, or methods, are encapsulated in classes

Transcript of 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and...

Page 1: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

1

Object Oriented Programming

Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors)

Objects Allows objects to communicate

Well-defined interfaces Procedural programming language

C is an example Action-oriented Functions are units of programming

Object-oriented programming language Java is an example Object-oriented Classes are units of programming

Functions, or methods, are encapsulated in classes

Page 2: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

2

Implementing a Time Abstract Data Type with a Class

We introduce classes Time1 and TimeTest Time1.java defines class Time1 TimeTest.java defines class TimeTest public classes must be defined in separate files

Class Time1 will not execute by itself Does not have method main TimeTest1, which has method main, creates

(instantiates) and uses Time1 object

Page 3: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

3

Implementing a Time Abstract Data Type with a Class (cont.)

Every Java class must extend another class Time1 extends java.lang.Object If class does not explicitly extend another class

class implicitly extends Object

Class constructor Same name as class Initializes instance variables of a class object Called when program instantiates the class object Don’t have any data type Can take arguments, but cannot return data types Class can have several constructors, through

overloading

Example: TheTime1 Project

Page 4: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

4

Implementing a Time Abstract Data Type with a Class (cont.) Overriding methods

- Method Object.toString Gives String representation of object We want String in standard-time format

Time1 overrides method toString Overriding method gives String in standard-

time format If we remove the override method

Time1 still compiles correctly Uses method java.lang.Object.toString But gives String representation of object

Page 5: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

5

Controlling Access to Members

Member access modifiers Control access to class’ instance variables and methods

public Variables and methods accessible to class clients Present the class’s client a view of service that is

provides by the class

private Variables and methods not accessible to class clients Accessor method (“get” method)

Allow clients to read private data Mutator method (“set” method)

Allow clients to modify private data

Page 6: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

6

Initializing Class Objects: Constructors Class constructor

Same name as class Invoke automatically when the class object is

instantiated Initializes instance variables of a class object Call class constructor to instantiate object of that

class

ref = new ClassName( arguments );

ref is reference to appropriate data type new indicates that new object is created ClassName indicates type of object created arguments specifies constructor argument values

Page 7: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

7

Using Overloaded Constructors

Overloaded constructors Methods (in same class) may have same name Must have different parameter lists Attempting to overload a method of a class with

another method that has the exact same signature (name and parameter type) is a syntax error

The constructors guarantee that every object begins is a consistent state.

Example: TheTime2 Project

Page 8: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

8

Using ‘Set’ and ‘Get’ Methods

Accessor method (“get” method) public method Allow clients to read private data

Mutator method (“set” method) public method Allow clients to modify private data

Example: TheTime3 Project

Page 9: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

9

Final Instance Variables

final keyword Indicates that variable is not modifiable

Any attempt to modify final variable results in error

private final int INCREMENT = 5;

Declares variable INCREMENT as a constant

Enforces principle of least privilege

Example: Increment Project

Page 10: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

10

Composition: Objects as Instance Variables of Other Classes

Composition

Class contains references to objects of other classes

These references are members

Member object does not need to be initialized immediately with constructor arguments.

Example: EmployeeTest Project

Page 11: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

11

Static Class Members

static keyword static class variable

Static member declaration begins with a ‘static’ keyword

Static class variables and methods exist independently and they are instantiated before any objects of the class.

Static class accessingClassName.StaticVariableOrMethodName;

Page 12: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

12

Inheritance & Polymorphism

Inheritance Software reusability Classes are created from existing ones

Absorbing attributes and behaviors Adding new capabilities Convertible inherits from Automobile

Polymorphism Enables developers to write programs in

general fashion Handle variety of existing and yet-to-be-specified

classes (override) Helps add new capabilities to system

Page 13: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

13

Inheritance (cont.)

Inheritance Subclass inherits from superclass

Subclass usually adds instance variables and methods Single vs. multiple inheritance

Java does not support multiple inheritance!!

Interfaces (discussed later) achieve the same effect

“Is a” relationship

Composition “Has a” relationship

Page 14: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

14

Superclasses and Subclasses “Is a” Relationship

Object “is an” object of another class Rectangle “is a” quadrilateral

Class Rectangle inherits from class Quadrilateral

Form tree-like hierarchical structures

Page 15: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

An inheritance hierarchy for university CommunityMembers.

CommunityMember

Employee Student

Faculty Staff

Administrator Teacher

Alumni

CommunityMember is a direct superclass of Employee

CommunityMember is an indirect superclass of

Faculty

Shape

TwoDimensionalShape ThreeDimensionalShape

Circle Square Triangle Sphere Cube Tetrahedron

A portion of a Shape class hierarchy.

Page 16: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

16

protected Members

protected access members Between public and private in

protection

Accessed only by Superclass methods Subclass methods

Page 17: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

17

Memberships

private accessible only from within the class itself. not inherited by its subclasses.

public accessible wherever the program has a

reference to an object of a class or one of its subclasses.

protected intermediate level of access between public

and private

Page 18: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

18

Relationship between Superclass Objects and Subclass Objects Subclass object

Can be treated as superclass object Reverse is not true

Shape is not always a Circle

Every class implicitly extends java.lang.Object Unless specified otherwise in class definition

line

Example: InheritanceTest Project

Page 19: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

19

Superclass Constructors in Subclasses

Superclass constructor Initializes superclass instance variables

of subclass Not inherited by subclass Called by subclass

Implisit call Explisit call with super reference

Page 20: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

21

Software Engineering with Inheritance

Inheritance Create class (subclass) from existing one (superclass)

Subclass creation does not affect superclass New class inherits attributes and behaviors Software reuse

Inheritance “Is a” relationship Teacher is an Employee

Composition “Has a” relationship Employee has a TelephoneNumber

Page 21: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

22

Case Study: Point, Cylinder, Circle

Consider point, circle, cylinder hierarchy Point is superclass Circle is Point subclass Cylinder is Circle subclass

Example: PointCircleCylinder Project

Page 22: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

23

Polymorphism

Polymorphism Helps build extensible systems Programs generically process objects as

superclass objects Can add classes to systems easily

Classes must be part of generically processed hierarchy

Page 23: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

24

Dynamic Method Binding

Dynamic method binding Implements polymorphic processing of objects Use superclass reference to refer to subclass object Program chooses “correct” method in subclass

For example, Superclass Shape Subclasses Circle, Rectangle and Square Each class draws itself according to type of class

Shape has method draw Each subclass overrides method draw Call method draw of superclass Shape

Program determines dynamically which subclass draw method to invoke

Page 24: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

25

Final Methods and Classes

final method Cannot be overridden in subclass

final class Cannot be superclass (cannot be

extended) Class cannot inherit final classes

Page 25: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

26

Abstract Superclasses and Concrete Classes Abstract classes

Objects cannot be instantiated Too generic to define real objects

TwoDimensionalShape Provides superclass from which other

classes may inherit Normally referred to as abstract superclasses

Concrete classes Classes from which objects are instantiated Provide specifics for instantiating objects

Square, Circle and Triangle

Page 26: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

27

Case Study: A Payroll System Using Polymorphism

Abstract methods and polymorphism Abstract superclass Employee

Method earnings applies to all employees Person’s earnings dependent on type of Employee

Concrete Employee subclasses declared final Boss CommissionWorker PieceWorker HourlyWorker

Program: SimplePayroll Project

Page 27: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

28

Dynamic Binding

Dynamic binding (late binding) Object’s type need not be know at

compile time At run time, call is matched with method

of called object This make it easy to add new capabilities

to systems with minimal impact It also promotes software reuse

Page 28: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

29

Case Study: Hierarchy Inheritance, Polymorphism & Dynamic Binding

Point, Circle, Cylinder hierarchy Modify by including abstract superclass

Shape Demonstrates polymorphism Contains abstract method getName

Each subclass must implement method getName Contains (non-abstract) methods area and

volume Return 0 by default Each subclass overrides these methods

Program: ShapeTest Project

Page 29: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

30

Interface

Interfaces define and standardize the ways in which

systems can interact with one another. typically used when disparate /unrelated

classes need to share common methods and constants.

To use an interface, a concrete class must specify that it implements the interface must declare each method in the interface

Example: PayableInterfaceTest Project

Page 30: 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and methods (behaviors) Objects Allows objects to communicate.

31

Case Study: Creating and Using Interfaces

Use interface Shape Replace abstract class Shape

Interface Definition begins with interface keyword Classes implement an interface (and its methods) Contains public abstract methods

Classes (that implement the interface) must implement these methods

They are normally defined in files by themselves with the same name as the interface and the *.java extension.

Program: InterfaceTest Project