Java jar

De The Linux Craftsman
Aller à la navigation Aller à la recherche

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 Override symbole.png 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:

Generate toString.png

L'assistant vous propose les attributs que vous voulez afficher dans la représentation graphique

Generate toString attributes.png

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 Generate equals.png 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()

Generate class main.png

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();

Exécution du code

Vous pouvez exécuter la classe Launcher grâce au menu contextuel.

Execute main.png

Le résultat s'affiche sur la console

Execute main result.png

Allez plus loin

Ajout de la méthode draw()

Il serait intéressant que notre objet Rectangle se dessine dans la console. Pour cela nous allons ajouter une méthode draw() qui va retourner la chaîne de caractère qui représente l'objet Rectangle.

public String draw() {
    String result = "";
    for (int i = 1; i < this.y; i++) {
        result += ".\n";
    }
    for (int i = 0; i < this.hauteur; i++) {
        for (int j = 1; j < this.x; j++) {
            result += ".";
        }
        for (int j = 0; j < this.largeur; j++) {
            result += "*";
        }
        result += "\n";
    }
    return result;
}

Modification de la méthode main()

Il faut modifier le code de la méthode main() pour y ajouter la ligne suivante

//Test de draw
System.out.println(rectangle1.draw());