3 Stimmen

Prinzip der Verkapselung

Es gibt ein objektorientiertes Konstruktionsprinzip, das in etwa besagt: "Eine Klasse sollte nur die Verträge der Klassen kennen, die sie als Argumente annimmt, oder alle internen, die sie verwendet."

Das Gegenbeispiel, in C++, ist:

Foo::bar( Baz* baz)
{
  baz()->blargh()->pants()->soil();  // this is bad, Foo knows about blarghs and pants
}

Hat dieses Prinzip einen Namen? Außerdem wäre es schön, das eigentliche Prinzip und nicht meine obige Umschreibung zu sehen.

8voto

Steven A. Lowe Punkte 59247

El Gesetz der Demeter dank <a href="https://stackoverflow.com/users/20164/jim-burger">Jim Burger </a> dice:

Das Law of Demeter (LoD) oder Prinzip des geringsten Wissens ist eine Design-Richtlinie für die Entwicklung von Software, insbesondere von objektorientierten Programmen. Die Richtlinie wurde Ende 1987 an der Northeastern University entwickelt und lässt sich kurz und bündig so zusammenfassen: "Sprich nur mit deinen engsten Freunden." Der Grundgedanke ist, dass ein bestimmtes Objekt so wenig wie möglich über die Struktur oder Eigenschaften anderer Objekte (einschließlich seiner Unterkomponenten) wissen sollte.

0 Stimmen

@[Jim Burger]: Danke, Antwort bearbeitet, um Link und Zitat einzufügen

0 Stimmen

Ich heiße Jim, nicht Kim. Wie auch immer, dies gilt nicht nur für die objektorientierte Programmierung.

0 Stimmen

@[Harleqin]: Ups! Tippfehler korrigiert.

0voto

user29227 Punkte 125

Das mag kompilierbar sein oder auch nicht (wegen der Klammern nach dem baz-Zeiger), aber Ihr Beispiel verstößt gegen mindestens ein Prinzip, das mir einfällt. Es verstößt gegen das Gesetz von Demeter (auch Gesetz der Parsimonie genannt, glaube ich). Die wichtigsten Grundsätze sind hier zu finden: S.O.L.I.D.-Grundsätze

Abgesehen davon bin ich mir nicht sicher, ob es einen spezifischen Namen für das gibt, was du beschreibst. Sie können das Gesetz der Demeter auf Wikipedia nachschlagen.

0voto

S.Lott Punkte 371691

Blick auf Die SOLID-Grundsätze von Robert Martin . Sehen Sie sich insbesondere die Grundsatz der einzigen Verantwortung . Die komplexe Kette von Abhängigkeiten in Ihrem Beispiel sieht so aus, als würde sie das SRP brechen.

Die Verkapselung selbst ist kein Prinzip. Sie ist Teil der Verwirklichung der verschiedenen Prinzipien. Zusammen mit Vererbung, Polymorphismus und anderen eher obskuren OO-Merkmalen.

0voto

LenW Punkte 2984

Ich würde hier sagen, dass eine gute Verkapselung dazu beiträgt, die Kupplung - was ein gutes Ziel für jede anständige Verkapselung ist, abgesehen vom Offensichtlichen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X