web-dev-qa-db-fra.com

Java - Utilisation des méthodes Accessor et Mutator

Je travaille sur un devoir. Je suis confus quant à la façon de procéder.

La question est:

Créez une classe appelée IDCard qui contient le nom d'une personne, son numéro d'identification et le nom d'un fichier contenant la photo de la personne. Écrivez les méthodes d'accesseur et de mutateur pour chacun de ces champs. Ajoutez les deux constructeurs surchargés suivants à la classe:

public IDCard () public IDCard (String n, int ID, String filename)

Testez votre programme en créant différents objets à l'aide de ces deux constructeurs et en imprimant leurs valeurs sur la console à l'aide des méthodes d'accesseur et de mutation.

J'ai réécrit ceci jusqu'à présent:

public class IDCard {
String Name, FileName;
int ID;

public static void main(String[] args) {

}

public IDCard()
{
    this.Name = getName();
    this.FileName = getFileName();
    this.ID = getID();
}

public IDCard(String n, int ID, String filename)
{

}

public String getName()
{
    return "Jack Smith";
}

public String getFileName()
{
    return "Jack.jpg";
}

public int getID()
{

        return 555;
    }
}
6
Pichu

Passons en revue les bases: "Accessor" et "Mutator" ne sont que des noms fantaisistes pour un getter et un setter. Un getter, "Accessor", retourne la variable d'une classe ou sa valeur. Un setter, "Mutator", définit un pointeur de variable de classe ou sa valeur.

Donc, vous devez d'abord configurer une classe avec quelques variables pour obtenir/définir:

public class IDCard
{
    private String mName;
    private String mFileName;
    private int mID;

}

Mais oh non! Si vous instanciez cette classe, les valeurs par défaut de ces variables n'auront aucun sens. B.T.W. "instancier" est un mot de fantaisie pour faire:

IDCard test = new IDCard();

Donc - mettons en place un constructeur par défaut, c'est la méthode appelée lorsque vous "instanciez" une classe.

public IDCard()
{
    mName = "";
    mFileName = "";
    mID = -1;
}

Mais que faire si nous connaissons les valeurs que nous voulons donner à nos variables? Faisons donc un autre constructeur, celui qui prend des paramètres:

public IDCard(String name, int ID, String filename)
{
    mName = name;
    mID = ID;
    mFileName = filename;
}

Wow - c'est Nice. Mais stupide. Parce que nous n'avons aucun moyen d'accéder (= lire) aux valeurs de nos variables. Ajoutons donc un getter, et pendant que nous y sommes, ajoutons également un setter:

public String getName()
{
    return mName;
}

public void setName( String name )
{
    mName = name;
}

Agréable. Nous pouvons maintenant accéder à mName. Ajoutez le reste des accesseurs et des mutateurs et vous êtes maintenant un débutant certifié Java. Bonne chance.

37
Vaiden

Vous devez supprimer le static de vos méthodes d'accesseur - ces méthodes doivent être des méthodes d'instance et accéder aux variables d'instance

public class IDCard {
    public String name, fileName;
    public int id;

    public IDCard(final String name, final String fileName, final int id) {
        this.name = name;
        this.fileName = fileName
        this.id = id;
    }

    public String getName() {
        return name;
    }
}

Vous pouvez créer un IDCard et utiliser l'accesseur comme ceci:

final IDCard card = new IDCard();
card.getName();

Chaque fois que vous appelez new, une nouvelle instance de IDCard sera créée et elle aura ses propres copies des 3 variables.

Si vous utilisez le mot clé static, ces variables sont communes à toutes les instances de IDCard.

Quelques éléments à garder à l'esprit:

  1. n'ajoutez pas de commentaires inutiles - ils ajoutent de l'encombrement de code et rien d'autre.
  2. conforme aux conventions de dénomination, utilisez des minuscules pour les noms de variables - name pas Name.
3
Boris the Spider