Constructeurs H Batatia. Variable statique Une variable statique est partagée par tous les objets d’une classe.

Slides:



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

Spécialisation/généralisation Héritage Polymorphisme
1 Quelques précisions sur l'héritage. 2 Signification de super.f() appel à la méthode f() masquée super : désigne l'objet appelant comme s'il était de.
Introduction à la programmation objet Langage Java
CONTINUOUS TESTING Hakima Zidouri Informatique Réseau 3
(Classes prédéfinies – API Java)
L’ interruption de boucle
1 Tableaux des objets C++ si on connaît le nombre dobjets nécessaires davance on peut utiliser des tableau dobjets dans les fonctions dusage class Personne.
Algorithme et structure de données
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
PHP5 poo.
Exercice 1 1 (père) et 1 (fils) 1 (père) et 0 (fils)
Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant.
CYCLE 6 : FONCTIONS FONCTIONS avec paramètres en Entrée 1- Pourquoi les FONCTIONS peuvent échanger des données en E entre elles ? 2- Comment écrire des.
Chapitre IV Object, interfaces, classes imbriquées.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
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
Langage Oriente Objet Cours 2.
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.
Design Pattern Memento. Principe : Enregistrer les changements d'états d'un objet Objectif : Pouvoir restituer les états précédents d'un objet.
Design Pattern: Decorator
IFT 6800 Atelier en Technologies d’information
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Cours 4 Héritage (suite).
Cours 5 Héritage, Interfaces, classes internes. POO-L3 H. Fauconnier2 La classe Object Toutes les classes héritent de la classe Object Object méthodes:
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Héritage Lhéritage permet de spécialiser une classe en définissant une relation de type « est une sorte de ». #include comptebancaire.h class CompteEpargne.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
CSI1502 Principes fondamentaux en conception des logiciels
Une introduction à Java
Programmation Orienté Objet en C++ Ricard julien.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Intention Séparer et extraire les traitements appliquées à différents type de nœuds d’une structure.
Correction TP1 Exercice 4.
4 Introduction des objets. Les chaînes et tableaux
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Cours n°3 rappels. POO-L3 H. Fauconnier2 Entrée-sortie public static void main(String[] args) { // sortie avec printf ou double a = 5.6d ; double b =
La notion de type revisitée en POO
Java : Exceptions H Batatia. 5/03/2004Java12: H.Batatia2 Exemple 1 public class Bonjour { public static void main(String[] args) { System.out.println("Bonjour.
11/04/ L'héritage Cours 7 Cours 7.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Cours 7 Classes locales Clonage Divers: tableaux.
Additionner Et Soustraire Des Expressions Rationnelles I.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
Entrées / Sorties.
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.
Les surcharges d'opérateurs
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
LIFI-Java 2004 Séance du Mercredi 29 sept. Cours 4.
Introduction à la programmation objet avec java
Chapitre -3- FRACTIONS [D] MULTIPLICATION DE FRACTIONS (fiche n°105) vendredi 14 avril 2017  rêgle  exemples  exercices  Page 27.
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 2.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
FRACTIONS:La Multiplication Multiplier les fractions: Multiplier les fractions: On Multiplie les numérateurs, puis les dénominateurs On Multiplie les numérateurs,
Transcription de la présentation:

Constructeurs H Batatia

Variable statique Une variable statique est partagée par tous les objets d’une classe

Exemple class Fraction{ int n;//numérateur int d;//dénominateur static String type; //type de nombre void setN(int x) { n = x}; void setD(int x) { d = x}; void getN() {return n}; void getD() {return d}; static String getType(){ return type; } class T { public static void main(String [] s){ new Fraction(); Fraction.type = "Rationnel; String s = Fraction.getType(); Fraction.n = 100; //erreur }

Exemple class Fraction{ int n;//numérateur int d;//dénominateur static String type; //type de nombre void setN(int x) { n = x}; void setD(int x) { d = x}; void getN() {return n}; void getD() {return d}; static String getType(){ return type; } class T { public static void main(String [] s){ Fraction var = new Fraction(); var.type = "Rationnel; String s = var.getType(); var.n = 1; var.d = 2; }

De multiples objets Ecrire la classe Rationnel dont la méthode main crée les objets fractions : ½, 1/3, …, 1/10 Et afficher leurs états

Exemple class Rationnel { public static void main(String [] s){ Fraction f for(int i=2; i<11; i++){ f = new Fraction(); f.setN(1); f.setD(i); System.out.println( "("+ f.getN() + "/" + f.getD()+ ")"); }

Exercice Ajouter à Fraction la méthode Public String Chaine() qui retourne la chaine (n/d)

Exemple class Fraction{ int n;//numérateur int d;//dénominateur void setN(int x) { n = x}; void setD(int x) { d = x}; void getN() {return n}; void getD() {return d}; public String chaine(){ return "(" + n + "/" + d + ")" ; }

Exercice Modifier la classe Rationnel pour utiliser la méthode chaine() pour afficher l’état des fractions

suite class Rationnel { public static void main(String [] s){ Fraction f for(int i=2; i<11; i++){ f = new Fraction(); f.setN(1); f.setD(i); System.out.println( f.chaine()); }

Exercice Modifier la classe Rationnel pour créer les objets ½, -1/3, ¼, -1/5, 1/6, -1/7, 1/8, -1/9, 1/10

suite class Rationnel { public static void main(String [] s){ Fraction f for(int i=2; i<11; i++){ f = new Fraction(); int x = (i%2 == 0?1:-1); f.setN(x); f.setD(i); System.out.println( f.chaine()); }

this Dans le corps d'un objet this désigne la référence à ce même objet Modifier la méthode chaine pour utiliser this

Référence this class Fraction{ int n;//numérateur int d;//dénominateur void setN(int x) { n = x}; void setD(int x) { d = x}; void getN() {return n}; void getD() {return d}; public String chaine(){ return "(" + this.n + "/" + this.d + ")" ; }

Méthodes get et set L'accès des attributs privés doit se faire à l'aide de méthodes publiques public type getAttribut(){ return this.attribut; } public void setAttribut(type v) { this.attribut = v; }

Exercice Ajouter à la classe Fraction, la méthode public Fraction add(Fraction f) qui crée la fraction somme de la fraction courante et la fraction f.

Référence this class Fraction{ int n;//numérateur int d;//dénominateur void setN(int x) { n = x}; void setD(int x) { d = x}; void getN() {return n}; void getD() {return d}; public String chaine(){ return "(" + this.n + "/" + this.d + ")" ; } public Fraction add(Fraction f){ int x = this.getN() * f.getD() + this.getD() * f.getN(); int y= this.getD() * f.getD(); Fraction r = new Fraction(); r.setN(x); r.setD(y); return r; }

Exercice Modifier la classe Rationnel pour afficher la somme de toutes les fractions créées

suite class Rationnel { public static void main(String [] s){ Fraction f ; Fraction r=null; for(int i=2; i<11; i++){ f = new Fraction(); int x = (i%2 == 0?1:-1); f.setN(x); f.setD(i); System.out.print( f.chaine() + " + "); if(r != null){ r = f.add(r); }else{ r = f; } System.out.println( "= " + r.chaine()); }

Constructeur L'instanciation de la classe Fraction se fait par new Fraction(); Dans cette instruction Fraction() est un constructeur D'une manière générale, un constructeur –est une méthode qui porte le nom de la classe; peut prendre des paramètres; ne retourne aucune valeur –sa déclaration prend la forme Classe (paramètres) {…} –peut être précédée d'un modificateur de visibilité (public, …) –son corps peut comprendre n'importe quel traitement –généralement, on l'utilise pour initialiser les attributs de l'objet

constructeur import es.*; class Fraction{ private int n;//numérateur private int d;//dénominateur Fraction(int x, int y){ this.n = x; this.d = y; } …. } class T { public static void main(String [] s){ Fraction f = new Fraction(1,2); String s = f.chaine(); System.out.println(s); }

Exercice Modifier les classes Fraction et Rationnel pour utiliser le constructeur de Fraction

suite class Fraction{ int n;//numérateur int d;//dénominateur void setN(int x) { n = x}; void setD(int x) { d = x}; void getN() {return n}; void getD() {return d}; public String chaine(){ return "(" + this.n + "/" + this.d + ")" ; } public Fraction add(Fraction f){ int x = this.getN() * f.getD() + this.getD() * f.getN(); int y= this.getD() * f.getD(); Fraction r = new Fraction(x,y); return r; }

suite class Rationnel { public static void main(String [] s){ Fraction f for(int i=2; i<11; i++){ f = new Fraction((i%2 == 0?1:-1), i); System.out.println( f.chaine()); }

Multiples Constructeurs Dans une classe, on peut créer de multiples constructeurs –ils ont tous le même nom (nom de la classe) –ils doivent avoir des paramètres différents –ils seront différenciés par le type de leurs paramètres

Exemple class Fraction { private int n; private int d; public Fraction( ){ this.n=0; this.d= 1; } public Fraction( int x){ this.n= x; this.d= 1; } public Fraction(int x, int y){ this.n= x; this.d= y; } public String chaine(){ return ( "Fraction: (" + this.n + "/" + this.d + ")"); } class T { public static void main(String [] s){ Fraction var1 = new Fraction (); System.out.println (var1.chaine()); Fraction var2 = new Fraction (5); System.out.println (var2.chaine()); Fraction var3 = new Fraction (5, 10); System.out.println (var3.chaine()); }

this() Dans le corps d'un constructeur, on peut appeler un autre constructeur de la même classe Pour cela, on doit utiliser this()

Exemple (15) class F { private int n; private int d; public Fraction( ){ this(0,1); } public Fraction( int x){ this(x,1); } public Fraction(int x, int y){ this.n= x; this.d= y; } public String chaine(){ return ( "Fraction: (" + this.n + "/" + this.d + ")"); } class T { public static void main(String [] s){ Fraction var1 = new Fraction (); System.out.println (var1.chaine()); Fraction var2 = new Fraction (5); System.out.println (var2.chaine()); Fraction var3 = new Fraction (5, 10); System.out.println (var3.chaine()); }

Constructeur par défaut Si aucun constructeur n'a été programmé, JAVA utilise un constructeur par défaut sans paramètres Si des constructeurs sont créés, le programmeur ne peut utiliser que ceux-la –c'est à dire que si on ne programme que des constructeurs avec paramètres, on ne peut plus appeler le constructeur sans paramètres (on peut néanmoins le programmer)

Exemple class F { private int n; private int d; public Fraction(int x, int y){ this.n= x; this.d= y; } public String chaine(){ return ( "Fraction: (" + this.n + "/" + this.d + ")"); } class T { public static void main(String [] s){ //erreur Fraction var1 = new Fraction (); System.out.println (var1.chaine()); //erreur Fraction var2 = new Fraction (5); System.out.println (var2.chaine()); Fraction var3 = new Fraction (5, 10); System.out.println (var3.chaine()); }

Où sont passés les objets? import es.*; class Fraction{ private int n;//numérateur private int d;//dénominateur Fraction(int x, int y){ this.n = x; this.d = y; } void setN(int x) { this.n = x;} void setD(int x) { this.n = x;} public String chaine(){ return ( "Fraction: (" + this.n + "/" + this.d + ")"); } class T { public static void main(String [] s){ Fraction f; f = new Fraction(1,2); String s = f.chaine(); Ecran.ecrireLigne(s); f = new Fraction(1,3); String s = f.chaine(); Ecran.ecrireLigne(s); } f n=1 d=2 n=1 d=3 …

Ramasse miettes Un programme de la JVM qui se charge de ramasser les zones mémoires correspondant aux objets n'ayant aucune référence Ces zones seront recyclées Ce programme s'appelle aussi Garbage Collector

Exercice On se propose de programmer une application permettant de simuler le fonctionnement d'un contrôleur de pression des 4 pneus d'une voiture. Celles-ci doivent être entre % à l'avant, et entre % à l'arrière. Le programme doit lire les 4 pressions depuis le clavier et afficher un diagnostic montrant l'état de chaque pneu : –normal, surgonflé, sous-gonflé –la pression nécessaire à ajouter (positive) ou retrancher (négative) Le programme doit aussi vérifier l'équilibre gauche- droite. La différence entre les pressions à gauche et à droite doit être au plus 3%. Représenter puis Ecrire les classes nécessaires