Support POO Java

Embed Size (px)

Citation preview

POO Java : Par MR YOUSSFI

Programmation Oriente Objet JavaM.Youssfi

1

Diffrents types de langage de programmationOrdinateur CPU

Langage Machine Langage Assembleur Langages structurs: - Pascal, C Langages Orients Objet - C++, Java .

Homme

Langage humains

1

POO Java : Par MR YOUSSFI

Quest ce que java?Langage de programmation orient objet (Classe, Objet, Hritage, Encapsulation et Polymorphisme) Avec java on peut crer des application multiplateformes. Les applications java sont portables. Cest--dire, on peut crer une application java dans une plateforme donne et on peut lexcuter sur nimporte quelle autre plateforme. Le principe de java est : Write Once Run Every Where Open source: On peut rcuprer le code source de java. Ce qui permet aux dveloppeurs, en cas de besoin, de dvelopper ou modifier des fonctionnalits de java.

3

Quest ce que java?Java est utilis pour crer :Des applications Desktop Des applets java (applications java destines sexcuter dans une page web) Des applications pour les smart phones Des applications embarques dans des cartes puces Des application JEE (Java Entreprise Edition)

Pour crer une application java, il faut installer un kit de dveloppement javaJSDK : Java Standard Developpement Kit, pour dvelopper les application DeskTop JME : Java Mobile Edition, pour dvelopper les applications pour les tlphones potables JEE : Java Entreprise Edition, pour dvelopper les applications qui vont sexcuter dans un serveur dapplication JEE (Web Sphere Web Logic, JBoss). JCA : Java Card Editon, pour dvelopper les applications qui vont sxcuter dans des cartes puces.

4

2

POO Java : Par MR YOUSSFI

Diffrents modes de compilationJava est un langage compil et interprt Compilation en mode natif Compilation Byte Code Compilation en mode JIT(Just In Time)

NatifCode source Compilation Langage Machine Edition de lien Programme.Exe

Byte CodeCode source Compilation Byte Code Interprtation par La JVM en mode byte code (Traduit en code machine et excute instruction par Instruction )

JITCode source Compilation Byte Code Interprtation par La JVM en mode JIT (Traduit tout le programme Byte Code en programme machine puis lexcute )5

Installation de javaLe Kit de dveloppement java JDK peut tre tlcharg gratuitement partir du site de Sun Microsystem son diteur principal (www.java.sun.com). Le JDK contient 3 trois pacquages :

J2Sdk1.6.exe : Kit de dveloppement proprement dit Jre1.6.exe : Machine virtuelle java jdk15-doc.zip : Documentation java Excuter jdk-6u13-windows-i586-p.exe . Le JDK sera installdans le rpertoire c:\program files\java et installe galement jre1.6 dans le mme dossier.

6

3

POO Java : Par MR YOUSSFI

Ce que contient le JDK

7

Kit de dveloppement javaLes programmes ncessaire au dveloppement java sont placs dans le rpertoire c:\jdk1.5\bin savoir:javac.exe : Compilateur java. java.exe : Interprteur du bytecode java. appletviewer.exe : Pour tester les applets java. Jdb.exe : Dbogueur java. Javap.exe : dsassembleur du bytecode. Javadoc.exe : Gnrer la documentation de vos programmes java. Javah.exe : Permet de lier des programmes Java avec des mthodes natives, crites dans un autre langage et dpendant du systme. jar.exe : Permet de compresser les classes Java ainsi que tous les fichiers ncessaires l'excution d'un programme (graphiques, sons, etc.). Il permet en particulier d'optimiser le chargement des applets sur Internet. jarsigner.exe : Un utilitaire permettant de signer les fichiers archives produits par jar.exe.8

4

POO Java : Par MR YOUSSFI

Configuration de l environnementLa configuration de l'environnement comporte deux aspects : - Dfinir la variable denvironnement path qui indique le chemin d'accs aux programmes excutables : Cette variable path devrait contenir le chemin du JDK utilis:-

path= C:\Program Files\Java\jdk1.6.0_13\bin; ..

-

Quand elle excute une application java, la JVM consulte la variable denvironnement classpath qui contient le chemin daccs aux classes java utilises par cette application.-

classpath= .; c:\monProjet\lib; c:\programmation

9

Configurer la variable denvironnement path sous windows

10

5

POO Java : Par MR YOUSSFI

Outils de dveloppement javaUn Editeur de texte ASCII: on peut utiliser un simple diteur comme notepad de windows mais il est prfrable d utiliser un diteur conu pour la programmation java exemples: Ultraedit, JCreator, . Eclipse est lenvironnement de dveloppement java le plus prfr pour les dveloppeur java. Il est gratuit et cest un environnement ouvert. Autres IDE java :JDevlopper de Oracle. JBuilder de Borland.

11

Premier programme javaRemarques: Le nom du fichier java doit tre le mme que celui de la classe qui contient la fonction principale main. Pour compiler le programme source, il faut faire appel au programme javac.exe qui se trouve dans le dossier c:\jdk1.2\bin. Pour rendre accessible ce programme depuis n importe quel rpertoire, il faut ajouter la commande : path c:\jdk1.2\bin dans le fichier autoexec.bat. Aprs compilation du programme PremierProgramme.java, il y a gnration du fichier PremierProgramme.class qui reprsente le ByteCode de programme. Pour excuter ce programme en byte code, il faut faire appel au programme java.exe qui reprsente l interprter du bytecode.

12

6

POO Java : Par MR YOUSSFI

Premier programme javapublic class PremierProgramme { public static void main(String[] args) { System.out.println("First Test"); } }Lancer un diteur de texte ASCII et Ecrire le code source de ce programme. Enregistrer ce fichier dans un nouveau rpertoire c:\exojava sous le nom PremierProgramme.java Compiler ce programme sur ligne de commande Dos :

c:\exojava>javac PremierProgramme.javaCorriger les Erreurs de compilation Excuter le programme sur ligne de commande

c:\exojava>java PremierProgramme

13

Premire Application graphiqueimport javax.swing.*; import java.awt.FlowLayout; public class FirstGraphicApp { public static void main(String[] args) { // Crer une nouvelle fentre JFrame jf=new JFrame("Titre"); //Crer les composants graphiques JLabel l=new JLabel("Nom:"); JTextField t=new JTextField(12); JButton b=new JButton("OK"); //Dfinir une technique de mise en page jf.setLayout(new FlowLayout()); //Ajouter les composants la fentre jf.add(l);jf.add(t);jf.add(b); //Dfinir les dimensions de la fentre jf.setBounds(10, 10, 400, 400); //Afficher la fentre jf.setVisible(true); } }14

7

POO Java : Par MR YOUSSFI

Premire Appletimport java.applet.Applet; import java.awt.*; public class FirstApplet extends Applet{ public void init(){ add(new Label("Nom:")); add(new TextField(12)); add(new List()); add(new Button("OK")); } public void paint(Graphics g) { g.drawRect(2, 2, 400, 300); } }

Rdiger le programme source. Enregistrer le fichier sous le nom FirstApplet.java Compiler le programme source et corriger les erreurs. Crer un page HTML qui affiche l applet sur un navigateur web: Java Application

Donner Extr1:67 Donner Extr2:13 Longueur dusegment[13,67] est :54 Donner X:7 7 N'appartient pas au segment[13,67]

56

28

POO Java : Par MR YOUSSFI

Exercice 2P(x,y)

Une cercle est dfini par :Un point qui reprsente son centre : centre(x,y) et un rayon.R C(x,y)

On peut crer un cercle de deux manires :Soit en prcisant son centre et un point du cercle. Soit en prcisant son centre et son rayon

Les oprations que lon souhaite excuter sur un cercle sont :getPerimetre() : retourne le primtre du cercle getSurface() : retourne la surface du cercle. appartient(Point p) : retourne si le point p appartient ou non lintrieur du cercle. toString() : retourne une chane de caractres de type CERCLE(x,y,R)1. 2.

Etablir le diagramme de classes Crer les classe Point dfinie par:Les attributs x et y de type int Un constructeur qui initialise les valeurs de x et y. Une mthode toString().

3. 4.

Crer la classe Cercle Crer une application qui permet de :a. b. c. d.

Crer un cercle dfini par le centre c(100,100) et un point p(200,200) Crer un cercle dfini par le centre c(130,100) et de rayon r=40 Afficher le primtre et le rayon des deux cercles. Afficher si le point p(120,100) appartient lintersection des deux cercles ou non.57

Hritage et accessibilit

M.Youssfi

29

POO Java : Par MR YOUSSFI

HritageDans la programmation oriente objet, lhritage offre un moyen trs efficace qui permet la rutilisation du code. En effet une classe peut hriter dune autre classe des attributs et des mthodes. Lhritage, quand il peut tre exploit, fait gagner beaucoup de temps en terme de dveloppement et en terme de maintenance des applications. La rutilisation du code fut un argument dterminant pour venter les mthodes orientes objets.59

Exemple de problmeSupposons que nous souhaitions crer une application qui permet de manipuler diffrents types de comptes bancaires: les compte simple, les comptes pargnes et les comptes payants. Tous les types de comptes sont caractriser par:Un code et un solde Lors de la cration dun compte, son code qui est dfini automatiquement en fonction du nombre de comptes crs; Un compte peut subir les oprations de versement et de retrait. Pour ces deux oprations, il faut connatre le montant de lopration. Pour consulter un compte on peut faire appel sa mthode toString()

Un compte simple est un compte qui possde un dcouvert. Ce qui signifie que ce compte peut tre dbiteur jusqu la valeur du dcouvert. Un compte Epargne est un compte bancaire qui possde en plus un champ tauxIntert et une mthode calculIntrt() qui permet de mettre jour le solde en tenant compte des interts. Un ComptePayant est un compte bancaire pour lequel chaque opration de retrait et de versement est payante et vaut 5 % du montant de lopration.

60

30

POO Java : Par MR YOUSSFI

Diagramme de classesCompte- code : int # solde : float - nbComptes : int + Compte ( ) + verser (float mt) : void + retirer (float mt) : void + toString() : String

CompteSimple- decouvert : float + CompteSimple (float dec) + retirer (float mt) : void + toString() : String

CompteEpargne- taux : float + CompteEparge (float taux) + catculInterets () : void + toString() : String

ComptePayant+ ComptePayant ( ) + verser (float mt) : void + retirer (float mt) : void + toString() : String

61

Implmentation java de la classe Comptepublic class Compte { private int code; protected float solde; private static int nbComptes; public Compte( ){ ++nbComptes; code=nbComptes; this.solde=0; } public void verser(float mt){ solde+=mt; } public void retirer(float mt){ if(mt jar cf archive.jar a

76

38

POO Java : Par MR YOUSSFI

Ce qui peut tre fait(Quoi)Nous avons maintenant fait le tour de la question O ? Pour qu'une classe puisse tre utilise (directement ou par l'intermdiaire d'un de ses membres), il faut non seulement tre capable de la trouver, mais aussi qu'elle soit adapte l'usage que l'on veut en faire. Une classe peut servir plusieurs choses :Crer des objets, en tant instancie. Crer de nouvelles classes, en tant tendue. On peut utiliser directement ses membres statiques (sans qu'elle soit instancie.) On peut utiliser les membres de ses instances.

Les diffrents modificateurs qui permettent dapporter des restrictions lutilisation dune classe sont:abstract, final, static, synchronized et native

77

Classe abstraiteUne classe abstraite est une classe qui ne peut pas tre instancie. La classe Compte de notre modle peut tre dclare abstract pour indiquer au compilateur que cette classe ne peut pas tre instanci. Une classe abstraite est gnralement cre pour en faire driver de nouvelle classe par hritage. public abstract class Compte { private int code; protected float solde; private static int nbComptes; // Constructeurs // Mthodes }78

39

POO Java : Par MR YOUSSFI

Les mthodes abstraitesUne mthode abstraite peut tre dclare lintrieur dune classe abstraite. Une mthode abstraite est une mthode qui na pas de dfinition. Une mthode abstraite est une mthode qui doit tre redfinie dans las classes drives. Exemple :On peut ajouter la classe Compte une mthode abstraite nomme afficher() pour indiquer que tous les comptes doivent redfinir cette mthode.79

Les mthodes abstraitespublic abstract class Compte { // Membres // Mthode abstraite

public abstract void afficher();}

public class CompteSimple extends Compte // Membres

{

public void afficher(){ System.out.println("Solde="+solde+" Dcouvert="+decouvert); }}80

40

POO Java : Par MR YOUSSFI

InterfacesUne interface est une sorte de classe abstraite qui ne contient que des mthodes abstraites. Dans java une classe hrite dune seule classe et peut hriter en mme temps de plusieurs interface. On dit quune classe implmente une ou plusieurs interface. Une interface peut hriter de plusieurs interfaces. Exemple dinterface: public interface Solvable { public void solver(); public double getSole(); } Pour indiquer que la classe CompteSimple implmente cette insterface on peut crire: public class CompteSimple extends Compte implements Solvable { private float decouvert; public void afficher() { System.out.println("Solde="+solde+" Dcouvert="+decouvert); } public double getSole() { return solde; } public void solver() { this.solde=0; 81 }}

Classe de type finalUne classe de type final est une classes qui ne peut pas tre drive. Autrement dit, on ne peut pas hriter dune classe final. La classe CompteSimple peut tre dclare final en crivant:public final class CompteSimple extends Compte { private float decouvert; public void afficher() { System.out.println("Solde="+solde+" Dcouvert="+decouvert); } }

82

41

POO Java : Par MR YOUSSFI

Variables et mthodes finalUne variable final est une variable dont la valeur ne peut pas changer. Autrement dit, cest une constante:Exemple : final double PI=3.14;

Une mthode final est une mthode qui ne peut pas tre redfinie dans les classes drives.Exemple : La mthode verser de la classe suivante ne peut pas tre redfinie dans les classes drives car elle est dclare finalpublic class Compte { private int code; protected float solde; private static int nbComptes; public final void verser(float mt){ solde+=mt; } public void retirer(float mt){ if(mt