PROGRAMMATION ORIENTÉE OBJET AVEC JAVA LSTI Génie logiciel S5 Module: I511 FST – Errachidia 2021/2022 Pr. Mohamed OUALLA m.oualla@umi.ac.ma Bibliographie https://www.pdfdrive.com/ 2 Plan du cours • Chp 1: Introduction générale • Chp 2: Présentation du langage JAVA • Chp 3: Les bases de Java • Chp 4: Classes et objets • Chp 5: Héritage et polymorphisme • Chp 6: Compléments utiles 3 Introduction générale • Introduction • Langages de programmation • Modes de fonctionnement des langages de programmation • Types de langages de programmation • Programmation Orientée Objet ? • Quelques concepts de la POO • Classe et Objet • Abstraction et Encapsulation • Héritage et Polymorphisme CHAPITRE I CHAPITRE i Introduction Introduction générale • Le besoin de communiquer avec l’ordinateur: • Connaitre son langage (des 1 et des 0) Calculer la somme de deux nombres entiers 001101010001 100101000111 10010 Logiciel (Programmes) Calculer la somme de deux nombres entiers "Traducteur" Alors c’est quoi un programme et comment le créer ? 00110101000110 01010001111001 0 5 CHAPITRE i Définitions Introduction générale • Un programme est une suite d'instructions définissant des opérations à exécuter par l’ordinateur. • Une instruction est un ordre donné à un ordinateur. • Pour écrire des programmes, on se sert d'une notation, appelée langage de programmation destiné à décrire l'ensemble des instructions qu'un ordinateur doit exécuter. • Java, Python, C, C++, • etc. 6 CHAPITRE i Langage de programmation Rédige un programme à l’aide d’un langage de programmation développeur • • • Affiche la somme de 10 et 34 Calcule l'âge en fonction de la date Affiche l'âge calculé Programme (Code source) Plusieurs façons de rédiger un programme → Différents types de langages de programmation. (Ex. POO) Introduction générale 00110101011 Traducteur (Compilateur ou interpréteur) Exécute le code Plusieurs façons de traduire → Différents modes de fonctionnement de langages de programmation. (Compilé, Interprété) 7 Modes de fonctionnement des langages de programmation CHAPITRE i Introduction générale • Trois grands modes de fonctionnement des langages de programmation : • Les langages interprétés. • Les langages compilés. • Les langages intermédiaires. 8 CHAPITRE i Les langages interprétés vs compilés (1/2) Introduction générale Fichier contenant le code source Lecture ligne 3 Lecture ligne 2 Lecture ligne 1 1. 2. 3. Affiche la somme de 10 et 34 Calcule l'âge en fonction de la date Affiche l'âge calculé Lance la compilation Compilateur Interpréteur ligne 3 ligne 2 Création de l’exécutable OS ligne 1 10001101 00111100 Exécution 01100011 Exécution Le processeur exécute le code 00011101010100011 11001010101000111 01011001110101001 Fichier compilé (exécutable) 9 CHAPITRE i Les langages interprétés vs compilés (2/2) Introduction générale • Dans un langage interprété, le même code source pourra marcher directement sur n’importe quel OS. Avec un langage compilé, il faudra (en général) tout recompiler à chaque modification et chaque changement du OS. (Portabilité) • Dans un langage compilé, le programme est directement exécuté sur l'ordinateur, donc il sera en général plus rapide que le même programme dans un langage interprété. (Rapidité) • Un programme compilé a pour avantage de garantir la sécurité du code source. Par contre, un langage interprété, qui est directement lisible, permet à n'importe qui de connaître les secrets de fabrication d'un programme et donc de copier et de modifier le code. (Sécurité) 10 CHAPITRE i Les langages intermédiaires (Exemple Java) Code source 1. 2. 3. Fichier bytecode Compilateur (monFichier.java) Affiche la somme de 10 et 34 Calcule l'âge en fonction de la date Affiche l'âge calculé Création du bytecode Lance la compilation Introduction générale monFichier.class Les fichiers bytecode peuvent être envoyés sur les ordinateurs clients où ils doivent s’exécuter 000111 010101 000111 monFichier.class Fichier bytecode Ordinateur du client Machine virtuelle Fichier à exécuter OS Windows Le processeur exécute le code 11 Exemple de langages https://www.scr iptol.fr/program mation/listelangagesprogrammation. php#language-a Langage Domaine d'application principal CHAPITRE i Compilé/interprété ADA Le temps réél Introduction Langage compilé BASIC Programmation basique à but éducatif Langage interprété C Programmation système Langage compilé C++ Programmation système objet Langage compilé Cobol Gestion Langage compilé Fortran Calcul Langage compilé Java Programmation orientée objet Langage intermédiaire MATLAB Calcul mathématique Langage interprété Mathematica Calcul mathématique Langage interprété LISP Intelligence artificielle Langage intermédiaire Pascal Enseignement Langage compilé PHP Développement de sites web dynamiques Langage interprété Prolog Intelligence artificielle Langage interprété Perl Traitement de chaînes de caractères Langage interprété Python Intelligence artificielle, calcul mathématique Langage intermédiaire générale 12 CHAPITRE i Langage de programmation Rédige un programme à l’aide d’un langage de programmation développeur • • • Affiche la somme de 10 et 34 Calcule l'âge en fonction de la date Affiche l'âge calculé Programme (Code source) Plusieurs façons de rédiger un programme → Différents types de langages de programmation. (Ex. POO) Introduction générale 00110101011 Traducteur (Compilateur ou interpréteur) Exécute le code Plusieurs façons de traduire → Différents modes de fonctionnement de langages de programmation. (Compilé, Interprété) 13 CHAPITRE i Types de langages de programmation Introduction générale • Les langages procéduraux • Les langages orientés objets (L.O.O) • Les langages logiques • Les langages de spécification • Les langages hybrides 14 CHAPITRE i PP vs POO Introduction générale • PP: Basée sur les traitements : • POO: Basée sur les données : • Décomposer le programme en un ensemble de fonctions (modules) simples. • Définir les données intéressantes, et les regrouper dans des structures qui ont un sens. • Définir les données à manipuler par ces fonctions. • Définir les méthodes d’accès à ces données, et les calculs qui seront effectués dessus. • Le programme est une liste des tâches et des opérations à exécuter. • Le programme est l’ensemble des objets et des interactions entre ces objets. Objet 1 Données globales Données Objet 2 Données Fonction 1: calcule() Données locales Fonction 2: Factorise() Données locales ……… …… … Méthodes: Init() Calcule() Factorise() Méthodes : Init() Trie() Permute() Objet 3 Données Méthodes : Supprime() Ajoute() Insère() 15 CHAPITRE i Exemple: Inscription à la FSTE Introduction générale • Programmation procédurale: • Programmation orienté objet: • Inscription en ligne • Etudiant • Remplir le formulaire en ligne • Données à traiter: nom, prénom, mention,… • Envoyer le formulaire • Inscription finale • Déposer le dossier • Validation de l’inscription • Etudier le dossier • Données: nom, prénom,… • Comportement: s’inscrire en ligne, déposer le dossier, … • Scolarité • Données: dossiers des étudiants, … • Comportement: Etudier le dossier, répondre le candidat, … • Verdict du jury • Etc. 16 CHAPITRE i PP vs POO Introduction générale Programmation Procédurale Programmation Orientée Objet Programmes Le programme principal est divisé en petites parties selon les fonctions. Structuration "descendante" du programme Le programme principal est divisé en petit objet en fonction du problème. Conception d’un logiciel à la manière de la fabrication d’une voiture Les données Chaque fonction contient des données différentes. Les données et les fonctions de chaque objet individuel agissent comme une seule unité. La Les fonctions communiquent avec d’autres Un objet est lié à l’autre en utilisant le communication fonctions en conservant les règles habituelles. message qui passe. Importance Les fonctions ou les algorithmes ont plus d’importance que les données dans le programme. Les données prennent plus d’importance que les fonctions du programme. Exemples Pascal, Fortran PHP5, C ++, Java. 17 CHAPITRE I Programmation Orientée Objet (POO) Introduction générale • La programmation orientée objet (POO) est un paradigme de programmation inventé au début des années 1960 (le langage SIMULA en 1967). • POO est une programmation dans laquelle un programme est organisé comme un ensemble d'objets disposant de ressources et de moyens pour interagir entre eux. • POO permet de décrire le problème avec les termes mêmes du problème plutôt qu'avec les termes de la machine. 18 CHAPITRE I Quelques concepts de la POO Introduction générale • Abstraction • Classe et Objet • Encapsulation • Héritage • Polymorphisme 19 CHAPITRE I 1- Abstraction Introduction générale • L’abstraction, en informatique, est une manière de représenter des objets qui appartiennent au monde réel dans un modèle informatique convenable en se limitant aux aspects utiles pour l’utilisateur de cet abstraction. • Dans un programme de gestion du personnel, un professeur peut être représenté par une classe ayant comme attributs: CIN, nom, prénom et grade. • Dans un programme de gestion des emplois, ce même professeur peut être représenté par une classe ayant comme attributs: nom, prénom et matière. • Abstraction par simplification: simplifier une réalité complexe, elle consiste à négliger ce qui n’a pas d’importance (variable, classe, etc.) • Abstraction par généralisation: consiste à remonter du particulier vers le général (héritage, polymorphisme) • L’abstraction, en OO, est un processus permettant de construire des classes pertinentes, dans le domaine d'application considéré en réduisant le monde réel afin d'en gérer la complexité . 20 CHAPITRE I 2- Classe et Objet: Objet Introduction générale • Un objet représente toute entité du monde physique (matériel), un concept ou une idée (immatériel). • Exemple: une voiture, une personne, une facture, un nombre complexe, … • Un objet est caractérisé par une identité, des états significatifs et un comportement. • Identité: Permet de distinguer les objets les uns par rapport aux autres. • Etat: Correspond aux valeurs de tous les attributs (Données) à un instant donné. • Comportement: Se défini par l’ensemble des opérations (Méthodes) qu’il peut exécuter en réaction aux messages envoyés par les autres objets. • Un message = demande d’exécution d’une opération 21 CHAPITRE I 2- Classe et Objet: Exemple d’un objet Introduction générale • Dans une usine, l’objet voiture1 est caractérisé par: • Son identité : voiture1 • Son état: • • • • marque: Renault modèle : Megane couleur : Noire moteur: Diesel, 85 Chevaux Identité Etat • Son comportement: • • • • demarrer() arreter() peindre(NouvColor) getModele() Comportement :voiture1 voiture1 marque: Renault modèle : Megane couleur : Noire moteur: Diesel, Diesel; 85 Chevaux demarrer() Démarrer() arreter() Arrêter() peindre(NouvColor) Peindre(NouvColor) getModele() GetEtat() 22 CHAPITRE I 2- Classe et Objet: Classe Introduction générale • Les objets qui ont les mêmes attributs et les mêmes comportements sont regroupés dans des classes. • Un objet est une variable (presque) comme les autres. Il faut notamment qu’il soit déclaré avec son type (le nom de la classe). • Le type d’un objet est un type complexe (par opposition aux types primitifs entier, caractère, etc.) qu’on appelle une classe. • Les classes servent de « moules » pour la création des objets. • Un objet est une instance (exemplaire) d’une classe. • Une classe possède des membres : • Attributs : les éléments données de la classe. • Méthodes : fonctions qui donnent accès ou modifient les attributs. 23 2- Classe et Objet: Exemple d’une classe et ses objets marque : Renault modèle : Megane année : 2009 Classe Voiture Attributs marque : String modèle : String année : int Méthodes demarrer() : void arreter() : void peindre(String) : void getModele() : String :voiture2 Instanciation marque : Peugeot modèle : 308 année : 2016 :voiture3 marque : BMW modèle : BMW série 3 année : 2018 … Introduction générale Objets (Instances ou exemplaires) :voiture1 CHAPITRE I … 24 CHAPITRE I 2- Classe et Objet: Exercice Introduction générale • Représenter les classes suivantes avec deux objets pour chacune: • Point: qui représente un point de l’espace géométrique, caractérisé par ses coordonnées; l’abscisse et l’ordonnée. • Cette classe possède les méthodes suivantes: • deplacerX: déplacer un point d'une longueur sur l'axe des x. • deplacerY: déplacer un point d'une longueur sur l'axe des y. • Carré: qui représente un carré en géométrie, caractérisé par la longueur de son coté et le point qui représente son coin supérieur gauche. • Cette classe possède les méthodes suivantes: • claculerPerimetre: Calculer son périmètre. • calculerSurface: Calculer son air. • changerPosition: Changer sa position. 25 CHAPITRE I 2- Classe et Objet: la classe Point Introduction générale Objets Classe :p1 abscisse : 2 ordonnee : 10 Point abscisse : int ordonnee : int deplacerX(int longueur) : void deplacerY(int longueur) : void Instanciation :p2 abscisse : 25 ordonnee : 12 26 CHAPITRE I 3- Encapsulation Introduction générale • L'encapsulation est un moyen de présenter une abstraction par le fait de rassembler les données et les méthodes au sein d'une même classe en cachant l'implémentation de l'objet. • C’est un mécanisme de masquage des données, permettant Proposer un service Données d’empêcher l'accès aux données par un autre moyen que les méthodes proposées. Messages Encapsulation Méthodes • Le niveau privé : les attributs sont masqués à l’intérieur d’un objet et l'accès à ces données est limité aux méthodes de la classe elle-même. Niveau de protection le plus élevé. • Le niveau public : l'accès aux données peut être fait par les méthodes de toutes les classes. Niveau de protection le plus bas. Réagir aux messages (Répondre aux messages) • Trois niveaux d'encapsulation: • Le niveau protégé: l'accès aux données est réservé aux méthodes des classes dérivées . (Recevoir des messages) en POO objet Données Autre objet Méthodes 27 CHAPITRE I 3- Encapsulation Introduction générale Proposer un service et réagir aux messages 28 CHAPITRE I 4- Héritage Introduction générale • L’héritage définit une relation de classification (généralisation-spécialisation) entre une classe plus générale ou super-classe, et une ou des classe(s) plus spécifique(s) ou sous-classes . • L'héritage est un mécanisme par lequel une super-classe partage ses attributs et ses opérations Spécialisation Forme Rectangle Triangle Carre Généralisation avec ses sous-classes. • L’héritage permet la réutilisation du code et l’organisation hiérarchique des classes. 29 CHAPITRE I 5- Polymorphisme Introduction générale • Le polymorphisme décrit la caractéristique d'un élément qui peut se présenter sous des formes différentes. • Le polymorphisme d’objet: Un objet peut appartenir à plus d'un type (héritage). On raffine un type-père en un autre type (le sous-type) par des restrictions sur les valeurs possibles des attributs. Ainsi, les objets de ce sous-type sont conformes avec le type père. • Le polymorphisme de méthode: On dit qu'une méthode est polymorphe si elle réalise des actions différentes selon la nature des objets sur lesquels elle s’applique: • Surcharge, • Redéfinition, • Méthodes abstraites. 30