Académique Documents
Professionnel Documents
Culture Documents
Chapitre 1
Premiers pas
Dveloppement d'application
Transformation progressive d'une suite de modles :
du 1er modle, description des besoins du client au dernier, programme compltement test
Etapes :
analyse, conception, implmentation, tests
Analyse : spcification des fonctionnalits du systme Conception : architecture en terme de composants Tests : unitaires et d'intgration
2
tests d'intgration (niveau systme) L'volution du systme est contrle travers le processus conception/codage/test.
7
Crise du logiciel
complexit croissante cot qualit
En 1976, une tude met en lumire le cot prohibitif du logiciel d la complexit croissante : 75 $ par instruction dveloppe 4000$ par instruction modifie (aprs livraison)
8
29% payes mais non termines 19% abandonnes ou rcrites 3% utilises aprs modifications
10
initiales
11
10% la maintenance adaptative : nouvel environnement, nouveaux utilisateurs ; 17% la maintenance corrective : correction des bogues ; 16% la maintenance perfective : amliorer les performances sans changer les spcifications ; 6% l'assistance aux utilisateurs ; 6% au contrle qualit ; 7% l'organisation et au suivi ; 4% divers.
12
Qualits attendues
Rutilisabilit Modularit Extensibilit
13
14
15
16
public class CreateObjectDemo { public static void main(String[] args) { Point origine_1 = new Point(23, 94); Rectangle rect_1 = new Rectangle(origine_1, 100, 200); Rectangle rect_2 = new Rectangle(50, 100); System.out.println("Largeur of rect_1: "+ rect_1.largeur); System.out.println("Hauteur of rect_1: "+ rect_1.hauteur); System.out.println("Surface of rect_1: "+ rect_1.surface()); rect_2.origine = origine_1; System.out.println("X Position of rect_2: "+ rect_2.origine.x); System.out.println("Y Position of rect_2: "+ rect_2.origine.y); rect_2.deplacer(40, 72); System.out.println("X Position of rect_2: "+ rect_2.origine.x); System.out.println("Y Position of rect_2: "+ rect_2.origine.y); } }
17
Choix de Java
Multithreading Web et Applettes Programmation vnementielle Programmation rseau type client-serveur
18
Caractristiques de Java
C'est un langage simple qui hrite des constructions de C et C++ C'est un langage orient objet qui permet la conception et la ralisation d'applications complexes avec une architecture modulaire. C'est un langage robuste muni d'un mcanisme de gestion des exceptions qui permet de dceler et de traiter des erreurs pendant l'excution du programme. Java est indpendant de la plate forme d'excution, donc indpendant de la machine et de son systme d'exploitation. Java est un langage distribu. Un programme peut tre dploy sur plusieurs machines d'un rseau d'ordinateurs et excut sur celui-ci. C'est un langage sr. Il possde des caractristiques qui permettent une protection contre du code non fiable (virus). Il impose des contraintes aux applications Web ds que le tlchargement dans un navigateur est effectu.
19
Java API
Application Program Interface (API) est un ensemble de classes et interfaces prdfinies 3 ditions d'API :
J2SE pour le dveloppement d'applications cot client ou d'applettes J2EE pour le dveloppement d'applications cot serveur J2ME dveloppements pour mobiles
20
Outils de dveloppement
Ces outils fournissent un environnement de dveloppement intgr dans une interface graphique (Integrated Development Environment ) Principaux IDE :
JBuilder (Borland) NetBeans Open Source (Sun) Sun One (version commerciale de NetBeans) Eclipse Open Source (IBM)
21
Environnement Java
J2SE (Java 2 Standard Edition) disponible sur java.sun.com (actuellement J2SE 6) comprend un JDK (Java Development Toolkit), ensemble de programmes (javac, java, javadoc, jar, appletviewer, ...) invocables partir d'une ligne de commande Rassemble :
Environnement dexcution Langage Application Programming Interfaces Bibliothques
22
Compilation
Un compilateur traduit un programme source en langage machine Inconvnient : le rsultat dpend de l'ordinateur vis L'ide de java est de placer un intermdiaire dans la phase de compilation Au lieu de compiler dans un langage machine spcifique un ordinateur particulier, le compilateur Java transforme le programme source en un programme dans le langage machine de la machine virtuelle Java (JVM) Ce langage est un langage de bas niveau appel bytecode. Il est indpendant de tout ordinateur
23
Interprtation
Avec un compilateur normal, le programme est excut directement par l'ordinateur. Le processeur lit les instructions et les excute. En Java, le programme compil n'est pas directement comprhensible par un ordinateur. Un programme, appel interprteur, traduit au vol (pendant l'excution mme du programme) le bytecode en instructions pour l'ordinateur.
24
Compilation vs interprtation
Chaque interprtation produit sa traduction. Le programme produit par l'interprteur n'est pas conserv. Le programme produit par le compilateur est conserv L'interprtation est moins efficace (en temps) que la compilation Un programme Java compil peut tre interprt sur tout ordinateur (la JVM est partout prsente) Pour excuter un programme crit dans un autre langage, il faut le recompiler
25
Edition
Hello.java
Compilation
javac
Hello.class (sur disque) bytecode en mmoire centrale bytecode valide contraintes de scurit respectes interprtation et excution Du code
Chargeur de classe
classloader, appletviewer
Vrification
bytecode verifier
Interprtation
26
java
Un premier programme
Un programme Java est constitu de classes, au moins une appele classe principale. Une des classes doit contenir une mthode main charge de recevoir les arguments de la commande de lancement du programme. Le traditionnel premier programme est enregistr dans un fichier Hello.java contenant le code source suivant : public class Hello{ public static void main( String[] args ){ System.out.println( "Hello!"+args[0]+args[1]+2007 ); } }
27
Production de programme
javac Hello.java java Hello nouvelle anne
rsultat affich
args[0]
args[1]
Hello!nouvelleanne2007
28
Sous bluej
dition du programme
excution du programme
rsultat
29
Autre version
import javax.swing.JOptionPane; public class Hello{ public static void main( String[] args ){ JOptionPane.showMessageDialog(null, "Hello!"+args[0]+args[1]+2007 ); } }
stop()
destroy()
31
Applet : Hello.java
import java.awt.*; import javax.swing.*; public class Hello extends JApplet{ String msg=null; public void init(){ msg=JoptionPane.showInputDialog("Votre message"); } public void paint(Graphics g){ super.paint(g); g.drawString(msg+2009,25,25 ); } public void start(){} public void stop(){} public void destroy(){} }
32
Applet : Hello.html
<html> <head> applet Hello world</head> <body> <applet code = "Hello.class" width = 200 height = 300> </applet> </body> </html>
33
Applet : Hello.html
C: > appletviewer Hello.html
34
Scanner in = new Scanner( System.in ); String s = in.next(); ou bien int i = in.nextInt(); ou encore boolean b = in.nextBoolean(); double d = in.nextDouble();
35
Exemple
System.out.printf("numro=%d,solde=%f",numero,solde);
numro=6457,solde=457.980000
cran
36
37
%10.2e
%5c
38
39