🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

1- introduction au java POO.pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

Programmation Orientée Objet et Langage Java Introduction à POO & Java Module: Programmation Objet Avancée A.Mazoul Département Génie informatique Programmation orienté objet en Java...

Programmation Orientée Objet et Langage Java Introduction à POO & Java Module: Programmation Objet Avancée A.Mazoul Département Génie informatique Programmation orienté objet en Java Introduction à POO Principe de la programmation orienté objet (POO) POO consiste à rassembler dans une même entité appelée objet les données et les traitements qui s'y appliquent. On distingue deux type de programmation:  Programmation procédurale: Organisée autour de la notion de procédures Fonctionne bien lorsque les données sont simples  Programmation orienté objet: Regroupe un ensemble de données décrivant une même entité Aide à réduire la complexité du système A.Mazoul Programmation orienté objet Java 2 Programmation orienté objet en Java Introduction à POO Programmation orienté objet Un objet est défini par:  Un état: les attributs ou variables qui stockent des valeurs.  Comportement: les méthodes (procédures, fonctions ou interfaces) qui modifient l’état d’un objet.  Identité: identification d’objet qui doit être unique. POO est donc une approche consistant à organiser la solution d’un problème autour du concept d’objets. Un programme devient alors un ensemble d’objets collaborant entre eux afin d’effectuer une tâche donnée MaVoiture - Couleur = rouge - Vitesse = 120 - Marque = Toyota Voiture Étudiant Personne Objet Professeur A.Mazoul Programmation orienté objet Java 3 Programmation orienté objet en Java Introduction à POO POO: Classes & Objet Une classe: Est une description abstraite d'un objet. Instancier une classe consiste à créer un objet sur son modèle. Définie les fonctions (appelées méthodes) qui opèrent sur les attributs. On peut dire, un objet est une variable de type classe!! Nom Hom m e Une classe comporte: A g e : In t e g e r Ta ille : D o u b le Sa déclaration. P o id s : D o u b le Attributs N o m : S t rin g Des variables (ou attributs). p a rle () Les définitions de ses méthodes. m a n g e () b o it () Méthodes d o rt () Ali est objet de Les objets de la classe femme Les objets de la classe Homme type Homme A.Mazoul Programmation orienté objet Java 4 Programmation orienté objet en Java Introduction à POO POO: Classes & Objet Des objets similaires peuvent être informatiquement décrits par une même abstraction (une classe):  Même structure de données et méthodes de traitement  Des valeurs différentes pour chaque objet Un objet est une variable (presque) comme les autres. Les objets sont construits à partir de la classe, par un processus appelé instanciation. De ce fait, tout objet est une instance (une variable) de classe. Personne_1 Personne Personne_3 Nom: Salimi Nom Prenom: Rachid Nom: Atifi Prenom Age: 50 Prenom: Akram Age instanciation Personne_2 Age: 35 Creer() Nom: Zaki Supprimer() Prenom: karima Clonner Age: 17 Classe Objets: les instances de la classe Personne A.Mazoul Programmation orienté objet Java 5 Programmation orienté objet en Java Introduction à POO Origines des langages POO Histoire Début des Années 50 Langages Bas niveau Ex: langage binaire, langage assembleur Début des années 60 Langage de plus haut niveau Ex: Fortran, Cobol Années 70 Langages de programmation structurée Ex: Pascal, C Années 80 Langage orientées Objet Ex: Java, C++ A.Mazoul Programmation orienté objet Java 6 Programmation orienté objet en Java Introduction à POO Origines des langages POO Langages structurés ou procédural Suite d’instructions organisées en une collection de fonctions qui s’appellent: void main{ ….. int fct2(){ fct1(); ….. } float fct_n(){ } ….. void fct1(){ } float fct3(){ ….. ….. fct2(); fct3(); } } A.Mazoul Programmation orienté objet Java 7 Programmation orienté objet en Java Introduction à POO Origines des langages POO Programmation structurée et programmation objet:  Approche procédurale : Que doit faire mon programme ?  Approche orientée-objet : De quoi doit être composé mon programme ? int fct_1 (){ int fct_1 (){ Obj 1 Obj 2 ….. int fct_1 (){ ….. int fct_1 (){ ….. int fct_n (){ } ….. } ….. Obj 3 } Obj 4 } Obj 5 } Fonctions ou Procédures, Objets Programmation structurée Programmation Objet programmation procédurale A.Mazoul Programmation orienté objet Java 8 Programmation orienté objet en Java Introduction à Java Pourquoi JAVA? Java est un langage de programmation moderne développé par Sun Microsystems. Racheté par Oracle en 2009. Ne le confondre pas avec javaScripte. Une de ses plus grandes forces est son excellente portabilité. Un langage orienté objet concurrent avec une syntaxe dérivée de C++. Java permet de créer diverse applications telle que:  Des applications, sous forme de fenêtre ou de console.  Des applets, qui sont des programmes Java incorporés à des pages web.  Des applications pour appareils mobiles, avec Android.  J2EE, JMF, J3D pour la 3D. ... A.Mazoul Programmation orienté objet Java 9 Programmation orienté objet en Java Introduction à Java Java et ses versions Différentes versions de la machine virtuelle:  Java 2 Micro Edition (Java ME) qui cible les terminaux portables  Java 2 Standard Edition (Java SE) qui vise les postes clients  Java 2 Enterprise Edition (Java EE) qui définit le cadre d’un serveur d’application. Différentes finalités:  SDK (Software Development Kit) fournit un compilateur et une machine virtuelle  JRE (Java Runtime Environment) fournit uniquement une machine virtuelle. Idéal pour le déploiement de vos applications.  JDK (Java Development Kit) contient l’ensemble des éléments du JRE ainsi que les outils de développement.  IDE (Integrated Development Environment) regroupe un éditeur de texte, un compilateur, des outils de développement, un débogueur. (Ex: Eclipse, Netbeans,…) Version actuelle de Java: Java SE 16 Cette version est sortie le 16 mars 2021 A.Mazoul Programmation orienté objet Java 10 Programmation orienté objet en Java Introduction à Java La plateforme Java Plateforme est environnement hardware ou software sur lequel un programme est exécuté. La Plateforme Java se compose de:  Java Virtual Machine (JVM)  Java Application Programming Interface (Java API) Programme.class API JAVA JVM (machine virtuelle) Système d’exploitation (Window, Linux, Mac OS) A.Mazoul Programmation orienté objet Java 11 Programmation orienté objet en Java Introduction à Java La machine virtuelle JAVA (JVM) Une machine virtuelle Java (JVM) est un ordinateur fictif s’exécutant sur un ordinateur réel :  Elle possède un langage natif propre et permet de traduire un programme écrit en java en langage machine.  Définit les spécifications hardware de la plateforme  Lit le bytecode compilé (indépendant de la plateforme) API (Application Programming Interface) Java : Ensemble de bibliothèques Java standards que le programmeur peut inviter (importer) pour écrire son code:  Structuré en libraires (packages).  Les packages comprennent des ensembles fonctionnels de composants (classes, data types, objects, string, array, vector, I/O,date,…) A.Mazoul Programmation orienté objet Java 12 Programmation orienté objet en Java Introduction à Java Fonctionnement de Java Code source Java (ex: fichier.java):  Fichier utilisé lors de la phase de programmation.  Le seul fichier réellement intelligible par le programmeur! Byte-Code Java (ex: fichier.class):  Code objet destiné à être exécuté sur toute « Machine Virtuelle » Java.  Provient de la compilation du code source Code Compilation 01010 fichier.java fichier.class Machine Virtuelle Java (ex: SDK et JRE):  Programme interprétant le Byte-Code Java et fonctionnant sur un système d’exploitation particulier.  il suffit de disposer d’une « Machine Virtuelle » Java pour pouvoir exécuter tout programme Java même s ’il a été compilé avec un autre système d’exploitation. A.Mazoul Programmation orienté objet Java 13 Programmation orienté objet en Java Introduction à Java Programme Java HelloWorld.java > javac HelloWorld.java HelloWorld.class > java HelloWorld Window Linux Mac OS A.Mazoul Programmation orienté objet Java 14 Programmation orienté objet en Java Introduction à Java Les Classes Java Des classes Java sont des briques de constructions d’un programme JAVA : les données (Attributs) le code les manipulant (Méthodes) Classe LES ATTRIBUTS : Les attributs représentent la description des données propres à chaque classe d'objets LES METHODES : Les méthodes représentent l'ensemble des actions, procédures, fonctions ou opérations que l'on peut associer à une classe A.Mazoul Programmation orienté objet Java 15 Programmation orienté objet en Java Introduction à Java Premier programme en Java Permet de récupérer des arguments transmis au programme au moment de son Nom de la classe lancement La fonction principale équivalent à la fonction main du C/C++ Méthode d'affichage dans la fenêtre console (éq: printif(" … " ) en C/C++) A.Mazoul Programmation orienté objet Java 16 Programmation orienté objet en Java Introduction à Java Premier programme en Java (TP) 1. Editer le code source Java suivant et le sauver dans Bienvenue.java 2. Compiler avec la commande : > javac Bienvenue.java (un fichier « Bienvenue.class » est généré) 3. Exécuter en lançant la machine virtuelle java et en lui spécifiant le point d'entrée > java Bienvenue 4. Résultat : Hello world! A.Mazoul Programmation orienté objet Java 17 Programmation orienté objet en Java Introduction à Java Commentaires // : les commentaires monolignes: Sur une seule ligne class Hello { public static void main(String[] args) { System.out.println("Hello !"); // commentaire sur une ligne } } : les commentaires multilignes: Sur plusieurs lignes class Hello { public static void main(String[] args) { System.out.println("Hello !"); } } A.Mazoul Programmation orienté objet Java 18 Programmation orienté objet en Java Introduction à Java Commentaires : javadoc Javadoc: L'outil génère des pages HTML (documentation) contenant au minimum la liste des classes, la liste des méthodes et la liste des variables. class Hello { public static void main(String[] args) { System.out.println("Hello !"); } } A.Mazoul Programmation orienté objet Java 19 Programmation orienté objet en Java Introduction à Java Structure de base d’une classe une classe: est la brique de base d'un langage orienté-objet ; elle fournit une description des données et des comportements associés.  Main(): est exécutée quand l’application démarre  Public: visible dans tout le programme (donc aussi en dehors de la classe)  Static: une méthode de classe  Void: la méthode ne renvoie pas de résultat (c’est une procédure, pas une fonction)  String[]: un array qui contient des objets String A.Mazoul Programmation orienté objet Java 20 Programmation orienté objet en Java Introduction à Java Types de données en Java On distingue entre 2 grands groupes de types de données :  types primitifs Valeur logique boolean (true/false) Ex: boolean trouve = true; Nombres entiers byte (1 octet) short (2octets) int (4 octets) long (8 octets) Nombres non entiers (à virgule flottante) float (4 octets) double (8 octets). Caractère (un seul) char (2 octets) Ex: char genre= 'M';  objets (instances de classe) A.Mazoul Programmation orienté objet Java 21 Programmation orienté objet en Java Introduction à Java Types Primitifs de Java Primitive Data Types Nombres entiers Nombres non entiers byte 8bits -128 to 127 float 32bits 1.4E-45 3.4E38 short 16bits -32768 to 32767 double 64bits 4.9E-324 1.8E308 int 32bits -2^31 to 2^31-1 long 64 bits -2^63 to 2^63-1 Caractère Valeur logique char 16bits 0 to 65535 boolean: true ou false A.Mazoul Programmation orienté objet Java 22 Programmation orienté objet en Java Introduction à Java Déclaration des variables int i = 0; Type Nom de la variable La déclaration et l’initialisation d’une variable peut se faire en une seule ligne. Ex: int i = 0; La déclaration et l’initialisation d’une variable peut se faire sur plusieurs lignes. Ex: String chaine; chaine = "bonjour"; La déclaration de plusieurs variables en même temps. Ex: int i = 0, j = 3; A.Mazoul Programmation orienté objet Java 23 Programmation orienté objet en Java Introduction à Java Types chaîne de caractères String : Comme son nom l’indique, ce type permet de gérer les chaîne de caractères. Il s’agit d’une classe donc elle intègre des méthodes permettant d’opérer sur la chaîne. Une chaîne est placée entre doubles quottes " … ". Exemple: String chaine = "Bonjour"; String chaine = new String("Bonjour"); Concaténation de deux String: se fait avec l’opérateur + String s1 = "Bonjour" ; String s2 = "le monde !" ; String s3 = s1 + " " + s2 ; length() retourne la longueur d’une chaîne de caractère. int n=s3.length() A.Mazoul Programmation orienté objet Java 24 Programmation orienté objet en Java Les Structures de contrôle Les entrées/sorties clavier La lecture se fait par la classe scanner permettant la lecture des donner saisies aux clavier. Importation de la bibliothèque: Récupérer ce que vous avez tapé A.Mazoul Programmation orienté objet Java 25 Programmation orienté objet en Java Les Structures de contrôle La structure de base: if … else… if (condition){ } else{ } A.Mazoul Programmation orienté objet Java 26 Programmation orienté objet en Java Les Structures de contrôle Switch(){ …} switch (val)) { case v1: : //instructions exécutées si val==v1 case v2: : //instructions exécutées si val==v2 ou si val==v1 default: //instructions dans tous les cas } Utilisation de l’instruction « break »: permet de sortir d’une structure de contrôle: switch (val)) { case v1: : //instructions exécutées si val==v1 break; case v2: : //instructions exécutées si val==v2 break; default: //instructions exécutées si val!=v1 et val!=v2 } A.Mazoul Programmation orienté objet Java 27 Programmation orienté objet en Java Les Structures de contrôle Switch(){ …} A.Mazoul Programmation orienté objet Java 28 Programmation orienté objet en Java Les Structures de répétitives While(){…} - do{…}while() – for(){…} while (condition) ) { } do { } while (condition) ) ; for(avant; condition; fin_chaque_itération){ } Équivalent à: avant ; while (condition){ fin_chaque_itération ; } A.Mazoul Programmation orienté objet Java 29 Programmation orienté objet en Java Les Structures de contrôle While(){} & for(){ …} A.Mazoul Programmation orienté objet Java 30 Programmation orienté objet en Java Les Structures de répétitives do{…}while() A.Mazoul Programmation orienté objet Java 31 Programmation orienté objet en Java Les Structures de contrôle Les opérateurs de comparaison a == b Vrai si égalité entre les valeurs de a et b a != b Vrai si différence entre les valeurs de a et b a < b Vrai si a inférieur à b a > b Vrai si a supérieur à b a = b Vrai si a supérieur ou égal à b A.Mazoul Programmation orienté objet Java 32 Programmation orienté objet en Java Les Structures de contrôle Les opérateurs d’in- et de dé-crémentation pré- et post-fixés Retourne la valeur de a puis augmente la a++ valeur de a de 1 Augmente la valeur de a de 1 puis ++a retourne la nouvelle valeur de a Retourne la valeur de a puis diminue la a-- valeur de a de 1 Diminue la valeur de a de 1 puis retourne --a la nouvelle valeur de a A.Mazoul Programmation orienté objet Java 33 Programmation orienté objet en Java Les Structures de contrôle Les opérateurs logiques (booléens) [Expr1] && [Expr2] Vrai si [Expr1] et [Expr2] sont vraies [Expr1] || [Expr2] Vrai si [Expr1] ou [Expr2] sont vraies ! [Expr1] Vrai si [Expr1] est non vraie A.Mazoul Programmation orienté objet Java 34 Programmation orienté objet en Java Les tableaux Tableaux: vecteur Un tableau est une structure de données contenant un plusieurs éléments de même type. Un tableau peut contenir des valeurs simples ou des objets. Les « [] » sont utiliser lors de la déclaration d’un tableau et qui peuvent être placés avant ou après le nom d’un tableau. int tab[]; 1er indice char [] tab_c; 0 1 2 3 4 indices Un tableau peut être initialisé lors de sa déclaration: 10 20 30 40 int tab [] = { 10, 20, 30 , 40}; tab.length=4 char[] tc = {’a’, ’b’, ’c’}; Le mot clé « new » est utilisé pour désigner le nombre de case à allouer : double d[]=new double; tab=new int; A.Mazoul Programmation orienté objet Java 35 Programmation orienté objet en Java Les tableaux Tableaux: vecteur lenght est un attribut contenant le nombre des éléments d’un tableau. Affiche 10 En Java (comme en C/C++), les éléments d’un tableau sont indexés à partir du 0. On peut créer un tableau d’objet comme suit: A.Mazoul Programmation orienté objet Java 36 Programmation orienté objet en Java Les tableaux Tableaux à plusieurs dimensions La dimension d’un tableau est indiquée par le nombre de crochets « [] ». Un tableau à plusieurs dimensions est un tableau des tableaux. Les tableaux à deux dimensions sont les plus couramment utilisés. Un tableau en paramètre d’un fonction se fait en donnant juste la déclaration du tableau sans spécifier sa taille. A.Mazoul Programmation orienté objet Java 37 Programmation orienté objet en Java Les tableaux Parcourir un tableau Le parcours d’un tableau se fait élément par élément. Tableaux à une dimension Ou Tableaux à deux dimensions: A.Mazoul Programmation orienté objet Java 38 Programmation orienté objet en Java Les Classes en Java Les variables il y a trois grands types de variables dans une classe objet :  Les variables d'instance : ce sont elles qui définiront les caractéristiques de notre objet.  Les variables de classe : celles-ci sont communes à toutes les instances de votre classe.  Les variables locales : ce sont des variables que nous utiliserons pour travailler dans notre objet. A.Mazoul Programmation orienté objet Java 39 Programmation orienté objet en Java Les Classes en Java Déclaration d’une variable objet Lorsqu’on déclare une variable objet , on est en fait entrain de faire la réservation de l’espace mémoire pour la référence: message objet null String message; ref null elle ne réserve pas d’emplacement pour un objet de type Point, mais seulement un emplacement pour une référence à un objet de type Point. message=‘’Bonjour’’; message objet String //équivalent à message=new String(‘’Bonjour’’); ref Bonjour message objet String message=‘’Hello’’; ref Bonjour Hello A.Mazoul Programmation orienté objet Java 40 Programmation orienté objet en Java Les Classes en Java Déclaration d’une variable objet Un tableau contenant des éléments de type primitif notes objet int [ ] int[] notes={10,12,15}; ref 10 12 15 int int int Un tableau contenant des éléments de type objet String[] animaux={‘’chat’’,’’poisson’’}; chat poisson animaux ref ref ref A.Mazoul Programmation orienté objet Java 41 Programmation orienté objet en Java Les Classes en Java Références des objets  Une référence nous  Une adresse nous permet permet de trouver l’objet. de trouver une maison.  En utilisant la référence,  En utilisant l’adresse, on on peut accéder aux peut envoyer une lettre à attributs et méthodes de cette maison. l’objet. Réellement Par analogie A.Mazoul Programmation orienté objet Java 42 Programmation orienté objet en Java Introduction à Java Définition de la classe Nous vous proposons de définir une classe nommée Point, destinée à manipuler les points d’un plan. public class Point { // le contenu de la classe } Le fichier.java doit avoir le même nom que la classe , c’est-à-dire Point.java Il est préférable qu’on commence le nom de la classe par une majiscule Exemple: public class CompteBancaire{ public class AgenceVoyage{ } } A.Mazoul Programmation orienté objet Java 43 Programmation orienté objet en Java Introduction à Java Les attribues d’une classe Syntaxe type nom_variable [=value]; Exemple: int a = 0; Quelques règles:  Les noms de variables sont sensibles à la casse,  Les espaces ne sont pas permis.  Préférable: Le nom de la variable commence par une lettre miniscule. Exemple: int quantiteStock=10;  Évitez les mots réservés de java Ces mots-clés sont réservés par le langage à un usage bien défini et ne peuvent pas être utilisés comme identificateurs. A.Mazoul Programmation orienté objet Java 44 Programmation orienté objet en Java Introduction à Java Les attribues d’une classe Constante On déclare une constante avec le mot final, On ne peut plus changer la valeur d'une constante une fois qu'elle a été initialisée. On peut déclarer et initialiser une constante en une seule ligne : final int MAX_PLACE=100; On peut aussi déclarer constante puis par la suite l’initialiser : final int NBR_PLACE; … Seule la première NBR_PLACE=10; affectation est autorisée … NBR_PLACE=20; Erreur de compilation Préférable Le nom de la constante doit être en majuscule. Si le nom est composé de plusieurs mots, on utilise _ pour la séparation des mots Exemple: final int CAPACITE_DANS_STOCK = 50; A.Mazoul Programmation orienté objet Java 45 Programmation orienté objet en Java Introduction à Java Initialisation par défaut des champs d’un objet Les variables non initialisées auront des valeur par défaut comme le montre le tableau suivant: A.Mazoul Programmation orienté objet Java 46 Programmation orienté objet en Java Introduction à Java Variable d’instance (d’objet) Chaque instance de la classe possède ses propres valeurs des variables. Class Personne{ String Nom; String Prenom; int Age; Personne(String nom,String prenom,int age){ this.Nom=nom; Personne_1 this.Prenom=prenom; Nom: Salimi this.Age=age; Prenom: Rachid } Age: 50 } Personne_2 Nom: Zaki Prenom: karima Personne Personne_1=new Personne("Salimi","Rachid",50) Age: 17 Personne Personne_2=new Personne("Zaki","Karima",17) Personne_3 Personne Personne_3=new Personne("Atifi","Akram",35) Nom: Atifi Prenom: Akram Age: 35 A.Mazoul Programmation orienté objet Java 47 Programmation orienté objet en Java Introduction à Java Variable d’instance (d’objet) On invoque les variables d’instance avec le nom de l’instance. class Personne{ String Nom; String Prenom; int Age; Personne(String nom,String prenom,int age){ this.Nom=nom; this.Prenom=prenom; this.Age=age; } } Public class Test{ public static void main(String[] args){ Personne Personne_1 = new Personne("Salimi","Rachid",50); System.out.println(Personne_1.Nom+" "+Personne_1.Prenom); } } A.Mazoul Programmation orienté objet Java 48 Programmation orienté objet en Java Introduction à Java Variable de classe (static) N'appartient pas à une instance particulière, elle appartient à la classe. Est partagée par toutes les instances de la classe Personne Le mot static qui doit être précisé avant le type de la variable Nom Prenom Class Personne{ Age String Nom; nbrPersonne 3 String Prenom; int Age; static int nbrPersonne; Personne_1 Personne(String nom,String prenom,int age){ Nom: Salimi this.Nom=nom; Prenom: Rachid this.Prenom=prenom; Age: 50 this.Age=age; nbrPersonne++; Personne_2 } Nom: Zaki } Prenom: karima Age: 17 Personne Personne_1=new Personne("Salimi","Rachid",50) Personne_3 Personne Personne_2=new Personne("Zaki","Karima",17) Nom: Atifi Prenom: Akram Personne Personne_3=new Personne("Atifi","Akram",35) Age: 35 A.Mazoul Programmation orienté objet Java 49 Programmation orienté objet en Java Introduction à Java Variable de classe (static) On invoque les variables static avec le nom de la classe. public class Test{ public static void main(String[] args){ Personne Personne_1=new Personne("Salimi","Rachid",50) Personne Personne_2=new Personne("Zaki","Karima",17) Personne Personne_3=new Personne("Atifi","Akram",35) System.out.println(Personne.nbrPersonne) } } A.Mazoul Programmation orienté objet Java 50 Programmation orienté objet en Java Introduction à Java C’est quoi un package? Toutes les classes en Java sont organisées en packages (ou bibliothèques). un package est associé à un dossier et un sous package à un sous dossier. Package = dossier Projet Déclaration d’un package package1 package nom_package; ClassA ClassB Importation d’un package import package1.package2.ClassC ; package2 import package1.package2.* ; ClassC ClassD  Importe toutes les classe du package2 (ClassC et ClassD) package21  N’importe pas les classes du sous package21 (ClassE) ClassE A.Mazoul Programmation orienté objet Java 51 Programmation orienté objet en Java Introduction à Java C’est quoi un package? package fr.koor.hello; import fr.koor.*; class Demo{ } A.Mazoul Programmation orienté objet Java 52 Programmation orienté objet en Java Introduction à Java Règles de visibilité private: Un champ privé n'est visible que depuis sa propre classe. Elle n'est visible nulle part ailleurs, il s'applique à un champ (attribut ou méthode) d'une classe. public: Une classe ou une interface publique est visible de partout, y compris les autres paquetages, Un champ publique est visible de partout du moment que sa classe est visible. Protected: Si une méthode ou une variable est déclarée protected , seules les méthodes présentes dans le même package que cette classe ou ses sous-classes pourront y accéder. On ne peut pas qualifier une classe avec protected. Lorsqu'aucun modificateur n'est précisé: Cette déclaration permet à une entité (classe, méthode ou variable) d'être visible par toutes les classes se trouvant dans le même package. A.Mazoul Programmation orienté objet Java 53 Programmation orienté objet en Java Introduction à Java Règles de visibilité A.Mazoul Programmation orienté objet Java 54 Programmation orienté objet en Java Les Classes en Java Mot clé: this this est utiliser pour désigner une variable ou une fonction de la même classe. Il désigne l’objet courant afin d’accéder aux attributs et méthodes de l’objet courant Peut être utilisé pour faire appel a un constructeur de la même classe.  Pour manipuler un attribut de l’objet courant: this.origine_x  Pour manipuler une méthode de la classe : this.ajouterCote(4)  Pour faire appel au constructeur de l’objet courant: this() Constructeur A.Mazoul Programmation orienté objet Java 55 Programmation orienté objet en Java Les Classes en Java Constructeur Un constructeur est une méthode d'instance qui va s’exécuter lors de la création d’un objet avec le mot clé new. Un constructeur sans arguments s’appelle constructeur par défaut. Il doit avoir le même nom que la classe. un constructeur n'a pas de type de retour (même pas void). A.Mazoul Programmation orienté objet Java 56 Programmation orienté objet en Java Les Classes en Java Constructeur  Constructeur par défaut Le constructeur par défaut initialise les variables de la classe aux valeurs par défaut. Point(){} Point(){ name='O'; x=0; y=0; }  Constructeur surchargé Point(char _name, int _x, int _y){ this.name=_name; this.x=_x; this.y=_y; } A.Mazoul Programmation orienté objet Java 57 Programmation orienté objet en Java Les Classes en Java Constructeur Un constructeur avec paramètres permet l’initialisation les variables de l’objet. … Remarque On peut créer plusieurs constructeur mais ayant des paramètres différents. A.Mazoul Programmation orienté objet Java 58 Programmation orienté objet en Java Les Classes en Java Constructeur Si vous ne créez pas un constructeur dans votre classe, le compilateur va automatiquement vous créer un constructeur par défaut implicite. Si le constructeur surchargé est créé, le constructeur par défaut implicite ne sera plus créer par le compilateur. La plateforme java différencie entre les différents constructeurs déclarés au sein d’une même classe en se basant sur le nombre des paramètres et leurs types. N.B: On ne peut pas créer deux constructeurs ayant le même nombre et types des paramètres. Point(int _x,int _y){ this.x=_x; this.y=_y; Le même constructeur } Erreur de compilation Point(int _x,int _y){ this.x=_x+10; this.y=_y+10; } A.Mazoul Programmation orienté objet Java 59 Programmation orienté objet en Java Les Classes en Java Objets Instancier une classe permet de créer un objet ayant le type de la classe. Un Objet est un cas ou exemple référencé par une variable de type classe. La création d’un objet se fait en utilisant le mot clé « new ». Cela fait appel à l’un des constructeurs de la classe (avec ou sans arguments). Pour accéder à une variable ou fonction associée à un objet on utilise «. ». Seules les variables et les fonctions visibles sont permises. A.Mazoul Programmation orienté objet Java 60 Programmation orienté objet en Java Les Classes en Java La gestion de la mémoire: Destructeur le programmeur java n’a pas à s’occuper lui-même de libérer la mémoire en supprimant les objets devenus inutiles, c’est le rôle du ramasse-miettes (Garbage Collector ou GC) GC détermine qu'un objet n'est plus utile s’il n'existe plus aucun autre objet qui lui fait référence. Le Garbage Collector est exécuté automatiquement dès que la mémoire disponible devient inférieure à un certain seuil. finalize() est une méthode spéciale qui sera appelée (si elle est redéfinie dans la classe) lorsque l'objet sera nettoyé de la mémoire par le Garbage Collector. A.Mazoul Programmation orienté objet Java 61 Programmation orienté objet en Java Introduction à Java Déclaration des méthodes Syntaxe Visibilité Type_retour nom_fonction([arguments]) { } Préférable: Le nom de la méthode doit commencer par un verbe. Exemple: public void ajouterNomPersonne(String Nom){ } A.Mazoul Programmation orienté objet Java 62 Programmation orienté objet en Java Introduction à Java Déclaration des méthodes (exemple) A.Mazoul Programmation orienté objet Java 63 Programmation orienté objet en Java Introduction à Java Déclaration des méthodes (appel) A.Mazoul Programmation orienté objet Java 64 Programmation orienté objet en Java Introduction à Java Les méthodes de la classe (static) N'appartient pas à une instance particulière, elle appartient à la classe. Est partagée par toutes les instances de la classe Le mot static qui doit être précisé avant le type de retour de la méthode. On invoque les méthodes static avec le nom de la classe. Exemple: La classe java.lang.Math PI et toRadians() sont statiques, car la valeur de π ou la conversion de degrés en radians ne vont pas varier suivant l’objet auquel elles sont rattachées. A.Mazoul Programmation orienté objet Java 65 Programmation orienté objet en Java Introduction à Java Les méthodes de la classe (static) Les méthodes d’instances (objet) accèdent aux variables d’instance (objet) et méthodes d’instances (objet) Les méthodes d’instances (objet) accèdent aux variables de classe (static) et méthodes de classe (static) Les méthodes de classe (static) accèdent aux variables de classe (static) et méthodes de classe (static) Les méthodes de classe (static) n’accèdent pas aux variables d’instance et méthodes d’instance Dans une méthode static on ne peut pas utiliser this Variables Méthodes Variables Méthodes this objet objet static static Méthode objet Oui Oui Oui Oui Oui Méthode static Non Non Oui Oui Non A.Mazoul Programmation orienté objet Java 66 Programmation orienté objet en Java Introduction à Java Les associations Association one-to-one (1..1) bidirectionnelle: Employe class Employe{ public Compte compte; } 1 1 Compte class Compte{ public Employe employe; } A.Mazoul Programmation orienté objet Java 67 Programmation orienté objet en Java Introduction à Java Les associations Association one-to-one unirectionnelle (Navigabilité restreinte): Employe class Employe{ public Compte compte; } 1 1 Compte class Compte{ } A.Mazoul Programmation orienté objet Java 68 Programmation orienté objet en Java Introduction à Java Les associations Association one-to-Many (1..*): Employe class Employe{ public Entreprise entreprise; } * 1 Entreprise class Entreprise{ public Employe employes[]; } A.Mazoul Programmation orienté objet Java 69 Programmation orienté objet en Java Introduction à Java Les associations Association Many-to-Many (*..*): Employe class Employe{ public Projet projets[]; } * * Projet class Projet{ public Employe employes[]; } A.Mazoul Programmation orienté objet Java 70 A.Mazoul Réseaux informatiques Téléinformatique 71

Use Quizgecko on...
Browser
Browser