Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 3 – Classes et objets en Java Master 1 SIGLIS1 Java Lecteur - Chapitre 3 Classes et objets en Java.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Spécialisation/généralisation Héritage Polymorphisme.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Approfondissement du langage
(Classes prédéfinies – API Java)
Introduction à Java - les paquetages -
C.
JAV - TD 6 Structures de données JAVA
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Principes de programmation (suite)
Programmation orientée objet
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Langage Oriente Objet Cours 4.
88 Utilisation des arrays, des chaînes et des classes conteneurs.
Principes de programmation (suite)
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
POO : Objets et classes (Rappels)
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction à la programmation objet Langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
POO-L3 H. Fauconnier1 Supplément gratuit…. POO-L3 H. Fauconnier2 Entrée-sortie public static void main(String[] args) { // sortie avec printf ou double.
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Les méthodes en java • Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. • Une méthode pour être utilisée.
4 Introduction des objets. Les chaînes et tableaux
1 Fichers Binaires, Accès Direct et Objets. 2 Données binaires. Il s'agit ici de lire et écrire des données binaires par opposition à du texte. Pour ce.
La notion de type revisitée en POO
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Créer des packages.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 1 – Objets et Classes Master 1 SIGLIS1Java Lecteur - Chapitre 1 Objets et classes.
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Réaliser par: Sadok Amel Cheboui hassiba
Strings et Tableaux en Java
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Cours LCS N°4 Présenté par Mr: LALLALI
Cours du 5 novembre.
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Héritage Conception par Objet et programmation Java
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Langage et Concepts de Programmation Orientée-Objet Pôle Informatique 2007/2008 École Nationale Supérieure des Mines de Saint-Étienne Laurent Vercouter.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 3.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 2.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
LES CLASSES ET LES OBJETS
Transcription de la présentation:

Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 3 – Classes et objets en Java Master 1 SIGLIS1 Java Lecteur - Chapitre 3 Classes et objets en Java

2 Master 1 SIGLIS Objectifs du chapitre Définir des attributs sur une classe Java ; Instancier une classe en Java pour obtenir un objet; Appeler une méthode définie sur un objet ; Définir une partie publique et une partie privée dans une classe ; Règles de bon goût pour la conception d’une classe; Ce qu'on peut faire avec une String; Utiliser avec précaution les références Définir attributs et les méthodes statiques. Utiliser les packages

Java Lecteur - Chapitre 3 Classes et objets en Java 3 Master 1 SIGLIS Définir des attributs sur une classe Class Personne { public String nom ; public String prenom ; public int age ; public String adresse ; public boolean isMineur() { return age < 18 ; } public signifie que l'attribut fait partie de la partie publique de l'objet 4 attributs sont définis : nom, prenom, age, adresse. 1 méthode est définie : isMineur il n'y a pas de méthode main : cette classe n'est pas exécutable public String nom public String prenom public int age public String adresse Personne public boolean isMineur() Exemple: la classe Personne

Java Lecteur - Chapitre 3 Classes et objets en Java 4 Master 1 SIGLIS Créer et utiliser un objet Pour créer une classe, il faut utiliser l'instruction new Pour accéder aux attributs de l'objet, il faut préfixer le nom de l'attribut par le nom de l'objet Pour appeler des méthodes sur l’objet il faut préfixer l’appel de la méthode par le nom de l’objet. class UtilisationPersonne { public static void main(String[] args) { Personne jeanPierre = new Personne(); jeanPierre.prenom = “Jean Pierre” ; jeanPierre.nom = “Dupont” ; jeanPierre.age = 15 ; jeanPierre.adresse = “17 rue des Lilas Bayonne“ ; boolean mineur = jeanPierre.isMineur() ; } Exemple : classe Personne

Java Lecteur - Chapitre 3 Classes et objets en Java 5 Master 1 SIGLIS Parties publique et privée: règles de bon goût  Toutes les données doivent être privées ;  Pour chaque attribut att de type T, on définit deux méthodes publiques Un accesseur en lecture : Un accesseur en écriture :  Ces permettent d'implémenter de manière centralisée les régles de gestion sur les attributs calculés (date de naissance -> âge),.... public T getAtt() { return att } public T getAtt() { return att } public void setAtt( T valeur) { att = valeur } public void setAtt( T valeur) { att = valeur }

Java Lecteur - Chapitre 3 Classes et objets en Java 6 Master 1 SIGLIS Parties publique et privée : exemple Class Personne { private String nom ; private String prenom ; private int age ; private String adresse ; public boolean isMineur() { return age < 18 ; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAdresse() { return adresse; } public void setAdresse(String adresse) { this.adresse = adresse; } class UtilisationPersonne { public static void main(String[] args) { Personne jeanPierre = new Personne(); jeanPierre.setPrenom(“Jean Pierre”) ; jeanPierre.setNom(“Dupont”) ; jeanPierre.setAge(15) ; jeanPierre.setAdresse(“17 rue des Lilas Bayonne“) ; boolean mineur = jeanPierre.isMineur() ; } La classe Personne Utilisation de la classe Personne Pour chaque attribut att, on a une méthode getAtt et setAtt définies comme public. this est une variable implicitement définie égale à l’objet lui-même. utiliser this permet de distinguer le paramétre de l'attribut de l'objet

Java Lecteur - Chapitre 3 Classes et objets en Java 7 Master 1 SIGLIS La classe String La classe String permet de gérer les chaîne de caractères MéthodeUtilisation char charAt(int index) Renvoie le caractère situé à la position index. boolean endsWith(String suffix) Renvoie vrai si et seulement si la chaîne contient la chaîne spécifiée. boolean equals(Object anObject) Renvoie vrai si et seulement si la chaîne est égale à l’objet spécifiée. int indexOf(String str) Renvoie la position à partir de laquelle on peut trouver la chaîne spécifiée. int lastIndexOf(String str) Renvoie la position la plus à droite à partir de laquelle on peut trouver la chaîne spécifiée. int length() Renvoie la taille de la chaîne. String replaceAll(String regex, String replacement) Remplace toutes les occurrences de regex par la chaîne replacement. boolean startsWith(String prefix) Revoie vrai si et seulement si la chaîne commence par la chaine spécifiée. String toUpperCase() Remplace les minuscules par des majuscules. String trim() Enlève les espaces au début et à la fin de la chaîne. static String valueOf(boolean b) static String valueOf(char c) static String valueOf(char[] data) static String valueOf(double d) static String valueOf(float f) static String valueOf(int i) static String valueOf(long l) Convertit la donnée spécifiée en chaîne de caractères. L'interface de la classe String (extrait) toutes ces méthodes créent une nouvelle chaîne de caractères

Java Lecteur - Chapitre 3 Classes et objets en Java 8 Master 1 SIGLIS Références Quand on manipule s, on pense manipuler un objet. En fait s se comporte comme un référence vers le vrai objet: Quand accéde à une méthode, s se charge de transferer la demande à l'objet réel. String s = "HELLO WORLD"; ELOLHLWORD String s1 ; On a crée un référence (s1) mais on n'a pas créé d'objet s s1 Si on tente d'accéder à une méthode de s1, on aura une erreur "NullPointerException" Une référence peut soit référencer un objet, soit ne pas référencer d'objet.

Java Lecteur - Chapitre 3 Classes et objets en Java 9 Master 1 SIGLIS Références nulles Il est possible de tester si une référence est nulle: on compare l'objet à la valeur null. null est un mot clé du langage qui se comporte comme une constante. // lecture à la console String numeroSS = System.console().readLine(" N°= Sécurité de sociale? "); Personne p = PersonneMetier.rechercher( numeroSS) ; if (p != null) { // traitement … } else { // Personne non trouvée … } Exemple: recherche d'une personne par son numéro de sécurité sociale

Java Lecteur - Chapitre 3 Classes et objets en Java 10 Master 1 SIGLIS Classes enveloppeur (wrappers) Le fait qu'une référence puisse prendre la valeur null permet de représenter que: un attribut a une valeur ou n'a pas de valeur du tout; une méthode renvoie une valeur dans le cas sans erreur ou pas de valeur du tout en cas d'echec. Question: Comment puis je faire dans le cas ou la valeur est un entier, un réél, un booléen ? Réponse: J'utilise une des classes enveloppeurs. A chaque type primitif correspond une classe enveloppeur Une classe enveloppeur contient un seul attribut "value" du type du type primitif associé Les classes enveloppeurs font partie des bibliothèques fournies avec Java. Type Primitif Classe enveloppeur int Integer long Long float Float double Double boolean Boolean char Character Correspondance type primitif / classe enveloppeur

Java Lecteur - Chapitre 3 Classes et objets en Java 11 Master 1 SIGLIS Constructeurs (1) Les constructeurs d'une classe permettent de réaliser les opérations d'initialisation de l'objet Le constructeur est automatiquement appelé au moment de la création Un constructeur se reconnait aux caractéristiques suivantes: il porte le nom de la classe; il ne renvoie pas de résultat (même pas de void). class Personne { private String nom ; private String prenom ; private int age ; private String adresse ; public Personne() { nom = "" ; prenom = "" ; age = 0 ; adresse = "" ; } private boolean isMineur() { return age < 18 ; } Constructeur

Java Lecteur - Chapitre 3 Classes et objets en Java 12 Master 1 SIGLIS Constructeurs (2) On nomme constructeur par défaut: le constructeur sans argument Ce constructeur est soit défini par le concepteur de la classe soit défini "par défaut" par Java  Il y a toujours un constructeur sur une classe On peut définir des constructeurs qui admettent des arguments. En définissant le constructeur par défaut comme privé et en définissant ses propres constructeurs on peut forcer le protocole d'initialisation des objets. class Personne { private String nom ; private String prenom ; private int age ; private String adresse ; /* cosntructeur par défaut. */ private Personne() {} /* constructeur avec argument */ public Personne(String nom, String prenom, int age, String adresse) { this.nom = nom; this.prenom = prenom; this.age = age; this.adresse = adresse; } private boolean isMineur() { return age < 18 ; } le constructeur par défaut est défini comme privé un constructeur spécifique est défini Personne jeanDurand = new Personne("Jean", "Durand", 23, "10 allée des Saules Bayonne") ; Utilisation

Java Lecteur - Chapitre 3 Classes et objets en Java 13 Master 1 SIGLIS attributs et méthodes statiques Un attribut statique est commun à toutes les instances de la classe. Si une instance le modifie, toutes les autres vont voir la nouvelle valeur. Une méthode statique n'a pas besoin d'avoir une instance particulière pour être appelée Une méthode statique ne peut pas accéder aux méthodes ou aux attributs non statiques de la classe. On utilise le mot clé static pour définir des méthodes ou des attributs statiques // attribut statique static public int nbPersonne = 0 ; // méthode statique public static int getNb() { return nbPersonne; }

Java Lecteur - Chapitre 3 Classes et objets en Java 14 Master 1 SIGLIS Attributs et méthodes statiques : Exemple (1) Un texte ici class Personne { private String nom ; private String prenom ; private int age ; private String adresse ; // attribut statique static public int nbPersonne = 0 ; /* constructeur par défaut. */ private Personne() {} /* constructeur avec argument */ public Personne(String nom, String prenom, int age, String adresse) { this.nom = nom; this.prenom = prenom; this.age = age; this.adresse = adresse; // on crée un objet : on incrémente le nombre de personnes nbPersonne = nbPersonne + 1; } private boolean isMineur() { return age < 18 ; } public static int getNb() { return nbPersonne; } l'attribut nbPersonne est statique la méthode getNb est statique la méthode getNb est appelée chaque fois qu'un objet est créé

Java Lecteur - Chapitre 3 Classes et objets en Java 15 Master 1 SIGLIS Attributs et méthodes statiques : Exemple (2) class ComptePersonne { public static void main(String[] args) { Personne jeanDurand = new Personne("Jean", "Durand", 23, "10 allée des Saules Bayonne") ; Personne geraldineDupont = new Personne("Geraldine", "Dupont", 18, "15 allée des Bambous Bayonne") ; Personne etienneLefebre = new Personne("Etienne", "Lefebre", 45, "110 rue des Cyclamens Bayonne") ; System.out.println("Il y a " + Personne.getNb() + " personnes créées" ) ; } $ java ComptePersonne Il y a 3 personnes créées Résultat de l'exécution Utilisation de la classe Personne

Java Lecteur - Chapitre 3 Classes et objets en Java 16 Master 1 SIGLIS Packages  Les packages permettent de structurer les applications Java en blocs contenant les classes qui sont fonctionnellement reliées. le package "data" contient les classes "données" : Personne, Article, Commande, Facture le package "metier" contient les classes qui permettent de lancer des traitements : lancement du calcul du besoin net, calcul des charges globales le package "accès" va contenir les classes qui vont permettre de faire des accès en base de données: création d'un commande, rechercher les commandes à livrer pour le xx/xx/xx, rechercher les produit qui composent le produit 345,... Exemples  on peut imbriquer les packages : on a une structure arborescente  Les packages permettent d'éviter les collisions de noms: j'utilise deux librairies L1 et L2 qui contiennent toutes les deux X.java la classe X de L1 sera référencé l1.X la classe X de L2 sera référencée l2.X Il n'y a plus d'ambiguïté

Java Lecteur - Chapitre 3 Classes et objets en Java 17 Master 1 SIGLIS Packages (2)  Pour rattacher la classe X au package l1 il faut : créer dans le dossier du projet, un dossier l1 et y mettre X.java dans X.java ajouter la déclaration en début de fichier déclarer X comme visible depuis l'extérieur du package en modifiant la déclaration de la classe package l1 ; public class X {... }  Dans la classe appelante :  Déclarer l'utilisation de l1.x et l2.X  On utilise la classe X de l1 en faisant : new l1.X() ; import l1.X ; import l2.X ; public class X {... } la section des imports se met toujours avant le début de la classe

Java Lecteur - Chapitre 3 Classes et objets en Java 18 Master 1 SIGLIS Packages (3): exemple Classe l1.X Classe l2.X package l1 ; public class X { public X() { System.out.println("Instanciation de l1.X") ; } public String quiEstTu() { return "Je suis l1.X" ; } package l2 ; public class X { public X() { System.out.println("Instanciation de L2.X") ; } public String quiEstTu() { return "Je suis l2.X" ; } import l1.X ; import l2.X ; class Package { public static void main(String[] args) { l1.X l1X = new l1.X() ; l2.X l2X = new l2.X() ; System.out.println(l1X.quiEstTu() ) ; System.out.println(l2X.quiEstTu() ) ; } Utilisation java Package Instanciation de l1.X Instanciation de L2.X Je suis l1.X Je suis l2.X Résultat de l'exécution

Java Lecteur - Chapitre 3 Classes et objets en Java 19 Master 1 SIGLIS Les tableaux Les tableaux sont des listes de données (type primitifs ou objets) leur taille est fixée à la création Initialisation : de deux façons int[] a1 = { 1, 2, 3, 4, 5 }; int[] a2 = new int[5]; en fixant les valeurs qu'il contient : ici a1 contient 5 valeurs 1,2,3,4,5 en utilisant l'opérateur new et précisant la taille

Java Lecteur - Chapitre 4 Structures de contrôles 20 Master 1 SIGLIS Tableau Utilisation : avec l'opérateur [] int[] a2 = new int[5]; a2[0] = 1 ; a2[1] = 2 ; a2[2] = 3 ; a2[3] = 4 ; a2[4] = 5 ; System.out.println("a2[0] = " + a2[0]); System.out.println("a2[1] = " + a2[1]); System.out.println("a2[2] = " + a2[2]); System.out.println("a2[3] = " + a2[3]); System.out.println("a2[4] = " + a2[4]);

Java Lecteur - Chapitre 4 Structures de contrôles 21 Master 1 SIGLIS Un texte ici