1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and...
-
Upload
leona-thompson -
Category
Documents
-
view
235 -
download
0
Transcript of 1 Object Oriented Programming Object Oriented Programming (OOP) Encapsulates data (attributes) and...
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
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
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
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
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
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
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
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
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
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
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;
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
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
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
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.
16
protected Members
protected access members Between public and private in
protection
Accessed only by Superclass methods Subclass methods
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
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
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
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
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
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
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
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
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
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
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
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
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
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