Suchen und Finden

Titel

Autor

Inhaltsverzeichnis

Nur ebooks mit Firmenlizenz anzeigen:

 

Objektorientierte Programmierung - Das umfassende Handbuch

Objektorientierte Programmierung - Das umfassende Handbuch

Bernhard Lahres, Gregor Raýman, Stefan Strich

 

Verlag Rheinwerk Computing, 2021

ISBN 9783836283243 , 688 Seiten

5. Auflage

Format ePUB

Kopierschutz Wasserzeichen

Geräte

49,90 EUR

Für Firmen: Nutzung über Internet und Intranet (ab 2 Exemplaren) freigegeben

Derzeit können über den Shop maximal 500 Exemplare bestellt werden. Benötigen Sie mehr Exemplare, nehmen Sie bitte Kontakt mit uns auf.

Mehr zum Inhalt

Objektorientierte Programmierung - Das umfassende Handbuch


 

1.3    Was bietet dieses Buch (und was nicht)?


Objektorientierung ist eine Vorgehensweise, die den Fokus auf modulare Systeme legt. Dieses Modulprinzip legen wir in zweierlei Hinsicht auch diesem Buch zugrunde.

Zum einen sehen wir das Buch als einen Baustein, der beim Verständnis des Themas Objektorientierung eine zentrale Rolle spielt. Wir beschreiben, wie Sie Objektorientierung einsetzen können, um auf der Grundlage von zentralen Prinzipien beherrschbare und änderbare Software erstellen können. Wenn wir auf diesem Weg an Entwurfsmustern vorbeikommen, werden wir diese vorstellen und ihren Nutzen für den Entwurf oder die aktuelle Problemstellung erläutern.

Zum anderen bauen die Kapitel des Buches modular aufeinander auf. Ausgehend von abstrakten Prinzipien gehen wir immer weiter in die konkrete Anwendung der Objektorientierung. Diesen modularen Aufbau wollen wir in einer Übersicht kurz vorstellen.

1.3.1    Bausteine des Buches


Abbildung 1.1 stellt die einzelnen Kapitel als Bausteine in der Übersicht dar.

In Kapitel 2, »Die Basis der Objektorientierung«, stellen wir zunächst die grundlegenden Unterschiede der objektorientierten Vorgehensweise im Vergleich zur strukturierten Programmierung vor. Wir beschreiben dort auch im Überblick die Basismechanismen der Objektorientierung: Datenkapselung, Polymorphie und Vererbung.

Danach schließt sich Kapitel 3, »Die Prinzipien des objektorientierten Entwurfs«, an. Das Kapitel stellt die grundlegenden Prinzipien vor, die für den objektorientierten Ansatz entscheidend sind. In Abschnitt 1.1, »Was ist Objektorientierung?«, haben wir einen kleinen Dialog vorgestellt, in dem die grundlegenden Eigenschaften von objektorientierten Sprachen angesprochen werden. Genau wie die dort genannten Eigenschaften geben auch die Prinzipien der Objektorientierung einen Rahmen für eine bestimmte Art der Softwareentwicklung vor. Die Prinzipien sind zentral für das Vorgehen bei der Entwicklung von objektorientierter Software. Das Kapitel legt also die grundsätzliche Basis, ohne bereits detailliert auf Objekte, Klassen oder Ähnliches einzugehen.

Anschließend erläutern wir in Kapitel 4, »Die Struktur objektorientierter Software«, das Konzept von Objekten, Klassen und der darauf aufbauenden Möglichkeiten. Wir erläutern das Konzept der Klassifizierung und betrachten die Rolle der Klassen als Module. Den verschiedenen Arten, in denen Objekte untereinander in Beziehung stehen können, ist ebenfalls ein Teilkapitel gewidmet.

Abbildung 1.1    Modularer Aufbau der Kapitel

In Kapitel 5, »Vererbung und Polymorphie«, beschreiben wir, wie die Vererbung der Spezifikation – im Zusammenspiel mit der Fähigkeit der Polymorphie – Programme flexibel und erweiterbar halten kann. Wir gehen dabei auf die verschiedenen Varianten der Vererbung im Detail ein und stellen deren Möglichkeiten und Probleme vor. An Beispielen erläutern wir dabei auch, wie die Möglichkeiten der Polymorphie am besten genutzt werden können.

Kapitel 6, »Persistenz«, erklärt, wie Objekte in relationalen Datenbanken gespeichert werden können. In fast allen Anwendungen taucht die Notwendigkeit auf, dass Objekte persistent gespeichert werden müssen. Wir stellen die Abbildungsregeln für Vererbungsbeziehungen und andere Beziehungen zwischen Objekten und Klassen auf eine relationale Datenbank vor. Schließlich setzen wir diese Abbildungsregeln in Beziehung zu den verschiedenen Stufen der Normalisierung in einer relationalen Datenbank.

In Kapitel 7, »Abläufe in einem objektorientierten System«, beschreiben wir die Vorgänge innerhalb des Lebenszyklus von Objekten. Wir gehen detailliert auf die Erzeugung von Objekten ein und erläutern, wie Sie ein System erweiterbar halten, indem Sie möglichst flexible Methoden der Objekterzeugung einsetzen. Außerdem enthält das Kapitel Beschreibungen von Interaktionsszenarien, die sich häufig in objektorientierten Systemen finden. Der Abschluss des Objektlebenszyklus, der meist über den Mechanismus der Garbage Collection stattfindet, wird ebenfalls in diesem Kapitel erklärt.

In Kapitel 8, »Module und Architektur«, zeigen wir Beispiele dafür, wie objektorientierte Entwürfe in reale Systeme integriert werden. Wir stellen das Konzept von in der Praxis verwendeten Ansätzen wie Frameworks und Anwendungscontainern vor. Am Beispiel der Präsentationsschicht einer Anwendung erläutern wir, wie objektorientierte Verfahren die Interaktionen in einem System strukturieren können. Dazu erklären wir das Architekturmuster Model View Controller (MVC) und dessen Einsatzszenarien.

In Kapitel 9, »Aspekte und Objektorientierung«, stellen wir dar, wie sich eine Reihe von Einschränkungen der objektorientierten Vorgehensweise durch Aspektorientierung aufheben lässt. Wir erläutern, welche Beschränkungen der objektorientierten Vorgehensweise überhaupt zur Notwendigkeit einer aspektorientierten Sichtweise führen. Die Verwaltung von sogenannten übergreifenden Anliegen (engl. Crosscutting Concerns) ist mit den Mitteln der klassischen objektorientierten Programmierung nur sehr aufwendig zu realisieren. Bei Crosscutting Concerns handelt es sich um Anforderungen, die mit Mitteln der Objektorientierung nur klassen- oder komponentenübergreifend realisiert werden können.

Deshalb zeigen wir in diesem Kapitel verschiedene Möglichkeiten auf, Lösungen dafür in objektorientierte Systeme zu integrieren. Wir erläutern den Weg zu den aspektorientierten Lösungen und stellen diese anhand praktischer Beispiele vor.

Abgerundet wird unser Buch dann durch Kapitel 10, »Objektorientierung am Beispiel: eine Webapplikation in JavaScript«. Dort greifen wir am Beispiel einer Webanwendung eine ganze Reihe von Konzepten auf, die in den vorhergehenden Kapiteln erläutert wurden. Im Kontext einer einfachen, aber vollständigen Webanwendung auf Basis von JavaScript und darauf aufbauenden Frameworks stellen wir Schritt für Schritt vor, wie Geschäftslogik und Präsentationsschicht durch objektorientierte Vorgehensweisen klar voneinander entkoppelt werden. Dabei gehen wir auch darauf ein, durch welchen Aufbau ein Austausch von Teilen der Präsentationsschicht erleichtert wird.

Im Anhang werden wir die im Buch verwendeten Programmiersprachen jeweils mit einer Kurzreferenz vorstellen und Hinweise auf weitere Informationen geben.

1.3.2    Crosscutting Concerns: übergreifende Anliegen


Die beschriebenen Kapitel bauen in Form einer Modulstruktur aufeinander auf. Aber ähnlich wie bei der Strukturierung objektorientierter Software gibt es natürlich auch hier Themen, die übergreifend sind und sich nicht genau einem der Kapitel zuordnen lassen.

Im Folgenden gehen wir kurz darauf ein, welche Rolle diese weiteren Themengebiete spielen.

Unified Modeling Language

Die Unified Modeling Language (UML) hat sich mittlerweile als ein sinnvolles und weitverbreitetes Modellierungsmittel durchgesetzt. Wir werden die nach unserer Ansicht wichtigsten Darstellungselemente der UML anhand von Beispielen vorstellen. Dabei werden wir diese immer dann einführen, wenn die betreffende Modellierung für unser aktuell behandeltes Thema relevant wird. Wir verwenden die UML in der Regel auch zur Illustration von Strukturen und Abläufen.

Objektorientierte Analyse

Die objektorientierte Analyse betrachtet eine Domäne als System von kooperierenden Objekten. Obwohl objektorientierte Analysemethoden nicht unser zentrales Thema sind, werden wir diese immer dann heranziehen, wenn wir auf die Verbindung von Analyse und Design eingehen.

Entwurfsmuster

Entwurfsmuster (engl. Design Patterns) für den objektorientierten Entwurf wurden mit der Publikation »Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software« als Begriff geprägt. Die Autoren Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides führen dabei eine standardisierte Beschreibungsform für wiederkehrende Vorgehensweisen beim Entwurf guter objektorientierter Software ein.[ 1 ] Aufgrund von Umständen, die mit der Sortierung unseres Alphabets zusammenhängen, wird die Publikation meist mit Erich Gamma assoziiert.

Grundsätzlich sind solche Entwurfsmuster unabhängig davon, ob wir eine objektorientierte Vorgehensweise gewählt haben, da sie nur eine Schablone für gleichartige Problemstellungen sind. Allerdings hat sich in der Praxis gezeigt, dass bei Verwendung von objektorientierten Methoden diese Muster einfacher zu erkennen und besser zu beschreiben sind.

In der Folge ist eine ganze Reihe von unterschiedlichen Entwurfsmustern entstanden, die meisten mit Bezug auf objektorientierte Methoden. In der Kategorie...