Arbeiten mit .NET: OOP/ Einführung/ Der Vorteil von Objekten
Die objektorientierte Programmierung (OOP) hat sich im Laufe der letzten Jahre bei eigentlich allen Programmiersprachen durchgesetzt – nicht immer konsequent, aber jedenfalls prinzipiell. Bei .NET ist das durchgehend verwirklicht worden.
Wir wollen deshalb zunächst allgemein auf die Benutzung von Klassen und Objekten eingehen.
Beispiel: Ein Auto bauen und benutzen
[Bearbeiten]Carl Benz, Gottfried Daimler oder Adam Opel hatten noch einzelne Autos gebaut. Berta Benz hatte bei ihrer ersten Fernfahrt das (einzelne) Vorderrad direkt gelenkt. Spätestens seit Henry Ford werden Bau und Benutzung eines bestimmten Autos nicht mehr individuell, sondern einheitlich geregelt. Mit den Einzelheiten „hinter den Kulissen“ befassen sich weder die Bediener der Bänder in den Fabriken noch die Autofahrer. Dies ist u.a. die Folge davon, dass die Bedienung vereinheitlicht wurde.
Betrachten wir einen weltweit vertretenen Automobilkonzern mit Niederlassungen in Deutschland, Großbritannien und der Türkei. Die Konzernleitung plant ein neues 2-Liter-Modell, das in allen Ländern angeboten werden soll, aber natürlich auf die Bedingungen des jeweiligen Marktes angepasst. Wie wird der Konzern vorgehen?
- In jedem Land wird die Konstruktionsabteilung angewiesen, ein solches Auto zu entwickeln.
- Also wird in jedem Land ein solches Auto entwickelt.
- Dann wird in jedem Land eine neue Fabrik für die passenden Motoren und eine Fabrik für die Autos gebaut.
- Dann wird in jedem Land die Marketingabteilung in Gang gebracht.
- Und so weiter...
Das wäre offensichtlich vielfache Arbeit.
Entwicklung vereinheitlichen
[Bearbeiten]Wir wissen, dass höhere Stückzahlen zu niedrigeren Stückkosten führen; also sollte das neue Modell einheitlich für alle Länder entwickelt und gebaut werden. Deshalb wird der Konzern so vorgehen:
- Es wird eine gemeinsame Konstruktionsabteilung aus Vertretern aller Länder gebildet.
- Diese wird ein gemeinsames Auto entwickeln.
- Der Konstruktionsplan berücksichtigt Abweichungen für die einzelnen Länder: für Großbritannien die Rechtslenkung, für Deutschland nur zwei Sitze (weil sowieso keine Kinder mehr geboren werden), für die Türkei mit etwas größerem Kofferraum...
- Dafür wird eine gemeinsame Motorenfabrik gebaut, aber jedes Land erhält wegen der Abweichungen eine eigene Autofabrik.
- In jedem Land benutzt die jeweilige Marketingabteilung die spezielle Variante.
Mit diesem Verfahren besitzen wir bereits eine Reihe von Kenntnissen darüber, wie in der OOP gearbeitet wird:
- Die Konstruktionsabteilung liefert die Pläne:
Einheitlicher Basisplan |
⇒ | Abweichungen ableiten | ⇒ | Verschiedene Detailpläne |
- Die Motorenfabrik erzeugt einheitliche Motoren, also solche, die im Basisplan definiert sind.
- Die Autofabriken bauen verschiedene Autos, nämlich solche, die in den Detailplänen definiert sind.
- Die Marketingabteilungen erstellen verschiedene Aktionen, nämlich solche, die zu den Detailplänen passen.
Gemeinsame Nutzung der Ressourcen, also der Kenntnisse über die Pläne ist offensichtlich von Vorteil.
Informationen zu einem Auto
[Bearbeiten]- Woraus besteht ein Auto offensichtlich?
Beschreiben wir zunächst, was wir von einem Auto wissen: Es hat Lenkung, Sitze, Blinklicht usw. Dazu kommt unser spezieller 2-Liter-Motor. Außerdem müssen die Fabriken wissen, wie das Auto zusammengebaut werden soll: Nimm ein Chassis und montiere darauf Motor, Getriebe, Lenkung (links oder rechts). Baue dazu eine Sitzgruppe mit zwei oder vier Sitzen ein und hänge einen kleineren oder größeren Kofferraum an. Schließlich werden sämtliche Installationen und das Gehäuse angebaut.
Zu Informationen über ein Auto gehören also:
- Eigenschaften, die ein Auto beschreiben (genauer: die jedes Auto beschreiben)
- eine Konstruktionsanleitung
- Woraus besteht ein Auto außerdem?
Als Autofahrer sehen wir nichts davon, aber es enthält auch Bremsleitungen, Bremskolben bzw. Scheibenbremsen, Achsen, Stoßdämpfer usw. Zu Informationen über ein Auto gehören also zusätzlich die inneren Bestandteile
- Wozu wird ein Auto benutzt?
Bisher haben wir noch gar nicht davon gesprochen, dass wir mit einem Auto fahren wollen. Es gehören also auch Angaben dazu, was mit einem Auto gemacht werden kann (aber z.B. bei der Beschreibung einer Lokomotive irrelevant ist oder völlig anders benutzt wird):
- Türen öffnen, einsteigen und schließen
- Motor anlassen, beschleunigen und verzögern, lenken
- Blinklicht (einschl. Warnblinkleuchte), Radio und Navigation benutzen
Zur Beschreibung von Autos gehören also auch die Verfahren, für die es gedacht ist.
- Was passiert bei der Benutzung eines Autos?
Schließlich dürfen wir nicht vergessen: Um in eine Kurve zu fahren, drehen wir am Lenkrad, aber nicht an den Rädern. Zur Beschleunigung treten wir das Gaspedal, pumpen aber nicht den Kraftstoff durch die Leitung zum Motor. Mit einer Fernbedienung zur Zentralverriegelung drücken wir auf einen Knopf am Schlüssel, schließen aber nicht die Türen einzeln.
Zu Informationen über ein Auto gehören also auch Folgen von Handlungen:
- Wenn das Lenkrad gedreht wird, dann soll ... geschehen.
- Wenn auf das Gaspedal getreten wird, dann soll ... geschehen.
- Wenn die Fernbedienung des Schlüssels gedrückt wird, dann soll ... geschehen.
Wir können also sagen: Wenn etwas passiert, dann soll etwas anderes geschehen, also ausgeführt werden.
Aus den Plänen wird ein bestimmtes Auto
[Bearbeiten]All das sind allgemeine Informationen. Aber damit können wir auch in der Praxis etwas anfangen:
- In der Fabrik wird mit der Konstruktionsanleitung ein neues Auto gebaut.
- Dieses Objekt wird an einen Käufer übergeben.
- Der Käufer benutzt das Auto zum Einsteigen und Fahren.
- Über die Folgen seiner Handlungen denkt er nicht nach; es gehört sich einfach so.
Und am Schluss eines „Autolebens“ steht die Schrottpresse.
Bei unserem Beispiel müssen wir also auch unterscheiden zwischen „einem Auto“, also der allgemeinen Beschreibung des neuen Typs, und einem „bestimmten Auto“, dessen Lebenszeit wir betrachten können.
Übertragung auf die Programmierung
[Bearbeiten]Für alle diese Erläuterungen gibt es Entsprechungen in der Welt der OOP:
Begriff beim Beispiel | Beschreibung | OOP-Begriff | OOP-Beschreibung |
---|---|---|---|
Basisplan | alle Informationen für ein Auto | (Basis-) Klasse | Definition einer Klasse |
Detailplan | Informationen einer speziellen Variante, z.B. für Deutschland | Abgeleitete Klasse | Spezielle, ergänzende Definitionen |
Eigenschaften | Beschreibung von Einzelheiten | Eigenschaften | Beschreibung von Einzelheiten |
Konstruktionsanleitung | Arbeitsanleitung zum Bau | Konstruktor | Verfahren zum Erzeugen |
weitere Bestandteile | nicht sichtbare Einzelteile | Felder | Beschreibung nicht sichtbarer Teile |
Verfahren | was mit einem Auto gemacht werden kann | Methoden | was damit gemacht werden kann |
etwas passiert | das Auslösen einer Maßnahme | Ereignis | das Auslösen einer Maßnahme |
Folge von Handlungen | die danach erfolgte Maßnahme | EventHandler[1] | die dadurch ausgelöste Maßnahme |
eine Art von Auto | alle Informationen für diese Art | Klasse | Spezielle, ergänzende Definitionen dieser Art |
ein bestimmtes Auto | Ergebnis eines Baus | Objekt | Ergebnis eines Konstruktors |
Schrottplatz | ein bestimmtes Auto zerstören | Destruktor | ein bestimmtes Objekt zerstören |
Im nächsten Kapitel werden wir alle diese Begriffe mit einer beispielhaften Definition erläutern.
Vereinfachtes Programmieren
[Bearbeiten]So wie die Vereinheitlichung von Konstruktion und Bau auch die Benutzung der Autos erleichtert hat, gilt dies auch für die Welt der Programmierung. In der OOP wird ein Teil der Wirklichkeit – mit den dazugehörigen Eigenschaften, Verfahren und Ereignissen – als eine Klasse zusammengefasst; man sagt dazu „gekapselt“. Der Benutzer (und das ist in diesem Fall ein Programmierer) benutzt die Klasse als Ganzes: Er erzeugt ein Objekt, arbeitet damit und zerstört es nach Gebrauch.
Um die Einzelheiten kümmert er sich nicht; das hat derjenige, der die Klasse entwickelte, schon erledigt. Genauer: Die Einzelheiten dürfen ihn nicht interessieren. Er benutzt die Klasse nach den veröffentlichten Regeln („Schnittstelle“ genannt); was damit innerhalb der Klasse gemacht wird, regelt der Entwickler der Klasse unabhängig von der Benutzung.
Für die Arbeitspraxis bedeutet das:
- Aufgaben und Situationen, die wiederholt auftreten, werden getrennt in einer Klasse entwickelt.
- Eine Klasse kann an vielen Stellen verwendet werden.
- Eine Klasse kann für sich entwickelt und umfangreich getestet werden. Später wird sie einfach benutzt.
- Spätere Änderungen innerhalb der Klasse sind möglich, ohne dass das, was außerhalb der Klasse damit gemacht wird, davon beeinflusst wird.
- Ein Programm, das viele solcher Klassen benutzt, kann schneller und sicherer entwickelt werden, als wenn man alle Schritte einzeln und in jedem Programm neu entwickeln muss.
Das ist auch der entscheidende Vorteil von .NET: Diese umfangreiche Klassenbibliothek nimmt dem Entwickler sehr viel Routinearbeit ab. Er kann sich um die Logik seiner speziellen Anwendung kümmern.
Siehe auch
[Bearbeiten]Wikipedia hat einen Artikel zum Thema Objektorientierte Programmierung.
- Hinweise
- ↑ Es gibt den deutschen Begriff Ereignisbehandlungsroutine, der aber viel zu lang ist und deshalb gern vermieden wird.