Module I5 – Java Corrigé TP3 RT I – Création d`une classe IUT

publicité
Module I5 – Java
Corrigé TP3
RT
I – Création d'une classe
1.1 – Classe Point
Reprendre la classe point définie dans le TP précédent, en incluant dans ce fichier, toutes les méthodes qui
ont été précédemment décrites pour cette classe.
... main ...
Point P1,P2,P3;
P1=new Point(1,2);
P2=new Point(4,5);
P3=new Point();
P1.affiche();
P2.affiche();
P1.deplace(4,-6);
P1.rotation();
P1.normalise();
P3=P2.copiePoint();
P2.deplace(-2,+3);
P1.affiche();
P2.affiche();
...
P3.affiche();
P3.affiche();
1.2 – Evolution de la classe Point
class Point {
...
String Nom=new String("?");
static String Type=new String();
Point(String s, int a, int b) {
x=a; y=b; Nom=s;
}
affiche()
{
System.out.println(Type +"-"+ Nom + " x=" + x + " , y=" + y);
}
... main ...
Point P1=new Point("P1",11,12);
Point P2=new Point("P2",21,22);
P1.Type="Point";
P2.Type="Point";
P1.affiche();
P2.affiche();
Point P3=new Point(31,32);
P3.Type="Nouv Point";
P1.affiche();
P2.affiche();
P3.affiche();
=> La variable "Type" est déclarée en "static"', elle est donc commune à tous les objets issus de la
classe Point. Par conséquent, sa modification dans l'un des objets est implicitement effective pour tous les
objets.
IUT Elbeuf
1/4
S.H.
Module I5 – Java
Corrigé TP3
RT
II – Organisation du programme
2.1 - Séparation classe et main
public class ProgTest {
// Cette classe ne contient que main
public static void main(String [] arg) {
Point P1=new Point("P1",11,12);
...
}
}
class Point {
// Classe idem précédente sauf main
int x,y;
...
public static void main(String [] arg) {
System.out.println("Execution du main de la clsse Point");
}
}
–
–
–
–
Le fichier doit avoir le même nom que la classe publique, donc "ProgTest"
Une seule classe peut être déclarée en publique dans un fichier
Même si la classe ProgTest n'est pas déclarée publique, le fonctionnement reste identique
Si l'on inverse l'ordre des classe, on s'aperçoit que le main exécuté appartient à la classe déclarée en
premier
2.2 – Constructeurs
L'ajout de la ligne d'affichage (System.out.println...) dans les constructeurs, permet d'obtenir
à l'écran l'affichage d'un message chaque fois qu'un constructeur est appelé.
Dans le programme demandé ici, le résultat affiché sera le suivant :
Ligne de code
Message affiché
Ligne 1 =>
Contructeur "Point(String,int,int)" : création de l'objet P1
Ligne 2 =>
Contructeur "Point(Point)" : création de l'objet P2
Ligne 4 =>
Contructeur "Point()" : création de l'objet P3
Ligne 6 =>
Contructeur "Point()" : création de l'objet ?
A la ligne 6, le constructeur "Point()" est appelé pour la création d'un objet temporaire utilisé dans
la méthode "copiePoint".
Remarque : La ligne 5 ne génère aucun appel au constructeur (pas de réservation d'espace mémoire);
IUT Elbeuf
2/4
S.H.
Module I5 – Java
Corrigé TP3
RT
III – Héritage
3.1 – Création de la classe PointColor
=> En utilisant la notion d'héritage, nous pouvons directement réexploiter la totalité du code déjà défini pour
la classe Point. De ce fait, seules les modifications nécessitent une redéfinition.
// Héritage
class PointColor extends Point {
String Coul=new String();
PointColor()
{}
PointColor(String s, String c; int a, int b) {
x=a;
y=b;
Nom=s;
Coul=c;
}
PointColor(PointColor Px) {
x=Px.a;
y=Px.b;
Nom=sPx.Nom;
Coul=Px.Coul;
}
void affiche() {
Super.affiche();
// Méthode de la classe point
System.out.println("Couleur : " + Coul);
}
}
Lors d'un appel d'une méthode non définie dans la classe PointColor, la méthode de la classe Point
sera utilisée si elle existe.
3,2 – Domaine d'existence des variables
Les restrictions d'existence des variable x,y,String dans le constructeur, imposent le fonctionnement
suivant :
L'accès aux variables est-il possible depuis :
Classe "Point"
Classe "PointColor"
x, y
oui
oui
Nom
oui
oui
Type
oui
non
main
non
non
non
Après ces modifications, l'application précédente continue de fonctionner, car toutes les actions sur
les variables de champ de la classe Point, PointColor, s'effectuent en interne à la classe (seuls les appels de
méthodes sont à l'extérieur de la classe)
IUT Elbeuf
3/4
S.H.
Module I5 – Java
Corrigé TP3
RT
IV – Utilisation des fonctions définies dans les bibliothèques java
4,1 – Fonctions mathématiques
L'utilisation des fonctions mathématiques dans la méthode "distance" permet de simplifier l'écriture
du code. Java n'acceptant pas les mélanges entre variables de types différents (int, double, ...), il est
nécessaire de procéder au départ à une conversion de format pour obtenir des lignes de calculs homogènes.
Integer.doubleValue(x)
Double.intValue(x)
Math.pow(x, n)
Math.sqrt(c)
=> Conversion d'une variable entière au format double
=> Conversion d'une variable double au format entier
=> Renvoie la valeur xn
=> Renvoie la racine carrée de c
La bibliothèque "Math" propose donc diverses fonctions mathématiques
4,2 – Fonctions chaînes de caractères
Pour modifier la casse , utiliser les méthodes :
String.toUpperCase
Conversion de la chaîne de caractères en majuscules
String.toLowerCase
Conversion de la chaïne de caractères en minuscules
Integer.parInt(c)
Integer.toString(x)
IUT Elbeuf
Conversion du caractère "c" en valeur numérique
Conversion d'un entier en chaîne de caractères
4/4
S.H.
Téléchargement