www.mikrocontroller.net

Forum: PC-Programmierung Klassen - Sinn und Zweck


Autor: Gernot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gernot (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, Klassen gibt es nur in objektorientierten Programmiersprachen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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++.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.