Object Orientation - University of Scranton

Download Report

Transcript Object Orientation - University of Scranton

Object Orientation
Yaodong Bi, Ph.D.
Department of Computer Sciences
University of Scranton
August 19, 2005
Classes and objects for modeling

Classes
– Real world concepts
– Student, course, bicycle, etc

Objects
– Instances of real word concepts
– John Smith, Operating Systems,
Mongoose Mountain S100, etc
Classes and objects for modeling
Classes
“Customers
John
and
Susan
entered the
MakeMoney
bank
and were served by
teller
Andy.”
Objects:
Classes and objects in software

Objects
– Packaging both data and the procedures that operate on
the data into one
– Operations are the only way to change the data items –
encapsulation

Classes
– Template of objects of the same type
– Write once and use many times

Implementation classes/objects
– Some classes/objects do not match to concepts in the real
world


List, stack, tree, queue – containers
Exception classes
Attributes and operations

Instance attributes (simply attributes)
– Properties (internal state) of an object


Student: name, major, class, GPA
Course: title, # of credits, description
– Each object has its own value for an attribute

Instance operations (simply operations)
– Services of an object

Stack: push, pop, isEmpty, isFull
– Encapsulation


Attributes (private and protected) are not accessible
directly by client
Operations are used to read/write the values of
attributes
Attributes and Operations

Class attributes (static attributes)
– Represent properties that can be applied to all
objects of the same class
– Only one value for each class attribute shared by
all objects of the class

All accounts of the CheckingAccount class have the
same interest rate
– Can be accessed in both instance and class
operations

Class operations (static operations)
– Used to access class attributes
– Cannot access instance attributes and operations
Class member access modes

Public
– Public attributes and public operations
– Accessible to all clients or the world

Protected
– Protected attributes and operations
– Accessible to the class and its subclasses

Private
– Private attributes and operations
– Only accessible by the operations of the class
Member access modes in Java
Specifier
Class
Package Subclass World
Private
Y
N
N
N
No Specifier
Y
Y
N
N
Protected
Y
Y
Y
N
Public
Y
Y
Y
Y
Abstract and concrete classes

Abstract classes
– Define a common interface for its subclasses
– Defer some or all of its implementation of
operations to its subclasses
– Cannot be instantiated

Concrete classes
– That are not abstract classes
– Can be instantiated
– Concrete subclasses implement all the
operations
Interfaces

Signature of an operation:
– Operation name
– Objects/classes it takes as parameters
– Return value and type

Interface:
– The set of signatures of related operations
– Representing a capability or a set of services
– An object may implement multiple interfaces
Inheritance





Specifies is-a or a-kind-of relationship
Generalization and specialization
Superclasses and subclasses
Single and multiple inheritance
Class and implementation inheritance
Superclasses and subclasses

Superclass
– Also called base class or parent class
– All of its members are inherited by its
subclasses

Subclasses
– Also called child classes
– Inherit all the properties of its
superclasses
Single and multiple inheritance

Single inheritance
– A subclass cannot have more than one
parent

Multiple inheritance
– A subclass may have more than one
parent
– Java does not allow multiple inheritance
– Java allows multiple interface inheritance

Through interface implementation
Class inheritance lattice
Person
SSN
Name
getSSN()
getName()
Faculty
office
getOffice()
Student
major
getMajor()
Staff
dept
getDept()
FullTime
salary
getSalary()
Graduate
PartTime
PayRate
getPayRate()
PayRate
getPayRate()
TA
labs
getLabs()
Underg
PayRate
getPayRate()
Implementation inheritance




Also called class inheritance
Define an object’s implementation in
terms of another object’s
implementation
Pure class inheritance in C++
Pure class inheritance in Java
Pure class inheritance with C++
Class BinaryTree {
getRoot() {;}
setRoot() {;}
leftTree() {;}
rightTree() {;}
}
The operations of BinaryTree
are not accessible/visible to the
clients of BinSearchTree
because BinaryTree is private
Class BinSearchTree:
private BinaryTree
{
insert()
{;}
remove() {;}
find() {;}
}
They use the operations of
BinaryTree
Pure class inheritance with Java



Java does not allow private parent
The parent and grandparents are
public and accessible through the
subclass
Java cannot implement pure
implementation inheritance.
Interface inheritance


Describe when an object can be used
in place of another
Pure interface inheritance in C++
– Superclasses are pure abstract classes

Pure interface inheritance in Java
– Superclasses are Java interfaces
Interface inheritance with C++
Class Stack {
virtual push() = 0;
virtual pop() = 0;
virtual isEmpty() = 0;
virtual isFull() = 0;
}
A C++ Abstract class
Class MyStack: public Stack
{
push()
{;}
pop() {;}
isEmpty() {;}
isFull() {;}
}
Class YourStack: public Stack
{
push()
{;}
pop() {;}
isEmpty() {;}
isFull() {;}
}
Interface inheritance with Java
Interface Stack {
push();
pop();
isEmpty();
isFull() 0;
}
A Java Interface
Class MyStack
implements Stack {
push()
{;}
pop() {;}
isEmpty() {;}
isFull() {;}
}
Class YourStack
implements Stack {
push()
{;}
pop() {;}
isEmpty() {;}
isFull() {;}
}
Polymorphism

When a client sends a request to a
reference, the method executed
depends on the object behind the
reference.
Dynamic (late) binding
Method overriding
Function overloading