Frage von nicomilasta, 33

Welche Aussagen über die Folgen der Datenkapselung sind zutreffend?

kann mir jemand sagen, welche dieser drei Aussagen zutreffend sind?

1.Der Benutzer einer Klasse kann nur öffentliche Elemente einer Klasse zugreifen.

2.Solange die Schnittstelle einer Klasse nach außen unverändert bleibt kann der Inhalt einer Klasse verändert werden, ohne dass Änderungen außerhalb der Klasse nötig sind.

3.Bei Änderungen am Inhalt einer Klasse ändert sich automatisch auch deren Schnittstelle nach außen.

Vielen Dank

Antwort
von ceevee, 14

Ich würde dann angeben, dass nur 2. stimmt.

Wenn man mal die Beispielmethode (die in einer Klasse steckt) nehme:

double pow2(double n) {
return (n * n);
}

nimmt, dann könnte ich den Inhalt der Methode auch durch

double pow2(double n) {
return Math.pow(n, 2);
}

ersetzen - an der Schnittstelle der Methode ändert sich nix - ich muss weiterhin einen double reingeben und krieg einen double zurück. Der Inhalt der Methode hat sich aber geändert. 2. wäre damit bewiesen, 3. widerlegt.

1. könnte eine Fangfrage sein oder dein Lehrer kennt den Unterschied zwischen Objekt und Klasse echt nicht. Omnivore10 hat's schon richtig begründet - "öffentliche Elemente einer Klasse" sind genau genommen statische Methoden - eine Klasse kann aber auch öffentliche Objektmethoden haben, auf die ein Benutzer zugreift.

Antwort
von oelbart, 15

Hmm...man könnte argumentieren, dass es bei vollständiger Datenkapselung keine öffentlichen Elemente (außer Funktionen - sind Funktionen Elemente?) geben darf und deshalb 1 falsch ist. 

2 klingt jedenfalls nicht schlecht.

Antwort
von bergerle, 4

Dein Lehrer will vermutlich hören, dass 1 und 2 richtig sind. 3 ist auf jede fall quatsch. Wenn mal von dem hier bereits erwähnten unterschieden zwischen Klassen und Objekten absieht, bleibt es bei 1 und 2 immer noch bei einem klaren "kommt drauf an". Ich nehme jetzt mal als Sprache Java an. Eine package local Methode ist nicht wirklich öffentlich, kann aber von Klassen im gleichen package verwendet werden. Streng genommen können sogar als private markierte Elemente von anderer Stelle aus verwendet werden, indem man reflection verwendet. Bei 2. kommt dazu, dass es sein könnte, dass sich zwar die öffentlichen methodensignaturen nicht ändern, aber die Logik eine andere Bedeutung hat, sodass die alten Aufrufe zwar technisch immer noch funktionieren, aber fachlich nicht mehr Stimmen und angepasst werden müssen. 

Antwort
von xGlumi, 14

1 und 2 trifft zu...

Antwort
von Omnivore10, 14

Ist irgendwie alles 3 Unsinn. Wenn eine Klasse nicht statische Member hat, dann kann ich als Benutzer auf die Klasse gar nicht zugreifen. Ich greife immer nur auf Objekte zu.

Und natürlich kann ich bei der Datenkapselung nur auf öffentliche Member der Instanz zugreifen, (welche in der Klasse öffentlich markiert sind)

Kommentar von nicomilasta ,

Sehe ich genau so, laut meinem Informatik Lehrer ist aber mindestens eine richtig.

Keine passende Antwort gefunden?

Fragen Sie die Community