Vous êtes sur la page 1sur 64

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

INFO-F-304 - Interaction Homme-Machine Introduction Java


Bernard Fortz et Pluquet Frdric
Universit Libre de Bruxelles Dpartement dinformatique

2007-2008

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Prsentation de Java Les bases du langage Programmation oriente objet Eclipse Interfaces graphiques en Java Rfrences

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Java est la fois un langage de programmation informatique orient objet et un environnement dexcution informatique portable cre par James Gosling et Patrick Naughton employs de Sun Microsystems avec le soutien de Bill Joy (cofondateur de Sun Microsystems en 1982), prsent ofciellement le 23 mai 1995 au SunWorld. (Wikipedia)

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Caractristiques principales

A la fois un langage de programmation et un environnement dexcution. Portable sur plusieurs systmes dexploitation (plateforme dxcution). Reprend en grande partie la syntaxe du langage C++. Epur des concepts les plus subtils du C++ : hritage multiple remplac par limplmentation des interfaces. Approche oriente objet : en Java, tout est objet lexception des types primitifs.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Philosophie

Lors de la cration du langage Java, il avait t dcid que ce langage devait rpondre 5 objectifs : 1 utiliser une mthodologie oriente objet
2

permettre un mme programme dtre excut sur plusieurs systmes dexploitation diffrents, pouvoir utiliser de manire native les rseaux informatiques, pouvoir excuter du code distant de manire sre, tre facile utiliser et possder les points forts des langages de programmation orients objet comme le C++.

3 4 5

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Indpendance vis--vis de la plateforme

Les programmes crits en Java fonctionnent de manire parfaitement similaire sur diffrentes architectures matrielles. On peut effectuer le dveloppement sur une architecture donne et faire tourner lapplication sur toutes les autres.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Bytecode Java Langage machine spcique la plate-forme Java. Cr par les compilateurs Java partir du code source Java. Machine virtuelle Java (JVM) Programme crit spciquement pour la machine cible qui interprte et excute le bytecode Java. Bibliothques standard pour accder certains lments de la machine hte (le graphisme, le multithreading, la programmation rseau, . . .) exactement de la mme manire sur toutes les architectures.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Gestion de la mmoire

C / C++ Pointeurs. Mmoire alloue par le programmeur pour crer un objet et dsalloue lors de la destruction de celui-ci. Oubli de dsallouer manque de mmoire. Zone dsalloue deux fois instabilit, plantage.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Java Pas de pointeurs. Passage darguments : par valeur pour les types primitifs, par rfrence pour les objets (et tableaux). Ramasse-miettes (Garbage collector). Objets crs et placs sur un tas. Rfrence lobjet grce son adresse sur le tas. Plus aucune rfrence dtruit automatiquement. Les manques de mmoire peuvent survenir quand un programmeur garde une rfrence vers un objet dont il na plus besoin. Mais dans lensemble, le ramasse-miettes rend la cration et la destruction dobjets en Java plus simple, potentiellement plus sre et souvent plus rapide quen C++. Le ramasse-miettes est transparent pour le dveloppeur et est appel rgulirement et automatiquement (au besoin, forcer son lancement : System.gc().
Bernard Fortz et Pluquet Frdric Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Plateformes et versions
Finalits SDK (Software Development Kit) fournit un compilateur et une machine virtuelle. JRE (Java Runtime Environment) fournit uniquement une machine virtuelle. Idal pour le dploiement de vos applications. Versions de Java 2 Sun : JDK 6 (mais 4 et 5 les plus rpandues) ; 3 versions de la machine virtuelle (Micro Edition, Standard Edition et Enterprise Edition) Linux : Blackdown JDK 1.4 Autres solutions opensource :
GCJ (The GNU Compiler for Java), intgr GCC. Kaffe, Japhar, . . .

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Environnements de dveloppement
Nombreuses solutions : Eclipe, NetBeans, JBuilder, Editeurs (emacs, vi, . . .), . . .

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Prsentation de Java Les bases du langage Programmation oriente objet Eclipse Interfaces graphiques en Java Rfrences

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Un premier programme
HelloWorld.java public class H e l l o W o r l d { public s t a t i c void main ( S t r i n g [ ] args ) { System . o u t . p r i n t l n ( " H e l l o w o r l d ! " ) ; } }

Compilation et excution (linux) $ javac HelloWorld . java $ j a v a cp . H e l l o W o r l d Hello world !

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

HelloWorld.java public class H e l l o W o r l d { public s t a t i c void main ( S t r i n g [ ] args ) { System . o u t . p r i n t l n ( " H e l l o w o r l d ! " ) ; } }

public class HelloWorld Nom de la classe. public static void main La fonction principale quivalente la fonction main du C/C++. String[] args Permet de rcuprer des arguments transmis au programme au moment de son lancement. System.out.println("Hello world !") Mthode dafchage dans la console.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Mise en oeuvre

Pas de sparation entre dnition et codage des oprations


Un seul chier NomDeClasse.java Pas de chier dentte comme C/C++ Nom de la classe = Nom du chier java

Compilation :
javac NomDeClasse.java ou javac *.java quand plusieurs classes Gnration dun chier bytecode NomDeClasse.class Pas ddition de liens (seulement une vrication)

Excution :
java NomDeClasse Choisir la classe principale excuter

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Types primitifs de Java

Ne sont pas des objets. Chacun des types simples possde un alter-ego objet disposant de mthodes de conversion. Types primitifs Entiers : byte (1 octet) - short (2 octets) - int (4 octets) long (8 octets) Flottants (norme IEEE-754) : float (4 octets) - double (8 octets) Boolens : boolean (true ou false) Caractres : char (codage Unicode sur 16 bits)

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Initialisation et constantes
Initialisation :
Une variable peut recevoir une valeur initiale au moment de sa dclaration : i n t n = 15; boolean b = t r u e ;

Constantes :
Ce sont des variables dont la valeur ne peut tre affecte quune fois Elles ne peuvent plus tre modies Elles sont dnies avec le mot cl nal final int n = 5; final int t ; ... t = 8; n = 10; / / e r r e u r : n est declare f i n a l

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Les collections dobjets de taille xe : Tableaux

Les tableaux sont considrs comme des objets. Les lments dun tableau peuvent tre :
des variables dun type primitif (int, boolean, double, char, . . .) des rfrences sur des objets.

Cration dun tableau :


1 2 3

Dclaration = dterminer le type du tableau Dimensionnement = dterminer la taille du tableau Initialisation = initialiser chaque case du tableau

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Dclaration i n t [ ] monTableau ; / / ou i n t monTableau [ ] ; Attention : une dclaration de tableau ne doit pas prciser de dimension i n t monTableau [ 5 ] ; / / Erreur

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Dimensionnement Le nombre dlments du tableau sera dtermin quand lobjet tableau sera effectivement cr en utilisant le mot cl new. La taille du tableau ne pourra plus tre modie par la suite. Longueur dun tableau : monTableau.length i n t [ ] monTableau ; / / D e c l a r a t i o n monTableau = new i n t [ 3 ] ; / / Dimensionnement / / ou i n t [ ] monTableau = new i n t [ 3 ] ; Initialise le contenu du tableau 0 pour les types simples

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Initialisation Comme en C/C++ les indices commencent zro. Accs un lment : monTab [ v a r I n t ] ; / / v a r I n t >= 0 e t < l e n g t h

Java vrie automatiquement lindice lors de laccs (lve une exception) Version tout-en-un : i n t [ ] monTab = { 1 , 2 , 3 } ; est quivalent i n t [ ] monTab ; monTab = new i n t [ 3 ] ; monTab [ 0 ] = 1 ; monTab [ 1 ] = 2 ; monTab [ 2 ] = 3 ;

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Structures de contrle

Structure tant que while ( < e x p r e s s i o n booleenne >) { instruction (s) }

Structure faire... tant que do { instruction (s) } while ( < e x p r e s s i o n booleenne > ) ;

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Structure pour f o r ( < i n i t > ; < c o n d i t i o n > ; <increment >) { instruction (s) } // S t r u c t u r e pour t o u t ( j a v a 1 . 5 ) f o r ( < Objet > : < C o l l e c t i o n >) { instruction (s) }

/ / Returns t h e sum o f t h e elements o f a i n t sum ( i n t [ ] a ) { int r e s u l t = 0; for ( int i : a ) r e s u l t += i ; return r e s u l t ; }

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Structure si i f ( < e x p r e s s i o n booleenne >) { instruction (s) }

Structure si... sinon i f ( < e x p r e s s i o n booleenne >) { instruction (s) } else { instruction (s) }

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Structure si... ou si... ou si... i f ( < e x p r e s s i o n booleenne >) { instruction (s) } else i f ( < e x p r e s s i o n booleenne >) { instruction (s) } else i f ( < e x p r e s s i o n booleenne >) { instruction (s) } else { instruction (s) }

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Structure atteindre... cas x... cas y... switch ( < expression >) { case < constante > : instruction (s) break ; case < constante > : instruction (s) break ; [...] default : instruction (s) break ; }

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Autres contrles La commande break sort immdiatement la boucle en cours (for, while, do), et permet de sortir dune clause contenue dans un switch. Une expression continue termine litration en cours et continue la prochaine. Oprateur ternaire ? : : Condition pouvant tre utilise en une ligne de code
<expression booleenne> ? <valeur si vrai> : <valeur si faux>

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Traitement des exceptions


Une exception est un signal qui indique que quelque chose dexceptionnel (comme une erreur) sest produit. Elle interrompt le ot dexcution normal du programme try { instruction (s) } catch ( < t y p e d e x c e p t i o n > < v a r i a b l e >) { instruction (s) } [...] finally { instruction (s) } Le bloc de code "nally" sera excut quel que soit le rsultat lorsque le programme sortira du bloc "try-catch".

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Exemple de capture des exceptions FileOutputStream fos = null ; try { f o s = new F i l e O u t p u t S t r e a m ( . . . ) ; f o s . w r i t e ( a ) ; / / a i n i t i a l i s e precedemment } catch ( IOException e ) { e . printStackTrace ( ) ; } finally { / / Fermer l e f l u x , / / qu i l y a i t une e x c e p t i o n lancee ou pas i f ( fos != null ) fos . close ( ) ; }

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Prsentation de Java Les bases du langage Programmation oriente objet Eclipse Interfaces graphiques en Java Rfrences

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Classes en C++ vs classes en Java

En C++, quand une variable est dclare avec un type qui est une classe, de la mmoire est alloue pour un objet de cette classe, et un constructeur est appel pour initialiser une instance de la classe. En Java, vous dclarez une rfrence vers un objet de la classe. Aucune mmoire nest alloue et le constructeur nest pas appel tant que new nest pas utilis. Tout objet est manipul et identi par sa rfrence.
Utilisation de pointeur cach (plus accessible que le C++). On parle indiffremment dinstance, de rfrence ou dobjet. De ce fait affectation = aliasing pour les objets et tableaux (mais pas pour les type primitifs).

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Affectation (types primitifs) i n t a = 2 , b = 3 ; / / a == 2 , b == 3 a = b; / / a == 3 , b == 3 b = 2; / / a == 3 , b == 2

Affectation (objets et tableaux) i n t [ ] A = new i n t [ 3 ] , B = new i n t [ 2 ] ; A[ 0 ] = 5; B = A; B[ 0 ] = 2;


B A B A B A 2 5

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Denition des classes

Une classe est constitue dattributs (donnes) et de mthodes (fonctions). Une classe est un modle de dnition pour des objets
Ayant mme structure (mme ensemble dattributs) Ayant mme comportement (mmes mthodes) Ayant une smantique commune

Les objets sont des reprsentations dynamiques (instanciation) du modle dni pour eux au travers de la classe.
Une classe permet dinstancier (crer) plusieurs objets. Chaque objet est instance dune classe et une seule.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Niveaux daccs
Chaque attribut et chaque mthode a un niveau daccs : private : accessible seulement dans cette classe ; (package) : accessible seulement dans ce package ; protected : accessible seulement dans ce package et dans toutes les sous-classes de cette classe ; public : accessible partout o cette classe est accessible. Chaque classe a galement niveau daccs : (package) : les objets de cette classe peuvent tre uniquement dclars et manipuls par le code de ce package ; public : les objets de cette classe peuvent tre dclars et manipuls par le code de tout package. Remarque : pas de groupement comme en C++, le niveau daccs doit tre spci pour chaque attribut et mthode.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Exemple de classe simple (Liste)


class L i s t { // attributs private Object [ ] items ; private int numItems ; / / methodes / / constructeur public L i s t ( ) { i t e m s = new O b j e c t [ 1 0 ] ; numItems = 0 ; } / / addToEnd : a j o u t e un nouvel i t e m a l a f i n de l a l i s t e public void addToEnd ( O b j e c t ob ) { ... } }

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Cycle de vie dun objet

Cration

Usage dun constructeur. Lobjet est cr en mmoire et les attributs de lobjet sont initialiss. Usage des mthodes et des attributs (non recommand). Les attributs de lobjet peuvent tre modis. Les attributs (ou leurs drivs) peuvent tre consults.

Utilisation

Destruction et libration de la mmoire Usage (ventuel) dun pseudo-destructeur. Lobjet nest plus rfrenc, la place mmoire quil occupait est rcupre.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Constructeurs
La cration dun objet est ralise par new Constructeur(paramtres). Les constructeurs portent le mme nom que la classe. Il existe un constructeur par dfaut qui ne possdent pas de paramtre (si aucun autre constructeur avec paramtre nexiste) et qui neffectue aucune initialisation particulire Les constructeurs nont pas de type de retour (mme pas void). Constructeurs multiples :
Possibilit dinitialiser un objet de plusieurs manires diffrentes On parle alors de surchage (overloaded)

Appel explicite dun constructeur de la classe lintrieur dun autre constructeur :


Doit se faire comme premire instruction du constructeur. Utilise le mot-cl this(paramtres effectifs).

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Destruction et ramasse-miettes

La destruction des objets se fait de manire implicite. Le ramasse-miettes ou Garbage Collector se met en route si plus aucune variable ne rfrence lobjet ; Automatiquement
si le bloc dans lequel il tait dni se termine ; si lobjet a t affect null. sur demande explicite du programmeur par Manuellement linstruction System.gc().

Un pseudo-destructeur protected void finalize() peut tre dni explicitement par le programmeur Il est appel juste avant la libration de la mmoire par la machine virtuelle, mais on ne sait pas quand. Conclusion : pas trs sr ! ! !

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Variables de classe
Il peut tre utile de dnir pour une classe des attributs indpendamment des instances. Utilisation des variables de classe comparables aux variables globales. Usage des variables de classe :
Variables dont il nexiste quun seul exemplaire associ sa classs de dnition. Variables existent indpendamment du nombre dinstances de la classe qui ont t cres. Variables utilisables mme si aucune instance de la classe nexiste.

Dnition avec le mot-cl static. Utilisation : identicateur OU nom de classe. Constantes : ajouter le mot-cl final

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Mthodes de classe

Utilises pour accder la valeur dune variable de classe prive ou protge. ! ! ! Ne peuvent utiliser QUE des attributs dclars statiques. Les mthodes qui seraient des fonctions libres (membres daucune classe) en C++ devraient tre statiques en Java. La mtode prfre pour accder une variable ou une mthode de classe est dutiliser le nom de la classe (pour rendre explicite le caractre statique).

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Exemple amlior (Liste)


class L i s t { private Object [ ] items ; p r i v a t e i n t numItems ; p r i v a t e s t a t i c i n t numLists = 0 ; p r i v a t e s t a t i c f i n a l i n t INITIAL_SIZE = 1 0 ; public L i s t ( i n t maxSize ) { i t e m s = new O b j e c t [ maxSize ] ; numItems = 0 ; numLists ++; } public L i s t ( ) { t h i s ( INITIAL_SIZE ) ; } public s t a t i c i n t NumberOfLists ( ) { r e t u r n numLists ; } public void addToEnd ( O b j e c t ob ) { ... } }
Bernard Fortz et Pluquet Frdric Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Hritage

Technique offerte par les langages de programmation pour construire une classe partir dune (ou plusieurs) autre classe en partageant ses attributs et oprations Spcialisation, enrichissement : une nouvelle classe rutilise les attributs et les oprations d une classe en y ajoutant des attributs et/ou des oprations particulires la nouvelle classe. Rednition : une nouvelle classe rednit les attributs et oprations dune classe de manire en changer le sens et/ou le comportement pour le cas particulier dni par la nouvelle classe Rutilisation : vite de rcrire du code existant et parfois on ne possde pas les sources de la classe hriter

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Hritage en java Une classe ne peut hriter que dune seule autre classe Pas dhritage multiple Utilisation du mot-cl extends aprs le nom de la classe
public class V o i t u r e { public void demarre ( ) { ... } ... } public class V e h i c u l e P r i o r i t a i r e extends V o i t u r e { p r i v a t e boolean gyrophare ; ... public void allumeGyrophare ( ) { gyrophare = t r u e ; } ... }
Bernard Fortz et Pluquet Frdric Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Surcharge et rednition

Une sous-classe peut ajouter des nouveaux attributs et/ou mthodes ceux quelle hrite (surcharge). Une sous-classe peut rednir (rednition) les mthodes dont elle hrite et fournir des implmentations spciques pour celles-ci. Dans le cas de la surcharge la sous-classe ajoute des mthodes tandis que la rednition spcialise des mthodes existantes. La rednition dune mthode crase le code de la mthode hrite Possibilit de rutiliser le code de la mthode hrit par le mot-cl super

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

public class V o i t u r e { p r i v a t e boolean estDemarree ; ... public void demarre ( ) { estDemarree = t r u e ; } } public class V o i t u r e E l e c t r i q u e extends V o i t u r e { p r i v a t e boolean d i s j o n c t e u r ; ... public void demarre ( ) { d i s j o n c t e u r = true ; super . demarre ( ) ; } ... }

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Rutilisation des constructeurs

Possibilit comme les mthodes de rutiliser le code des constructeurs de la super-classe. Appel explicite dun constructeur de la classe mre lintrieur dun constructeur de la classe lle : super ( parametres du c o n s t r u c t e u r ) ; Lappel au constructeur de la super-classe doit se faire absolument en premire instruction. Appel implicite dun constructeur de la classe mre est effectu quand il nexiste pas dappel explicite. Java insre implicitement lappel super().

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

! ! ! Constructeur par dfaut dsactiv si dnition de constructeurs avec paramtres.


public class V o i t u r e { ... public V o i t u r e ( i n t p ) { t h i s ( p , new G a l e r i e ( ) ) ; } public V o i t u r e ( i n t p , G a l e r i e g ) { puissance = p ; moteur = new Moteur ( puissance ) ; galerie = g; ... } ... } public class V o i t u r e P r i o r i t a i r e extends V o i t u r e { p r i v a t e boolean gyrophare ; public V o i t u r e P r i o r i t a i r e ( i n t p , G a l e r i e g ) { / / appel i m p l i c i t e a super ( ) t h i s . gyrophare = f a l s e ; } }
Bernard Fortz et Pluquet Frdric Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Classes abstraites

On ne connat pas toujours le comportement par dfaut dune opration commune plusieurs sous-classes. Dclaration dune mthode abstraire (abstract)
Si une seule des mthodes dune classe est abstraite, alors la classe devient aussi abstraite On ne peut pas instancier une classe abstraite car au moins une de ses mthodes na pas dimplmentation Toutes les classes lles hritant de la classe mre abstraite doivent implmenter toutes ses mthodes abstraites ou sinon elles sont aussi abstraites

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Interfaces

Une interface est un modle pour une classe. Quand toutes les mthodes dune classe sont abstraites et il ny a aucun attribut on aboutit la notion dinterface. Elle dnit la signature des mthodes qui doivent tre implmentes dans les classes qui respectent ce modle. Toute classe qui implmente linterface doit implmenter toutes les mthodes dnies par linterface. Tout objet instance dune classe qui implmente linterface peut tre dclar comme tant du type de cette interface Les interfaces pourront se driver.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Mise en oeuvre dune interface


La dnition dune interface se prsente comme celle dune classe. On y utilise simplement le mot cl interface la place de class. public i n t e r f a c e NomInterface { ... } Lorsquon dnit une classe, on peut prciser quelle implmente une ou plusieurs interfaces donne(s) en utilisant une fois le mot cl implements. public class NomClasse implements I n t e r f a c e 1 , I n t e r f a c e 2 , ... } ... {

Si une classe hrite dune autre classe elle peut galement implmenter une ou plusieurs interfaces. public class NomClasse extends SuperClasse implements I n t e r f a c e 1 , ... }
Bernard Fortz et Pluquet Frdric Introduction Java

... {

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Classes abstraites versus interfaces


Les classes Elles sont compltement implmentes. Une autre classe peut en hriter. Les classes abstraites Elles sont partiellement implmentes. Une autre classe peut en hriter mais doit donner une implmentation aux mthodes abstraites. Elles ne peuvent pas tre instancies mais peuvent avoir un constructeur. Les interfaces Elles ne sont pas implmentes. Toute classe qui implmente une ou plusieurs interfaces doit implmenter toutes leurs mthodes (abstraites).
Bernard Fortz et Pluquet Frdric Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Les packages
Package Un package est un groupe de classes associes une fonctionnalit. Exemples : java.lang : rassemble les classes de base Java (Object, String, System, . . .) java.util : rassemble les classes utilitaires (Collections, Date, . . .) java.io : entres - sorties. Utilisation :
Accs une classe dans un package : package.classe Pour viter lutilisation du nom du package : import package.* ; ou import package.classe ; Dnition dun package : package nom ; en premire ligne du chier.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Quelques classes utiles : String


Cration : S t r i n g S1 = " h e l l o " , S2 = new S t r i n g ( " bye " ) , S3 = new S t r i n g ( S1 ) ; Concatnation : S t r i n g S1 = " h e l l o " + " bye " , S2 = S1 + " ! " , S3 = S1 + 1 0 ; Autres mthodes : int length ( ) ; char c h a r A t ( i n t k ) ; boolean equals ( O b j e c t S ) ; toLowerCase ( ) ; toUpperCase ( ) ;
Bernard Fortz et Pluquet Frdric Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Quelques classes utiles : Object

La classe Object est la classe de plus haut niveau dans la hirarchie dhritage. Toute classe autre que Object possde une super-classe. Toute classe hrite directement ou indirectement de la classe Object. Une classe qui ne dnit pas de clause extends hrite de la classe Object. Quelques mthodes par dfaut de la classe Object :
Class getClass() String toString() boolean equals(Object) int hashCode()

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Les ux (java.io)
Java fournit quatre hirarchies de classes pour grer les ux de donnes : Pour les ux binaires : La classe InputStream et ses sous-classes pour lire des octets (FileInputStream). La classe OuputStream et ses sous-classes pour crire des octets (FileOuputStream). La classe Reader et ses Pour les ux de caractres : sous-classes pour lire des caractres (BufferedReader, FileReader). La classe Writer et ses sous-classes (BufferedWriter, FileWriter). Java dispose dune classe File qui offre des fonctionnalits de gestion de chiers.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Les collections

Iterator Les itrateurs permettent de parcourir les lments dune collection sans connaissance prcise du type de la collection : Polymorphisme. Quelques collections utiles : LinkedList ArrayList HashSet

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Prsentation de Java Les bases du langage Programmation oriente objet Eclipse Interfaces graphiques en Java Rfrences

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Eclipse IDE est environnement de dveloppement intgr extensible, universel et polyvalent, permettant de crer des projets de dveloppement mettant en oeuvre nimporte quel langage de programmation. crit en Java ; bas sur la bibliothque graphique SWT dIBM ; architecture totalement dveloppe autour de la notion de plug-in.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Prsentation de Java Les bases du langage Programmation oriente objet Eclipse Interfaces graphiques en Java Rfrences

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

AWT (Abstract Window Toolkit) : Premire API de dveloppement graphique pour java. Sert actuellement de fondement Swing ; Swing : fait partie du package Java Foundation Classes (JFC), inclus dans J2SE. Offre la possibilit de crer des interfaces graphiques identiques quel que soit le systme dexploitation sous-jacent. SWT (Standard Widget Toolkit) : Initie par IBM, utilise dans Eclipse mais nest pas un standard java reconnu. Plus rapide que Swing mais le look-and-feel dpend du toolkit sous-jacent et est donc dpendant de la plateforme (Win32 pour Windows, GTK ou Motif pour Linux).

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Un exemple en Swing
import j a v a x . swing . JFrame ; import j a v a x . swing . JLabel ; public f i n a l class H e l l o W o r l d extends JFrame { private HelloWorld ( ) { s e t D e f a u l t C l o s e O p e r a t i o n ( JFrame . DISPOSE_ON_CLOSE ) ; getContentPane ( ) . add ( ( new JLabel ( " H e l l o , World ! " ) ) ) ; pack ( ) ; setLocationRelativeTo ( null ) ; } public s t a t i c void main ( S t r i n g [ ] args ) { new H e l l o W o r l d ( ) . s e t V i s i b l e ( t r u e ) ; } }

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Editeurs dinterfaces graphiques

Il existe de nombreux IDE Java qui intgre des diteurs dinterfaces graphiques. Outils visuels de dessin dinterface avec gnration de code automatique. Le programmeur peut se concentrer sur la gestion des vnements. Dans Eclipse : plugin Visual Editor.

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Prsentation de Java Les bases du langage Programmation oriente objet Eclipse Interfaces graphiques en Java Rfrences

Bernard Fortz et Pluquet Frdric

Introduction Java

Prsentation de Java

Les bases du langage

Programmation oriente objet

Eclipse

Interfaces graphiques en Java

Rfrences

Programmation Oriente Objet : application au langage Java, Mickal Baron http ://mbaron.developpez.com/javase/java Learning a New Programming Language : Java for C++ Programmers http ://www.cs.wisc.edu/ cs368-1/JavaTutorial/index.html http ://fr.wikipedia.org/wiki/Java_(langage)

Bernard Fortz et Pluquet Frdric

Introduction Java