2011-01-14 4 views
1

Wie erklären Sie Klassenhierarchien.Klasse vs Objekthierarchien

Ich denke, meine Google-Power ist untergegangen, weil, als ich nach "Klassenhierarchien" als der Begriff suchte ich ein paar Beispiele wie Klassen organisiert sind und die Vererbungsbeziehung zwischen ihnen. Geht es um Klassenhierarchien? Wie erklärst du einem C-Entwickler die Klassenhierarchie?

Auch was ist der Unterschied zwischen Klassenhierarchie und Objekthierarchie?

Eigentlich bin ich wegen einer Präsentation am Samstag in meinem Büro Kollegen und über so viele theoretischen Themen kommt :(

Jede mögliche Hilfe würde geschätzt.

Vielen Dank

+2

"Klasse" ist die Definition, der Blueprint - der Plan; "Objekt" ist die tatsächliche Instanziierung zur Laufzeit. Im "Design-Modus" haben Sie also Klassenhierarchien. Zur Laufzeit haben Sie Objekthierarchien. –

+0

Ja, die Klassenhierarchie wird durch Vererbungsebenen erstellt. Warum würdest du das einem C-Entwickler erklären? –

+0

Danke Kumpel. Ich muss OO-Präsentation einer Gruppe von Studenten geben, die nur C kennen. Es ist morgen und ich bin nervös, da wir so viele theoretische Sachen wie Hierarchien usw. haben :( – Mustafa

Antwort

5

Ich werde versuchen, Antwort in ein paar Zeilen.

Eine Klassenhierarchie bezieht sich wahrscheinlich auf die Struktur, die durch Klassen und Vererbungsverbindungen zwischen ihnen besteht. Beispielsweise haben Sie class Car, die von class Vehicle erbt, und so weiter. Das ist eine Klassenhierarchie.

Wenn Sie nun eine Instanz Car mit dem Operator new erstellen, erhalten Sie ein Car Objekt; Es gibt keine Hierarchie. Das heißt, es gibt keine "zwei Objekte, die durch Inhärenz miteinander verbunden sind", wie es die beiden Klassen sind. Wir können sagen, dass Klassenhierarchien bei der Instanziierungszeit "abgeflacht" werden.

Der Ausdruck Objekthierarchien bezieht sich daher oft auf ganze/Teilstrukturen. Vielleicht haben Sie eine andere Klasse, vielleicht mit dem Namen Wheel, plus eine Referenz von Car bis Wheel, so dass Autos bis zu vier Räder enthalten können (stellen Sie sich eine Reihe von Rädern in einem Autoobjekt vor, oder irgendeine andere Art von Container, wenn Sie es wünschen). Diese Anordnung bildet ein Diagramm (und nicht eine Hierarchie) von Objekten und der Laufzeit, wobei ganze/Teil- (manchmal auch "Aggregations-" oder "Zusammensetzungs" -) Beziehungen die Hauptverbindungen sind.

Zusammenfassend: Klassenhierarchien und Objekthierarchien sind völlig verschieden und nicht verwandt.

Ich hoffe, das hilft.

+0

Wenn Objekthierarchien in Wirklichkeit keine Hierarchien sind, warum haben Booch und andere angerufen sie so? Findest du es nicht merkwürdig, dass Klassenhierarchien zur Instanziierungszeit "abgeflacht" werden und so wurde die Objekthierarchie erstellt? – Tim

+0

@Tim: Wie ich schon sagte, beziehen sich "Objekthierarchien" auf Ganz-/Teilstrukturen * oft *, nicht immer Ich kann nicht wissen, ob dies bei einer bestimmten Quelle ohne eine detaillierte Studie der Fall ist, aber es ist sehr wahrscheinlich, und ich finde es überhaupt nicht seltsam. Mereologische Hierarchien sind ein gutes bekanntes Phänomen (siehe http://en.wikipedia.org/wiki/Merology für Hintergrund), obwohl sie in der Praxis oft zu Strukturen führen, die keine strengen Bäume, sondern Graphen sind. – CesarGon

+0

@CesarGon: Booch in seiner Arbeit "OOAD mit Anwendungen" unterscheidet zwei Arten von Hierarchien: "ist eine" Hierarchie, die Beziehungen zwischen Klassen definiert und "Teil der" Hierarchie, die Beziehungen zwischen Objekten definiert. Sind die "Teilhierarchien" irgendwie mit denen verbunden, die Sie "Ganz-/Teilstrukturen" nennen, ist das nicht wirklich klar, aber Booch verwendet in seiner Arbeit keinen Begriff "Ganz-/Teilstrukturen". – Tim