Datenkapselung

Diskutiere Datenkapselung im Java Basics - Anfänger-Themen Bereich.
J

JustNobody

Ja, public wäre besser, denn Quelltext in einem anderen Paket muss ja keine Unterklasse sein. Daher wäre protected zu wenig.

Und wieso sollte char gewechselt werden? Was ist denn bei int anders oder besser? Was unterscheidet denn die beiden Typen von einander?
 
C

Codix

back on track mit der Lösung dieser Aufgaben.
@JustNobody:

Der Unterschied zwischen den Datentypen int & char:
int = ganze Zahlen, char = einzelne Character

@Und wieso sollte char gewechselt werden? => wir müssen es nicht wechseln. Dann lass uns char nehmen.


also muss es in der Klasse Ziege :

public class Ziege {
public int gewicht;
public int geschlecht;

heissen.

Sind das die Stellen, die im Quelltext geändert werden müssten, um in einem anderen Paket eine Instanz der Klasse Ziege zu erstellen?

Bitte um eure Antworten, ist die Aufgabe hiermit gelöst?

Danke im Voraus
 
C

Codix

Nobody schrieb:
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.

Antwort:
Instanzvariablen sind private. Damit die Subklassen darauf zugreifen können, müssen die Instanzvariablen entweder protected oder public sein - oder du brauchst eine get-Methode dafür.

also auf protected ändern:

Code:
protected int gewicht;
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.

Was sind eure Lösungen?

Danke im Voraus
 
T

temi

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?
 
C

Codix

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?
ich dachte die 3 Varianten wären die richtigen, aber anscheinend ist die Variante privat nicht richtig. (s. Kommentare von JustNobody). Deswegen habe ich die letzten Posts geschrieben.

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.
 
M

Meniskusschaden

Ich habe den Eindruck, du verstrickst dich in Details, bevor du dir über das Grundsätzliche des Themas Gedanken gemacht hast. Es geht um Datenkapselung. Ist das nun etwas Gutes oder Schlechtes? Will man Datenkapselung erreichen oder verhindern? Warum will man das? Was sind die Vor- und Nachteile? Sobald du das heraus gefunden hast, musst du nur noch bewerten, inwieweit sich die verschiedenen Lösungsansätze im Hinblick darauf unterscheiden. Bevor du das verstanden hast, kannst du nur raten.
 
J

JustNobody

Neben den Punkten von Meniskusschaden möchte ich nur noch einmal die Aussage "drei richtige Varianten" ansprechen:
public, protected und Getter sind da genannt und für richtig erachtet?

public und (public) Getter können wir abhaken - da hat man von überall aus Zugriff. Aber protected hatten wir ja eigentlich betrachtet:

a) 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.

b) Du hast geschrieben: "protected: Wir können aus derselben Klasse, demselben Paket, der Unterklasse im gleichen Paket und der Unterklasse im anderen Paket auf den code zugreifen." wobei ich letzteres zusammenfassen würde zu: Wir können aus derselben Klasse, dem selben Paket oder von Unterklassen zugreifen.

c) Ist protected also eine valide Lösung? Kann ich da von irgend einem Quelltext in einem anderen Paket zugreifen oder nicht? Sprich: Ist es die selbe Klasse? Ist es das selbe Paket? Ist es eine Unterklasse? Wenn Du alles mit Nein beantwortest, dann würde das was genau bedeuten?


Ansonsten probiere es doch einfach aus:
In package1 eine Klasse Test1 mit einem private int variable;
In package2 eine Klasse Test2 (ohne Vererbung!) mit einer Methode:
Code:
public void testAccess() {
  Test1 testInstanz = new Test1();
  testInstanz.variable = 1;
}
(Natürlich mit den notwendigem Krimskrams: package Zeilen in beiden Dateien, Test2 braucht ein Import von package1.Test1 ...)

Lässt sich dies übersetzen oder nicht?
 
T

temi

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 geht hier um Aufgabe 2 und die zeigt eindeutig eine abgeleitete Klasse...
public und (public) Getter können wir abhaken - da hat man von überall aus Zugriff.
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.
 
J

JustNobody

Ah danke, da habe ich dann etwas aus der Aufgabe 3 mit reingemischt. Blöd, wenn man bei so einem Thread den Ursprungspost mit der Zeit etwas zu sehr aus den Augen verliert.
 
T

temi

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.
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.

Mit dieser Information sollst du die drei o.g. Möglichkeiten bewerten.
 
H

handshake45

Es geht doch um einen Vergleich oder? Und dieser dürfte schon ausdifferenziert sein, falls du weißt was das bedeutet...
 
T

temi

Es geht doch um einen Vergleich oder? Und dieser dürfte schon ausdifferenziert sein, falls du weißt was das bedeutet...
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.
 
J

JustNobody

Ein Vergleich ist erst einmal nur eine Ermittlung von Unterschieden. Aber es geht uns um eine Bewertung. Damit ist es kein reiner Vergleich sondern geht deutlich darüber hinaus.

Und im Gegensatz zu Dir versuchen wir, Leute nur zu führen, so dass sie verstehen und selbst die Lösung erarbeiten. Daher bringen wir eben keine Lösung sondern erwarten da einen entsprechenden Einsatz vom TE.

Und somit ist es erst einmal egal, wie man das nun nennt. Wenn du es unbedingt Gegenüberstellung nennen willst, dann nenn es so. Um Begriffe zu streiten bringt uns / den TE nicht wirklich weiter.
 
T

temi

Ist aber auch egal, schau nach was eine Gegenüberstellung ist: "Vergleich zwischen zwei Dingen"
  1. Den Begriff "Gegenüberstellung" hast du ins Spiel gebracht.
  2. Da es sich um drei Dinge handelt, kann es sich nicht um eine Gegenüberstellung handeln ;)
@Codix: Wenn du Verständnisprobleme z.B. mit dem Begriff "Datenkapselung" hast, dann kannst du hier gerne danach fragen und es werden sich sicher Helfer finden, die es dir erläutern können. Dieses Verständnis ist hier wichtig.
 
Thema: 

Datenkapselung

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben