BlueJ_I_II 1 Java, les objets : tout de suite ! Notes de cours associées a ces deux chapitres

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Cours n° 1 Introduction à la programmation
Formation universitaire à .NET: Introduction à C#
Introduction aux environnements répartis
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Au programme du jour …. Introduction à lhéritage Un concept important de la programmation objet Livraison de code Organisation des répertoires et packages.
Android View, onClick, Activity, Modèle Vue Contrôleur
Une solution personnalisable et extensible
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
L’architecture .net et ASP.net
Exposé de Système - Informatique et Réseau
Paquetages: Définitions Les classes Java sont regroupées en paquetages (packages en anglais) Ils correspondent aux « bibliothèques » des autres langages.
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Présentation de Java Stéphane Frénot INSA lyon
Introduction à UML NFE108 CNAM – LILLE Madame DELECLUSE
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Introduction aux services WEB
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
Chapitre III Héritage (début)
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Projet de veille technologique
Principes de programmation (suite)
Journées Pattern Grenoble - 1 Une expérience à l'IUT de Bayonne : Les patrons Composite et Interprète Philippe Lopistéguy I.U.T. de Bayonne-Pays.
Programmation 2: IFT1025 Jian-Yun Nie H 2009.
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Microsoft .NET.
Formation JAVA. Par: SILMI.S
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 1 : Introduction.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Langages orientés objets
SEG2505 – Introduction au Génie Logiciel Plan de cours – Automne 2012.
Java, les objets : tout de suite ! Rassembler, grouper les objets
Proxy et plus Cnam Paris jean-michel Douin, douin au cnam point fr
Android View, onClick, Activity, Modèle Vue Contrôleur
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Java vs. C++ Pierre-Yves ALIZON – Ingénieurs 2000.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
LES CLIENTS WEB RICHES Tuteur : Olivier CARON LEFEBVRE Benoit
Transformation de modèles Kick Off Motor Jean Marc Jézéquel & Didier Vojtisek La vision Triskell : Umlaut NG.
Cours 1 1 Java. Cours 1 2 Plan général 1.Introduction 2.Les types primitifs, évaluation d’expressions 3.Instructions for, if…. 4.Introduction de l’objet,
Introduction à la programmation objet avec java
Design Patterns en programmation par objets. Plan  Design patterns –De quoi s’agit-il? –Pourquoi faut-il les utiliser?  Design patterns essentiels 
Supports de formation au SQ Unifié
Premiers pas dans le langage Java 2012/ Premiers pas dans le langage Java TI3.4 Responsable : M lle Sana Ezzedine
Programmation en C++ Autres langages
IFT 232 Méthodes de Conception Orientées Objets Introduction.
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
Introduction au Génie Logiciel
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
IFT 232 Méthodes de Conception Orientées Objets Introduction.
Introduction à JAVA Sylvie Billot
Introduction au langage JAVA
La programmation par objets Principes et concepts Etude de Smalltalk.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Initiation au JavaScript
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Présentation de Qt Iris 1
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.
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
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Transcription de la présentation:

BlueJ_I_II 1 Java, les objets : tout de suite ! Notes de cours associées a ces deux chapitres tutorial BlueJ Cnam Paris jean-michel Douin, Version du 17 janvier et 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_I_II 2 Sommaire avec BlueJ, extrait Objects first Chapitres Objects first 1) Objets et classes, 2) définitions de classe 3) Interaction entre Objet 4) Grouper, réunir plusieurs objets (object) 5) Librairies 6) Tests, Maintenance,débogage 7) Conception de classes 8) Héritage 9) Polymorphisme 10) Couplage faible et ajouts de fonctionnalités 11) Gestion des erreurs, exceptions 12) Conception dapplications Note : BlueJ pour bluejay (ou la java bleue ?) supports BlueJ_I_II BlueJ_III

BlueJ_I_II 3 fully integrated environment graphical class structure display graphical and textual editing built-in editor, compiler, virtual machine, debugger, etc. easy-to-use interface, ideal for beginners interactive object creation interactive object calls interactive testing (with the J2SE librairies) incremental application development

BlueJ_I_II 4 Sommaire Les objectifs des concepteurs du langage Java Présentation des concepts de l'orienté Objet Approche traditionnelle Impérative, voire syntaxique et ensuite Objet Approche de la POO en utilisant BlueJ Approche Objet, graphique et interactive

BlueJ_I_II 5 Java le langage : Bibliographie utilisée Ce site contient toutes les références et lenvironnement BlueJ à installer Le cours de M.Kölling En français, un site de vulgarisation Sur le langage Java The Java Handbook, Patrick Naughton. Osborne McGraw-Hill Program Development in Java, Abstraction, Specification, and Object-Oriented Design, B.Liskov avec J. Guttag voir Addison Wesley ISBN

BlueJ_I_II 6 Java : les objectifs « Simple » syntaxe " C/C++ " « sûr » pas de pointeurs, vérification du code à l exécution et des accès réseau et/ou fichiers Orienté Objet (et seulement !), pas de variables ni de fonctions globales, types primitifs et objet Robuste ramasse miettes, fortement typé, gestion des exceptions Indépendant d une architecture Portabilité assurée par la présence d un interpréteur de bytecode sur chaque machine Environnement riche Classes pour l accès Internet classes standard complètes fonctions graphiques évoluées Support dune méthodologie de conception basée sur les « Patterns » Conception Orientée Objet

BlueJ_I_II 7 Simple : syntaxe apparentée C,C++ public class Num{ // le source : le fichier Num.java public int gcd( int n, int d){ while( n != d) if (n > d) n = n - d; else d = d - n; }

BlueJ_I_II 8 Sûr par l absence de pointeurs accessibles au programmeur Deux types : primitif ou Object (et ses dérivés) primitif : int x = 1; int y = 2; int z = x; Object Object o = new Object(); Object o1 = new Object(); // seule opération possible Object o1 = o; zyxzyx o1 o Données pour o Données pour o1

BlueJ_I_II 9 Portable public class Num { … } Le source Java …………………... Le fichier compilé Num.java Num.class 1) compilation 2) interprétation Sun solaris Mac MacOS pc Windows jvm sun jvm mac jvm pc Lecture du fichier locale ou distante

BlueJ_I_II 10 Environnement (très) riche java.applet java.awt java.beans java.io java.lang java.math java.net java.rmi java.security java.sql java.text java.util javax.accessibility javax.swing org.omg.CORBA org.omg.CosNaming Liste des principaux paquetages de la plate-forme JDK 1.2 soit environ 1500 classes !!! Et bien d autres A.P.I. JSDK, JINI,... le JDK1.3/1850 classes JDK 1.4 encore plus, déjà le JDK 1.5 ….

BlueJ_I_II 11 Pattern Catalogue de modèles de conception réutilisables Assemblage de classes pour un discours plus clair Un modèle == plusieurs classes == Un nom de Pattern Les librairies standard utilisent ces Patterns LAPI AWT utilise le modèle composite ??? Les évènements de Java sont dérivés du Pattern Observateur ??? Etc…

BlueJ_I_II 12 Concepts de l'orienté objet Le vocable Objet : Classe et objet (instance d une classe) Etat d'un objet et données d instance Comportement d'un objet et méthodes liaison dynamique Composition et interaction des objets Est composé de, est constitué de Héritage Le verbe être Polymorphisme

BlueJ_I_II 13 Un historique Algorithm + Data Structures = Program A + d = P langage de type pascal A + D = P langage modulaire, Ada, Modula-2 a + D = Plangage Orienté Objet

BlueJ_I_II 14 A + D = P, un exemple surface ( Triangle t ) = surface ( Carré c) = surface ( PolygoneRégulier p) =.... périmètre ( Triangle t ) = périmètre ( Carré c) = périmètre ( PolygoneRégulier p) =.… usage : import de la librairie de calcul puis PolygoneRégulier unPolygone; // une variable de type PolygoneRegulier … y = périmètre ( unPolygone)

BlueJ_I_II 15 A + D = P type PolygoneRégulier = structure entier longueurDuCote; entier nombreDeCotés; fin_structure; >>> <<< surface (PolygoneRégulier p ) = périmètre (PolygoneRégulier p ) = ………… (PolygoneRégulier p ) = usage : import du module PolygoneRégulier puis PolygoneRégulier unPolygone; // une variable de type PolygoneRegulier … y = périmètre ( unPolygone)

BlueJ_I_II 16 A + D = P classe PolygoneRégulier = entier longueurDuCôté entier nombreDeCôtés; surface ( ) = périmètre ( ) = ………… () = fin_classe; usage : import de la classe PolygoneRégulier puis PolygoneRégulier unPolygone; // une instance de la classe PolygoneRegulier … y = unPolygone.périmètre ( )

BlueJ_I_II 17 A + D = P classe Carré hérite_de PolygoneRégulier = surface ( ) = /* redéfinition de surface */ fin_classe; usage : import de la classe carré puis carré unCarré; // une instance de la classe Carré y = unCarré.surface ( ) y = unCarré.perimetre ( ) // hérité de PolygoneRégulier

BlueJ_I_II 18 Encapsulation contrat avec le client interface publique implémentation privée, ce sont des choix d'implémenteurs PolygoneRégulier public int surface( …){} public int perimetre (…){}

BlueJ_I_II 19 Héritage et classification définir une nouvelle classe en ajoutant de nouvelles fonctionnalités à une classe existante ajout de nouvelles fonctions ajout de nouvelles données redéfinition de certaines propriétés héritées (masquage) Une approche de la classification en langage naturel Les carrés sont des polygones réguliers (ce serait l idéal...) Carrés polygones réguliers

BlueJ_I_II 20 Polymorphisme : définitions Polymorphisme ad'hoc Surcharge( overloading), plusieurs implémentations d'une méthode en fonction des types de paramètres souhaités, le choix de la méthode est résolu statiquement dès la compilation Polymorphisme d'inclusion ( overridding), est fondé sur la relation d'ordre partiel entre les types, relation induite par l'héritage. si le type B est inférieur selon cette relation au type A alors on peut passer un objet de type B à une méthode qui attend un paramètre de type A, le choix de la méthode est résolu dynamiquement en fonction du type de l'objet receveur Polymorphisme paramètrique ou généricité, consiste à définir un modèle de procédure, ensuite incarné ou instancié avec différents types, ce choix est résolu statiquement extrait de M Baudouin-Lafon. La Programmation Orientée Objet. ed. Armand Colin

BlueJ_I_II 21 Le premier exemple en syntaxe Java public class PolygoneRégulier{ int longueurDuCôté; int nombreDeCôtés; void initialiser(int nombre, int longueur){ longueurDuCôté = longueur; nombreDeCôtés = nombre; } int périmètre(){ return longueurDuCôté * nombreDeCôtés ; } public int surface(){ …..} } // un usage de cette classe PolygoneRégulier unPolygone = new PolygoneRégulier(); unPolygone.initialiser(4,100); int y = unPolygone.périmètre();

BlueJ_I_II 22 Avec BlueJ, Classes et instances

BlueJ_I_II 23 Avec BlueJ, unPolygone.initialiser(4,100)

BlueJ_I_II 24 BlueJ Démonstration, utilisation tutorial page 8 Tutorial référencé existe en français

BlueJ_I_II 25 Objet, instance : unPolygone

BlueJ_I_II 26 Objet et référence PolygoneRégulier unPolygone = new PolygoneRégulier(); unPolygone.initialiser(4,100); unPolygone

BlueJ_I_II 27 Classe (1) public class PolygoneRégulier{ } public class Carré extends PolygoneRégulier{ }

BlueJ_I_II 28 Champs d instance, état public class PolygoneRégulier{ int longueurDuCôté; int nombreDeCôtés; Valeurs des champs de l instance : son état PolygoneRégulier

BlueJ_I_II 29 Champs d instances privées public class PolygoneRégulier{ private int nombreDeCôtés; private int longueurDuCôté; PolygoneRégulier Règles de visibilité Encapsulation Client int getLongueurDuCôté(){} void setLongueurDuCôté(int lg){} Règle : Les champs sont privés et accessibles par des méthodes

BlueJ_I_II 30 Méthodes/signatures public class PolygoneRégulier{ private int longueurDuCôté; private int nombreDeCôtés; public void initialiser(int nombre, int longueur){ longueurDuCôté = longueur; nombreDeCôtés = nombre; } public int périmètre(){ return longueurDuCôté * nombreDeCôtés ; }

BlueJ_I_II 31 Constructeur PolygoneRégulier unPolygone = new PolygoneRégulier(); unPolygone.initialiser(4,100) en plus concis, plus naturel... PolygoneRégulier unPolygone = new PolygoneRégulier(4,100); public class PolygoneRégulier{ private int longueurDuCôté; private int nombreDeCôtés; public PolygoneRégulier(int nombre, int longueur){ longueurDuCôté = longueur; nombreDeCôtés = nombre; }

BlueJ_I_II 32 Constructeur et BlueJ

BlueJ_I_II 33 Type de données Types primitifs int x, y; boolean b = false; double d = ; ou « Object » PolygoneRégulier unPolygone = new PolygoneRégulier(); Carré unCarré = new Carré(); Object o = new Object();

BlueJ_I_II 34 Méthodes de modification et dinterrogation Accesseurs : Méthodes de lecture des champs Mutateurs : Méthodes de modification des champs Constructeur Autres méthodes lecture, ou modification

BlueJ_I_II 35 Méthodes « accesseur » Par convention public type getNomDuChamps public class PolygoneRégulier{ private int longueurDuCôté; private int nombreDeCôtés; public int getNombreDeCôtés(){ return nombreDeCôtés; } public int getLongueurDuCôté(){ return longueurDuCôté; }

BlueJ_I_II 36 Méthodes « mutateur » Par convention public void setNomDuChamps(type id) public class PolygoneRégulier{ private int longueurDuCôté; private int nombreDeCôtés; public void setLongueurDuCôté(int longueur){ longueurDuCôté = longueur; } public void setNombreDeCôtés(int nombre){ nombreDeCôtés = nombre; }

BlueJ_I_II 37 Les méthodes accessibles

BlueJ_I_II 38 Valeurs retournées int getLongueurDuCôté(){ return longueurDuCôté; // valeur retournée void setLongueurDuCôté(int longueur){ // pas de valeur retournée

BlueJ_I_II 39 Déclaration et Affectation // déclaration de la méthode surface public int surface(){ int v; // une variable locale v = longueurDuCôté; int v1 = v * v; …. // appel de surface int s = unPolygone.surface(); Une partie de la mémoire allouée à la méthode surface v v1

BlueJ_I_II 40 PolygoneRégulier unPolygone, unPentagone; unPolygone = new PolygoneRégulier (4,100); unPentagone = new PolygoneRégulier (5,10); unPolygone = unPentagone; Affectation(2) unPolygone unPentagone 5 10 unPolygone unPentagone

BlueJ_I_II 41 Instruction conditionnelle if ( expression-booleenne) instructions1; [else instructions2] public class Ticket{ public void insertMoney(int amount) { if(amount > 0) { balance += amount; } else { System.out.println("Use a positive amount: " + amount); } System.out.println : affichage sur la console

BlueJ_I_II 42 Quelques opérateurs +, -, *, / int x =0; int y = x +1; -=,+= int x=2; x += 2; // x = x + 2; ++, -- x++; // x = x +1 ou x+=1 + String s = "bon" + "jour"; int ammount = 1000; System.out.println( "amount = " + amount); >=, >, <=, < boolean b = x <100; if(amount <= 0){ System.out.println( " erreur!"); }else{ total = total + amount; ==, != if(x == 1)

BlueJ_I_II 43 int y = 3; { int y; y = 2; } Visibilité(1) x = 3; // erreur ici int x; x += 2; } Visibilité de x après sa déclaration Visibilité de y (un autre y)

BlueJ_I_II 44 Visiblité(2) // Attention à la visibilité (réduite…) public class PolygoneRégulier{ private int longueurDuCôté; private int nombreDeCôtés; // erreur possible public PolygoneRégulier(int nombre, int longueur){ int longueurDuCôté = longueur; nombreDeCôtés = nombre; }

BlueJ_I_II 45 Visibilité(3) // Attention à la visibilité public class PolygoneRégulier{ private int longueurDuCôté; private int nombreDeCôtés; public PolygoneRégulier(int nombre, int longueurDuCôté ){ longueurDuCôté = longueurDuCôté; nombreDeCôtés = nombre; } Seule solution l emploi de this public PolygoneRégulier(int nombre, int longueurDuCôté ){ this. longueurDuCôté = longueurDuCôté; nombreDeCôtés = nombre; }

BlueJ_I_II 46 Commentaires du source /** accesseur, lecture du NombreDeCôté de ce polygone. le nombre de côtés */ public int getNombreDeCôtés(){ return nombreDeCôtés; } /** mutateur, modification de la longueur du Côté. la nouvelle longueur */ public void setLongueurDuCôté(int longueur){ longueurDuCôté = longueur; // attention aux valeurs négatives }

BlueJ_I_II 47 Outil javadoc, exécuté par BlueJ précède ce que l on désire commenter, et à chaque nouvelle classe, BlueJ engendre ces lignes /** * Write a description of class Test here. * (your name) (a version number or a date) */ public class PolygoneRégulier{ /** * An example of a method - replace this comment with your own * y a sample parameter for a method the sum of x and y */ public int sampleMethod(int y){ // put your code here return x + y; }

BlueJ_I_II 48 Commentaires en pages HTML pour les utilisateurs

BlueJ_I_II 49 Commentaires avec BlueJ Génération simplifiée des commentaires (HTML) du projet : tutorial page 29 génération unitaire

BlueJ_I_II 50 blue jay