Documente Academic
Documente Profesional
Documente Cultură
Philippe Boulnois
philippe.boulnois@free.fr
Introduction
Java est un langage rcent (1995). Il a t cr par lentreprise Sun (http://java.sun.com/).
Java est constitu de 4 parties distinctes :
I) Un langage
Cest un langage objet.
Sa syntaxe est proche du C++, mais en plus simple.
Java possde les 4 caractristiques dun langage objet :
1) Lencapsulation :
Les donnes et les procdures relatives aux donnes sont runies dans une mme
entit : lobjet.
Une partie des donnes et des procdures reste inaccessible et invisible de lextrieur de
lobjet.
Une autre partie de ces donnes et de ces procdures (linterface) permet la
communication avec les autres objets.
2) Lhritage :
Toute classe est sous classe dune autre.
Une sous-classe peut utiliser les champs et les mthodes accessibles de sa super classe.
3) Le polymorphisme :
Un message identique envoy des objets de type diffrent donnera des rsultats
diffrents...
Java : Introduction
java.awt
java.awt.event
java.awt.font
java.awt.image
java.io
java.lang
java.net
java.rmi
java.security
Scurit
java.sql
java.text
java.util
java.util.jar
java.util.zip
Gestion de la compression
javax.swing
javax.swing.event
javax.swing.table
javax.swing.text
Gestion des textes, sous classes pour interprts directement le format rtf ou le
format html
javax.swing.tree
3) Avec les compilateurs JIT (Just In Time) les performances de Java samliorent et
approchent celles des langages compils natifs.
4) Enfin il est possible dinsrer des parties de code en C dans du Java aux passages pour
lesquels la vitesse est un facteur critique.
Rapidit dapprentissage et de dveloppement
Lallocation mmoire est prise en charge par le systme lui-mme, ce qui limine un grand
nombre de bogues dont on peut avoir l'exprience avec le langage C.
La suppression des pointeurs, lAPI trs fournie et bien structure, acclrent
lapprentissage de Java et permettent de produire un code plus robuste dans un temps de
dveloppement plus court. Sans oublier que ce code est portable tel quel sur tous les
systmes disposant de la MV (Machine Virtuelle).
Gratuit
Sun fournit gratuitement le SDK (System Development Kit) et lon trouve de nombreux
systmes de dveloppement gratuits sur Internet.
Vous pouvez donc dvelopper en Java sans dbourser un centime !
Diffrences entre Java et C ou C++
Pas de pr processeur.
Pas de compilation conditionnelle (inutile, car la portabilit est assure par ma MV).
Pas de Constantes, elles sont remplaces par des variables dclares static et final.
Pas de variable globale.
Systme des paquetages.
Les types primitifs sont indpendants de limplmentation, notamment ils ont une taille
dfinie quelque soit la plate forme.
Pas de pointeur ; allocation et rcupration mmoire automatique et transparente.
Pas de goto, mais un mcanisme sophistiqu de gestion dexception permettant la sortie du
contexte o se produit une erreur.
Dclaration de variable possible partout dans le code.
Possibilit de faire rfrence des mthodes avant quelles ne soient dfinies, de faon
transparente.
Pas de structure ou dunion, tout cela est remplac par le mcanisme de classe.
Pas de types numrs, pas de champs de bits, pas de pointeur de mthodes, pas de liste
darguments.
Questions :
1- Quelles sont les 4 caractristiques dun langage objet ?
2- Le langage Java est-il compil ou interprt ?
1 Le
Pascal UCSD a, dans les annes 80-90, utilis cette mme technique.
Un premier exemple
Nous voulons raliser un programme permettant de manipuler des objets de la gomtrie plane (nous nous
limiterons aux cercles). Nous voulons que ces objets soient capables de rpondre aux messages suivants :
- modifie la valeur de ton rayon x
- quelle est ta surface ?
Dfinition de la classe Cercle
Cette classe est enregistre dans un fichier Cercle.java.
class Cercle
{
private double rayon ;
public void setRayon (double r)
{
rayon = r ;
}
public double aire()
{
return rayon * rayon * PI ;
}
}
Une classe dtermine un nouveau type de donne, ici nous avons cr le type Cercle.
Cette classe est constitue dun champ : rayon de deux mthodes : setRayon() et aire().
Nous retrouvons ici ce que nous disions plus haut propos de lencapsulation : le type Cercle que vous venons de
crer contient la fois les donnes caractristiques de lobjet (rduites ici rayon) et les comportements que lon
peut attendre de lobjet Cercle : savoir les mthodes setRayon() et aire().
Cration dun objet de type Cercle
Une fois la classe construite nous pouvons produire (instancier) autant dobjets que ncessaire. Si on regarde la
classe comme un moule, linstanciation est analogue faire couler de la pte dans ce moule pour obtenir un objet.
Pour instancier une classe en Java on utilise linstruction new avec la syntaxe suivante :
Cercle c1 ; // dclaration dune variable c1 de type Cercle ;
c1 = new Cercle(); //cration dun objet de type Cercle
// laide de lexpression new Cercle() et stockage
//de la rfrence1 cet objet dans c
O placer ce code ?
Assurment dans le corps dune mthode : Java tant un langage objet le code ne peut tre crit que dans le corps
dune mthode.
Le point dentre dun programme Java
Nous allons construire une autre classe partir de laquelle nous pourrons appeler linstanciation dobjets de type
Cercle
Cette classe aura aussi une particularit de ne pas vraiment correspondre un objet du problme que nous
essayons de traiter (lide de dpart est de raliser un programme pouvant manipuler des objets gomtriques).
En fait cette classe est ncessaire pour fournir un point dentre du programme.
Le point dentre est reprsent par une mthode ayant la signature suivante :
public static void main(String[] args)
Cette mthode est une mthode classe (modificateur static), elle ne retourne rien (modificateur void), elle peut
recevoir des arguments de la ligne de commande (tableau de chanes de caractres args)
public class MonApp.java
{
public static void main(String[] args)
{
Cercle c1 = new Cercle();// cration dun objet rfrenc par c1
double s1 = var1.aire();// envoi dun message aire() lobjet c1
Cercle c2 = new Cercle();
c2.setRayon(6.0); //envoi dun message pour modifier le rayon de c2
double s2 = c2.aire();// on demande c2 de calculer sa surface
}
}
Questions :
1- En prenant exemple sur la classe Cercle, construisez une classe Rectangle.
2- Faites une liste (trs simplifie) des donnes et des comportements relatifs lutilisation dun compte bancaire
3- Faites une liste (trs simplifie) des donnes et des comportements relatifs lutilisation dun magntoscope
4- Faites une liste (trs simplifie) des donnes et des comportements relatifs lutilisation dune guitare
Remarque :
Pour les exercices 2,3,4 vos rponses sont sans doute diffrentes, peut tre plus compltes et plus pertinentes,
ce qui importe ici est de distinguer entre les donnes et les comportements relatifs un objet, donnes et
comportements qui deviendront champs et mthodes de la classe abstraction lobjet rel