import java.awt.Color; public class Cat { private String name = null; private Color color = null; private int weight = 0; private int age = 0; private boolean wild = false; public Cat() { } /* Trop d'arguments sur un constructeur tue celui qui lit le code et rend l'héritage imbuvable */ public Cat(final String name, final Color color, final int weight, final int age, final boolean wild) { setName(name); setColor(color); setWeight(weight); setAge(age); setWild(wild); } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("Name: ").append(name); sb.append(", Color: ").append(color); sb.append(", Weight: ").append(weight).append("g"); sb.append(", Age: ").append(age); sb.append(", Wild: ").append(wild); return sb.toString(); } public boolean isWild() { return wild; } public void setWild(final boolean wild) { this.wild = wild; } public String getName() { return name; } public void setName(final String name) { this.name = name; } public Color getColor() { return color; } public void setColor(final Color color) { this.color = color; } public int getWeight() { return weight; } public void setWeight(final int weight) { this.weight = weight < 0 ? 0 : weight; } public int getAge() { return age; } public void setAge(final int age) { this.age = age < 0 ? 0 : age; } } ....... public static void main(String[] args) { Cat attila = new Cat("Attila", Color.BLACK, 5000, 3, false); Cat felix = new Cat("Felix", Color.GRAY, 2000, 1, true); System.out.println(attila); System.out.println(felix); /* On abandonne Attila au profit de Felix */ attila.setWild(true); felix.setWild(false); System.out.println(); System.out.println(attila); System.out.println(felix); } ....
...on me demande aussi de faire figurer les méthodes "dormir","manger","miauler"...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question/* Si ta classe est dans un fichier qui s'appel Chat.java elle devra commencer par public donc ici sinon il est préférable de qualifier sa portée (protected, private). */ public class Chat{
/* Il est préférable de qualifier/limiter la portée (public, protected, private) de tes variables. Comme je vais ajouter des getter/setter je les passes en private. Le choix de la classe wrapper pour la taille à la place du type double est discutable */ private String categorie; private String couleur; private String nom; private Double taille;
/* Il est préférable de qualifier/limiter la portée (public, protected, private) de tes constructeurs (ici on passe en public). */ public Chat(int age, String categorie,String couleur,String nom,Double taille ){ this.age = age; /* En Java si tu compares deux chaînes de caractères avec l'opérateur == tu compares les références et non les contenus. Du coup il faut passer (au besoin) par equals, compareTo, autre. Si possible utilise des constantes pour les chaînes de caractère qui sont en dure dans ton code. Bien qu'ici l'utilisation d'un enum serait plus propre. */ if (categorie.equals("sauvage")||categorie.equals("domestique")) { this.categorie = categorie; } else System.out.println("Erreur d'initialisation"); this.couleur=couleur; this.nom=nom; this.taille = taille; }
/* Il est préférable de qualifier/limiter la portée (public, protected, private) de tes constructeurs (ici on passe en public). Si tu veux utiliser un switch pour la categorie il faut que tu changes le type de la variable "categorie". Si possible utilise des constantes pour les chaînes de caractères qui sont en dure dans ton code. Bien qu'ici l'utilisation d'un enum serait plus propre. */ public Chat(int age, int categorie, String couleur, String nom, double taille) { this.age = age; /* En java tu peux oublier l'idée d'utiliser un String comme condition. Si categorie est de type String "switch (categorie)" provoquera une erreur de compilation */ switch (categorie) { case 0: this.categorie = "sauvage"; break; case 1: this.categorie = "domestique"; break; default: System.out.println("Erreur d'initialisation"); break; } this.couleur = couleur; this.nom = nom; this.taille = taille; }
public class Chat { private int age; private String categorie; private String couleur; private String nom; private Double taille; //CONSTRUCTEUR N°1 public Chat(final int age, final String categorie, final String couleur, final String nom, final Double taille) { this.age = age; if (categorie.equals("sauvage") || categorie.equals("domestique")) { this.categorie = categorie; } else System.out.println("Erreur d'initialisation"); this.couleur = couleur; this.nom = nom; this.taille = taille; } // CONSTRUCTEUR N°2 public Chat(int age, int categorie, String couleur, String nom, double taille) { this.age = age; switch (categorie) { case 0: this.categorie = "sauvage"; break; case 1: this.categorie = "domestique"; break; default: System.out.println("Erreur d'initialisation"); break; } this.couleur = couleur; this.nom = nom; this.taille = taille; } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("Nom: ").append(nom); sb.append(", Couleur: ").append(couleur); sb.append(", Taille: ").append(taille); sb.append(", Age: ").append(age); sb.append(", Categorie: ").append(categorie); return sb.toString(); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getCategorie() { return categorie; } public void setCategorie(String categorie) { this.categorie = categorie; } public String getCouleur() { return couleur; } public void setCouleur(String couleur) { this.couleur = couleur; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public Double getTaille() { return taille; } public void setTaille(Double taille) { this.taille = taille; } } ....... public static void main(String[] args) { Chat attila = new Chat(5, "domestique", "rouge", "Attila", .85); Chat felix = new Chat(1, "sauvage", "jaune", "Felix", .25); System.out.println(attila); System.out.println(felix); } .......