Unterschied zwischen Klassen und Funktionen?
Bond
- php
0 LazyWolf0 Stephan-W3Sol0 Guillermo
Moin
Ich verstehe trotz einiger Texte, die ich zu diesem Thema gefunden habe, den Unterschied zwischen class und function nicht.
Ich verstehe eigentlich überhaupt nicht wozu class gut sein soll.
Das wird genauso ausgeführt wie eine function, sonst sehe ich da keinen Vor- oder Nachteil.
Bitte klärt mich auf
bye, Bond
Ich verstehe trotz einiger Texte, die ich zu diesem Thema gefunden habe, den Unterschied zwischen class und function nicht.
class ist gut zur OOP (ObjektOrientierter Programmierung).
Kleines Beispiel:
Du hast in deinem Zimmer einen Lichtschalter. Und wenn du den bedienen kannst, dann kannst du auch alle anderen Lichtschalter bedieren. Selbst in anderen Häusern.
Dann hat ein Lichtschalter Beispielsweise einen BOOLischen Wert (entweder er ist an oder aus).
Warum kannst du alle Lichtschalter benutzen?
Sie sind alle Instanzen der Klasse "Lichtschalter". Und du kennst ihre Eigenschaften.
Also definierst du einmal die Klasse Lichtschalter mit dem BOOLischen Wert und kannst jetzt beliebig viele Instanzen davon erstellen. Den Lichtschalter bei dir im Zimmer, im Flur, in der Küche.
Und auf die Variablen dieser Instanzen greifst du dann zu.
Also ist eine Klasse eine theoretische Beschreibung von irgendwas. :-)
Farewell.
LazyWolf
Hallo Bond,
von welcher Programmiersprache redest Du denn? Die Auffassungen von Klassen, Objekten und Methoden sind da nämlich durchaus unterschiedlich.
Wenn Du Flash MX / Actionscript meinst, so hast Du weitestgehend recht, aber z.B. bei C++ oder besser Smalltalk ist das Konzept der Objekt-Orientierung wesentlich tiefgreifender:
Eine Klasse beschreibt sowohl Datentüpen als auch Funktionen (bel. viele) die auf die Daten angewandt werden können. Ferner gibt es i.d.R. immer einen Constructor zur Erstellung eines Objektes aus der Klasse sowie einen Destruktor zum löschen des Objektes aus dem Speicher. Und weil das noch nicht genug ist, kann eine Klasse von einer anderen alles vererbt bekommen und dabei Teile erweitern oder überschreiben ....
Da gibt es tonnenweise Bücher dazu und in einem so kurzen Posting ist das wohl auch nicht zu erklären. Falls Du Dich mit Java beschäftigst, kann ich Dir folgendes Buch empfehlen:
"Sprechen Sie Java? Eine Einführung in das systematische Programmieren." von Hans Mössenböck (bei Amazon 29,-Euro)
Das Ding ist gerade 2003 in neuer Auflage erschienen und erklärt weniger die eigentliche Sprache Java, dafür aber umso mehr die ganzen Mechanismen, Zusammenhänge und halt auch die Konzepte hinter der Objekt-Orientierung.
Stephan
Hallo,
Das Stichwort für Klassen lautet Vererbung. Eine klassische Sprache, die Vererbung einsetzt ist Java. PHP kann es neuerdings auch, soweit ich weiß, jedoch ist es nicht speziell dafür konzipiert. Hier eine grobe Beschreibung wie es in Java geht (für PHP weiß ich es nicht, ich vermute aber Analogie)
Beispiel:
Du erstellst eine Klasse Auto. Diese hat bestimmte Eigenschaften (Farbe, Größe, Gewicht, fahren(geschwindigkeit)).
Nun kannst Du die Instanz Porsche der Klasse Auto erzeugen:
Auto Porsche
(vgl.: int Zahl)
Porsche.Farbe=rot,
Porsche.Größe=5 Meter,
Porsche.Gewicht=1 Tonne.
Mit Porsche.fahren(100km) lässt Du Deine Instanz 100km schnell fahren.
Der Porsche erbt also die im Auto ganz allgemein festgelegten Eigenschaften des Autos. Er gehört also zur Klasse der Autos.
Beispiel2:
Wenn Du ein Spiel programmierst, kannst Du zum Beispiel eine Klasse "Level" erstellen. Diese hat die Eigenschaften Spielfeld (Array[10][10]), Hintergrundfarbe, Figur bewegen, etc.
Nun kannst Du zehn verschiedene Level instanzieren, denen Du ein spezifisches Spielfeld, eine Hintergrundfarbe zuordnest und Du kannst Deine Spielfigur auf dem Feld bewegen.
Ist es klar geworden? Habe ich alles richtig erklärt?
Grüße
Guillermo
Hallo,
Das Stichwort für Klassen lautet Vererbung.
nur daß es Klassen schon lange vor dem Konzept der Vererbung gab.
Ursprünglich (in ANSI C) ist eine Klasse nichts anderes als eine Zusammenfassung von Variablen, mit dem einzigen Unterschied zu struct, daß die Members von struct defaultmäßig public sind, die von class sind defaultmäßig private.
Gruß,
KonRad -