Frage von BOZZJANEK, 105

sinn von klassen in der objektorientierung?

ist der sinn von klassen dass aus einer klasse viele GLEICHE objekte erstellt werden die halt alle auf einen bauplan basieren oder ist der sinn von klassen das mithilfe von parametern aus einer klasse verschiedene objekte erzeugt werden können ohne das man für jedes einen extra bauplan pogramieren muss? oder beides? wird das überhaupt so streng genommen? ich habe zur veranschaulichung meiner zweiten these ein bild hinzugefügt:

Antwort
von NoHumanBeing, 65

Deine Objekte sind dahingehend "gleich", dass sie alle die gleichen Attribute (Eigenschaften) haben. (Jedes Bauteil hat eine Nummer, eine Beschreibung, einen Preis, ...)

Diese Attribute können natürlich unterschiedliche Ausprägungen (Werte) haben. Trotzdem wäre in Deinem Bild nur "Artikel" eine sinnvolle Klasse. Was Du "darunter hängen" hast, wären Instanzen der Klasse (Objekte).

Also für das, was Du graphisch dargestellt hast, bräuchtest Du nur exakt eine Klasse, weil ja alle Objekte dieselbe "Struktur" haben.

Antwort
von zalto, 19

Ich sehe Klassen in erster Linie als ein Ordnungsprinzip, so wie J0T4T4 es schon geschrieben hat.

Wenn man ohne diese Ordnung programmiert, hat man bereits in einem mittelgroßen Programm Unmengen einzelner Variablen und Funktionen. Diese stehen dann zwar logisch irgendwie miteinander in Verbindung, aber im Programmcode sieht man nichts von diesen Abhängigkeiten. 

Der nächste Entwickler, der etwas ändern soll, kann an jeder Stelle irgendwelche Werte neu setzen. Damit richtet vielleicht an anderer Stelle Schaden an, ohne dass er es merkt, weil er die innere Konsistenz der Variablenabhängigkeiten nicht kennt und zerstört.

Oder er ruft Funktionen auf und übergibt ihnen irgendwelche Werte, die an dieser Stelle vielleicht noch vom Typ her passen, aber von der inneren Logik her nicht.

Mit einer Klasse sortiert man erst mal Variablen und Funktionen und stellt sie in einen logischen Zusammenhang.

Gleichzeitig vergibt man Zugriffsrechte: was darf man verändern, was darf man nur sehen, was braucht einen gar nicht zu interessieren und dient nur der internen Verwaltung.

Zu Deiner Frage: abbilden kann man damit beides. Viele Objekte derselben Klasse oder viele verschiedene Klassen.

Das ist so wie im Zoo: Da gibt es auch viele verschiedene Tierarten, aber von derselben Tierart auch wieder mehrere Exemplare. Die Methode "füttern" kann man auf alle Tiere anwenden, weil alle Tiere "fütterbar" sind. Aber man würde die Methode für jede Tierart (nicht für jedes Tier) anders ausgestalten: Affen bekommen Bananen, Schlangen bekommen Mäuse. 

Der Tierkäfig bekommt hingegen nichts gefüttert, weil er nicht "fütterbar" ist - dafür ist er "schließbar" mit einem bestimmten Schlüssel. Das weiß der Compiler und er würde verhindern, wenn ein Entwickler daherkäme, einen Käfig mit einer Banane zu füttern. Oder eine Schlange mit einem Schlüssel zuzuschließen. Ohne Klassen könnte das hingegen leicht mal passieren.

Kommentar von BOZZJANEK ,

gut und humorvoll erklärt ;) danke

Antwort
von TUrabbIT, 30

Im Prinzip letzteres.

Es ist ein Bauplan aus dem Objekte gleichen Schemas generiert werden können. Dabei können sich die einzelnen Objekte stark unterscheiden, wie in deinem Beispiel,aber es kommt nur darauf an, das alle das selbe Schema erfüllen.

Antwort
von phigeek, 22

Die Klasse ist der Bauplan. Davon können gleichartige Objekte (in der Regel mit verschiedenen Parametern) erzeugt werden. Daher sehe ich den Unterschied Deiner beiden Definitionen nicht genau. Ist für mich eigentlich beides korrekt. Einzig spricht man bei den Eigenschaften eher von Attributen als von Parametern. Die Begriffe Parameter und Argumente sind eher für die übergabe von Werten an Funktionen "reserviert".

Wozu man Klassen benötigt hast Du an Deinem Beispiel jedoch sehr gut illustriert.

Ich habe ab Seite 17 in folgendem Buch versucht, den Sinn und Unsinn von Klassen zu erklären:

http://www.programmieraufgaben.ch/uploads/oo.pdf

Kommentar von BOZZJANEK ,

danke seite 17 war hilfreich ;)

Antwort
von J0T4T4, 47

Weder noch. Der Sinn von Klassen besteht darin, zusammengehörige Attribute und Funktionen zu vereinen, damit diese klar einander zugeordnet sind.

Antwort
von 2001HAL9000, 33

Also wenn ich das noch richtig im Kopf habe sind Klassen halt Oberkathegorien und alle Objekte in der Klasse besitzen alle Atribute (Eigenschaften) der Klasse

Wenn ich z.B.  eine Klasse namens Form habe, haben alle Objekte darin eine Anzahl an Ecken und eine Farbe.

also dann ein:
<Dreieck, Blau>
oder <Viereck, Grün>
<Keineck (Kreis), Gelb>

Keine passende Antwort gefunden?

Fragen Sie die Community