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