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