BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ

Slides:



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

A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Introspection et Réflexion Manipulation dynamique de code Java.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la programmation objet Langage Java
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.
C.
JAV - TD 6 Structures de données JAVA
IJA - TD 2 Bases du langage
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Programmation par Objets et Java
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Programmation orientée objet
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
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.
33 Types de données et opérateurs. 3-2 Objectifs A la fin de ce cours, vous serez capables de : Décrire les types de données primitives Déclarer et initialiser.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
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.
POO : Objets et classes (Rappels)
Langage Oriente Objet Cours 2.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Structures de données IFT-2000
Introduction à la programmation objet Langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Principes de programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
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 :
CSI1502 Principes fondamentaux en conception des logiciels
CSI 1502 Principes fondamentaux de conception de logiciels
Java, les objets : tout de suite ! Rassembler, grouper les objets
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é.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
L’essentiel du langage C
Cours 7 Divers et exceptions. Chapitre V Enumeration, tableaux, conversion de types, noms.
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.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
Ecrire des expressions arithmétiques et logiques
ALGORITHMIQUE ET PROGRAMMATION C
11/04/ L'héritage Cours 7 Cours 7.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
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.
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 opérateurs L’amitié Les opérateurs Introduction
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.
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
Héritage Conception par Objet et programmation Java
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Classes abstraites, interface Classe interne Classes enveloppes
PRO-1027 Programmation Scientifique en C
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.
Langage de Programmation Orientée Objet : C++
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ
Transcription de la présentation:

BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ Cnam Paris jean-michel Douin, Version du 22 Janvier 2003 Ce support accompagne, référence le livre de David J. Barnes & Michael Kölling Objects First with Java A Practical Introduction using BlueJ Pearson Education, 2003 ISBN

BlueJ_III 2 Sommaire abstraction et modularité diagramme de classes diagramme d’objets références d’objet types primitifs types d’objet création d’objet surcharge (polymorphisme ad’hoc) appel de méthodes internes ou externes débogueur et points d’arrêt

BlueJ_III 3 Abstraction et Modularité Abstraction Modularité

BlueJ_III 4 Exemple : les Véhicules Véhicule, obtenir la distance parcourue en fonction de la consommation Quels sont les objets ? Compteur Véhicule

BlueJ_III 5 Classe Véhicule public class Véhicule{ /** le compteur de ce véhicule */ private Compteur compteur; /** le réservoir, initialisé à 0.0. */ private double jauge; /** le nom donné à ce véhicule */ private String nom; /** La consommation de ce véhicule. */ private double consommation; public Vehicule(String nom, double consommation){ this.compteur = new Compteur(); this.consommation = consommation; this.nom = nom; }... }

BlueJ_III 6 Classe Compteur public class Compteur{ /** le totalisateur, ne peut être remis à zéro */ private double totalisateur; /** le partiel */ private double partiel; /** Création d'un compteur. */ public Compteur(){ totalisateur = partiel = 0.0; }...

BlueJ_III 7 Diagramme de classes Véhicule est composée de Compteur

BlueJ_III 8 Diagramme d’instances L ’instance « unVéhicule » est composée d ’une instance « compteur »

BlueJ_III 9 Source Java : exemple Un extrait possible : Véhicule v = new Véhicule("FJR",0.075); v.faireLePlein(); v.rouler(77.50); v.rouler(25.00); double jauge = v.getJauge(); v.rouler(10,50); double distance = v.distanceParcourue();

BlueJ_III 10 Source Java : exemple (suite) Suite de l ’extrait possible : Obtention du compteur //Véhicule v = new Véhicule("FJR",0.075); Compteur c = v.getCompteur(); double dist = c.getTotalisateur(); // ou encore double dist2 = v.getCompteur().getTotalisateur(); v.rouler(3.234); v.getJauge();

BlueJ_III 11 v.rouler(5.25); public void rouler(double km){ double carburantNécessaire = (consommation*km); if(jauge-carburantNécessaire >= 0){ compteur.add(km); jauge = jauge - carburantNécessaire; }else{ compteur.add(jauge/consommation); jauge = 0.0; } Paramètres formels et effectifs, par recopie Paramètre effectif Paramètre formel

BlueJ_III 12 Appel de la méthode rouler, état de la pile Exécution de rouler km carburantNécessaire

BlueJ_III 13 Références et paramètres maCollectionDeVéhicules.ajouter( v); … public void ajouter(Véhicule voiture){ ……. double reste = voiture.getJauge(); } Paramètre effectif Paramètre formel

BlueJ_III 14 Appel de la méthode ajouter, état de la pile Ici, la même instance a deux noms, v et voiture voiture reste Exécution de rouler Contexte de l’appelant v compteur FJR

BlueJ_III 15 BlueJ : Véhicule v Véhicule v = new Véhicule("FJR",0.075);

BlueJ_III 16 BlueJ : Inspection

BlueJ_III 17 BlueJ : Obtenir le compteur de ce véhicule Inspection de l ’inspection

BlueJ_III 18 BlueJ : point d’arrêt

BlueJ_III 19 Surcharge, du constructeur public Vehicule(String nom, double consommation){ this.nom = nom; this.consommation = consommation; this.compteur = new Compteur(); } public Vehicule(String nom){ this.nom = nom; this.consommation = 0.1; this.compteur = new Compteur(); } public Vehicule(){ this.nom = "anonyme"; this.consommation = 0.1; this.compteur = new Compteur(); } this désigne l ’instance en cours

BlueJ_III 20 Surcharge du constructeur : 3 écritures possibles Véhicule v = new Véhicule("FJR",0.075); Véhicule v1 = new Véhicule("majestic"); Véhicule v2 = new Véhicule();

BlueJ_III 21 Un autre usage de this public Vehicule(String nom, double consommation){ this.nom = nom; this.consommation = consommation; this.compteur = new Compteur(); } public Vehicule(String nom){ this(nom, 0.1); } public Vehicule(){ this( "anonyme", 0.1); } this(, ) : appel du constructeur a deux paramètres, avec cet entête

BlueJ_III 22 Appel de méthodes internes public void rouler(double km){ double carburant = carburantNécessaire(km); if(jauge-carburant >= 0){ compteur.add(km); jauge = jauge - carburant; }else{ compteur.add(jauge/consommation); jauge = 0.0; } private double carburantNécessaire(double km){ return consommation*km; } note : préfixation éventuelle par this. double carburant = this.carburantNécessaire(km); Appel

BlueJ_III 23 Appel de méthodes externes public class Véhicule{ /** méthode de lecture. la distance parcourue par ce véhicule. */ public double distanceParcourue(){ return compteur.getTotalisateur(); }... public class Compteur{ private double totalisateur; public double getTotalisateur(){ return totalisateur; }...

BlueJ_III 24 Java : Quels sont les types primitifs ? entier signés seulement type byte ( 8 bits), short ( 16 bits), int ( 32 bits), long ( 64 bits) flottant standard IEEE type float( 32 bits), double (64bits) booléen type boolean (true,false) caractère unicode, type char (16 bits)

BlueJ_III 25 Type primitif et changement de type Automatique si la taille du type destinataire est supérieure byte a,b,c; int d = a+b/c; Explicite byte b = (byte)50; b = (byte) b * 2; // b * 2 promue en int par défaut la constante numérique est de type int, suffixe L pour obtenir une constante de type long 40L par défaut la constante flottante est de type double, suffixe F pour obtenir une constante de type float 40.0F

BlueJ_III 26 Conversions implicites Automatique si la taille du type destinataire est supérieure byte->short,int,long,float,double short->int, long, float, double char ->int, long, float, double int ->long, float, double long -> float, double float ->double

BlueJ_III 27 Exemple : La classe Conversions public class Conversions{ public void exempleSyntaxique( ){ byte b;short s;char c;int i;long l;float f;double d; b=(byte) 0; s = b; i = b; l = b; f = b; d = b; i = s; l = s; f = s; d = s; i = c; l = c; f = c; d = c; l = i; f = i; d = i; f = l; d = l; d = f; }

BlueJ_III 28 Déclarations de constantes private final static double CAPACITE = 50.0; private final static String hi = "hello"; public final int MAXIMUM = 100; public final long TAILLE_MAX = 100L; public final static byte MAX = (byte)0xFF;

BlueJ_III 29 Type caractère Java utilise le codage Unicode représenté par 16 bits \u0020 à \u007E code ASCII, Latin-1 \u00AE © \u00BD / la barre de fraction... \u0000 à \u1FFF zone alphabets.... \u0370 à \u03FFF alphabet grec

BlueJ_III 30 Opérateurs Arithmétiques +, -, *, /, %, ++ +=, -=, /=, %=, --, Binaires ~, &, |, ^, &=, |=, ^= >>, >>>, >=, >>>=, <<= Relationnels ==, !=, >, =, <= Syntaxe C Booléens &, |, ^, &=, |=, ^=, ==, !=, !, ?: ||, &&

BlueJ_III 31 Opérateurs booléens et court-circuits, exemple 1public class Div0{ 2 public void exempleDeCourtCircuits( 3 int den = 0, num = 1; 4 boolean b; 5 6 System.out.println("den == " + den); 7 8 b = (den != 0 && num / den > 10); 9 10 b = (den != 0 & num / den > 10); 11} 12} Exception in thread "main" java.lang.ArithmeticException : / by zero at Div0.main(Div0.java:10)

BlueJ_III 32 Précédence des opérateurs ()[]. ++--~! */% +- >>>>><< >>=<<= ==!= & ^ | && || ?: =op= int a = 1, b = 1, c=2; int x = a | 4 + c >> b & 7 | b >> a % 3; // ??? Que vaut x ??? + -

BlueJ_III 33 Un retour sur la classe Véhicule Véhicule String Compteur c.toString() v.toString()v c c "????"

BlueJ_III 34 Méthode toString() Véhicule v = new Véhicule("FJR",0.075); v.faireLePlein(); v.rouler(23.28); v.rouler(21.06); Compteur c = v.getCompteur(); String vs = v.toString(); String vc = v.getCompteur().toString(); System.out.println("pour le FJR" + vs);

BlueJ_III 35 méthode toString(), classe Compteur /** conversion en String. * affichage sous la forme d'un nombre entier * entre 0 et pour le totalisateur * et entre 0 et 999 pour le partiel la chaîne selon ce format : * "[Totalisateur = totalisateur | Partiel = partiel];" */ public String toString(){ int total = (int)Math.round(this.totalisateur)%100000; int part = (int)Math.round(this.partiel)%1000; return "[Totalisateur = " + total + " | Partiel = " + part + "];"; }

BlueJ_III 36 méthode toString(), classe Véhicule /** conversion en String. une chaîne selon ce format : * "Véhicule FJR nom : compteur.toString() jauge = valeur */ public String toString(){ return "Véhicule " + getNom() + " : compteur = " + compteur.toString() + " jauge = " + getJauge(); }

BlueJ_III 37 Synthèse : résumé, concepts