7 - oop - oo concepts
TRANSCRIPT
![Page 1: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/1.jpg)
S.Ducasse
Stéphane Ducasse
http://www.listic.univ-savoie.fr/~ducasse/
1
Essential OO
Concepts
Stéphane Ducasse
![Page 2: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/2.jpg)
S.Ducasse
License: CC-Attribution-ShareAlike 2.0
http://creativecommons.org/licenses/by-sa/2.0/
2
![Page 3: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/3.jpg)
S.Ducasse 3
Outline• OOP
• Objects, classes
• Inheritance
• Composition
• Comparison
![Page 4: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/4.jpg)
S.Ducasse 4
Object-Orientation• Is a paradigm not a technology
• Reflects, simulates the real world
• Thinks in terms of organization
• Tries to
• Handle complexity
• Enhance reusability
• Minimize maintenance cost
![Page 5: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/5.jpg)
S.Ducasse 5
Evolution• Procedures
• Structured Programming
• Fourth Generation Languages
• Object-Oriented Programming
• ???
![Page 6: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/6.jpg)
S.Ducasse 6
Traditional Point of View• Focuses upon procedures
• Functionality is vested in procedures
• Data exists solely to be operated upon by
procedures
• Procedures know about the structure of data
• Requires large number of procedures and
procedure names
![Page 7: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/7.jpg)
S.Ducasse 7
Data and Procedures
![Page 8: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/8.jpg)
S.Ducasse 8
Roadmap • OOP
• Objects, classes
• Inheritance
• Composition
• Comparison
![Page 9: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/9.jpg)
S.Ducasse 9
What is OOP?• An application is a collection of interacting entities
(objects)
• Objects are characterized by behavior and state
• Inter-object behavior needs to be coordinated
• Inter-object communication is the key to
coordination
![Page 10: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/10.jpg)
S.Ducasse 10
Object-Oriented Viewpoint• An application is a set of objects interacting by
sending messages
• The functionality of an object is described by its
methods, its data are stored in private variables
• An object’s functionality can be invoked by sending
a message
• Everything is an object
![Page 11: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/11.jpg)
S.Ducasse 11
State + Behavior + Identity
![Page 12: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/12.jpg)
S.Ducasse 12
State + Behavior + Identity• State: Objects it contains or refers to
• Ex: point location
• Behavior: an object understands a given set of
messages
• Identity: an object can be the same (of the same
class) than another one but it has still a different
identity (location in memory)
![Page 13: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/13.jpg)
S.Ducasse 13
Equality and Identity• I want to eat the pizza that you are eating
• Equality: I want to eat the “same” kind of pizza
• Identity: I eat your pizza
![Page 14: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/14.jpg)
S.Ducasse 14
Data/Messages/Methods
Data
Messages
Methods
![Page 15: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/15.jpg)
S.Ducasse 15
What vs. How• What: Messages
– Specify what behavior objects are to perform
– Details of how are left up to the receiver
– State information only accessed via messages
• How: Methods
– Specify how operation is to be performed
– Must have access to (contain or be passed) data
– Need detailed knowledge of data
– Can manipulate data directly
DataMethods
Messages
![Page 16: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/16.jpg)
S.Ducasse 16
Message• Sent to receiver object: receiver-object message
• A message may include parameters necessary for
performing the action
• In Smalltalk, a message-send always returns a result
(an object)
• Only way to communicate with an object and have it
perform actions
pt h w
aRectangle
aClient…
aRectangle area…
area
![Page 17: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/17.jpg)
S.Ducasse 17
Method• Defines how to respond to a message
• Selected via method lookup technique
• Has name that is the same as message name
• Is a sequence of executable statements
• Returns an object as result of execution
pt h w
area
aRectangle
area^ h * w
aClient…
aRectangle area…
area
![Page 18: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/18.jpg)
S.Ducasse 18
Object Encapsulation• Technique for
• Creating objects with encapsulated state/behaviour
• Hiding implementation details
• Protecting the state information of objects
• Communicating/accessing via a uniform interface
• Puts objects in control
• Facilitates modularity, code reuse and
maintenance
• External perspective vs. Internal
perspective
• What vs. How
• Message vs. Method
![Page 19: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/19.jpg)
S.Ducasse 19
Encapsulation at Work
pt h w
area
area
aRectangle
area^ h * w
aClient…
aRectangle area…
area
area
aRectangle
aread := (pt2-pt1).
^ d x * d y
aClient…
aRectangle area…
pt1 pt2
![Page 20: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/20.jpg)
S.Ducasse 20
ObjectsUnique identity
Private state
Shared behavior among other similar objects
![Page 21: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/21.jpg)
S.Ducasse 21
Roadmap • OOP
• Objects, classes
• Classes and Inheritance
• Composition
• Comparison
![Page 22: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/22.jpg)
S.Ducasse 22
Class: Factory of Objects• Reuse behavior
• => Factor into class
• Class: “Factory” object for creating new objects of
the same kind
• Template for objects that share common
characteristics
generates
![Page 23: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/23.jpg)
S.Ducasse 23
Class: Mold of Objects• Describe state but not value of all the instances of
the class
– Position, width and height for rectangles
• Define behavior of all instances of the class
• area
• ^ width * height
![Page 24: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/24.jpg)
S.Ducasse 24
Instances• A particular occurrence of an object defined by a
class
• Each instance has its own value for the instance
variables
• All instances of a class share
the same methods
400@1010020
300@2010
140
![Page 25: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/25.jpg)
S.Ducasse 25
How to Share Specification?• Do not want to rewrite everything!
• Often times want small changes
• Class hierarchies for sharing of definitions
• Each class defines or refines the definition of its
ancestors
• => inheritance
![Page 26: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/26.jpg)
S.Ducasse 26
Inheritance• New classes
• Can add state and behavior
• Can specialize ancestor behavior
• Can use ancestor’s behavior and state
• Can hide ancestor’s behavior
• Direct ancestor = superclass
• Direct descendant = subclass
![Page 27: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/27.jpg)
S.Ducasse 27
Comparable Quantity
Hierarchy
![Page 28: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/28.jpg)
S.Ducasse 28
Polymorphism - Late binding• Same message can be sent to different objects
• Different receivers react differently (different
methods)
• aCircle area
• aRectangle area
• aColoredWindow open
• aScheduledWindow open
• aWindow open
![Page 29: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/29.jpg)
S.Ducasse 29
Late binding: “Let’s the receiver
decide” Mapping of messages to methods deferred until run-
time (dynamic binding)
Allows for rapid incremental development without
the need to recompile the complete applications
Most traditional languages do this at compile time
(static binding)
![Page 30: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/30.jpg)
S.Ducasse 30
Roadmap• OOP
• Objects, classes
• Classes and Inheritance
• Composition
• Comparison
![Page 31: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/31.jpg)
S.Ducasse 31
Composition• An object is composed of other objects
• in a part-of relationship
• The object uses its parts to implement its
behavior
• The object can delegate to its parts
![Page 32: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/32.jpg)
S.Ducasse 32
ExampleA rectangle can be composed of
two points:
to represent its origin and extent
to represent its topleft and bottomleft corners
or 4 numbers
![Page 33: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/33.jpg)
S.Ducasse 33
Example (2)Polyline has a list of vertices
![Page 34: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/34.jpg)
S.Ducasse 34
Composition vs. InheritanceInheritance supports extension: ColoredRectangle
But
static, properties are difficult to change dynamically
we have to change classes at run-time
explosion of classes
class with too much responsibilities
With composition
run-time changes are easier: plug another objects
(with the same interface)
but lot of objects
![Page 35: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/35.jpg)
S.Ducasse 35
Outline• OOP
• Objects, classes
• Inheritance
• Composition
• Comparison
![Page 36: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/36.jpg)
S.Ducasse 36
Graphical Editor• Managing list of objects: square, rectangle,
circle...
• Intersect, color, rotate translate….
• We want to know the total area of a list of figures
![Page 37: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/37.jpg)
S.Ducasse 37
Procedural SolutiontArea
element class = Circle
then tArea := tArea + element.circleArea.
element class= Rectangle
then tArea := tArea + element.rectangleArea
…
Same for ...
intersect, color, rotate translate….
![Page 38: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/38.jpg)
S.Ducasse 38
In Java for examplepublic static long sumShapes(Shape shapes[]) {
long sum = 0;
for (int i=0; i<shapes.length; i++) {
switch (shapes[i].kind()) {
// a class constantcase Shape.CIRCLE:
sum += shapes[i].circleArea();
break;
case Shape.RECTANGLE:
sum += shapes[i].rectangleArea();
break;
... // more cases
}
}
return sum;
}
![Page 39: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/39.jpg)
S.Ducasse 39
Problems • Adding a kind of graphical element
• Change all the methods area, intersect, rotate,
translate…
• Always have to check what is the data I
manipulate
![Page 40: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/40.jpg)
S.Ducasse 40
Object-Oriented Solution•Circle>>area
• ^ Float pi * r * r
•Rectangle>>area
• ^ width * height
•XXX>>area
• elements do:
• [:each | tArea := tArea + each area]
![Page 41: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/41.jpg)
S.Ducasse 41
Advantages• Adding a new graphical object does not require to
change the list operations
• I do not have know the kind of objects I’m
manipulating as soon as they all share a common
interface
![Page 42: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/42.jpg)
S.Ducasse 42
RecapOOP see the world as interacting objects
Objects
Have their own state
Share the behavior among similar objects
Classes: Factory of objects
Define behavior of objects
Describe the structure of objects
Share specification via hierarchies
![Page 43: 7 - OOP - OO Concepts](https://reader033.vdocuments.pub/reader033/viewer/2022051315/55aa7ce11a28ab076d8b4808/html5/thumbnails/43.jpg)
S.Ducasse 43
Recap• OOP is based on
– Encapsulating data and procedures
– Inheritance
– Polymorphism
– Late Binding
• OOP promotes
– Modularity
– Reuse