es ist jetzt auch egalUnd kannst das so oft wiederholen wie du möchtest, es wird dadurch nicht wahrer. Es ist einfach falsch.
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html
es ist jetzt auch egalUnd kannst das so oft wiederholen wie du möchtest, es wird dadurch nicht wahrer. Es ist einfach falsch.
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html
Tatsächlich ist es nicht egal, sofern du weiterhin darauf beharrst, weil du dadurch etwas falsches lernst und das wäre ja schade.es ist jetzt auch egal![]()
Mach das. Du hast ja viele Hinweise erhalten. Du kannst gerne noch mal nachfragen, wenn du soweit bist, dann können wir Unklarheiten noch beseitigen.jetzt muss noch die Frage 2 & 3 beantwortet bzw. die Antwort korregiert werden.
Hast du denn die Lösung der ersten Aufgabe verstanden, oder ist noch was unklar?jetzt muss noch die Frage 2 & 3 beantwortet bzw. die Antwort korregiert werden.
ich habe die Lösung verstanden. Danke.Hast du denn die Lösung der ersten Aufgabe verstanden, oder ist noch was unklar?
alles klar.Hast du denn die Lösung der ersten Aufgabe verstanden, oder ist noch was unklar?
@temi 2Antwort auf die 2.te Aufgabe: welche ist die beste Möglichkeit? protected, public oder getter?Mach das. Du hast ja viele Hinweise erhalten. Du kannst gerne noch mal nachfragen, wenn du soweit bist, dann können wir Unklarheiten noch beseitigen.
Also zu 2: Das Topic ist doch die Datenkapselung. Wenn Du ein Feld public machst, dann hebst Du die Kapselung komplett auf. Also nicht gut.
Und es kann auch nicht zwischen lesendem und schreibendem Zugriff unterschieden werden.
Zu 3: Da wirfst Du Begriffe durcheinander. Ich sehe keine Instanzvariable Ziege, daher kann deine Antwort nur falsch sein.
Aber ja: wenn der Konstruktor private ist, dann kann von außen nicht auf den Konstruktor zugegriffen werden. Damit Instanzen der Klasse erzeugt werden können, muss der Konstruktor zugreifbar sein. Du erwähnst protected und public. Wie sind da jeweils die Zugriffsmöglichkeiten? Und welche erlauben den geforderten Zugriff ("in einem Quelltext in einem anderen Paket")?
Und ist der text bzgl. Datentyp char aus dem ersten Post noch irgendwie akut? Oder hast Du das selbst schon gestrichen oder wurde das im Thread bereits behandelt?
protected int gewicht;
Nein.Sind das die Stellen, die im Quelltext geändert werden müssten, um in einem anderen Paket eine Instanz der Klasse Ziege zu erstellen?
Nein.ist die Aufgabe hiermit gelöst?
Du hattest schon im allerersten Beitrag für diese Aufgabe drei richtige Varianten angegeben. Das einzige was fehlte war die Bewertung dieser Varianten. Das wurde dir in diesem Thema schon mehrfach mitgeteilt. Hast du eigentlich Probleme Texte (ob nun Aufgaben oder Lösungshinweise) richtig zu interpretieren?somit hätten wir 2 Lösungsvarianten: get-Methode & Protected.
wir brauchen noch eine Variante (ausser protected), die direkt mit der Veienbarung der Instanzvariablen zusammenhängt.
Du hattest schon im allerersten Beitrag für diese Aufgabe drei richtige Varianten angegeben. Das einzige was fehlte war die Bewertung dieser Varianten. Das wurde dir in diesem Thema schon mehrfach mitgeteilt. Hast du eigentlich Probleme Texte (ob nun Aufgaben oder Lösungshinweise) richtig zu interpretieren?
private int variable;
public void testAccess() {
Test1 testInstanz = new Test1();
testInstanz.variable = 1;
}
Es geht hier um Aufgabe 2 und die zeigt eindeutig eine abgeleitete Klasse...Aufgabe besagt: Zugriff "in einem Quelltext in einem anderen Paket" - also da geht es um irgend einen Quelltext, das muss also keine abgeleitete Klasse sein.
Es ist eine mögliche Lösung. In Hinblick auf Kapselung eine ungünstige Lösung, aber das muss einfach so in der Bewertung der Lösung geschrieben werden.public und (public) Getter können wir abhaken - da hat man von überall aus Zugriff.
Mein letzter Versuch in dieser Sache. Ich habe dir ja schon mehrmals geschrieben, dass die Aufgabe eine Bewertung der drei Möglichkeiten verlangt. Die hast du bisher komplett ignoriert. Da das Thema Datenkapselung ist, geht es um eine Bewertung aus Sicht der Datenkapselung. @Meniskusschaden hat es dir ja schon geschrieben und ich stelle es jetzt einfach mal klar: Ja, Datenkapselung ist gut und gewollt. Je gekapselter, desto besser.also du sagst. public, protected und get-Methode sind die richtigen 3 Varianten.
Ich bewertete public als die beste Methode (s. vorige threads), aber s. #53 JustNobody's Kommentar zu der public Wahl.
Deswegen blieb nur noch get-Methode und protected übrig, so meine Entscheidung anhand des Data von JustNobody.
aber wir können diese Entscheidung wieder rückgängig machen wegen deiner Bewertung der Lage.
Na, ich habe schon "bessere" (also umfangreichere) Gegenüberstellungen gesehen.Ja, Datenkapselung ist gut und gewollt.
Wer oder was steht sich denn hier gegenüber?Na, ich habe schon "bessere" (also umfangreichere) Gegenüberstellungen gesehen.![]()
Ich habe keine Ahnung was du mir sagen möchtest, Tobias. Es geht doch nicht um einen Vergleich. Es geht darum die drei genannten Möglichkeiten in Bezug auf ihren Einfluss auf die Datenkapselung zu bewerten. Da es sich nicht um meine Aufgabe handelt, werde ich das ganz sicher nicht tun. Das kann @Codix ruhig selbst machen.Es geht doch um einen Vergleich oder? Und dieser dürfte schon ausdifferenziert sein, falls du weißt was das bedeutet...
Sind hier alle verrückt geworden?Tobias
Ist aber auch egal, schau nach was eine Gegenüberstellung ist: "Vergleich zwischen zwei Dingen"
Du brauchst gar nicht versuchen, Dich hier abzuseilenund es werden sich sicher Helfer finden, die es dir erläutern können.
Ich wollte mich nur nicht als alleiniger Retter der Welt darstellenDu brauchst gar nicht versuchen, Dich hier abzuseilen![]()
Das "Nein" ist richtig, aber Instanzvariablen sind nicht default "private".Nein, da die Variablen default im private sind. Erst mit gettern und settern ist das möglich.
Wie soll denn der Zugriff über Parameterübergabe funktionieren?Das ist einmal über eine Parameterübergabe im Konstruktor möglich, sowie mit gettern und settern oder aber man setzt die variablen nicht private sondern public oder protected.
Das ist richtig.Nein, da der Konstruktor in private ist. Dieser sollte public sein.
wie sind sie dann?Das "Nein" ist richtig, aber Instanzvariablen sind nicht default "private".
Man übergibt die Parameter mit dem Konstruktor und hat die Parameter.Wie soll denn der Zugriff über Parameterübergabe funktionieren?
ich denke dass Getter & Setter die beste Lösung ist im Hinblick auf die Datenkapselung, weil es die sicherste Methode ist.Getter/Setter ist richtig.
Public/protected ist auch richtig.
Es fehlt die Bewertung, der unterschiedlichen Lösungen in Hinblick auf die Datenkapselung.
Da Instanzvariablen sind private, d.h. nur die Klasse Katze hat Zugriff darauf. Wie sollen die als Parameter eines Konstruktors der Klasse ElternKatze verwendet werden? Zeig mal den Code dazu!Man übergibt die Parameter mit dem Konstruktor und hat die Parameter.
Sicherheit in Bezug auf was? Die Instanzvariablen public oder sie protected zu machen sind schon zwei Möglichkeiten und sie unterscheiden sich auch immens in Hinblick auf Datenkapselung. Überdenke deine Bewertung noch einmal und versuch endlich eine ordentliche Bewertung für jede der drei Möglichkeiten zu machen. Das ist schon seit der ersten Seite dieses Themas dein Hauptproblem bei dieser Aufgabe.ich denke dass Getter & Setter die beste Lösung ist im Hinblick auf die Datenkapselung, weil es die sicherste Methode ist.
als 2.tes würd eich public/protected nehmen
Da Instanzvariablen sind private, d.h. nur die Klasse Katze hat Zugriff darauf. Wie sollen die als Parameter eines Konstruktors der Klasse ElternKatze verwendet werden? Zeig mal den Code dazu!
Sicherheit in Bezug auf was? Die Instanzvariablen public oder sie protected zu machen sind schon zwei Möglichkeiten und sie unterscheiden sich auch immens in Hinblick auf Datenkapselung. Überdenke deine Bewertung noch einmal und versuch endlich eine ordentliche Bewertung für jede der drei Möglichkeiten zu machen. Das ist schon seit der ersten Seite dieses Themas dein Hauptproblem bei dieser Aufgabe.
Das war ja, worauf @temi dich stoßen wollte: das mit den Parametern macht keinen Sinn. Es geht um Zugriff auf die Instanzvariablen. Da macht eine Übergabe als Parameter keinen Sinn. Parameter werden immer über Call by Value übertragen. Somit kannst du nur die aktuellen Werte der Instanzvariablen übergeben. Die Frage war aber, wie man Zugriff auf die Instanzvariablen bekommen kann.ich komme einfach nicht drauf, kannst du mir mit der Antwort bitte helfen?
Das war ja, worauf @temi dich stoßen wollte: das mit den Parametern macht keinen Sinn. Es geht um Zugriff auf die Instanzvariablen. Da macht eine Übergabe als Parameter keinen Sinn. Parameter werden immer über Call by Value übertragen. Somit kannst du nur die aktuellen Werte der Instanzvariablen übergeben. Die Frage war aber, wie man Zugriff auf die Instanzvariablen bekommen kann.
Und die Bewertung steht immer noch aus. Drei Optionen sind genannt worden von Dir: Bewerte die bitte noch. Was für Vor- und Nachteile hat jede Variante bezüglich Datenkapselung?
Leider nicht so vielBewertung: bei protected können die Variablen aus dem selben Paket verändert werden. Ansonsten bei public von überall und bei private nur innerhalb der Klasse. Die getter und setter scheinen mir hier eine gute Lösung, da so die Variablen innerhalb der Klasse verändert werden können. Innerhalb des Konstruktors scheint mir als keine gute Lösung, da je nach Variableanzahl der Konstruktor unübersichtlich wird.
was haltet ihr von dieser Bewertung?
Modifier | Class | Package | Subclass | World |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
no modifier | Y | Y | N | N |
private | Y | N | N | N |
Passt doch im Grunde genommen. Es geht im Grunde darum, dass eine Klasse ihre Interna so weit wie möglich verbergen sollte. Änderungen von außen, sollten idealerweise über fachliche Methoden erfolgen.Datenkapselung in Java: Hauptsächlich Festlegung der Sichtbarkeit von Methoden und Variablen. Es ist besser Daten zu kapseln, weil sie somit sicherer sind. Sonst könnte ja jede/r drauf zugreifen.
// Eine Klasse Auto
Auto auto = new Auto();
auto.geschwindigkeit = 50; // schlechte Lösung, weil direkter Zugriff
auto.setGeschwindigkeit(50); // besser, aber immer noch fast direkter Zugriff
auto.beschleunigen(); // fachliche Methode: ein Auto wird beschleunigt
Die Klasse ElternKatze soll auf die Instanzvariable gewicht der Klasse Katze zugreifen können. Welche Möglichkeiten kennen Sie, diesen Zugriff zu ermöglichen? Bewerten Sie diese Möglichkeiten bitte auch. Achten Sie dabei besonders auf die Datenkapselung.
Ein Tipp: Sie sollten mindestens drei verschiedene Varianten nennen können. Zwei hängen direkt mit der Vereinbarung der Instanzvariablen zusammen, die dritte dagegen nicht.
Datenkapselung in Java: Hauptsächlich Festlegung der Sichtbarkeit von Methoden und Variablen. Es ist besser Daten zu kapseln, weil sie somit sicherer sind. Sonst könnte ja jede/r drauf zugreifen.
Das wären drei Möglichkeiten: package private, protected, public.Was ist dann die dritte Möglichkeit? Kann bitte eine/r helfen?
bei protected können die Variablen aus dem selben Paket verändert werden. Ansonsten bei public von überall und bei private nur innerhalb der Klasse. Die getter und setter scheinen mir hier eine gute Lösung, da so die Variablen innerhalb der Klasse verändert werden können.
Zugriffsmöglichkeiten:
Getter/Setter
Public/protected
Was ist dann die dritte Möglichkeit? Kann bitte eine/r helfen?
Hast du dir die Tabelle weiter oben mal angeschaut?Danke& Respekt an alle!
drei Möglichkeiten:
1. Instanzvariablen public machen
2. Instanzvariablen protected machen
3. Getter / Setter erstellen
Bewertung: bei protected können die Variablen aus dem selben Paket verändert werden. Ansonsten bei public von überall und bei private nur innerhalb der Klasse. Die getter und setter scheinen mir hier eine gute Lösung, da so die Variablen innerhalb der Klasse verändert werden können.
===
kann man das so stehen lassen?