object thinking introduction philosophy object thinking terms...
TRANSCRIPT
![Page 1: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/1.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Object Thinking
Francesco Nidito
Programmazione Avanzata AA 2007/08
![Page 2: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/2.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Outline
1 Introduction
2 Philosophy
3 Terms
4 Techniques
5 Conclusions
Reference: David West, “Object Thinking”, Chapters 1-5, 9
![Page 3: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/3.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Real life example
Michael Hilzkit tells this story about the Apple’s famous visitto the Xerox PARC:Given this rare psychic encouragement, The Learning ResearchGroup warmed to their subject. They even indulged in some oftheir favorite legerdemain. At one point Jobs, watching sometext scroll up the screen line by line in the its normal fashion,remarked, “It would be nice if it moved smoothly, pixel bypixel, like paper”.With Ingalls at the keyboard, that was like asking a NewOrleans jazz band to play “Limehouse Blues”. He clicked themouse on the window displaying several lines of SmallTalkcode, made minor edit, and returned to the text, Presto! Thescrolling was now continuous.The Apple’s engineer’s eyes bulged in astonishment
![Page 4: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/4.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Why does OO matter?
Object Orientation is a natural way to express concepts
Easy construction of a domain abstraction
Object Oriented languages increment productivity
It is important to learn to think like objects
![Page 5: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/5.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Why does OO matter?
Object Orientation is a natural way to express concepts
Easy construction of a domain abstraction
Object Oriented languages increment productivity
It is important to learn to think like objects
![Page 6: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/6.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Why does OO matter?
Object Orientation is a natural way to express concepts
Easy construction of a domain abstraction
Object Oriented languages increment productivity
It is important to learn to think like objects
![Page 7: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/7.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Caveat
Object Oriented programming is not only programmingwith objects
We can write non-OO programs with Java, C++, C#
In Object Oriented programming we must think thedomain as:
A group of objectsRelations between objectsObjects using other objects
![Page 8: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/8.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Destroy the cathedral...
Cathedral = Old way to think objects
Customer
DateOfBirth
GetID()SetID()
GenderFirstName...
...
ID
FirstName
DateOfBirth
Gender
SetID
GetID
SetGender
GetGender
ID
![Page 9: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/9.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
...let’s build a bazaar!
Bazaar = New way to think objects
Present self
Customer
ID self
Indicate desiresMake decisions
![Page 10: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/10.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Object thinking = Think like an object
Traditional programmers think like computers
OO programmers must learn to think like objects
Thinking like an object is:
The object space is a community of virtual personsWe must concentrate on the problem spaced rather thanthe solution space
![Page 11: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/11.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Virtual persons
Objects know their resources
Objects ask to other objects when something is needed
Objects do not know the internals of other objectsObjects collaborate, they do not use each other
![Page 12: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/12.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Problem = Solution
We must decompose a problem into a set of objects
The solution is in the interaction of objects
If the objects act as in the problem space this is thesolution
The objects simulate the problem to solve it
![Page 13: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/13.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Problem = Solution
We must decompose a problem into a set of objects
The solution is in the interaction of objects
If the objects act as in the problem space this is thesolution
The objects simulate the problem to solve it
![Page 14: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/14.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Four golden rules
Everything is an object
Simulation of the problem domain drives to objectdiscovery and definition
Objects must be composition enabled
Distributed cooperation and communication must replacehierarchical centralized control as an organizationparadigm
![Page 15: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/15.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Traditional application (Example)
Application
Main
Procedure A Procedure B
![Page 16: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/16.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Object Oriented application (Example)
Application
Object_2
Object_4
Object_1
Object_3
![Page 17: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/17.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is it simple?
NO!The process of being an object thinker is not easy
You must start to think like an object and continue tolearn day by day
The code, and the style, will be better with time
![Page 18: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/18.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is it simple?
NO!
The process of being an object thinker is not easy
You must start to think like an object and continue tolearn day by day
The code, and the style, will be better with time
![Page 19: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/19.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is it simple?
NO!The process of being an object thinker is not easy
You must start to think like an object and continue tolearn day by day
The code, and the style, will be better with time
![Page 20: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/20.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Terms to deal with
First of all we must define the basic terms
ClassObjectResponsibilityMessage and method
![Page 21: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/21.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Terms to deal with
First of all we must define the basic terms
ClassObjectResponsibilityMessage and method
![Page 22: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/22.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Class
Classes are the fundamental units of understanding
We define the world in terms of objects associated tosome class
Classes define attributes and methods of the objects of itskind
![Page 23: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/23.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Class (Example)
class Integer{int val;
void SetValue(int x){ val := x; }int GetValue(){ return val; }Integer +(Integer o){
Integer i := new Integer();i.SetValue(o.GetValue()+val);return i;
}}
![Page 24: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/24.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Object
An object is an instance of a class.
An object can be uniquely identified by its name
An object defines a state which is represented by thevalues of its attributes at a particular time
The only way to create an application must be to composeobjects
![Page 25: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/25.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Object
An object is an instance of a class.
An object can be uniquely identified by its name
An object defines a state which is represented by thevalues of its attributes at a particular time
The only way to create an application must be to composeobjects
![Page 26: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/26.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Object (Example)
class Integer{int val;
void SetValue(int x){ ... }int GetValue(){ ... }Integer +(Integer o){ ... }
}
Integer i := new Integer(); //ObjectInteger j := new Integer(); //Object
i.SetValue(2);j.SetValue(3);
Integer k := i + j; // i.+(j)
![Page 27: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/27.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Responsibility
A responsibility is a service that an object can provide
If we define the world in terms of objects then
An object is everything capable to provide a limited set ofservicesThe only way to create an application is to composeobjects
The responsibility of an object is known also as theinterface that the object implements
![Page 28: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/28.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Responsibility
A responsibility is a service that an object can provide
If we define the world in terms of objects then
An object is everything capable to provide a limited set ofservices
The only way to create an application is to composeobjects
The responsibility of an object is known also as theinterface that the object implements
![Page 29: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/29.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Responsibility
A responsibility is a service that an object can provide
If we define the world in terms of objects then
An object is everything capable to provide a limited set ofservicesThe only way to create an application is to composeobjects
The responsibility of an object is known also as theinterface that the object implements
![Page 30: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/30.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Responsibility
A responsibility is a service that an object can provide
If we define the world in terms of objects then
An object is everything capable to provide a limited set ofservicesThe only way to create an application is to composeobjects
The responsibility of an object is known also as theinterface that the object implements
![Page 31: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/31.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Responsibility (Example)
class Integer{void SetValue(int x){ ... }int GetValue(){ ... }Integer +(Integer o){ ... }
}
An Integer object does only what it is intended to do:
We can set or get its valueWe can perform some math operations on it
![Page 32: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/32.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Messages and methods
A message is a request to an object to invoke one of itsmethods. A message therefore contains:
The name of the method andThe arguments of the method.
A method is associated with a class. An object invokesone of its class methods as a reaction to the message
![Page 33: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/33.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Messages and methods
A message is a request to an object to invoke one of itsmethods. A message therefore contains:
The name of the method and
The arguments of the method.
A method is associated with a class. An object invokesone of its class methods as a reaction to the message
![Page 34: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/34.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Messages and methods
A message is a request to an object to invoke one of itsmethods. A message therefore contains:
The name of the method andThe arguments of the method.
A method is associated with a class. An object invokesone of its class methods as a reaction to the message
![Page 35: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/35.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Messages and methods
A message is a request to an object to invoke one of itsmethods. A message therefore contains:
The name of the method andThe arguments of the method.
A method is associated with a class. An object invokesone of its class methods as a reaction to the message
![Page 36: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/36.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Messages and method (Example)
class Integer{int val;
void SetValue(int x){ val := x; }...
}
Integer i := new Integer();i.SetValue(42);
The last instruction must be interpreted as:We send a message to i, the message says: “please setyour value to 42”When the object i receives the message it performs theoperation(s) in the body of method SetValue to changeits status
![Page 37: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/37.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Object Oriented programming: how to do it
After terms we need techniques
Relation between classesPolymorphism
Followings are general techniques, you must adapt them totools that you use
![Page 38: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/38.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Object Oriented programming: how to do it
After terms we need techniques
Relation between classesPolymorphism
Followings are general techniques, you must adapt them totools that you use
![Page 39: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/39.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Object Oriented programming: how to do it
After terms we need techniques
Relation between classesPolymorphism
Followings are general techniques, you must adapt them totools that you use
![Page 40: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/40.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Relations between classes
We have different ways to relate classes:
is-a-kind-of and is-ais-part-of and has-auses-a and is-used-by
![Page 41: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/41.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Relations between classes
We have different ways to relate classes:
is-a-kind-of and is-a
is-part-of and has-auses-a and is-used-by
![Page 42: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/42.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Relations between classes
We have different ways to relate classes:
is-a-kind-of and is-ais-part-of and has-a
uses-a and is-used-by
![Page 43: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/43.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Relations between classes
We have different ways to relate classes:
is-a-kind-of and is-ais-part-of and has-auses-a and is-used-by
![Page 44: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/44.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is-a-kind-of and is-a
We say that Foo class is-a-kind-of Bar class if Foo has thesame responsibilities of Bar
We say that an object f of Foo is-a b of class Bar if Foois-a-kind-of Bar
is-a-kind-of is a relation between classes
is-a is a relation between objects
Inheritance is the way in which a is-a-kind-of relation (andis-a relation too) is established.
![Page 45: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/45.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is-a-kind-of and is-a
We say that Foo class is-a-kind-of Bar class if Foo has thesame responsibilities of Bar
We say that an object f of Foo is-a b of class Bar if Foois-a-kind-of Bar
is-a-kind-of is a relation between classes
is-a is a relation between objects
Inheritance is the way in which a is-a-kind-of relation (andis-a relation too) is established.
![Page 46: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/46.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is-a-kind-of and is-a
We say that Foo class is-a-kind-of Bar class if Foo has thesame responsibilities of Bar
We say that an object f of Foo is-a b of class Bar if Foois-a-kind-of Bar
is-a-kind-of is a relation between classes
is-a is a relation between objects
Inheritance is the way in which a is-a-kind-of relation (andis-a relation too) is established.
![Page 47: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/47.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is-a-kind-of (Example)
class Integer{void SetValue(int x){ ... }
}
class UnsignedInteger: Integer{void SetValue(int x){
if(x >= 0){Integer::SetValue(x);
}else{RaiseException();
}}...
}
![Page 48: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/48.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is-a (Example)
class VectorOfInteger{Integer v[N];
void Add(Integer i){ ... }}
VectorOfInteger v := new VectorOfInteger();
Integer i := new Integer();i.SetValue(-3);v.Add(i);
UnsignedInteger u := new UnsignedInteger();u.SetValue(42);v.Add(u); //an UnsignedInteger is-a Integer
![Page 49: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/49.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is-part-of and has-a
We say that Foo class is-part-of Bar class if Bar has one,or more, attributes of type Foo
Has-a is exactly the opposite of is-part-of relation
Composition is the way in which a is-part-of relation (andhas-a relation too) is established.
![Page 50: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/50.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is-part-of and has-a
We say that Foo class is-part-of Bar class if Bar has one,or more, attributes of type Foo
Has-a is exactly the opposite of is-part-of relation
Composition is the way in which a is-part-of relation (andhas-a relation too) is established.
![Page 51: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/51.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Is-part-of and has-a (Example)
Table
Row
Cell
has-a
has-a
is-part-of
is-part-of
![Page 52: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/52.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Uses-a and is-used-by
We say that Foo class uses-a Bar class if Foo knows how touse an object of type Bar but with out Bar is-part-of Foo
Is-used-by is exactly the opposite of uses-a relation
![Page 53: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/53.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Uses-a (Example)
class Output{...void Print(Integer i){...}...
}
Output o = new Output();Integer i = new Integer();i.SetValue(42);o.Print(i);
The Output class knows how to manage an Integer object butafter the Print method execution there is no more trace ofobject i in object o
![Page 54: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/54.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Polymorphism
When we send a message to an object, the object caninterpret the message in various ways
As a consequence of this multiple classes can expose thesame interface
The same message can yield many, different, responses
The sender interest moves from how a class performssome task to what a class can perform
![Page 55: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/55.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Polymorphism
When we send a message to an object, the object caninterpret the message in various ways
As a consequence of this multiple classes can expose thesame interface
The same message can yield many, different, responses
The sender interest moves from how a class performssome task to what a class can perform
![Page 56: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/56.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Polymorphism
When we send a message to an object, the object caninterpret the message in various ways
As a consequence of this multiple classes can expose thesame interface
The same message can yield many, different, responses
The sender interest moves from how a class performssome task to what a class can perform
![Page 57: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/57.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Polymorphism
When we send a message to an object, the object caninterpret the message in various ways
As a consequence of this multiple classes can expose thesame interface
The same message can yield many, different, responses
The sender interest moves from how a class performssome task to what a class can perform
![Page 58: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/58.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Polymorphism classification
Polymorphism
Universal
Ad-hoc
Parametric
Sub-type
Overloading
Coercion
![Page 59: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/59.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Sub-type polymorphism
Sub-type polymorphism is given by inheritance andmethod overriding
With method overriding we redefine in a subclass methodsof the super class(es)
With the use of late binding we are able to dispatch themessage to the right receiver
We can use, as base classes, abstract classes
![Page 60: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/60.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Sub-type polymorphism
Sub-type polymorphism is given by inheritance andmethod overriding
With method overriding we redefine in a subclass methodsof the super class(es)
With the use of late binding we are able to dispatch themessage to the right receiver
We can use, as base classes, abstract classes
![Page 61: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/61.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Sub-type polymorphism
Sub-type polymorphism is given by inheritance andmethod overriding
With method overriding we redefine in a subclass methodsof the super class(es)
With the use of late binding we are able to dispatch themessage to the right receiver
We can use, as base classes, abstract classes
![Page 62: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/62.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Sub-type polymorphism
Sub-type polymorphism is given by inheritance andmethod overriding
With method overriding we redefine in a subclass methodsof the super class(es)
With the use of late binding we are able to dispatch themessage to the right receiver
We can use, as base classes, abstract classes
![Page 63: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/63.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Abstract classes
Abstract classes define a set of responsibilities
Abstract classes implement only some of theirresponsibilities
Other responsibilities implementation is left to sub classes
In some languages (Java, C#...) classes that implementnone of their responsibilities are called interfaces
![Page 64: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/64.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Abstract classes
Abstract classes define a set of responsibilities
Abstract classes implement only some of theirresponsibilities
Other responsibilities implementation is left to sub classes
In some languages (Java, C#...) classes that implementnone of their responsibilities are called interfaces
![Page 65: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/65.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Abstract classes
Abstract classes define a set of responsibilities
Abstract classes implement only some of theirresponsibilities
Other responsibilities implementation is left to sub classes
In some languages (Java, C#...) classes that implementnone of their responsibilities are called interfaces
![Page 66: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/66.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Sub-type polymorphism (Example)
FireWall Rule
Rule_1 Rule_2 Rule_n. . .
![Page 67: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/67.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Without sub-type polymorphism (Example)
class Rule{type_t t;type_t GetType(){return t;}void SetType(type_t x){t := x;}
}
class Rule 1: Rule{Rule 1(){ Rule::SetType(RULE 1);}bool MustDiscardWithRule1(Message m){ ... }
}
class Rule 2: Rule{Rule 2(){ Rule::SetType(RULE 2);}bool MustDiscardWithRule2(Message m){ ... }
}
![Page 68: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/68.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Without sub-type polymorphism (Example 2)
class FireWall{Rule rule[N];int rulesnumber;...void AppendRule(Rule r){ ... }bool MustDiscard(Message m){
bool res = false; int i = 0;while(i < rulesnumber){
if(rule[i].GetType() = RULE 1){res = ((Rule 1)rule[i]).MustDiscardWithRule1(m);if(res = true){break;}
}elsif(...){...}...i++;
}return res;
} }
![Page 69: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/69.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
With sub-type polymorphism (Example)
class Rule{abstract bool MustDiscard(Message m);
}
class Rule 1: Rule{bool MustDiscard(Message m){ ... }
}
class Rule 2: Rule{bool MustDiscard(Message m){ ... }
}
![Page 70: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/70.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
With out sub-type polymorphism (Example 2)
class FireWall{Rule rule[N];int rulesnumber;...void AppendRule(Rule r){ ... }bool MustDiscard(Message m){
bool res = false; int i = 0;while(i < rulesnumber){
res = rule[i].MustDiscard(m);if(res = true){
break;}i++;
}return res;
} }
![Page 71: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/71.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Parametric polymorphism
With parametric polymorphism we are able to writegeneric code
Generic coding permits to write one piece of code formultiple types
C++ templates are an example of parametricpolymorphism
![Page 72: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/72.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Parametric polymorphism
With parametric polymorphism we are able to writegeneric code
Generic coding permits to write one piece of code formultiple types
C++ templates are an example of parametricpolymorphism
![Page 73: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/73.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Parametric polymorphism
With parametric polymorphism we are able to writegeneric code
Generic coding permits to write one piece of code formultiple types
C++ templates are an example of parametricpolymorphism
![Page 74: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/74.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Parametric polymorphism (Example 1)
class Buffer of T{T v[N];...void SetAt(int idx, T val){
if(idx < N && i > 0){v[idx] := val;
}else{RaiseException();
}}
}
Buffer<Integer> bi = new Buffer<Integer>()Integer i = new Integer();i.setValue(42);bi.SetAt(5, i);
![Page 75: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/75.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Parametric polymorphism (Example 2)
class Buffer of T{T v[N];...T GetAt(int idx){
if(idx < N && i > 0){return v[idx];
}else{RaiseException();
}}
}
Buffer<Integer> bi = new Buffer<Integer>()...Integer i = bi.GetAt(5);
![Page 76: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/76.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Overloading polymorphism
With overloading polymorphism we are able to writemultiple versions of the same method with differentsignature
The compiler dispatch the message to the right methodusing the type information
![Page 77: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/77.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Overloading polymorphism
With overloading polymorphism we are able to writemultiple versions of the same method with differentsignature
The compiler dispatch the message to the right methodusing the type information
![Page 78: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/78.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Overloading polymorphism (Example)
class Output{void Print(int i){...}void Print(string s){...}void Print(real r){...}
}
...
Output o = new Output();o.Print(42); //42 is into.Print(‘‘foo’’); //’’foo’’ is stringo.Print(5.0); //5.0 is real
![Page 79: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/79.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Coercion polymorphism
With coercion polymorphism we are able to performautomatic type conversions
We are able to do a kind of overloading polymorphism in aimplicit way
In C++ we can use operator overloading with castoperators to perform automatic cast
![Page 80: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/80.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Coercion polymorphism
With coercion polymorphism we are able to performautomatic type conversions
We are able to do a kind of overloading polymorphism in aimplicit way
In C++ we can use operator overloading with castoperators to perform automatic cast
![Page 81: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/81.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Coercion polymorphism
With coercion polymorphism we are able to performautomatic type conversions
We are able to do a kind of overloading polymorphism in aimplicit way
In C++ we can use operator overloading with castoperators to perform automatic cast
![Page 82: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/82.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Coercion polymorphism (Example)
class Real{real val;
void SetValue(real r){val := r}}
Real r = new Real();r.SetValue(5.0);r.SetValue(42);//42 -> 42.0
The effect is similar to the one in which we defineSetValue(int) in the Real class.
![Page 83: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/83.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Conclusions
This slides are not enough
The only important thing is to begin to think like objects
The only way to learn object thinking is to practice and toapply the concepts seen in this lecture
Good work!
![Page 84: Object Thinking Introduction Philosophy Object Thinking Terms …groups.di.unipi.it/~nids/teaching/files/ObjTh.pdf · 2009. 9. 18. · Object Thinking Introduction Philosophy Terms](https://reader035.vdocuments.site/reader035/viewer/2022062610/6116e64b546db141ac0321aa/html5/thumbnails/84.jpg)
ObjectThinking
Introduction
Philosophy
Terms
Techniques
Conclusions
Conclusions
This slides are not enough
The only important thing is to begin to think like objects
The only way to learn object thinking is to practice and toapply the concepts seen in this lecture
Good work!