Au programme du jour …. Livraison de code Organisation des répertoires et packages Ce que vous navez pas encore vraiment vu Constantes et variables de.

Slides:



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

Le mécanisme des exceptions
Introspection et Réflexion Manipulation dynamique de code Java.
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.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la programmation objet Langage Java
Au programme du jour …. Un peu plus de structures de données
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Au programme du jour …. Livraison de code Organisation des répertoires et packages Ce que vous navez pas encore vraiment vu Constantes et variables de.
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 -
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
C.
Programmer en JAVA par Tama
JAV - TD 6 Structures de données JAVA
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Programmation par Objets et Java
Chapitre III Héritage (début)
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.
Laboratoire d'Informatique de l’Université de Franche-Comté
Principes de programmation (suite)
IFT1025, Programmation 2 Jian-Yun Nie
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.
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
Introduction au paradigme orienté-objet (suite)
Présentation Structures de Données et TDA
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Cours 4 Héritage (suite).
COURS DE PROGRAMMATION ORIENTEE OBJET :
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.
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.
Objectifs À la fin de ce cours, vous serez capables de :
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
11/04/ L'héritage Cours 7 Cours 7.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
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.
Cours 7 Classes locales Clonage Divers: tableaux.
Créer des packages.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
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.
C# de plus près.  Ce sont globalement les mêmes que Java : ◦ Int(int16, int32), float, double, bool,…  Les classe « communes » sont également les mêmes.
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.
Héritage Conception par Objet et programmation Java
Classes abstraites, interface Classe interne Classes enveloppes
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.
LES CLASSES ET LES OBJETS
Transcription de la présentation:

Au programme du jour …. Livraison de code Organisation des répertoires et packages Ce que vous navez pas encore vraiment vu Constantes et variables de classe (static) Visibilité (public, private, protected) Héritage (extends) Exceptions

Livraison dun projet

Usage de votre code Votre code est destiné à être utilisé VOUS DEVEZ Documenter votre code 2 documentations : à destination des usagers de la classe : ils ne doivent pas connaître limplémentation. Ils doivent uniquement connaître : La façon dinstaller et dexécuter Les fichiers.class et leur emplacement Et la documentation de linterface de la classe : javadoc à destination des développeurs qui doivent faire évoluer votre code: ils doivent connaître limplémentation. Livraison des.java Et Documentation de limplémentation de la classe : UML, cahier des charges, spécifications détaillées, commentaires dans le code

Livraison Rappel Javadoc

API Java : à quoi ça vous sert ? Rechercher des informations et Comprendre un code existant

API Java : Rechercher des informations sur les types de données que lon manipule ou que lon souhaite manipuler ? ArrayList : Peut on ajouter un élément à une position donnée ? Peut on enlever à une position donnée ? Quexiste-t-il comme autre type de données du même style ? Comment construit on une ArrayList ? Avec un tableau est ce possible ?

API Java : Comprendre un code existant String input = reader.getInput(); if(input.startsWith("bye")) { finished = true; } Que fait startsWith("bye") ? Comment peut on trouver linformation ? Que fait getInput()? Comment peut on trouver linformation ?

Comment chercher dans lAPI ? Organisation par packages Quels sont les packages que vous connaissez ? java.util java.lang Où pouvez vous trouver la classe String ? La classe ArrayList ? Quels sont les packages qui pourront vous servir ?

Pourquoi trouve-t-on linformation ? Parce que les classes sont documentées Documentation standardisée avec génération dans un format HTML Documentation accessible par un browser web On documente : lAPI des classes Interface des classes : ensemble des méthodes et variables publiques Public vs private : accessible ou non à lextérieur de la classe

Documenter quoi ? Interface vs implémentation Limplémentation reste cachée La documentation inclut : Le nom de la classe Une description textuelle générale de la classe La liste des constructeurs et des méthodes publiques : les signatures Valeurs de retours et paramêtres Description textuelle (pré_conditions, post conditions, objectifs…) L interface de la classe UTILE pour son usage

Javadoc et classe POUR UNE CLASSE Class comment: /** * The Responder class represents a response * generator object. It is used to generate an * automatic response. * Michael Kölling and David J. Barnes 1.0 (1.Feb.2002) */

JAVADOC et méthode Commentaire pour une méthode /** * Read a line of text from standard input (the text * terminal), and return it as a set of words. * prompt A prompt to print to screen. A set of Strings, where each String is * one of the words typed by the user */ public HashSet getInput(String prompt) {... }

Comment générer la javadoc : page HTML javadoc ClasseATester.java OPTION -help Donne en ligne les différentes options Génération du fichier ClasseATester.html pour en savoir plus ts/

Livraison Rappel sur les tests

Un Main pour les Tests Exemple : Pour tester la classe ClasseATester Ecrire le contenu du main dans une classe TestDEClasseAtester (condition réelle de lusage) de sorte quil y ait : Création dinstances de cette classe : (Tests des constructeurs) Affichage des instances créées (Tests des constructeurs et de la méthode toString) Appels des méthodes en faisant varier la valeur des paramètres sur ces instances (Test des méthodes publiques) Affichage des retours des méthodes pour voir les tests

Comment faire et utiliser des packages ?

Vous connaissez déjà…. Organisation par packages Quels sont les packages que vous connaissez ? java.util java.lang Où pouvez vous trouver la classe String ? La classe ArrayList ? Quels sont les packages qui pourront vous servir ?

Comment travaille-t-on avec des packages ? Les classes dun package (bibliothèque de classes) doivent être importées (comme des livres que lon emprunte…) Utilisation de la clause import Pour importer une seule classe : import java.util.ArrayList; Pour importer toutes les classes dun package : import java.util.*; Importation inutile pour les classes de java.lang (tout le monde a ces livres ). Une fois importées les classes ont toutes la même visibilité En cas de conflit, mettre le nom complet de la classe java.util.ArrayList Ex : la classe MaClasse existe dans 2 packages : monnompackage et autrenompackage On peut les distinguer à laide des noms complets : monnompackage.MaClasse ou autrenompackage.MaClasse

Packaging de votre code Implication dans chaque classe de cette bibliothèque package nompackage; Instruction à ajouter au début des classes appartenant au package Implication sur lorganisation des fichiers Mettre les classes à compiler sous un répertoire de nom nompackage Compiler (placé au dessus du répertoire de nom nompackage) javac nompackage/ClassePackagée.Java Exécuter (placé au dessus du répertoire de nom nompackage) java nompackage.ClassePackagee

Packaging de votre code et compilation ATTENTION A LA COMPILATION DUNE CLASSE Les classes utilisées doivent être déjà compilées et visibles ORDRE de Compilation important VISIBILITE importante Désignation des répertoires où sont stockés les classes possibles VARIABLE DENVIRONNEMENT : CLASSPATH OPTION DE COMPILATION ET DEXECUTION : -cp AUTRE OPTION PRATIQUE -d

Packaging de votre code Pour une meilleure livraison Pour regrouper les classes utilisées dans le même contexte Une organisation des répertoires src : les classes doc : la documentation bin : les binaires tests : les tests

Constantes et variables de classe Ce que vous navez pas encore vraiment vu

Un nouveau mot clé : static Information attachée à la classe et non à une instance Constantes – static + mot clé final + nommage private static final int GRAVITY = 3; public static final int VAL_MAX=10; Variables et méthodes de classes : static variable : ex : Stocker les instances créées dans une classe Exemple du compte bancaire Méthode : ex : la méthode main et la classe Math Pour une classe de Test

Visibilité des méthodes et des variables dinstances Ce que vous navez pas encore vraiment vu

PRIVATE vs PUBLIC La partie Implémentation : Ce qui ne concerne pas lusage Les variables dinstances (statut private) – on doit pouvoir librement changer le type dune variable dinstances et éviter que lutilisateur change ses valeurs sans contràole (accesseurs et modifieurs) Les méthodes internes à la classes (statut private)- on doit pouvoir réutiliser un code commun mais éviter que lutilsateur fasse des effets de bord sur notre code (ex décalage des valeurs dun tableau) Implémentation de la classe (Le corps de chaque méthode et constructeur (code source)) Elle concerne les développeurs Autre documentation : conception UML, etc

Héritage Ce que vous navez pas encore vraiment vu

Héritage La classe Object

La classe Object est la classe mère dont héritent toutes les autres classes Toute classe définie en Java, que ce soit par lutilisateur ou dans un package de lAPI, hérite de la classe Object Ainsi, toute classe hérite demblée des méthodes de la classe Object

Méthodes de la classe Object int hashCode() renvoie un code utilisé pour stocker dans une Hashtable boolean equals(Object o) attention, == teste les références. Mais compare les références des attributs (=> redéfinir) Object clone() : crée une copie de lobjet. Mais copie les références des attributs (=> redéfinir) String toString() renvoie une String décrivant l'objet. Par défaut, renvoie le type et ladresse de stockage (=> redéfinir)...

Intérêt de la classe Object Certains traitements sont si génériques qu'ils peuvent s'appliquer à tous les objets Par exemple, une liste peut contenir n'importe quel type d'objet et les compter, les trier, etc. Donc il faut écrire la classe Liste pour manipuler des objets de la classe Object On pourra alors stocker dans la liste nimporte quel type dobjet

Exemple La classe Point contient tout ce qu'il y a de commun à PointColore et Point3D Point contient la gestion de labscisse et de lordonnée PointColore ne contient que ce qu'il y a de spécifique en plus : la couleur Point3D: le troisième axe Point PointColorePoint3D

Objectif de l'héritage On souhaite ne décrire qu'une seule fois le même traitement lorsqu'il s'applique à plusieurs classes Evite de recopier (notamment les modifications) On crée une classe plus générique à laquelle s'applique le traitement Toutes les classes plus spécifiques, héritant de cette classe, héritent de ce traitement, elles peuvent l'exécuter Le traitement n'est décrit qu'au niveau de la classe mère Les classes filles contiennent d'autres traitements plus spécifiques

Usage de l'héritage Une classe spécifique hérite des méthodes (public) et des attributs (protected) de sa classe mère. On n'a pas besoin de les réécrire pour la classe fille. On peut cependant redéfinir une méthode de la classe mère dans la classe fille (de même signature) Le constructeur d'un objet doit toujours commencer par appeler le constructeur de sa classe mère (super())

Rappel : la surcharge On appelle surcharge le fait davoir plusieurs méthodes qui ont le même nom au sein de la même classe Les exemplaires de la méthode ont des paramètres différents Ils peuvent avoir le même type de retour Par contre, impossible davoir des types de retour différents pour les mêmes paramètres

Usage de l'héritage (suite) Un objet de type PointColore peut utiliser toutes les méthodes de la classe Point Il doit disposer dune valeur pour tous les attributs de la classe Point A tout moment, une méthode qui utilise un objet de type Point peut manipuler un objet de type PointColore en guise de Point (on ne pourra pas accéder à la couleur) Cette dernière propriété est le polymorphisme.

Exemple : une classe Point class Point { protected int x,y; public Point(int a, int b){x=a; y=b;} public Point(){x=0; y=0;} public void moveTo (int a, int b){x=a; y=b;} public String toString() {return ( + x +, + y + ));} public void distanceToOrigin() { return Math.sqrt(x*x +y*y); }

Exemple : classe PointCol (oré) class PointColore extends Point { protected String couleur; public PointColore (int abs, int ordo, String c) {super(abs,ordo); couleur=c;} public PointColore (String c){couleur=c;} // appel implicite de super() public PointColore(){super(); couleur=« blanc »;} public String getColor(){return couleur;} public String toString() { return super.toString()+ couleur + couleur; } ArrayList lesPoints;

Ce que vous navez pas vraiment vu Les wrappers

Les classes « enveloppe » (1) Problème : les types de base (int, float, double, boolean… ne sont pas des objets) On ne peut pas les stocker tels quels dans les conteneurs Cest à cela que servent les classes enveloppes (Wrappers)

Les classes « enveloppe » (2) Permettent de représenter des types de base sous forme dobjets int entier => Integer n Integer n = new Integer(entier); entier = n. intValue(); double =>Double, boolean => Boolean… intValue(), doubleValue()...

Ce que vous navez pas vraiment vu Les exceptions

Les exceptions que vous connaissez déjà Des exceptions logicielles rattrapables NumberFormatException ArrayIndexOutOfBounds Des exceptions graves non rattrapables NullFormatPointerException

E quon peut faire : les rattraper try catch ( catch ( … finally

E quon peut faire : les déclarer et les lever void maMethode() throws E {... obj.m();... } E doit être une sous classe dException Instruction throw new Exception(unmessage);