Da ich mich jetzt etwas mit der Objektorientierten Programmierung beschäftige bin ich unweigerlich über Klassen gestolpert. Ich denke auch das ich mom ungefähr verstanden habe wie sie verwendet werden (also die Definiton und das erstellen eines Objekts). Auch den Unterschied zu einer Struktur oder dergleichen hab ich verstanden. Was ich aber leider nicht genau weiß: Für was braucht man Klassen? Mir würde mom kein Beispiel einfallen wo ich die sinnvoll verwenden kann. Hoffe ihr könnt mir da weiterhelfen. mfg Gernot
Klassen fungieren als Bausteine um ein Problem sinnvoll zu strukturieren. Das betrifft sowohl Daten als auch Funktionen, wobei Klassen als eine Art Container fungieren, die aus der Kombination Daten + Funktionen auf diesen Daten eine logische Einheit bilden. Die Weiterführung dieses Konzeptes bringt einen dann schnell zum Konzept der Vererbung: Eine Klasse implementiert eine bestimmte Funktionalität. Eine andere Klasse ist konzeptionell auf dieser Basisfunktionalität aufgebaut und spezialisiert diese für einen bestimmten Fall. Man spricht dann von einer 'Ist-ein' Beziehung. Ein PKW 'ist-ein' Kraftwagen. Eine Klasse PKW könnte man daher sinnvoll von einer Klasse Kraftwagen ableiten. Alles was ein Kraftwagen kann oder was ihn ausmacht, kann auch ein PKW. Aber er kann noch mehr, deswegen ist er ja ein PKW und kein Kraftwagen. > Für was braucht man Klassen? Mir würde mom kein Beispiel > einfallen wo ich die sinnvoll verwenden kann. Nimm irgendein Problem her. Dann bestimme alle für dieses Problem relevanten Hauptwörter. Die Chancen stehen gut, dass diese Hauptwörter heisse Kandidaten für jeweils eine Klasse sind.
Danke für die schnelle Antwort. D.h. also das man Klassen vor allem zur Übersichtlichkeit verwendet oder? Was ich noch fragen wollte: Sind Klassen auch in C oder nur in C++ definiert? Würde mich deswegen interessieren weil ich viel für µC programmiere.
Gernot wrote: > Danke für die schnelle Antwort. > > D.h. also das man Klassen vor allem zur Übersichtlichkeit verwendet > oder? Letztenendes geht es bei allen höheren Programmiersprachen darum den Entwicklungsprozess zu vereinfachen und Fehler (auch Designfehler) bereits im Vorfeld loszuwerden. Alle höheren Programmiersprachen sind Turing-komplett. Das bedeutet dass man mit ihnen alles berechnen kann was prinzipiell berechenbar ist. Es ist also nicht so, dass man mit einer Sprache etwas machen kann, was man mit einer anderen nicht kann. In ihrer Mächtigkeit sind all diese Programmiersprachen gleich. Nur gibt es Problemstellungen die man mit bestimmten Sprachen eleganter lösen kann als mit anderen. Und dann gibt es noch die Universalsprachen, wie C C++ Java C# Fortran Pascal ..., die sich auf keine spezielle Aufgabe konzentrieren und quasi für alles zu gebrauchen sind. Die einen haben vielleicht in einem bestimmten Teilbereich einen kleinen Vorteil andere wieder in anderen Teilbereichen. > > Was ich noch fragen wollte: Sind Klassen auch in C oder nur in C++ > definiert? Würde mich deswegen interessieren weil ich viel für µC > programmiere. C kennt keine Klassen. Auf einem µC ist das auch normalerweise nicht so schlimm. Objektorientiertes Programmieren spielt seine Vorteile eher bei größeren Projekten aus, wo es ein gutes Mittel ist, ein überschaubares System hochzuziehen, welches aus Komponenten besteht, die möglichst wenig voneinander abhängig sind und sich auf dubiose Weise gegenseitig beeinflussen. Klar kann man das auch ohne Klassen erreichen. Dann muss aber der Programmierer diszipliniert arbeiten während bei einem Klassenkonzept im Grunde der Compiler bereits auf die Einhaltung gewisser Regelungen pocht (pochen kann).
Hallo Karl Heinz,
>Für was braucht man Klassen?
Falls man eine Klasse instanziert, kann man nicht nur die Methoden
(=Unterprogramme) verwenden, sondern erhählt auch einen eigenen
Datensatz (der als Eigenschaften bezeichnet werden). Man könnte auch
sagen, eine eigene Zustandsmaschinen wurde erzeugt.
Schreibt man einen Server, bei dem sich ein Client anmelden kann besteht
die Möglichkeit, für jeden Client eine Instantzierung vom Server
vorzunehmen. Somit hat jeder Client individuelle Daten und diese müssen
nicht extra verwaltet werden.
Das ist ein Beispiel, bei dem die Objektorientierung das Programmieren
erleichtert. Der Grund ist, dass jede erzeugte Zustansmaschine in einem
beliebigen Zustand sein kann
Gruß
Fritz
> D.h. also das man Klassen vor allem zur Übersichtlichkeit verwendet > oder? Ja. > Was ich noch fragen wollte: Sind Klassen auch in C oder nur in C++ > definiert? Jein. C selbst definiert keine Klassen. Klassen und objektorientierte Programmierung generell sind aber eher ein sprachunabhängiges Konzept. Man kann auch in C objektorientiert programmieren, aber die Sprache selbst stellt dazu eben keine Hilfmittel bereit, d.h. man muß alles "zu Fuß" machen. In C++ sind bereits Sprachmittel für die objektorientierte Programmierung eingebaut, was diese einfacher und eleganter umsetzbar macht. > Würde mich deswegen interessieren weil ich viel für µC programmiere. So ziemlich alles, wofür es einen gcc gibt, gibt's auch g++.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.