1 La notion de package 1. 2 Les chaînes de caractères 2. 3 Retour vers les objets 4

Documents pareils
Une introduction à Java

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

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

Programmer en JAVA. par Tama

Cours 1: Java et les objets

Premiers Pas en Programmation Objet : les Classes et les Objets

as Architecture des Systèmes d Information

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

Langage Java. Classe de première SI

TP1 : Initiation à Java et Eclipse

Java Licence Professionnelle CISII,

RMI le langage Java XII-1 JMF

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

INITIATION AU LANGAGE JAVA

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

Utiliser Java sans BlueJ

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Utilisation d objets : String et ArrayList

PROGRAMMATION PAR OBJETS

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Java c est quoi? Java pourquoi?

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

Package Java.util Classe générique

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

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

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

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

Auto-évaluation Programmation en Java

TD/TP PAC - Programmation n 3

Java Licence professionnelle CISII,

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

Programmation par les Objets en Java

Initiation à JAVA et à la programmation objet.

Remote Method Invocation (RMI)

Projet de programmation (IK3) : TP n 1 Correction

Java DataBaseConnectivity

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

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

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

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

Programmation Par Objets

Java - la plateforme

TP, première séquence d exercices.

Programme Compte bancaire (code)

OpenPaaS Le réseau social d'entreprise

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Chapitre VI- La validation de la composition.

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Bases Java - Eclipse / Netbeans

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

TD/TP PAC - Programmation n 3

Classe Interne, Anonyme & Enumération

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

Apprendre Java en 154 minutes

Serveur d'archivage 2007 Installation et utilisation de la BD exist

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

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

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 )

1 Définition d une classe en Java

Java Licence Professionnelle CISII,

Support de cours et TD Programmation Orientée Objet

Corrigé des exercices sur les références

Développement Logiciel

Java 1.5 : principales nouveautés

ACTIVITÉ DE PROGRAMMATION

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

Exercices sur les interfaces

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

La base de données XML exist. A. Belaïd

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

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

Corrigés des premiers exercices sur les classes

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Design patterns. Design patterns - définition. Design patterns - avantages

Introduction au langage Java

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

Remote Method Invocation Les classes implémentant Serializable

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

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

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

Synchro et Threads Java TM

Cours d initiation à la programmation en C++ Johann Cuenin

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

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

4. Groupement d objets

TP1. Outils Java Eléments de correction

1. Langage de programmation Java

La carte à puce. Jean-Philippe Babau

OS Réseaux et Programmation Système - C5

Programmation en Java IUT GEII (MC-II1) 1

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

La technologie Java Card TM

Les chaînes de caractères

Transcription:

Plan du cours Table des matières 1 La notion de package 1 2 Les chaînes de caractères 2 3 Retour vers les objets 4 4 Les interfaces 6 1 La notion de package Organisation générale d un projet Java Pour le moment, nos applications Java sont constituées de un ensemble de classes chaque classe dans un fichier le nom du fichier sera exactement identique au nom de la classe, aux majuscules près Organisation générale d un projet Java Dans les projets plus grands : les classes peuvent être rangées dans différents répertoires et sous-répertoires les classes qui sont dans un même répertoire sont dans un même paquetage ou package le nom d un package est composé des noms des répertoires formant le chemin d accès à ses classes, séparés par un. les noms des répertoires commencent par une minuscule. Déclaration de package La définition des classes commence par la désignation du package dans lequel la classe se trouve. Cette indication est optionnelle. Si cette instruction est présente, elle doit être la première instruction du fichier. package monrep.monsousrep; Le chemin monrep.monsousrep doit indiquer la liste des sous-répertoires à traverser pour atteindre cette classe.

Les API Java API : Application Programming Interface C est l ensemble des classes Java déjà programmées auxquelles vous avez accès. Elles sont organisées en packages et sous-packages. En voici quelques uns : java.lang java.util java.awt java.awt.event javax.swing... Importation de classes Par défaut, accès à toutes les classes définies : dans java.lang dans votre répertoire courant Pour utiliser des classes provenant d autres packages, on utilise l instruction import. Par exemple import java.util.date ; Plus généralement import rep1.rep2.uneclasse; import rep1.rep3.*; Cette instruction doit se trouver après l instruction package, si elle est présente, et avant la définition de la classe. Utiliser les classes d un package Pour pouvoir utiliser une classe CCC d un package PPP, il faut : que CCC soit définie public dans le package PPP ; que le code qui veut utiliser CCC l indique par une instruction import PPP.CCC ;, ou bien import PPP.* ;. Dans un même package, les classes sont définies public ou rien. Si une classe est déclarée public, alors elle est accessible en dehors du package auquel elle appartient. Par défaut, (i.e. sans public), l accès à la classe sera dit package et la classe ne sera accessible que par les classes du même package. La variable CLASSPATH La variable classpath permet au compilateur javac et à l interprète java de savoir où se trouvent les classes utilisées. Par défaut, classpath contient. et le chemin d accès aux API Java. 2 Les chaînes de caractères La classe String à noter : pas obligatoirement de new pour créer un objet String ; 2

une String est implémentée comme un tableau constant de caractères ; on ne modifie pas une String, on créé un nouvel objet String (la classe String est une classe non modifiable). La classe String Quelques méthodes : int length() char charat(int ind) boolean equals(string s) int indexof(char c) String substring(int début,int fin) String substring(int début) String trim() Les classes StringBuffer et StringBuilder Les classes StringBuffer et StringBuilder implémentent les chaînes de caractères, comme la classe String, à la différence qu une instance de StringBuffer ou de StringBuilder est modifiable. plus efficace lorsqu on effectue beaucoup de modifications sur une chaîne de caractères. Les classes StringBuffer et StringBuilder Les principales méthodes : append, insert, setcharat,... StringBuilder a de meilleures performances que StringBuffer, mais n est pas robuste par rapport aux accès concurrents. StringBuilder existe depuis le JDK 1.5. StringBuilder est la classe habituellement utilisée. On veut qu un bibliobus affiche tous les livres qu il contient : // Dans la classe Promotion public String tostring(){ StringBuilder sb = new StringBuilder(); sb.appnd(nom); if (nbetudiants>0) { sb.append("voici mes étudiants"); for (int i=0;i<nbetudiants;i++){ sb.append("\n"); sb.append(lesetudiants[i].getprenom()); sb.append(" "); sb.append(lesetudiants[i].getnom()); return sb.tostring(); 3

3 Retour vers les objets Durée de vie des variables et des objets un objet existe tant qu il existe une référence vers lui ; une variable d instance d un type primitif existe tant qu il existe une référence vers l objet auquel elle appartient. Définition d une classe Une classe est définie par : ses attributs, ou variables ses méthodes Les attributs sont définis par leur type ; Les méthodes sont définies par leur signature. Les méthodes Signature d une méthode On appelle signature d une méthode son nom, le type de ce qu elle retourne, et la nature de ses arguments. C est ce qu on appelle parfois aussi son entête. Les méthodes Surcharge de méthodes C est la possibilité d avoir un même nom de méthode avec des signatures différentes (et donc des comportements différents). C est la nature des paramètres effectifs qui détermine la méthode exécutée. Le compilateur choisit la méthode à utiliser par concordance de l appel et de la signature. Variables de classe et variables d instance une variable de classe (static) est une variable qui n est créée qu une seule fois par classe, et qui est partagée par toutes les instances de cette classe ; une variable d instance est une variable qui existe pour chaque instance d une classe, et qui contient une valeur relative à l instance à laquelle elle appartient. s : les constantes d une classe les variables qui contiennent une information relative à l ensemble des instances d une classe (compteur d instances,...) Méthodes d instance, méthodes de classe Une méthode qui ne manipule aucune variable d instance (par exemple, une méthode qui effectue un calcul uniquement à partir de ses paramètres) a vocation à être déclarée static. 4

public static boolean estvalide(string nom){ return (nom.length()<maxlg); Les modificateurs d accessibilité A l intérieur d une classe, une variable ou une méthode peut être définie avec un modificateur d accès. Les différents modificateurs d accessibilité sont : private l élément (variable ou méthode, d instance ou de classe) est privé, il n est accessible que depuis la classe elle-même (le code de la classe ds laquelle il est défini) ; pas de modificateur d accès l accès est dit package. protected l accès est étendu (par rapport à private au code des classes du même package et aux sous-classes de la classe. Nous reviendrons plus tard sur cette notion, liée à l héritage ; public accessible à partir de tout code qui a accès à la classe où l élément est défini. This Le mot-clé this désigne l instance courante. Il peut être utilisé : pour accéder à un membre de l instance this.nom = nom ; pour passer sa référence à un autre objet Dans la classe Personne Livre liv = new Livre(...) ; liv.jetemprunte(this) ; et Livreimplémente la méthode void jetemprunte(personne p) ; Le mécanisme de création et d initialisation d un objet 1. les variables de classe sont créées dès les premier appel à la classe (soit pour une instanciation appel à new, soit par un accès direct à une variable de classe) : (a) initialisés au niveau de la déclaration ; (b) les constructeurs de statiques (plus rares) ; 2. les variables d instance initialisées hors constructeur (à la déclaration) ; 3. exécution du constructeur ; public class FeuTricolore{ public static final String[] COULEURS = {"ROUGE","ORANGE","VERT"; private int feu; public FeuTricolore(int feu){ this.feu = feu%couleurs.length; public FeuTricolore(){ 5

public String tostring(){ return COULEURS[feu]; public void tourne(){ feu = (feu+1)%couleurs.length; //FeuTricolore public static void main(string[] args){ System.out.println("Quelles sont les " + "couleurs possibles?"); for(int i=0;i<feutricolore.couleurs.length; i++) System.out.println(FeuTricolore.COULEURS[i]); FeuTricolore ft = new FeuTricolore(2); System.out.println(ft); for (int i=0;i<10;i++){ ft.tourne(); System.out.println(ft); //main 4 Les interfaces Les interfaces Décomposer un problème en sous-problèmes : c est définir le contrat à respecter par chaque partie c est définir les protocoles de communication entre objets contrat interface Une interface n est pas une classe : elle ne peut pas être instanciée (pas de new) ; elle n implémente aucune méthode. Une interface ne peut contenir que la signature de méthodes (public) la déclaration de constantes (public static final) public interface Automobiliste { public static final String NVLE_IMMAT = "1111WWW99"; 6

public void acheteunevoiture(voiture v); public void acheteunevoiture(string immat); public void vendvoiture(); Déclaration d une interface Une interface est dans un fichier du même nom que l interface ; Une interface peut être déclarée dans un package ; Une interface est public ou rien (i.e. package) ; Un fichier qui contient une définition d interface peut contenir des instructions import ; Implémentation d une interface Une classe, si elle implémente une interface, doit fournir une implémentation pour toutes les méthodes définies dans l interface. Une classe peut implémenter plusieurs interfaces. Syntaxiquement : class NomDeLaClasse implements NomDUneInterface, NomDUneAutreInterface{... public class Personne implements Automobiliste{ private String nom; // tous les attributs d une Personne... private Voiture v; public void acheteunevoiture(voiture v){ if ((v==null) && v.estachetee(this)) this.v = v; public void acheteunevoiture(string immat){ if (v==null) v = new Voiture(immat); public void vendvoiture(){ v = null; // et les autres methodes et constructeurs... //Personne Typage Les définitions d interface créent des noms de types tout comme le font les définitions de classe. On peut utiliser le nom d une interface comme le nom de type d une variable ; Toute instance d une classe qui implémente cette interface peut être affectée à cette variable. 7

Typage Automobiliste a = new Personne("Dup","Jean",32); Personne p = new Personne("Dur","Paul",28); a.acheteunevoiture("2345abc62"); p.acheteunevoiture("1234abc59"); p.changesociete("marastoca"); a.changesociete("marastoca");//refus Conflit de noms Une classe peut implémenter plusieurs interfaces. Que se passe-t-il si un même nom de méthode se trouve défini dans plusieurs interfaces? Plusieurs cas : même signature. Pas de conflit. les signatures différent par les paramètres. Pas de conflit : surcharge de méthodes les signatures ne diffèrent que par leur type de retour. Conflit! Il n est pas possible qu une classe implémente ces deux interfaces en même temps. 8