Java jar
Introduction
Reprenons notre objet Rectangle avec son constructeur et ses mutateurs.
package com.epsi.rectangle;
public class Rectangle {
int x, y, largeur, hauteur;
public Rectangle(int x, int y, int largeur, int hauteur) {
super();
this.x = x;
this.y = y;
this.largeur = largeur;
this.hauteur = hauteur;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getLargeur() {
return largeur;
}
public void setLargeur(int largeur) {
this.largeur = largeur;
}
public int getHauteur() {
return hauteur;
}
public void setHauteur(int hauteur) {
this.hauteur = hauteur;
}
}
Surcharge des méthodes de la classe java.lang.Objet
Vous pourrez remarquer, lorsque l'on utilise la surcharge, que le petit symbole apparaît à coté du nom de la méthode. Cela signifie que la méthode est héritée d'une classe parente et que vous redéfinissez son contenu.
Pour les exemples suivants, les trois méthodes sont déjà déclarées dans la classe java.lang.Objet. Cependant, les méthodes de la classe java.lang.Objet se base uniquement sur les adresses mémoires des objets instanciés... ce qui risque de rapidement nous limiter !
toString()
Utilisation
La fonction toString() offre un aperçut d'un objet instancié sous forme de chaîne de caractères.
Génération
On peut la générer grâce au menu contextuel:
L'assistant vous propose les attributs que vous voulez afficher dans la représentation graphique
Enfin, le code suivant doit être généré:
@Override
public String toString() {
return "Rectangle [x=" + x + ", y=" + y + ", largeur=" + largeur
+ ", hauteur=" + hauteur + "]";
}
La fonction toString() ainsi défini, affichera les attributs x, y, largeur et longueur de l'objet Rectangle.
hashcode() et equals()
Utilisation
La fonction hascode() et utilisée pour ordonner les objets lorsqu'il sont manipulé dans des tables ou des listes.
La fonction equals() permet de comparer deux objets entre eux pour savoir s'il sont égaux ou non.
Génération
Comme pour la méthode toString() nous allons utiliser le menu contextuel pour généré la méthode equals().
L'assistant nous propose de sélectionner les attributs qui vont nous servir d'éléments de comparaisons Fichier:Generate equals attributes.png Enfin, le code suivant doit être généré:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + hauteur;
result = prime * result + largeur;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Rectangle other = (Rectangle) obj;
if (hauteur != other.hauteur)
return false;
if (largeur != other.largeur)
return false;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
Utilisation
Maintenant que nous avons créé un objet, nous allons vouloir le manipuler. Pour cela, nous allons créer une nouvelle classe que nous appellerons Launcher et qui va nous servir uniquement à instancier des objets Rectangle.
Création de la méthode main()
Cette classe Launcher() devra posséder au moins la méthode main() car c'est elle qui nous permettra d'exécuter du code.
Au moment de la création de la classe, on peut demander à Eclipse de nous créer la méthode main()
Dans la classe nouvellement créée, le code suivant et déjà généré
public static void main(String[] args) {
// TODO Auto-generated method stub
}
Et c'est à nous de compléter le contenu de la méthode main().
Écriture de la méthode main()
Placez le code suivant dans le corps de la méthode main()
public static void main(String[] args) {
// Création de deux objets Rectangle
Rectangle rectangle1 = new Rectangle(2, 3, 20, 10);
Rectangle rectangle2 = new Rectangle(2, 3, 20, 10);
// Test de toString()
System.out.println(rectangle1);
// Test de equals
if(rectangle1.equals(rectangle2)){
System.out.println("Les rectangles sont égaux !");
}else{
System.out.println("Les rectangles sont différent !");
}
}
Ce code:
- créé deux objets rectangle
- appel la fonction toString();
- appel la fonction equals();