====== Was ist klassenbasiertes Programmieren? ====== Im [[c:start|C-Kurs]] wurden bereits [[c:type:struct|Strukturen]] behandelt. Schauen wir uns eine Struktur an, die ein Tier beschreibt: struct Tier { int AnzahlBeine; }; Im großen Ganzen haben wir hiermit bereits eine Klasse beschrieben. Denn ein Tier ist eine Klasse von Begriffen, wie beispielsweise Ameise, Katze, Mensch, Vogel. Die drei Tierarten haben eigentlich nicht viel miteinander zu tun, aber das Wort 'Tier' klassifiziert sie im Gegensatz zu einer anderen Klasse von Lebensformen: den Pflanzen. Ein ''struct Tier'' ist also eine Abstraktion von einer ganzen Klasse von Lebensformen: eben den Tieren. ===== Die Ist-Ein-Regel ===== Klassifizierungen lassen sich mit der Ist-Ein-Beziehung beschreiben. Eine Ameise **ist ein** Tier, eine Katze **ist ein** Tier, ein Mensch **ist ein** Tier und ein Vogel **ist ein** Tier. Aber: Wichtig ist hier zu verstehen, dass die Beziehung in nur eine Richtung funktioniert. Denn ein Tier ist keine Ameise, ein Tier ist keine Katze, ein Tier ist kein Mensch und ein Tier ist kein Vogel. Ein Tier könnte eine Ameise sein, aber es könnte auch eine Katze, ein Mensch oder ein Vogel sein. Die Ist-Ein-Beziehung führt immer nur vom Speziellem (die Ameise, die Katze...) zum Abstraktem (dem Tier). ===== Warum Klassifiziert man? ===== Viele Daten ähneln sich, sind aber nicht vom gleichen Typ. Nehmen wir Linien, Kreise und Rechtecke: sie alle haben einen einen Startpunkt. Man kann die drei Typen also zu einem Typen klassifizieren, der Gemeinsamkeiten der einzelnen Objekte zusammenfasst. Ein Datentyp GraphischesObjekt kann den Startpunkt beschreiben. Anschließend kann man Funktionen schreiben, welche entweder spezialisierte Instanzen ((Datensätze)) verlangen, weil sie z.B. die Fläche eines Kreises berechnen oder man kann eine Klasse abfragen, zum Beispiel das die Klasse GraphischeObjekt, wenn es keine Rolle spielt, ob es sich um eine Linie, einen Kreis oder ein Rechteck handelt. Die Klassifizierung hilft also Gemeinsamkeiten von Datenstrukturen zu beschreiben.