Cours INF 4253 Programmation orientée objet

Renforcer la programmation par événements et la réutilisation de composantes
de l'API de java,. - Utilisation de classes abstraites. - Introduire des éléments de ...

Part of the document


Cours INF 1573 Programmation II
Laboratoire 8 Hiver 2008 Prof. Ilham Benyahia
Chargées de laboratoire
Diagne Fatou et Lahcen Boumedjout
Objectifs du laboratoire
- Renforcer la programmation par événements et la réutilisation de
composantes de l'API de java,
- Utilisation de classes abstraites
- Introduire des éléments de la qualité de programmation : la
documentation du code - javadoc Les applets :
- point d'entrée
- le tag HTML Applet
- la transmission de paramètres
- le cycle de vie et le paradigme d'événements
Le package AWT (Abstract Windowing Toolkit) :
- La classe abstraite Graphics, les objets et les contextes
graphiques
- La classe Color
- La classe Font
- Autres packages graphiques
Autres notions : restrictions de sécurité Les applets Exemple de code java : import java.applet.Applet;
import java.awt.Graphics;
public class Bienvenue extends Applet {
public void paint(Graphics g) {
g.drawString("Bienvenue dans le monde des applets!", 50, 25);
}
} Imbrication dans le code html : < APPLET
[CODEBASE = codebaseURL]
CODE = appletFile
[ALT = alternateText]
[NAME = appletInstanceName]
WIDTH = pixels
HEIGHT = pixels
[ALIGN = alignment]
[VSPACE = pixels]
[HSPACE = pixels]
>
[< PARAM NAME = appletParameter1 VALUE = value >]
[< PARAM NAME = appletParameter2 VALUE = value >]
. . .
[alternateHTML]
Référence :
http://java.sun.com/docs/books/tutorial/applet/appletsonly/appletTag.html
Exercice 1.a Employez le code java ci-haut pour créer l'applet Bienvenue,
puis l'exécuter dans le appletviewer et dans un navigateur. Cycle de vie d'un applet Le cycle de vie d'un applet se découpe en diverses étapes ponctuées par des
événements :
public class Simple extends Applet {
. . .
public void init() { . . . } // evt : (re)chargement de l'applet
public void start() { . . . } // evt : chargement de l'applet
public void stop() { . . . } // evts : changement de page,
// sortie du navigateur
public void destroy() { . . . } // ménage final
. . .
}
Exercice 1.b Modifiez la classe Simple ci-haut pour créer une applet qui
génère une trace du cycle de vie d'une applet à l'aide de la méthode
println(). Hiérarchie de classe d'une applet
java.lang.Object
[pic]java.awt.Component
[pic]java.awt.Container
[pic]java.awt.Panel
[pic]java.applet.Applet Référence : http://java.sun.com/j2se/1.4.2/docs/api/java/applet/Applet.html Exercice 1.c Trouvez la méthode paint() dans la hiérarchie ci-haut. A
quelle classe appartient cette méthode ? Dans quelles circonstances est-
elle invoquée ?
Paramètres d'une applet
- public String getParameter(String name)
. . .
Référence :
http://java.sun.com/docs/books/tutorial/applet/appletsonly/getParam.html
Exercice 1.d Créez un paramètre dans le code html de l'exercise 1.a et
modifier à nouveau la classe Simple pour obtenir la valeur de ce paramètre.
Le package AWT (Abstract Windowing Tollkit)
Hiérarchie partielle de AWT
java.lang.Object
[pic]java.awt.Color
[pic]java.awt.Font
[pic]java.awt.FontMetrics
[pic]java.awt.Component
[pic]java.awt.Graphics
[pic]java.awt.Polygon
[pic]java.awt.Toolkit La classe abstraite Graphics - Déclare un ensemble de méthodes : drawstring(), drawLine(), etc...
- Méthodes implémentées par la JVM spécifiquement pour chaque plate-forme
- L'invocation des méthodes se fait par l'intermédiaire d'un contexte
graphique auquel nous avons accès grâce à l'objet graphique passé en
référence à paint() public void paint(Graphics g) { Système de coordonnées de points, d'origine 0,0 située dans le coin
supérieur gauche http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Component.html#paint(java.a
wt.Graphics) La classe Color Encapsule un ensemble de couleurs appartenant à l'espace de couleurs défini
par une valeur RGB (Red Green Blue) (entre 0 et 2563 - 1, 16.7 millions de
couleurs ) public class HelloWorld extends Applet {
public void paint(Graphics g) {
g.setColor(Color.red);
g.setColor(new Color(255,0,0)); // constructeur1
g.setColor(new Color(256*256*255)); // constructeur2
}
}
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Color.html
La classe Font
Une police est définie par son nom (ex. Helvetica), son style (ex. bold) et
sa grandeur (size) ( ex. 14 points). Si une police n'est pas définie sur un
système, celle-ci sera remplacée par la police par défaut.
public class HelloWorld extends Applet {
public void paint(Graphics g) {
g.setFont(new Font("Helvetica", Font.BOLD,14);
}
}
La classe abstraite Toolkit et la classe abstraite GraphicsEnvironment Ces superclasses abstraites chapeautent les implémentations du AWT. Elles
stipulent diverses méthodes pour accéder aux composants concrets d'une
implémentation spécifique. Exercice 2.a 1) Compilez et exécutez la classe ListeDesPolices. 2)
Remplacez la méthode obsolète (deprecated) getFontList() de la classe
Toolkit par la méthode plus récente getAvailableFontFamilyNames() de la
classe GraphicsEnvironment. Affichez les noms de polices avec drawString()
en employant comme dimension d'espacement entre chaque ligne la dimension
de la police courante. import java.applet.Applet.*;
import java.awt.*; public class ListeDesPolices extends Applet { // liste des polices
disponibles
String [] Polices; public void init() {
Polices = GetToolkit().getFontList();
} public void paint(Graphics g) {
for (int i = 0; i < Polices.length; i++) {
System.out.println(i + ": " + Polices[i]);
}
}
} Exercice 2.b Créez une applet pour dessiner diverses formes de diverses
couleurs ainsi que leur nom respectif en employant différentes polices. Quelques références à leur sujet :
http://java.sun.com/products/jfc/tsc/articles/painting/index.html
http://java.sun.com/products/jfc/tsc/articles/painting/index.html#backg
round
http://java.sun.com/docs/books/tutorial/uiswing/index.html Exercice 2.c Pour cet exercice, vous devrez consulter la documentation en
ligne de la classe Graphics. Indiquez si les énoncés sont vrai ou faux. Si
faux, indiquez pourquoi. - Les deux premiers arguments de drawOval(x, y, 50, 100) spécifient les
coordonnées du centre de l'ovale. - La méthode fillPolygon() dessine un polygone solide avec la couleur
courante. - La méthode drawArc() permet des angles négatifs. - La méthode drawRoundRect peut être utilisée pour dessiner un cercle. - La méthode getSize() retourne la grandeur en centimètres de la police
courante. - Le pixel de coordonnées (0,0) est situé exactement au centre du moniteur.
3. Notes sur la sécurité Les applets posent un risque de sécurité pour la machine où elles sont
téléchargées. Pour cette raison le navigateur imposent des limitations sur
ce qu'une applet peut faire : - L'applet s'exécute dans un espace restreint (sandbox)
- L'applet ne peut exécuter une application locale
- L'applet ne peut ni lire ni écrire de fichiers sur la machine locale
- L'applet ne peut établir un connexion réseau qu'avec l'hôte d'où il a été
téléchargé Ces limitations sont mises en ?uvre par la classe SecurityManager qui est
configurée par le navigateur ou l'appletviewer.