Datenkapselung_2

thor_norsk

Bekanntes Mitglied
Hallo, ich bin wieder da :)

Aufgabe: Bitte sehen Sie sich folgende Klassenvereinbarung genau an.

[CODE lang="java" title="Datenkapselung_2"]public class Ziege {

private int gewicht;
private char geschlecht;
}

// ein Konstruktor
private Ziege (int gewicht, char geschlecht) {

this.gewicht = gewicht;
this.geschlecht = geschlecht;
}.....



[/CODE]

Können Sie in einem Quelltext in einem anderen Paket eine Instanz der Klasse Ziege erstellen? Begründen Sie bitte Ihre Antwort und nennen Sie
gegebenenfalls die Stellen im Quelltext der Klasse Ziege, die geändert werden müssen.

Mein Lösungsansatz:

Nein, weil im Sinne der Datenkapselung, sind sowohl die Instanzvariablen und der Konstruktor auf private gesetzt sind, und somit von Außenwelt isoliert.

Eine Möglichkeit wäre den Konstruktor auf ,,public’’ zu setzen.

Falls noch weiter im Quelltext Methoden auf private gesetzt sind sollte man die innerhalb der Konstruktor aufrufen.

Also: Erste sinnvolle Veränderung wäre aus meiner Sicht:

[CODE lang="java" title="Datenkapselung_2"]public class Ziege {

private int gewicht;
private char geschlecht;
}

// ein Konstruktor
public Ziege (int gewicht, char geschlecht) {

this.gewicht = gewicht;
this.geschlecht = geschlecht;
}.....[/CODE]
 
M

Mart

Gast
Das mit dem Konstruktor auf public setzen ist richtig ( ist auch wahrscheinlich ziel davon von der Aufgabe )


die Ziege kann auch nicht im aktuellen paket erzeugt werden da der einzige konstruktor private ist .. so nebenbei

eine andere möglichkeit wäre es den konstruktor private zu lassen ( so kann man auch singletons erstellen ist ganz fancy zu wissen , oder man kann mal "factory" pattern angucken aber ob das mit private konstruktor ist weis ich nicht )

und eine methode shcreibt

Java:
public static Ziege ziegenKonstruktorMethode(int gewicht, char geschlecht){
    return new Ziege(int gewicht, char geschlecht);
}


PS ( aber wahrshceinlich nur tipp fehler
Java:
public class Ziege {

    private int gewicht;
    private char geschlecht;
    } // hier wird die Klasse Geschlossen !



// ein Konstruktor => zu welcher klasse gehört denn der ? die Ziegen klasse ist schon geschlossen
private Ziege (int gewicht, char geschlecht) {
  
    this.gewicht = gewicht;
    this.geschlecht = geschlecht;
    }.....
 

Neue Themen


Oben