Une introduction à la programmation orienté-objet pour

Transcription

Une introduction à la programmation orienté-objet pour
ELP
Une introduction à la programmation orienté-objet
pour ceux qui ont appris le C
RoboZZle http://www.robozzle.com/js/
RoboZZle http://www.robozzle.com/js/
RoboZZle http://www.robozzle.com/js/
RoboZZle http://www.robozzle.com/js/
RoboZZle http://www.robozzle.com/js/
RoboZZle http://www.robozzle.com/js/
RoboZZle http://www.robozzle.com/js/
RoboZZle http://www.robozzle.com/js/
Pourquoi ce n'est pas si simple
●
●
En surface :
–
Il n'y a pas de variables !
–
Il n'y a pas de boucles !
Au fond : on ne décrit pas en totalité le chemin,
comme il est vu depuis l'extérieur, mais on
décrit comment le robot doit agir en fonction
des circonstances.
Programmation orienté-objet
●
An Introduction to Object-Oriented
Programming. 3rd Ed. Timothy A. Budd.
Oregon State University.
Une petite histoire
« Chris wishes to send flowers to a friend
named Robin, who lives in another city.
Because of the distance, Chris cannot simply
pick the flowers and take them to Robin in
person. Chris simply walks to a nearby flower
shop, run by a florist named Fred. Chris will tell
Fred the kinds of flowers to send to Robin, and
the address to which they should be
delivered. »
Résumons
●
On cherche un agent...
●
À qui on envoie un message contenant une requête.
●
●
●
C'est la responsabilité de l'agent de satisfaire cette
requête…
En réalisant des tâches selon une méthode.
On n'a pas besoin de savoir quelle méthode est
utilisée ; il peut s'agir d'envoyer un message à un
autre agent...
Ce qu'on ne voit pas
Communauté d'agents
●
●
An object oriented program is structured as a
community of interacting agents, called objects.
Each object has a role to play. Each object
provides a service, or performs an action, that is
used by other members of the community.
Action is initiated in object-oriented programming
by the transmission of a message to an agent
(an object) responsible for the action.
Messages vs Appels de fonction
●
●
Un message est adressé à un agent (objet)
L'interprétation du message dépend de l'agent
auquel il est adressé : en réponse à ce
message, deux agents différents peuvent agir
différemment.
Exemples
●
●
« Chris could give a message to a friend named
Elizabeth, for example, and she will understand it and
flowers will be delivered to their mutual friend Robin.
However, the method Elizabeth uses to satisfy the
request (simply passing the request on to Fred) will be
different from that used by Fred in response to the same
request. »
« If Chris were to ask Kenneth, a dentist, to send flowers
to Robin, Kenneth may not have a method for solving
that problem. If he understands the request at all, he will
probably issue an appropriate error diagnostic. »
Fred est un fleuriste
« Although Chris has only dealt with Fred a few
times, Chris has a rough idea of the transaction
that will occur inside Fred's flower shop. Chris is
able to make certain assumptions based on
previous experience with other florists, and
hence Chris can expect that Fred, being an
instance of this category, will fit the general
pattern. We can use the term Florist to represent
the category (or class) of all florists. »
Un fleuriste est un être humain
Classes et instances
●
All objects are instances of a class. The
method invoked by an object in response to a
message is determined by the class of the
receiver. All objects of a given class use the
same method in response to similar messages.
Hiérarchie de classes
Du message à la méthode
The search for a method to invoke in response
to a given message begins with the class of the
receiver. If no appropriate method is found, the
search is conducted in the parent class of this
class. The search continues up the parent class
chain until either a method is found or the
parent class chain is exhausted. In the former
case the method is executed; in the latter case,
an error message is issued.
Concepts principaux (A. Kay, 1993)
●
Un programme est une communauté d'objets
communiquant des messages ; un message est une
demande d'action accompagnée des arguments
nécessaires à sa réalisation.
●
L'état de chaque objet est stocké en mémoire.
●
Chaque objet est une instance de classe.
●
●
La classe contient le comportement associé à un objet ;
tous les objets de la même classe ont le même
comportement.
Toutes les classes sont organisées dans une hiérarchie.
Les instances d'une classe partagent leur état et leur
comportement à toute instance d'une classe descendant.
C'est bien joli, mais…
●
« On ne peut pas faire du vrai calcul »
–
C'est vrai que cette approche s'applique mieux à
certains domaines d'application qu'à d'autres.
–
Mais, on peut l'appliquer tout le temps, ce qui peut
nous faire penser à des solutions qui ne nous
seraient pas apparues de prime abord, car on ne
donne pas directement toutes les instructions : on
crée une communauté d'agents qui agissent euxmêmes.
Exemple en mouvement
PERSONNE
Se Comparer :
Si j'ai à mon niveau un voisin de gauche
Si je suis plus grand que lui
on échange de place
je me demande de me comparer à nouveau
Sinon
je lui demande de se comparer à son tour
Sinon
je recule d'un pas
je demande au messager d'agir
MESSAGER
Agir :
Si la première personne n'a pas encore reculé d'un pas
je lui demande de se comparer
Point d'entrée
●
Toute application orienté-objet a
–
soit des objets automatiquement créés par
l'environnement d'exécution,
–
soit un point d'entrée, où le développeur exige luimême la création les premiers objets (méthode
main en java).
Exemple de programme Java
●
●
Java 5, synthèse de cours & exercices corrigés,
Robert Chevallier, Pearson Education, 2005.
« Deux personnes s'unissent à la mairie et
obtiennent un acte de mariage », p. 111-113.
Petite conclusion comparative
●
Un programme orienté-objet
Décrit une communauté d'agents qui interagissent
+Se communique facilement à des non-spécialistes
- Ne précise pas finement la complexité en temps et
en mémoire
ELP : objectifs
●
●
Acquérir/Consolider vos compétences en Java,
vu comme un modèle de langage de
programmation orienté-objet
Se familiariser avec de nouvelles manières de
programmer, induites par d'autres langages de
programmation.
ELP : organisation pratique
●
Java : 8 TDs (TRO)
●
1 TP (TRO)
●
Clojure : 2 TDs (JPO)
●
Python : 2 TDs (RKE)
●
Go : 2 TDs (JPO)
ELP : évaluation
●
Contrôle continu (20 %)
–
●
TP
Examen final d'1h30 sur machine (80 %)
FIN