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

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(); P3.affiche();
P1.deplace(4,-6);
P1.rotation();
P1.normalise();
P3=P2.copiePoint();
P2.deplace(-2,+3);
P1.affiche(); P2.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.
class PointColor extends Point { // Héritage
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" main
x, y oui oui non
Nom oui oui non
Type oui 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) => Conversion d'une variable entière au format double
Double.intValue(x) => Conversion d'une variable double au format entier
Math.pow(x, n) => Renvoie la valeur xn
Math.sqrt(c) => 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) Conversion du caractère "c" en valeur numérique
Integer.toString(x) Conversion d'un entier en chaîne de caractères
IUT Elbeuf 4 / 4 S.H.
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !