ich finde
das java tutorial von sun eigentlich ganz gut. ist aber in englisch und auch sehr umfangreich...jedenfalls wird da (logischerweise) auch auf die
OOP eingegangen.
objekt-orientierte programmierung ist ein versuch die struktur von programmen noch stärker anzulehnen an die art und weise wie der mensch seine umwelt(-eindrücke) kathegorisiert (und abstrahiert).
das typische beispiel:
ein fahrzeug hat bestimmte
eigenschaften:
-es besitzt einen antrieb(motor)
-es hat räder
-es fährt/ es steht still (es hat eine geschwindigkeit)
...
und bestimmte möglichkeiten "sich zu
verhalten":
-beschleunigen/bremsen
-hupen
...
die eigenschaften werden durch
variablen repräsentiert.
das verhalten wird durch "
Methoden" beschrieben.
ein LKW ist ein fahrzeug. dass heißt, er besitzt alle eigenschaften und methoden eines fahrzeugs.
aber er ist ein spezielles fahrzeug, da er z.b. zusätzlich eine ladefläche besitzten kann.
auch ein PKW ist ein fahrzeug, aber ohne (grosse) ladefläche. er hat dafür aber mehr sitzplätze für personen.
LKW und PKW sind von FAHRZEUG
abgeleitet.
diese kathegorien nennt man Klassen. sie beschreiben ein objekt.
erweitert man die klasse FAHRZEUG um eine ladefläche, so erhält man die klasse (also die beschreibung) LKW.
die klasse FAHRZEUG selbst bleibt dabei aber unverändert.
diese klassen sind aber nur eine art bauplan (eben eine beschreibung). ein verwendbares fahrzeug muss erst "gebaut" werden.
man sagt dann, es wird eine
instanz der klasse FAHRZEUG erstellt.
eine instanz ist also ein nach einer bestimmten klasse erstelltes objekt.
der begriff objekt kann verwirren, weil er manchmal die
klasse (beschreibung) meint, und manchmal wiederum für eine
instanz der klasse verwendet wird.
entscheidend in der OOP ist, dass methoden immer auf den daten eines bestimmten objektes operieren, denn sie selbst gehören auch immer zu einem objekt. (einfach nur fahren geht nicht, man brauch irgend ein dingens dazu, welches fahren kann)
mal zum verständnis, auch wenn es streng genommen nicht korrekt ist:
klassen in der OOP ähneln etwas den strukturen in prozeduralen sprachen, aber letzere besitzten halt nur eigenschaften (felder).
methoden sind so ähnlich aufgebaut wie prozeduren/funktionen, und können auch parameter erwarten.
instanzen(objekte) von klassen(beschgreibungen) entsprechen in der prozeduralen programmierung nur variablen von einem bestimmten typ. (wenn man einen primitiven typ (oder eine struktur) hat, muss man ja auch erst eine variable davon deklarieren, um ihn nutzen zu können. der typ long beschreibt ja nur, dass er 4 byte platz brauch. aber die vier byte werden im RAM ja erst benutztbar wenn man eine variable vom typ long deklariert)
eine andere wichtige sache sind die zugriffsbestimmungen. in PB beispielsweise hat man die schlüsselwörter global, shared, protected, welche sich nur auf variablen beziehen. in der OOP gibt es auch zugriffskontrollen für methoden, also von wo aus eine methode aufgerufen werden darf. bestimmte eigenschaften und methoden eines objektes können "von aussen" unsichtbar/unerreichbar sein.
beispiel:
ein fahrzeug besitzt ein datum (singular von daten) namens
geschwindigkeit.
die methode
beschleunigen erhöht diese eigenschaft. aufruf:
auto.beschleunigen(10)
innerhalb der methode wird der wert von geschwindigkeit um 10 [km/h] erhöht.
(hier wird auch deutlich wie methoden mit objekten verknüpft sind, durch den punkt)
der fahrer hat sozusagen zugriff auf diese methode, er könnte auch direkt
auto.geschwindigkeit=auto.geschwindigkeit+10
ausführen. aber die fahrzeughersteller verhindern dies, denn es ist gefährlich und aufwendig für den fahrer, mit der hand unter die motorhaube zu greifen um die kurbelwelle zu drehen.
stattdessen stellen sie ihm die methode beschleunigen() zu verfügung (das gaspedal).
auf andere methoden wiederum, hat der fahrer wohlmöglich keinen zugriff. z.b. wird innerhalb der methode beschleunigen() eine andere methode namens
benzinZufuhrAufdrehen() aufgerufen. das stellt sicher, dass die innere verwaltung des objektes, von diesem selbst gestaltet wird und so weniger fehler passieren. (weder kann, noch will jeder der ein auto fährt, wissen, wie dieses von grund auf funktioniert). dieses prinzip von unterschiedlicher sichtbarkeit, nennt man Kapselung.
[weiter fortschreitend in den ebenen, könnte man zum beispiel sagen, dass ein speditions-leiter nicht unbedingt einen führerschein braucht. er muss nur wissen, wie er mit dem fahrer kommuniziert.]
usw
usw
[ich hoffe ich hab hier keinen mist erzählt, hab mich selber nur mal n bisschen mit java beschäftigt; ansonsten bitte ich drum mich zu korrigieren!]