Vous êtes sur la page 1sur 24

CCI - Initiation ` a Java

CCI - Initiation ` a Java


E.Coquery emmanuel.coquery@liris.cnrs.fr

CCI - Initiation ` a Java Pr esentation du langage

Outline

Pr esentation du langage

Types de donn ees primitifs

Objets

CCI - Initiation ` a Java Pr esentation du langage

Un langage orient e objet

La notion dobjets et de classes centrale en Java


Un chier Java correspond normalement ` a une classe. Une application Java est consitu ee dun ensemble de classes. Lancer une application Java consiste ` a appeler une m ethode particuli` ere de la classe correspondant au programme ` a ex ecuter.

CCI - Initiation ` a Java Pr esentation du langage

Une syntaxe proche du C


D eclarations de variables similaire au C : type nom ; ou type nom = val ; Structures de contr ole du C :
if (condition) { ...} else { ... } switch (expr) { case cas1 : ... ; break ; case cas2 : ... ; break ; ... default : ... } while (condition) do { ... } for (init ;test ;modif) { ... }

Commentaires C/C++ :
// commentaire jusqu` a la fin de la ligne /* commentaire pouvant tenir sur plusieurs lignes */

CCI - Initiation ` a Java Pr esentation du langage

Des application portables

Write Once, Run Everywhere Compilation dune application Java :


Un chier .class par classe de lapplication. Contient du bytecode ind ependant de la plateforme.

Ex ecution dune application :


Java Virtual Machine (JVM) Ex ecution sur toute plateforme poss edant une JVM. Performance : recompilation ` a la vol ee du bytecode vers du code natif (Hotspot).

CCI - Initiation ` a Java Pr esentation du langage

Gestion de la m emoire automatis ee

Pas de pointeurs explicites en Java La notion de r ef erence reste pr esente Les JVM int` egrent un ramasse-miettes (Garbage Collector) Lib` ere automatiquement la m emoire occup ee par les structures de donn ees qui ne sont plus utilis ees.

CCI - Initiation ` a Java Pr esentation du langage

Un langage r epandu

JVM sur Windows, Mac OS, Linux et dautres Biblioth` eque standard Java tr` es fournie :
Structures de donn ees Entr ees sorties R eseau Bases de donn ees, XML Interfaces graphiques

Nombreuses autres biblioth` eques disponibles IDEs evolu ees : Netbeans, Eclipse, JBuilder, ... Pages Web dynamiques et serveurs dapplications en Java

CCI - Initiation ` a Java Types de donn ees primitifs

Outline

Pr esentation du langage

Types de donn ees primitifs

Objets

CCI - Initiation ` a Java Types de donn ees primitifs

Types de base
En plus des objets, Java inclus des types de base : Types num eriques (sign es) :
byte (8 bits), short (16 bits), int float (32 bits), double (64 bits)
(32 bits)

, long

(64 bits)

Caract` eres : type char


cod e sur 16 bits en utilisant le standard unicode. Peuvent etre manipul es comme des entiers non sign es

Bool eens : type boolean (true et false)


Les bool eens ne sont pas des entiers en Java

Limpl ementation des types est standard ne d epend pas de la JVM (ni de la plateforme) meilleure portabilit e

CCI - Initiation ` a Java Types de donn ees primitifs

Tableaux
D eclaration :
int [] monTableau ;

type [] nom ;

Cr eation :
monTableau = new int [10] ;

new type [taille]

Cr eation avec valeurs : {val1 ,val2 ,. . . ,valn } ou new type [] {val1 ,val2 ,. . . ,valn }
int [] autreTableau = {3,5,1,3,8} ;

Acc` es :
int unNombre = monTableau[3] + 1 ; monTableau[7] = unNombre * 5 ;

nom[index]

Une erreur survient si on acc` ede hors des cases du tableau

CCI - Initiation ` a Java Types de donn ees primitifs

Tableaux (2)

Taille :

nom.length

int tailleDuTableau = monTableau.length ;

Tableaux multidimensionnels (tableaux de tableaux) :


int [][] tableauDeuxDimensions ; tableauDeuxDimensions = new int [10][20] ; tableauDeuxDimensions = new int [10] [] ; tableauDeuxDimensions[0] = new int[5] ;

CCI - Initiation ` a Java Types de donn ees primitifs

Tableaux et r ef erences

Une variable tableau est une r ef erence vers le tableau :


int [] tab1 = {0,1,2,3} ; int [] tab2 = new int [tab1.length] ; for (int i = 0 ; i < tab1.length ; i++) { tab2[i] = tab1[i] ; } tab1[2] = 9 ; tab2[2] vaut toujours 2. int [] tab1 = {0,1,2,3} ; int [] tab2 = tab1 ; tab1[2] = 9 ;

tab2[2] vaut 9.

CCI - Initiation ` a Java Objets

Outline

Pr esentation du langage

Types de donn ees primitifs

Objets

CCI - Initiation ` a Java Objets

Quest quune classe Java ?


Pas un objet, plut ot un type : on peut le voir comme un struct C am elior e. Mais surtout un sch ema pour cr eer des objets. Dans une classe, on d eni :
Des variables dinstance (ou champs, ou attributs) type nom ; eventuellement avec une valeur par d efaut : type nom = val ; ex : double x = 3.0 ; Des m ethodes : fonctions qui sont li ees ` a un objet. Des m ethodes particuli` eres servant ` a linitialisation des objets cr e es : les constructeurs

CCI - Initiation ` a Java Objets

Exemple de classe
public class Point { double x; // attribut double y; // attribut public Point() { // constructeur x = 0.0; // initialisation de x y = 0.0; // initialisation de y } public Point(double abscisse, double ordonnee) { //constructeur x = abscisse; y = ordonnee; } public double getDistanceOrigine() { // methode double sommeCarres = x*x+y*y; return Math.sqrt(sommeCarres); } public void afficheDistance() { // methode System.out.println(getDistanceOrigine()); } }

CCI - Initiation ` a Java Objets

Quest quune instance dune classe ?

Cest un objet cr e e en utilisant cette classe comme sch ema de construction.

Tout objet est une instance dune certaine classe.

Cet objet poss` ede tous les champs et m ethodes d enis dans cette classe.

CCI - Initiation ` a Java Objets

Utilisation des objets


Variable contenant un objet : Classe nom ; Point monPoint ; Comme pour les tableaux, la variable contient une r ef erence vers lobjet. Cr eation dun objet : new Classe(arg1 ,. . . ,argn ) monPoint = new Point(2.0,3.0) ; Appel au constructeur Point ` a deux arguments Acc` es ` a un champ : monPoint.x = monPoint.y * 2 ; objet.champ

Utilisation dune m ethode : objet.methode(arg1 ,. . . ,argn ) monPoint.afficheDistance() ;

CCI - Initiation ` a Java Objets

Le mot clef static


Normalement les m ethodes et les champs sont li es ` a des objets. Lutilisation de static permet dattacher un champ ou une m ethode ` a une classe. Lutilisation est similaire au champ et m ethodes non statiques : on remplace simplement lobjet par la classe : Classe.champ System.out Classe.methode(arg1 ,. . . ,argn ) Math.sqrt(4.0) ; Attention : une m ethode statique ne peut pas utiliser directement une m ethode non statique.

CCI - Initiation ` a Java Objets

Exemple

public class Bonjour { int nombreFois; public Bonjour(int nbFois) { nombreFois = nbFois; } public void ditBonjour() { for(int i = 0; i < nombreFois; i++) { System.out.println("Bonjour"); } } public static void main(String [] args) { Bonjour bj = new Bonjour(3); bj.ditBonjour(); } }

CCI - Initiation ` a Java Objets

Les packages

Groupes de classes Bas ee sur une organisation de r epertoires


un paquet correspond ` a un sous-r epertoire dans le nom du paquet, les / sont remplac es par des . java.lang, java.io, javax.swing, javax.xml, org.xml.sax, etc

Lorsquune classe est dans paquet, son nom complet est de la forme : nom.du.paquet.LaClasse ex : java.lang.Math

CCI - Initiation ` a Java Objets

Les packages (2)


Lorsquune classe est dans paquet, le chier dans lequel elle est d enie doit d ebuter par : package nom.du.paquet ; Il nest pas n ecessaire dutiliser le nom complet des classes qui sont dans le m eme paquet que la classe que lon est en train de d enir. Pour eviter de r ep eter le nom du paquet dune classe, on peut utiliser les d eclarations :
pour une classe : import nom.du.paquet.LaClasse ; pour toutes les classes du paquet dun coup : import nom.du.paquet.* ;

CCI - Initiation ` a Java Objets

Autres modicateurs de d eclaration


Il existe des modicateurs pour la visibilit e public : visible partout protected : visible dans le paquet courant et dans les classes qui h eritent de la classe courante quand on ne dit rien : visible dans le paquet courant private : visible uniquement dans la classe courante modicateur final : interdit les changements pour les variables et les champs (combin e avec static, on obtient des constantes) interdit la surcharge pour les m ethodes

CCI - Initiation ` a Java Objets

Une classe particuli` ere : String


Cha nes de caract` eres en Java Ce ne sont pas des tableaux de caract` eres Non modiables Valeurs entre " ". String coucou = "bonjour" ; Concat enation : op erateur + Nombreuses m ethodes :
char charAt(int) boolean equalsTo(Object) boolean startsWith(String) boolean endsWith(String) String substring(int,int)

et bien dautres ...

CCI - Initiation ` a Java Objets

Les StringBuffers

Cha nes de caract` eres modiables


y compris au niveau de leur taille

Utilis ees pour g en erer des cha nes de caract` eres Exemple : StringBuffer sb = new StringBuffer(); for (int i = 0; i < 10; i++) { sb.append("Bonjour\n"); } String dixFoisBonjour = sb.toString();