Vous êtes sur la page 1sur 54

Introduction Java

ENSEM 2014

Objectifs
Dcouvrir les concepts
classes, objet, instances
Encapsulation, heritage, polymorphisme

Dcouvrir le langage JAVA


Savoir la structure minimale dun programme
java

Plan
I.

Introduction la programmation Orient Objet

II. Prsentation du langage JAVA


III. Elments de base dun programme JAVA

I-Introduction la
programmation Orient
Objet

1 - L volution des diffrents types de langages


le langage machine
le langage assembleur
les langages procduraux
les langages objets
.
.
.

les langages orients agents

Les langages procduraux


Premiers langages procduraux : Fortran, Algol, Pascal, C

programme = structures de donnes + algorithmes


Caractristiques des langages procduraux :
bas sur le concept d'appel procdural
N'importe quelle procdure peut tre appele n'importe quelle tape de
l'excution du programme
La possibilit de rutiliser le mme code diffrents emplacements dans le
programme sans avoir le retaper ;
mais cause de la sparation des donnes et des traitements:
moindre rutilisabilit
pas de protection des donnes

Les langages objets


Regroupement des donnes et des traitements en une entit autonome: l objet
Protection des donnes (encapsulation)
Organisation hirarchiaque (hritage)
Facilit d criture et de mise au point
Rutilisabilit
Maintenabilit
Langages objets: C++, Delphi, Java

Pourquoi des objets?


Il faut mieux avoir une structure de donne qui permettra de grouper
les donnes et les comportement.
Cest la notion dObjet:
MaVoiture
Donnes
Couleur: rouge
Modele: TDI2
Vitesse: 210
Comportement
Dmarrer
Acclrer
Reculer
stopper

Classe vs objet
Dans la programmation oriente objet, les objets qui appartiennent au
mme modle, constituent ce quon appelle une classe.

La Classe

Instanciation

Les Objets

Classe vs objet
Classe = description dun modle
Objet = un exemplaire du modle
Une seule classe, plusieurs objets (instances)
La Classe

Instanciation

Les Objets

Objet
Un objet est une entit cohrente rassemblant des donnes et du code travaillant sur
ses donnes.
Un objet est caractris par :
Son tat : Comment lobjet ragit-il lorsque vous appliquez ces mthodes ? (son aspect
actuel)
Mavoiture.Vitesse== 90

Son comportement : que pouvez-vous faire avec cet objet, ou quelles mthodes pouvezvous lui appliquer ?
Demarrer
Accelerer
.

Son identit : Comment lobjet se distingue-t-il des autres qui peuvent avoir le mme
comportement et le mme tat ?
Ltat dun objet peut changer dans le temps, mais pas spontanment. Une
modification dans ltat dun objet doit tre la consquence dun comportement.
Mavoiture.Acceler(X) Mavoiture.Vitesse== 90+x

Classe
Elle est le composant de base. Une classe dcrit la structure interne
d'un objet : les donnes qu'il regroupe, les actions qu'il est capable
d'assurer sur ses donnes.
Une classe reprsente le modle de lobjet effectif.

Hritage
Hritage permet de reprendre des membres d'une classe (appele
superclasse ou classe mre) dans une autre classe (classe fille)
Une classe drive hrite des proprits dune classe de base
Economie du code
Amlioration de la fiabilit
Amlioration de la lisibilit

Forme
Couleur
Dessiner()
Effacer()
Dplacer()
Colorier()

Cercle
Rayon

Rectangle
Hauteur
largeur

Hritage

On dit que la classe Chat est une spcialisation de la classe Animal


La classe Animal est une gnralisation de la classe Chat
classe super / gnralisation
Animal

Relation d hritage
Chat

classe fille / spcialisation

15

Agrgation
Agrgation : Dfinit une relation hirarchique entre les entits, se
compose de et modlise la notion de possession

Voiture

porte

roue

moteur

Polymorphisme
Le polymorphisme permet la redfinition dun comportement : le
polymorphisme peut avoir pour le mme service , aussi appel
opration ou mthode un comportement diffrent selon les
situations.

Encapsulation des donnes


Lencapsulation est un mcanisme consistant rassembler les
donnes et les mthodes au sein d'une structure en cachant
l'implmentation de l'objet, c'est--dire en empchant l'accs aux
donnes par un autre moyen que les services proposs.
Les donnes sont protge lintrieur de chaque objet.
L'encapsulation permet de garantir l'intgrit des donnes contenues
dans l'objet.

Rcapitulation
Ci-dessous les points principales cits pour ce chapitre:
a.

Langage objet

b.

Objets et classes

c.

Hritage

d.

Agrgation

e.

Polymorphisme

f.

Encapsulation

(II) Prsentation du langage


JAVA

Quest ce que JAVA ?


Un langage de programmation orient objet
Langage extensible : Le programmeur peut dfinir de nouvelles
classes
Java est simple apprendre :
-

Tout est objet

Diffrents packages pour tous les besoins

Quest ce que JAVA ?


Java est un langage compil :
-

Un programme Java est compil

Langage avec dclarations, variables types

Dtection derreurs au moment de la compilation

Gestion efficace de la mmoire : garbage collector (ramasseur de


dchets) automatique

Pourquoi JAVA ?
Raliser le rve : crire une fois et excuter sur nimporte
quelle machine
Write once, run eveywhere

Langage multi-platforme : excuter une mme application


sur nimporte quel environnement (Windows, Unix, Linux,
Mac) sans que le programme soit recompil

Pourquoi JAVA ?
tant donn que chaque type dordinateur a son propre langage machine
spcifique, donc pour un langage haut niveau il faut autant dinterprteurs
et compilateurs quil y a de types dordinateur
Intel
Mac

Sun
etc.

Machine Virtuelle JAVA ( JVM )


Le code source crit en Java est compil en byte-code destin
tourner dans une JVM

La machine virtuelle java peut tre implmente sur divers


environnements
La JVM lit, vrifie et excute le byte-code
Tout programme java contient au moins une classe

Machine Virtuelle JAVA ( JVM )

Excution

Avant excution

Autres byte code

Fichier
de code
Java
MaClasse.java

Compilation
javac

Byte code

MaClasse.class

Langage universel

Machine virtuelle
Java (JVM)

java

Machine Virtuelle JAVA ( JVM )

systmes

MaClasse.java

Le compilateur Java gnre un


bytecode (format intermdiaire)
neutre
architecturalement,
conu pour faire transiter
efficacement le code vers des
hardware
diffrents
et/ou
plateformes diffrentes

Java Compiler

Diversit
de
dexploitation

Le
bytecode
ne
peut-tre
interprt que par le processeur
de la JVM

MaClasse.class
= bytecode
JVM

Mac

JVM

Windows

JVM

Unix

Machine Virtuelle JAVA ( JVM )


Avantages :
Portabilit
Des machines virtuelles Java existent pour de nombreuses platesformes dont : Solaris, Windows, MacOS

Dveloppement plus rapide


courte tape de compilation pour obtenir le byte-code,
pas d'dition de liens,
dbogage plus ais.
Inconvnients :
L'interprtation du code ralentit l'excution

Quelques atouts de java


Les principaux atouts de java :

a. gnre des applications portables,


b.

un langage simple et puissant,

c.

un langage qui introduit directement la notion de thread,

d.

une API trs riche,

e.

une gestion automatique de la mmoire.

Notion de garbage collector


Un garbage collector gre la dsallocation de la mmoire :
le programmeur alloue la mmoire dont il a besoin,
le programmeur ne dsalloue pas la mmoire :
un objet est considr comme librable par le garbage colector lorsqu'il
n'existe plus aucune rfrence dans la JVM pointant vers cet objet.

La mise en uvre d'un garbage collector possde plusieurs


avantages :
elle amliore la productivit du dveloppeur qui est dcharg de la libration

explicite de la mmoire
elle participe activement la bonne intgrit de la machine virtuelle : une
instruction ne peut jamais utiliser un objet qui n'existe plus en mmoire

Outil de dveloppement
Environnement de dveloppement fourni par Sun
JDK signifie Java Development Kit (Kit de dveloppement Java).
Il contient :
les classes de base de l'API java (plusieurs centaines),
la documentation au format HTML

le compilateur : javac
la JVM (machine virtuelle) : java
le visualiseur d'applets : appletviewer

le gnrateur de documentation : javadoc


etc.

Outil de dveloppement
environnement de dveloppement:
Eclipse (http://www.eclipse.org)
Borland JBuilder (http://www.borland.com/jbuilder)
IBM WebSphere Studio (http://www.ibm.com/software/awdtools)
Sun ONE Studio (http://wwws.sun.com/software/sundev)

Rcapitulation
Ci-dessous les points principales cits pour ce chapitre:
a.

Dfinition du langage java

b.

Pourquoi java

c.

Machine virtuelle java

d.

Outils de dveloppement

III) Elments de base dun


programme JAVA

Structure dune classe JAVA


Une classe contient des attributs (donnes) et des mthodes
(comportements)

Modificateur class Nom_de_la_classe


{
/*Dclaration des attributs*/
/*Dclaration des mthodes*/
}

Modificateur

Modificateur

Dfinition

abstract

Aucun objet ne peut instancier cette


classe. Seules les classes abstraites
peuvent dclarer les mthodes
abstraites

final

Les classes finales ne peuvent pas


tre hritable

private

La classe nest accessible qu partir


du fichier o elle est dfinit

public

La classe est accessibles par toutes


les autres classes. Elle est visible
partout

Une premire classe


public class Test
{
public static void main(string[] arg)
{
System.out.println(DMCAO\ENSEM-Ingenieur)

}
}
public: visible partout, peut tre utilise par dautres classes

static: mthode de classe


System.out.println: la mthode println crit sur cran la chaine de caractres pass en
paramtres de cette mthode.

Une premire classe


Public class Test
{
public static void main(string[] arg)
{
System.out.println(Bonjour tout le monde)

}
}
Cette classe doit se trouver dans le fichier Test.java

elle est compile par la commande javac Test.java


La compilation cre un fichier Test.class
Le fichier est excut par la commande java Test

Une deuxime classe

class Point {
Public double x;
Public double y;
Point(double ax,double ay) {
x = ax;
y = ay;
}
public String toString() {
return "("+x+","+y+")";
}
}

Cration dinstances (objets)


Pour utiliser une classe, elle doit
tre instancie.
Il y aura alors la cration dun
objet.
avant de crer un objet, il faut le
dclarer.

public class Test


{
public static void main(String[] arg)
{
Point p;
p=new Point(1,2);

System.out.println(p.toString());
Point q = new Point(0,0);
System.out.println(q.toString());
}

Syntaxe
NomClasse objet;
Objet=new NomClasse();

Constructers/Destructeurs

variables
Mthode
Constructeur

public class Point {

CLASSE

public double x;
public double y;
public String toString() {
return "("+x"+","+y+")";
}
Point(double ax,double ay) {
x = ax;
y = ay;

}
}

Constructeurs (1/5)
Rappel

: toute variable doit tre initialise

Question

: comment initialiser les variables


dune instance?

Rponse

: le (ou les) constructeurs!

public class Point {

CLASSE

public double x;
public double y;
Point(double ax,double ay) {
x = ax;
y = ay;
}
}

Point p = new Point(1,2);

INSTANCES

Constructeurs (2/5)

Plusieurs constructeurs sont possibles


public class Point {

CLASSE

// ...
Point(double ax,double ay) {

Point p = new Point(1,2);


`

INSTANCES

x = ax;
y = ay;
}
Point() {
x = 0;
y = 0;
}
}

Point q = new Point();

Constructeurs (3/5)

Constructeurs par dfaut


public class Point {

CLASSE

Point p = new Point();

INSTANCES

public double x;
public double y;

Point q = new Point(1,2);

refus la compilation

public class Point {

CLASSE

public double x;
public double y;
Point(double ax,double ay) {
x = ax;
y = ay;
}
}

Point p = new Point();

INSTANCES

Point q = new Point(1,2);

refus la compilation

Constructeurs (4/5)

Le mot cl this pour:

lever les ambiguits


rutiliser un constructeur
public class Point { CLASSE

public class Point { CLASSE

// ...

// ...

Point(double x,double y) {

Point(double x,double y) {

x = x;

ambiguit!
y = y;

this.x = x;
this.y = y;

Point() {

Point() {

x = 0;
redondance

this(0,0);

y = 0;

Constructeurs (5/5)
Constructeurs par copie

public class Point {

CLASSE

Point p = new Point(1,2);

INSTANCES

public double x;
public double y;
Point(double ax,double ay) {
x = ax;
y = ay;
}
Point(Point p) {

this(p.x,p.y);
}
}

Point q = new Point(p);

Destructeurs
Lors de linstanciation
la place ncessaire en mmoire est reserve
un compteur de rfrence est mis en place

Quand une instance nest plus rfrence


elle est dtruite (garbage collect)
la mthode finalize() est appelle

Pas de gestion de la mmoire comme en C!

Instances (1/3)

Constructeur par copie

Point p = new Point(1,2);

Point p = new Point(1,2);

INSTANCES

INSTANCES

Point q = p;

Point q = new Point(p);

q.x = 3;

q.x = 3;

q.y = 4;

q.y = 4;

System.out.println(p.toString());

System.out.println(p.toString());

affiche (3,4) !!!

affiche (1,2)

Instances (2/3)

Le problme de laccs
public class Point {
public double x,y;

CLASSE

public double r,th;

Point p = new Point(3,4);


p.x = 0;`

INSTANCES

Point(double ax,double ay) {


x = ax;

System.out.println(p.r);

y = ay;
r = Math.sqrtf(x*x+y*y);
th = y%x);

}
}

affiche 5: r na pas t remis jour


en fonction du nouveau x !!!

Instances (3/3)
Information sur une classe
toute classe a une mthode getClass()
getClass()

renvoie une instance de java.lang.Class

des Class sont comparables entre eux par ==


Class a une mthode getName() qui renvoie un String
Point p = new Point(1,2);

Point q = new Point(3,4);


String s = new String(salut);
System.out.println(p.getClass() == q.getClass());

// affiche true

System.out.println(p.getClass() == s.getClass());

// affiche false

System.out.println(p.getClass().getName());
System.out.println(s.getClass().getName());

// affiche Point
// affiche String

Contrle daccs (1/3)


Chaque variable/fonction/constructeur est:
public

: peut tre accd de partout

private

: peut tre accd de la classe

protected

: peut tre accd du package...

public class Point {

CLASSE

Point p = new Point(3,4);


INSTANCES

private double x,y;


private double r,th;
// ...
}

p.x = 0;`

refus la compilation

Contrle daccs (2/3)


Rgles de bon design
les variables sont private
on fournit des accesseurs

public class Point CLASSE


{
// ...
public double getX() { return x; }
public double getY() { return y; }
public void setX(double x) {

this.x = x;
r = Math.sqrtf(x*x+y*y);
th = Math.atan(y/x);
}
public void setY(double y) {
this.y = y;
r = Math.sqrtf(x*x+y*y);
th = y%x;
}
}

Contrle daccs (3/3)


Rgles de bon design

les fonctions intermdiaires sont private

public class Point CLASSE


{

public class Point CLASSE


{

// ...

// ...

public double getX() { return x; }

public double getX() { return x; }

public double getY() { return y; }

public double getY() { return y; }

public void setX(double x) {

public void setX(double x) {

this.x = x;

this.x = x; update();

r = Math.sqrtf(x*x+y*y);

th = Math.atan(y/x);

public void setY(double y) {

this.y = y; update();

public void setY(double y) {


this.y = y;

}
private void update() {

r = Math.sqrtf(x*x+y*y);

r = Math.sqrtf(x*x+y*y);

th = Math.atan(y/x);

th = Math.atan(y/x);

}
}

redondance

Rcapitulation
Ci-dessus les points principales cits pour ce chapitre:
a.

Structure de classe

b. Modificateurs
c. Cration dinstance
d. Constructeurs

e. Contrle daccs

Exercices
Dfinir lhritage et donner un exemple?
Quels sont les atouts du langage java?
Quel est le rle du garbage colector?
Modliser ces relations
-Un polygone est constitu de points. Un point possde une abscisse et une ordonne.
-Une voiture, avion et moto sont des vhicules
-Un Chat, un chien et un oiseau sont des animaux

crire une classe java Animal avec ces donnes:

Elle contient deux mthodes: manger et boire


Elle contient deux attributs: nom, type
Crer deux constructeurs avec et sans argument
Ajouter les mthodes daccs aux attributs

Vous aimerez peut-être aussi