Département GE1 MC S3 Programmation Orientée Objet Python N. Liebeaux (c) IUT CACHAN 2008
Python en 1 diapo Règles de syntaxe langage interprété typage dynamique des données les «deux points» blocs découpés par l'indentation types de données nombres entiers & flottants chaînes " " listes [ ] Contrôle de Flux for, while if, else, elif Les Fonctions utilisation de def et «:» passage de paramètres return renvoie le résultat
Introduction : objet, classe et instanciation Objet : entité évoluée associée à des données et des fonctions (appelées méthodes) qui lui sont propres. Une Classe est le moule qui permet de créer l'objet, ou les objets. L'opération de création d'un nouvel objet à partir d'une classe est appelée instanciation. class rectangle(): "cette classe définit les rectangles" >>> rect1 = rectangle() >>> print rect1 >>> print rect1. doc instanciation doc est une méthode
piège >>> r2 = r1 >>> print r2==r1 >>> print r1 >>> print r2 >>> r2 = rectangle() >>> print r2==r1 >>> print r1 >>> print r2 r2 est un alias de r1 portant sur le même objet. piège bis >>> liste1 = [1,2,3,"a","b","z"] >>> liste2 = [1,2,3,"a","b","z"] >>> print liste1,liste2 >>> print liste2[5]="c" >>> print liste1,liste2
constructeur class rectangle(): "cette classe instancie des rectangles" def init (self, dim1, dim2): self.longueur = dim1 self.largeur = dim2 la fonction init est le constructeur. C'est la méthode qui "construit" l'objet lors du premier appel notez l'usage du mot réservé self. la méthode init nécessite ici deux paramètres (et non pas 3), correspondant aux dimensions du rectangle.
exemple >>> r1 = rectangle() >>> r1 = rectangle(2,3) >>> print r1.longueur >>> print r1.largeur encapsulation un objet porte en lui-même ses données et ses méthodes : c'est l'encapsulation. avec ce concept, l'objet est utilisé via ses méthodes, peu importe pour l'utilisateur de connaître le contenu (le code) des dites méthodes. syntaxe objetinstancié.méthode()
encapsulation class rectangle(): "cette classe instancie des rectangles" def init (self, dim1, dim2): self.longueur = dim1 self.largeur = dim2 def calculeraire(self): print "Aire ",self.dimensions," :" return self.longueur*self.largeur
héritage class carre(rectangle): "cette classe instancie des carrés" def init (self, dim1): rectangle. init (self,dim1, dim1) une classe mère peut donc dériver plusieurs classes filles. C'est la classe parente. idée de spécialisation de la classe fille.
polymorphisme class carre(rectangle): "cette classe instancie des carrés" def init (self, dim1): rectangle. init (self,dim1, dim1) def calculaire(self): print "on travaille avec un carré" print self.longueur*self.largeur Polymorphisme = plusieurs méthodes de même nom dans les classes filles. la méthode calculaire est définie dans la classe rectangle. la méthode calculaire est définie dans la classe carré. On parle alors de surcharge.
exercice corrigé 1/ - proposer une structure de classe point : coordonnées x et y. 2/ - proposer une structure de classe vecteur. 3/ - proposer une méthode permettant de calculer le produit scalaire. 4/ - proposer une méthode permettant de vérifier si deux vecteurs sont orthogonaux. conclusion Classes filles peuvent : étendre les concepts de la classe parente (ex: points vecteurs) Affiner les concepts de la classe parente (ex: rectangle carré)
exercice 1/ - proposer une structure de classe individu : nom,prénom, date de naissance. 2/ - proposer une structure de classe étudiant : bac, notes par matière. 3/ - proposer une méthode permettant de calculer l'age d'un individu, 4/ - proposer une méthode permettant d'ajouter une note. 5/ - proposer une méthode de calcul de moyenne générale des notes.
évaluation du projet Travail en binôme Fiches de suivi, avec numéros de versions, tests unitaires et progressions. Test individuel de fin de Module. rappels sur la programmation XP Pratiques ««Développement Développeur «Métier»»» Codez Adoptez Ajoutez et un le concevez développement client à avec l'équipe simplicité piloté par les tests Pratique Programmez Jouez le jeu la restructuration de en la binôme planification (optimisation du code) Développez Adoptez Livrez régulièrement la propriété des standards collective de développement du code Développez Intégrez Travaillez continuellement à un rythme vocabulaire raisonnable commun
évaluation du projet Travail en binôme Fiches de suivi, avec numéros de versions, tests unitaires et progressions. Test individuel de fin de Module. rappels sur la programmation XP Pratiques ««Développement Développeur»» Codez Adoptez et le concevez développement avec simplicité piloté par les tests Pratique Programmez la restructuration en binôme (optimisation du code) Développez Adoptez la propriété des standards collective de développement du code Développez Intégrez continuellement un vocabulaire commun
évaluation du projet Travail en binôme Fiches de suivi, avec numéros de versions, tests unitaires et progressions. Test individuel de fin de Module. rappels sur la programmation XP Pratiques «Développement» Codez et concevez avec simplicité Pratique la restructuration (optimisation du code) Développez des standards de développement Développez un vocabulaire commun
le Projet du MC objectifs premiers Mise en oeuvre des techniques «Objet». Aucune interface graphique (tout en mode texte) Jeu Humain VS Humain objectifs secondaires Interface graphique Mise en place d'une IA : jeu Humain VS PC