Notes de cours GEI 442 : STRUCTURES DE DONNÉES ET ALGORITHMES. Chapitre 1 : Langage JAVA. Ahmed KHOUMSI. Ahmed KHOUMSI. Hiver 2001

Documents pareils
Programmer en JAVA. par Tama

Une introduction à Java

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Chapitre 10. Les interfaces Comparable et Comparator 1

Premiers Pas en Programmation Objet : les Classes et les Objets

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programmation par les Objets en Java

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

as Architecture des Systèmes d Information

Tp 1 correction. Structures de données (IF2)

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Cours 1: Java et les objets

TP1 : Initiation à Java et Eclipse

PROGRAMMATION PAR OBJETS

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Java Licence Professionnelle CISII,

Projet de programmation (IK3) : TP n 1 Correction

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Programmation Orientée Objet application au langage Java Version Novembre 2007

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Package Java.util Classe générique

Java Licence professionnelle CISII,

TD/TP PAC - Programmation n 3

Programmation Par Objets

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Java c est quoi? Java pourquoi?

Chapitre VI- La validation de la composition.

Programmation avec des objets : Cours 7. Menu du jour

Langage Java. Classe de première SI

Généralités sur le Langage Java et éléments syntaxiques.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INITIATION AU LANGAGE JAVA

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

TD3: tableaux avancées, première classe et chaînes

RMI le langage Java XII-1 JMF

Plan du cours. Historique du langage Nouveautés de Java 7

Héritage presque multiple en Java (1/2)

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Programmation Objet I

Utilisation d objets : String et ArrayList

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Support de cours et TD Programmation Orientée Objet

Objets et Programmation. origine des langages orientés-objet

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

TP, première séquence d exercices.

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Java 1.5 : principales nouveautés

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Projet gestion d'objets dupliqués

Java DataBaseConnectivity

Cours 14 Les fichiers

2. Comprendre les définitions de classes

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Corrigés des premiers exercices sur les classes

Apprendre Java en 154 minutes

TD/TP PAC - Programmation n 3

Programmation Objet Java Correction

Auto-évaluation Programmation en Java

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Introduction au langage Java

Bases Java - Eclipse / Netbeans

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

F. Barthélemy. 17 mai 2005

Programme Compte bancaire (code)

Les chaînes de caractères

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

Valeur C - RSM Conception d Applications Multimedia. Objectifs du cours: 1. Java en général

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Initiation à JAVA et à la programmation objet.

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Environnements de développement (intégrés)

Un ordonnanceur stupide

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

La technologie Java Card TM

Chapitre 2. Classes et objets

Remote Method Invocation Les classes implémentant Serializable

1 Définition d une classe en Java

Chapitre V. Les classes : Object, Vector, etc.

Développement Logiciel

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Gestion distribuée (par sockets) de banque en Java

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

Les structures de données. Rajae El Ouazzani

Génie Logiciel avec Ada. 4 février 2013

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

TP : Gestion d une image au format PGM

Transcription:

Notes de cours GEI 442 : STRUCTURES DE DONNÉES ET ALGORITHMES en JAVA 1 Programmation orientée objet (POO) Objet : cœur de la POO objet = type de données qui a une structure et un état État de l objet accessible (lecture) et manipulable (écriture) à l aide d opérations définies par l objet Quelques opérations particulières : - créer nouvel objet - copier un objet dans un autre objet - tester si deux objets sont identiques - effectuer des opérations E/S sur un objet Atomicité : Objet doit être considéré comme un tout; ses parties sont : - non accessibles directement - accessibles indirectement par des méthodes fournies par l objet Encapsulation : - Groupement : - des données - des opérations s appliquant sur ces données - Cacher les détails d implantation Réutilisation de code : facilitée par atomicité et encapsulation 2 1

POO (suite) Héritage : - permet d étendre, restreindre ou modifier fonctionnalité d un objet - favorise réutilisation de code Polymorphisme : permet de référencer objets de différents types à l aide d un même identificateur Objet adéquat est déterminée à l aide de l opération (méthode + arguments) qui lui est appliquée Objet = instance d une classe Appel d une méthode d un objet : effectué par un passage d un message à un objet 3 Exemple Définition d une classe public class Ballon // méthodes public int volume() return vol; public void gonfle(int x) if x > 0 vol = vol + x; public void degonfle(int x) if ( (x > 0) && (x <= vol) ) vol = vol - x; // donnée private int vol; Méthodes de l objet : - volume permet de lire - gonfle et degonfle permettent de modifier la donnée vol Méthodes accessibles par l utilisateur en spécifiant public État de l objet = valeur de la donnée vol inaccessible directement, en spécifiant private accessible uniquement en utilisant les méthodes de l objet En général, toutes les données d un objet doivent être private 4 2

Exemple (suite) Utilisation de la classe Ballon public class testballon public static main() Ballon b = new Ballon(); b.gonfle(10); System.out.println( volume du ballon = + b.volume() ); b.degonfle(6); System.out.println( volume du ballon = + b.volume() ); // Instruction suivante génère erreur de compilation car vol est private b.vol = 0; Nous reviendrons sur la signification de static 5 Constructeurs Constructeur = méthode - associée à une classe - exécutée automatiquement lorsqu un objet de la classe est créé - porte le nom de la classe Il permet d effectuer une initialisation automatique d un objet lors de sa création Si aucun constructeur défini : - champs de base initialisés à 0 - champs de référence initialisés à null Plusieurs constructeurs peuvent être définis grâce à la surcharge Exemple : La classe Ballon (voir page 4) peut avoir les deux constructeurs suivants public Ballon(int x) vol = x; public Ballon( ) vol =0; Création de deux objets b1 et b2 de type Ballon, de volumes 0 et a Ballon b1 = new Ballon( ); Ballon b2 = new Ballon( a ); 6 3

Mutateurs et accesseurs Mutateur (mutator)= méthode qui modifie l état d un objet Accesseur (accessor)= méthode qui examine, mais ne modifie pas l état de l objet Exemple : Classe Ballon Les méthodes gonfle et degonfle sont des mutateurs La méthode volume est un accesseur L état est défini par la donnée vol 7 Méthodes tostring et equals tostring retourne un String - qui contient (une partie de) l état de l objet sous une forme compréhensible - qui pourra être imprimé equals permet de vérifier si deux objets sont identiques, càd - sont de même type - sont dans le même état Exemple : Classe Ballon public String tostring( ) return volume du ballon = + vol; public boolean equals(object b) if (!( b instanceof Ballon) ) return false Ballon b1 = (Ballon) b; // nécessaire car argument b de type Object return b1.vol == vol; 8 4

Méthodes statiques et main Méthode statique : - associée à une classe - ne nécessite pas création d un objet - spécifiée par le mot-clé static Exemples : - la classe Integer contient plusieurs méthodes statiques (voir [2] page 350) - la classe Math contient plusieurs méthodes statiques (voir [2] page 352) main : Exemple de la classe Ballon la commande «java Ballon» lance l interpréteur java qui exécute la méthode main de la classe Ballon Rappelons que : - le code source de Ballon est (normalement) dans un fichier Ballon.java - le code interprété (en j-code) est dans un fichier Ballon.class Chaque classe peut avoir sa propre méthode main, ce qui rend le test de la classe plus pratique 9 Packages Package = ensemble de classes Permet de regrouper des classes Visibilité des classes Deux classes d un même package ont moins de restriction de visibilité entre elles que si elles étaient dans des packages différents En effet, si aucun des mots-clé public, private, protected n est utilisé pour un membre (donnée ou méthode) d une classe, alors il est accessible par toutes les classes du même package. Exemples de packages : java.applet, java.awt, java.io, java.lang, java.util 10 5

Structure des packages Les classes d un même package P : - sont dans un même répertoire D tel que : si P = a1.a2..an alors D = a1/a2/ /an Le nom du répertoire est interprété relativement à la variable d environnement CLASSPATH (voir plus loin) - ont leur 1ère ligne égale à Package P; Exemple : Package java.io Les classes de ce package : - se trouvent dans répertoire java/io relativement à CLASSPATH - ont comme 1ère ligne : Package java.io; 11 Accès aux classes d un package Première méthode d accès : Une classe C d un package P est spécifiée par P.C Exemple 1 : Package java.util contient la classe Data Un objet de cette classe peut être créé par l instruction suivante : java.util.data jour = new java.util.data(); Classe Data : - se trouve dans java/util (relativement à CLASSPATH) - commence par la ligne : Package java.util; Exemple 2 : Package java.io contient la classe FileReader Un objet de cette classe peut être créé par l instruction suivante : java.io.filereader fichier = new java.io.filereader(nom); Classe FileReader : - se trouve dans java/io (relativement à CLASSPATH) - commence par la ligne : Package java.io; 12 6

Accès aux classes d un package (suite) Seconde méthode d accès : En utilisant la directive import, on peut utiliser les classes d un package P en spécifiant uniquement leurs noms, càd sans préciser le nom du package. Exemple : Soit : - la classe Date du Package java.util - plusieurs classes du Package java.io Si on veut utiliser ces classes en spécifiant juste leur noms, alors le fichier où ces classes sont utilisées devra commencer par les deux lignes suivantes : import java.util.date; import java.io.*; // Exemple d utilisation de classes Date jour = new Date( ); FileReader fichier = new FileReader( nom); 13 Variable d environnement CLASSPATH Un package a1.a2..an est cherché dans un répertoire a1/a2/ /an relativement aux répertoires spécifiés dans la variable CLASSPATH Manipulation de CLASSPATH sous UNIX Lire CLASSPATH à l aide de la commande «echo $CLASSPATH» Cette commande nous retourne une liste de noms de répertoires séparés par «:» Les noms de packages sont interprétés relativement à ces répertoires Exemple : si «echo $CLASSPATH» nous retourne «.:/jdk/lib/», alors les noms de packages sont interprétés par rapport au répertoire courant et au répertoire /jdk/lib/ Initialiser ou modifier CLASSPATH à l aide de setenv Si, par exemple, on veut ajouter le répertoire $HOME/book, alors on exécute setenv CLASSPATH.:/jdk/lib/:$HOME/book Les classes qui : - sont accessibles à travers CLASSPATH et - ne font pas partie explicitement d un package sont considérées comme faisant partie d un même package 14 7

Compilation séparée Un programme consiste en un ou plusieurs fichiers.java Chacun de ces fichiers : - contient une classe portant le nom du fichier (sans l extension java) - doit être compilé (à l aide de javac) pour générer un fichier de même nom (mais avec l extension class) Les fichiers.java peuvent être compilés dans n importe quel ordre 15 Opérateur instanceof L instruction «u instanceof K» retourne true si l objet u est une instance : - de la classe K ou - d une sous-classe de K ou - d une classe qui implante l interface K ou - d une sous-classe d une classe qui implante l interface K Les interfaces seront définies dans la partie 4 16 8

Mot-clé this Première utilisation : référence à l objet courant Exemple : méthode equals de la classe Ballon public boolean equals (Object b) if (!( b instanceof Ballon ) ) return false; Ballon b1 = (Ballon) b; if (this == b1) return true; else return b1.vol == vol; Remarque : vol est équivalent à this.vol Seconde utilisation : un constructeur fait référence à un autre constructeur du même objet Exemple : constructeurs de la classe Ballon public Ballon( int x) vol = x; public Ballon ( ) this( 0 ); // appel du premier constructeur Il existe d autres utilisations de this 17 Variable et constante globales à une classe Variable statique : Une variable spécifiée static est partagée par tous les objets de la classe correspondante. Une telle variable se comporte comme une variable globale à la classe. Elle existe dès que la classe est chargée. Constante Les mots-clé final static permettent de définir une constante globale à la classe. Elle existe dès que la classe est chargée. Exemple : public final static int INDICE_MAX = 100; 18 9

Initialiseurs statiques Les champs (variables, constantes) statiques sont initialisés (à des valeurs par défaut) lorsque la classe est chargée Initialiseur statique = morceau de code qui est automatiquement exécuté lorsque classe chargée - permet d initialiser automatiquement les champs statiques à des valeurs autres que celles par défaut - est précédé du mot-clé static - doit suivre les déclarations des champs statiques Exemple : public class Carres private static double RacineCarrees [ ] double [ 100 ]; static for (int i = 0; i < RacineCarres.length; i++ ) RacineCarres[i] = Math.sqrt( ( double) i ); // Reste de laclasse 19 10