1 introduction to object oriented design. 2 overview understand classes and objects. understand some...
TRANSCRIPT
![Page 1: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/1.jpg)
1
Introduction to Object Oriented Design
![Page 2: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/2.jpg)
2
Overview
Understand Classes and Objects.
Understand some of the key concepts/features in the Object Oriented paradigm.
Benefits of Object Oriented Design paradigm.
![Page 3: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/3.jpg)
3
OOP: model, map, reuse, extend
Model the real world problem to user’s perceive;
Use similar metaphor in computational env.
Construct reusable components;
Create new components from existing ones.
![Page 4: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/4.jpg)
4
Examples of Objects
Figure 1.9: Examples of objects
CAR
VDU
BOY GIRL
TREEBOOK
CLOCK
TRIANGLE
![Page 5: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/5.jpg)
5
Classes: Objects with the same attributes and behavior
Person Objects
Vehicle Objects
Polygon Objects
Abstract Person ClassAttributes:Operations:
Name, Age, SexSpeak(), Listen(), Walk()
Into
Abstract Vehicle ClassAttributes:Operations:
Name, Model, ColorStart(), Stop(), Accelerate()
Into
AbstractPolygon ClassAttributes:
Operations: Draw(), Erase(), Move()
Vertices, Border,Color, FillColorInto
Figure 1.12: Objects and classes
![Page 6: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/6.jpg)
6
Object Oriented Paradigm: Features
OOP Paradigm
Encapsulation
Multiple Inheritance
Genericity
Delegation
Persistence
Polymorphism
Single Inheritance
Data Abstraction
![Page 7: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/7.jpg)
7
Java’s OO Features
OOP Paradigm
Encapsulation
Multiple Inheritance
Genericity
Delegation
Persistence
Polymorphism
Single Inheritance
Data Abstraction
Java
![Page 8: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/8.jpg)
8
Encapsulation
It associates the code and the data it manipulates into a single unit; and keeps them safe from external interference and misuse.
OOP Paradigm
Encapsulation
Multiple Inheritance
Genericity
Delegation
Persistence
Polymorphism
Single Inheritance
Data Abstraction
Data
Functions
![Page 9: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/9.jpg)
9
Data Abstraction
The technique of creating new data types that are well suited to an application.
It allows the creation of user defined data types, having the properties of built data types and a set of permitted operators.
In Java, partial support. In C++, fully supported
(e.g., operator overloading).
OOP Paradigm
Encapsulation
Multiple Inheritance
Genericity
Delegation
Persistence
Polymorphism
Single Inheritance
Data Abstraction
![Page 10: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/10.jpg)
10
Abstract Data Type (ADT)
A structure that contains both data and the actions to be performed on that data.
Class is an implementation of an Abstract Data Type.
![Page 11: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/11.jpg)
11
Class- Example
class Account { private String accountName;private double accountBalance;
public withdraw();public deposit();public determineBalance();
} // Class Account
![Page 12: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/12.jpg)
12
Class
Class is a set of attributes and operations that are performed on the attributes.
Account
accountNameaccountBalance
withdraw()deposit()determineBalance()
Student
nameagestudentId
getName()getId()
Circle
centreradius
area()circumference()
![Page 13: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/13.jpg)
13
Objects
An Object Oriented system is a collection of interacting Objects.
Object is an instance of a class.
![Page 14: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/14.jpg)
14
Classes/Objects
Student:John
:Jill
John and Jill are objects of class
Student
Circle:circleA
:circleB
circleA and circleB are
objects of classCircle
![Page 15: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/15.jpg)
15
Class
A class represents a template for several objects that have common properties.
A class defines all the properties common to the object - attributes and methods.
A class is sometimes called the object’s type.
![Page 16: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/16.jpg)
16
Object
Objects have state and classes don’t.John is an object (instance) of class Student.
name = “John”, age = 20, studentId = 1236
Jill is an object (instance) of class Student. name = “Jill”, age = 22, studentId = 2345
circleA is an object (instance) of class Circle. centre = (20,10), radius = 25
circleB is an object (instance) of class Circle. centre = (0,0), radius = 10
![Page 17: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/17.jpg)
17
Encapsulation
All information (attributes and methods) in an object oriented system are stored within the object/class.
Information can be manipulated through operations performed on the object/class – interface to the class. Implementation is hidden from the user.
Object support Information Hiding – Some attributes and methods can be hidden from the user.
![Page 18: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/18.jpg)
18
Encapsulation - Example
class Account { private String accountName;private double accountBalance;
public withdraw();public deposit();public determineBalance();
} // Class Account
DepositWithdraw
Determine Balance
Accountbalance
message
message
message
![Page 19: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/19.jpg)
19
Data Abstraction
The technique of creating new data types that are well suited to an application.
It allows the creation of user defined data types, having the properties of built in data types and more.
![Page 20: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/20.jpg)
20
Abstraction - Example
class Account { private String accountName;private double accountBalance;
public withdraw();public deposit();public determineBalance();
} // Class Account
Creates a data type Account
Account acctX;
![Page 21: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/21.jpg)
21
Inheritance
New data types (classes) can be defined as extensions to previously defined types.
Parent Class (Super Class) – Child Class (Sub Class)
Subclass inherits properties from the parent class.
Parent
Child
Inheritedcapability
![Page 22: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/22.jpg)
22
Inheritance - Example
Example Define Person to be a class
A Person has attributes, such as age, height, gender Assign values to attributes when describing object
Define student to be a subclass of Person A student has all attributes of Person, plus attributes
of his/her own ( student no, course_enrolled) A student has all attributes of Person, plus attributes
of his/her own (student no, course_enrolled) A student inherits all attributes of Person
Define lecturer to be a subclass of Person Lecturer has all attributes of Person, plus attributes
of his/her own ( staff_id, subjectID1, subjectID2)
![Page 23: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/23.jpg)
23
Inheritance - Example
Circle Class can be a subclass (inherited from ) of a parent class - Shape
Shape
Circle Rectangle
![Page 24: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/24.jpg)
24
Inheritance - Example
Inheritance can also have multiple levels.
Shape
Circle Rectangle
GraphicCircle
![Page 25: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/25.jpg)
25
Uses of Inheritance - Reuse
If multiple classes have common attributes/methods, these methods can be moved to a common class - parent class.
This allows reuse since the implementation is not repeated.
Example : Rectangle and Circle method have a common method move(), which requires changing the centre coordinate.
![Page 26: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/26.jpg)
26
move(newCentre){ centre = newCentre;
}
Uses of Inheritance - Reuse
Circle
centreradiusarea()
circumference()move(newCentre)
Rectangle
centreheightwidtharea()
circumference()move(newCentre)
move(newCentre){ centre = newCentre;}
![Page 27: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/27.jpg)
27
Uses of Inheritance - Reuse
Shape
centre
area()circumference()move(newCentre)
Rectangle
heightwidth
area()circumference()
Circle
radius
area()circumference()
move(newCentre){ centre = newCentre}
![Page 28: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/28.jpg)
28
Uses of Inheritance - Specialization
Specialized behavior can be added to the child class.
In this case the behaviour will be implemented in the child class. E.g. The implementation of area()
method in the Circle class is different from the Rectangle class.
area() method in the child classes override the method in parent classes().
![Page 29: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/29.jpg)
29
Uses of Inheritance - Specialization
area(){ return height*width;}
Circle
centreradiusarea()
circumference()move(newCentre)
Rectangle
centreheightwidtharea()
circumference()move(newCentre)
area(){ return pi*r^2;}
![Page 30: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/30.jpg)
30
Uses of Inheritance - Specialization
Shape
centre
area()circumference()move(newCentre)
Rectangle
heightwidth
area()circumference()
Circle
radius
area()circumference()
area(); - Not implemented And left for the child classes To implement
area(){ return pi*r^2;}
area(){ return height*width;}
![Page 31: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/31.jpg)
31
Uses of Inheritance – Common Interface
All the operations that are supported for Rectangle and Circle are the same.
Some methods have common implementation and others don’t. move() operation is common to classes and
can be implemented in parent. circumference(), area() operations are
significantly different and have to be implemented in the respective classes.
The Shape class provides a common interface where all 3 operations move(), circumference() and area().
![Page 32: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/32.jpg)
32
Uses of Inheritance - Extension
Extend functionality of a class. Child class adds new operations to
the parent class but does not change the inherited behavior.
E.g. Rectangle class might have a special operation that may not be meaningful to the Circle class - rotate90degrees()
![Page 33: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/33.jpg)
33
Uses of Inheritance - Extension
Shape
centre
area()circumference()move(newCentre)
Rectangle
heightwidtharea()circumference()rotate90degrees()
Circle
radius
area()circumference()
![Page 34: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/34.jpg)
34
Uses of Inheritance – Multiple Inheritance
Inherit properties from more than one class.
This is called Multiple Inheritance.
Shape
Circle
Graphics
![Page 35: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/35.jpg)
35
Uses of Multiple Inheritance
This is required when a class has to inherit behavior from multiple classes.
In the example Circle class can inherit move() operation from the Shape class and the paint() operation from the Graphics class.
Multiple inheritance is not supported in JAVA but is supported in C++.
![Page 36: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/36.jpg)
36
Uses of Inheritance – Multiple Inheritance
Shape
centre
area()circumference()move(newCentre)
Circle
radius
area()circumference()
GraphicCircle
color
paint()
![Page 37: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/37.jpg)
37
Polymorphism
Polymorphic which means “many forms” has Greek roots. Poly – many Morphos - forms.
In OO paradigm polymorphism has many forms.
Allow a single object, method, operator associated with different meaning depending on the type of data passed to it.
![Page 38: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/38.jpg)
38
Polymorphism
An object of type Circle or Rectangle can be assigned to a Shape object. The behavior of the object will depend on the object passed.
circleA = new Circle(); Create a new circle object
Shape shape = circleA;shape.area(); area() method for circle class will be
executed
rectangleA = new Rectangle(); Create a new rectangle object
shape= rectangle;shape.area() area() method for rectangle will be
executed.
![Page 39: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/39.jpg)
39
Polymorphism – Method Overloading
Multiple methods can be defined with the same name, different input arguments.
Method 1 - initialize(int a)Method 2 - initialize(int a, int b)
Appropriate method will be called based on the input arguments. initialize(2) Method 1 will be called.initialize(2,4) Method 2 will be called.
![Page 40: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/40.jpg)
40
Polymorphism – Operator Overloading
Allows regular operators such as +, -, *, / to have different meanings based on the type.
E.g. + operator for Circle can re-defined
Circle c = c + 2;
Not supported in JAVA. C++ supports it.
![Page 41: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/41.jpg)
41
Persistence
The phenomenon where the object outlives the program execution.
Databases support this feature.
In Java, this can be supported if users explicitly build object persistency using IO streams.
![Page 42: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/42.jpg)
42
Why OOP?
Greater Reliability Break complex software projects into
small, self-contained, and modular objects Maintainability
Modular objects make locating bugs easier, with less impact on the overall project
Greater Productivity through Reuse! Faster Design and Modelling
![Page 43: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/43.jpg)
43
Benefits of OOP..
Inheritance: Elimination of Redundant Code and extend the use of existing classes.
Build programs from existing working modules, rather than having to start from scratch. save development time and get higher productivity.
Encapsulation: Helps in building secure programs.
![Page 44: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/44.jpg)
44
Benefits of OOP..
Multiple objects to coexist without any interference.
Easy to map objects in problem domain to those objects in the program.
It is easy to partition the work in a project based on objects.
The Data-Centered Design enables us in capturing more details of model in an implementable form.
![Page 45: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/45.jpg)
45
Benefits of OOP..
Object Oriented Systems can be easily upgraded from small to large systems.
Message-Passing technique for communication between objects make the interface descriptions with external systems much simpler.
Software complexity can be easily managed.
![Page 46: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/46.jpg)
46
Summary
Object Oriented Design, Analysis, and Programming is a Powerful paradigm
Enables Easy Mapping of Real world Objects to Objects in the Program
This is enabled by OO features: Encapsulation Data Abstraction Inheritance Polymorphism Persistence
Standard OO Design (UML) and Programming Languages (C++/Java) are readily accessible.
![Page 47: 1 Introduction to Object Oriented Design. 2 Overview Understand Classes and Objects. Understand some of the key concepts/features in the Object Oriented](https://reader035.vdocuments.site/reader035/viewer/2022081518/551464765503462d4e8b5ab4/html5/thumbnails/47.jpg)
47
References
Chapter 1: “Programming with Java” by Balagurusamny, TMH, New Delhi, India.
Optional: Chapter 1: “Mastering C++” by V.
Rajuk and R. Buyya, Tata McGraw Hill, New Delhi, India.