OOAD - Objektmodell

Das Objektmodell visualisiert die Elemente in einer Softwareanwendung in Bezug auf Objekte. In diesem Kapitel werden die grundlegenden Konzepte und Terminologien objektorientierter Systeme untersucht.

Objekte und Klassen

Die Konzepte von Objekten und Klassen sind eng miteinander verbunden und bilden die Grundlage für ein objektorientiertes Paradigma.

Objekt

Ein Objekt ist ein reales Element in einer objektorientierten Umgebung, die eine physische oder konzeptionelle Existenz haben kann. Jedes Objekt hat -

  • Identität, die es von anderen Objekten im System unterscheidet.

  • Status, der die charakteristischen Eigenschaften eines Objekts sowie die Werte der Eigenschaften des Objekts bestimmt.

  • Verhalten, das von außen sichtbare Aktivitäten eines Objekts in Bezug auf Änderungen seines Zustands darstellt.

Objekte können entsprechend den Anforderungen der Anwendung modelliert werden. Ein Objekt kann eine physische Existenz haben, wie ein Kunde, ein Auto usw.; oder eine immaterielle konzeptuelle Existenz, wie ein Projekt, ein Prozess usw.

Klasse

Eine Klasse repräsentiert eine Sammlung von Objekten mit denselben charakteristischen Eigenschaften, die ein gemeinsames Verhalten aufweisen. Es gibt den Entwurf oder die Beschreibung der Objekte, die daraus erstellt werden können. Das Erstellen eines Objekts als Mitglied einer Klasse wird als Instanziierung bezeichnet. Das Objekt ist also eine Instanz einer Klasse.

Die Bestandteile einer Klasse sind -

  • Eine Reihe von Attributen für die Objekte, die aus der Klasse instanziiert werden sollen. Im Allgemeinen unterscheiden sich verschiedene Objekte einer Klasse in den Werten der Attribute. Attribute werden häufig als Klassendaten bezeichnet.

  • Eine Reihe von Operationen, die das Verhalten der Objekte der Klasse darstellen. Operationen werden auch als Funktionen oder Methoden bezeichnet.

Example

Betrachten wir eine einfache Klasse, Kreis, die den geometrischen Figurenkreis in einem zweidimensionalen Raum darstellt. Die Attribute dieser Klasse können wie folgt identifiziert werden:

  • x-Koordinate, um die x-Koordinate des Zentrums zu bezeichnen
  • y-Koordinate, um die y-Koordinate des Zentrums zu bezeichnen
  • a, um den Radius des Kreises zu bezeichnen

Einige seiner Operationen können wie folgt definiert werden:

  • findArea (), Methode zur Berechnung der Fläche
  • findCircumference (), Methode zur Berechnung des Umfangs
  • scale (), Methode zum Vergrößern oder Verkleinern des Radius

Während der Instanziierung werden Werte für mindestens einige der Attribute zugewiesen. Wenn wir ein Objekt my_circle erstellen, können wir Werte wie x-coord: 2, y-coord: 3 und a: 4 zuweisen, um seinen Zustand darzustellen. Wenn nun die Operation scale () für my_circle mit einem Skalierungsfaktor von 2 ausgeführt wird, wird der Wert der Variablen a zu 8. Diese Operation führt zu einer Änderung des Zustands von my_circle, dh das Objekt hat ein bestimmtes Verhalten gezeigt.

Kapselung und Verstecken von Daten

Verkapselung

Bei der Kapselung werden sowohl Attribute als auch Methoden innerhalb einer Klasse miteinander verbunden. Durch die Kapselung können die internen Details einer Klasse von außen ausgeblendet werden. Es ermöglicht den Zugriff auf die Elemente der Klasse von außen nur über die von der Klasse bereitgestellte Schnittstelle.

Ausblenden von Daten

In der Regel ist eine Klasse so konzipiert, dass auf ihre Daten (Attribute) nur mit ihren Klassenmethoden zugegriffen werden kann und sie vom direkten Zugriff von außen isoliert sind. Dieser Vorgang des Isolierens der Daten eines Objekts wird als Ausblenden von Daten oder Ausblenden von Informationen bezeichnet.

Example

Im Klassenkreis kann das Ausblenden von Daten integriert werden, indem Attribute von außerhalb der Klasse unsichtbar gemacht werden und der Klasse zwei weitere Methoden für den Zugriff auf Klassendaten hinzugefügt werden, nämlich:

  • setValues ​​(), Methode zum Zuweisen von Werten zu x-coord, y-coord und a
  • getValues ​​(), Methode zum Abrufen von Werten von x-coord, y-coord und a

Hier kann auf die privaten Daten des Objekts my_circle von keiner Methode direkt zugegriffen werden, die nicht in der Klasse Circle gekapselt ist. Der Zugriff sollte stattdessen über die Methoden setValues ​​() und getValues ​​() erfolgen.

Nachrichtenübermittlung

Jede Anwendung erfordert eine Reihe von Objekten, die auf harmonische Weise interagieren. Objekte in einem System können unter Verwendung der Nachrichtenübermittlung miteinander kommunizieren. Angenommen, ein System hat zwei Objekte: obj1 und obj2. Das Objekt obj1 sendet eine Nachricht an das Objekt obj2, wenn obj1 möchte, dass obj2 eine seiner Methoden ausführt.

Die Merkmale der Nachrichtenübermittlung sind -

  • Die Nachrichtenübertragung zwischen zwei Objekten ist im Allgemeinen unidirektional.
  • Die Nachrichtenübermittlung ermöglicht alle Interaktionen zwischen Objekten.
  • Das Übergeben von Nachrichten umfasst im Wesentlichen das Aufrufen von Klassenmethoden.
  • Objekte in verschiedenen Prozessen können an der Nachrichtenübermittlung beteiligt sein.

Erbe

Vererbung ist der Mechanismus, mit dem neue Klassen aus vorhandenen Klassen erstellt werden können, indem ihre Funktionen erweitert und verfeinert werden. Die vorhandenen Klassen werden als Basisklassen / Elternklassen / Superklassen bezeichnet, und die neuen Klassen werden als abgeleitete Klassen / Kindklassen / Unterklassen bezeichnet. Die Unterklasse kann die Attribute und Methoden der Oberklasse (n) erben oder ableiten, sofern die Oberklasse dies zulässt. Außerdem kann die Unterklasse ihre eigenen Attribute und Methoden hinzufügen und jede der Superklassenmethoden modifizieren. Vererbung definiert eine "ist - eine" Beziehung.

Example

Aus einer Klasse Säugetier kann eine Reihe von Klassen abgeleitet werden, wie Mensch, Katze, Hund, Kuh usw. Menschen, Katzen, Hunde und Kühe haben alle die unterschiedlichen Eigenschaften von Säugetieren. Darüber hinaus hat jedes seine eigenen Besonderheiten. Man kann sagen, dass eine Kuh ein Säugetier ist.

Arten der Vererbung

  • Single Inheritance - Eine Unterklasse leitet sich von einer einzelnen Superklasse ab.

  • Multiple Inheritance - Eine Unterklasse stammt aus mehr als einer Oberklasse.

  • Multilevel Inheritance - Eine Unterklasse leitet sich von einer Superklasse ab, die wiederum von einer anderen Klasse abgeleitet ist und so weiter.

  • Hierarchical Inheritance - Eine Klasse hat eine Anzahl von Unterklassen, von denen jede nachfolgende Unterklassen haben kann, die für eine Reihe von Ebenen fortgesetzt werden, um eine Baumstruktur zu bilden.

  • Hybrid Inheritance - Eine Kombination aus mehr- und mehrstufiger Vererbung, um eine Gitterstruktur zu bilden.

Die folgende Abbildung zeigt Beispiele für verschiedene Arten der Vererbung.

Polymorphismus

Polymorphismus ist ursprünglich ein griechisches Wort, das die Fähigkeit bedeutet, mehrere Formen anzunehmen. In einem objektorientierten Paradigma impliziert Polymorphismus die Verwendung von Operationen auf unterschiedliche Weise, abhängig von der Instanz, mit der sie arbeiten. Durch Polymorphismus können Objekte mit unterschiedlichen internen Strukturen eine gemeinsame externe Schnittstelle haben. Polymorphismus ist besonders effektiv bei der Implementierung der Vererbung.

Example

Betrachten wir zwei Klassen, Kreis und Quadrat, jede mit einer Methode findArea (). Obwohl der Name und der Zweck der Methoden in den Klassen identisch sind, ist die interne Implementierung, dh das Verfahren zur Berechnung der Fläche, für jede Klasse unterschiedlich. Wenn ein Objekt der Klasse Circle seine findArea () -Methode aufruft, findet die Operation den Bereich des Kreises ohne Konflikt mit der findArea () -Methode der Square-Klasse.

Verallgemeinerung und Spezialisierung

Generalisierung und Spezialisierung stellen eine Hierarchie von Beziehungen zwischen Klassen dar, wobei Unterklassen von Oberklassen erben.

Verallgemeinerung

Im Generalisierungsprozess werden die gemeinsamen Merkmale von Klassen kombiniert, um eine Klasse in einer höheren Hierarchieebene zu bilden, dh Unterklassen werden kombiniert, um eine verallgemeinerte Superklasse zu bilden. Es handelt sich um eine Art Beziehung. Zum Beispiel "Auto ist eine Art Landfahrzeug" oder "Schiff ist eine Art Wasserfahrzeug".

Spezialisierung

Spezialisierung ist der umgekehrte Prozess der Generalisierung. Hier werden die Unterscheidungsmerkmale von Objektgruppen verwendet, um spezielle Klassen aus vorhandenen Klassen zu bilden. Man kann sagen, dass die Unterklassen die spezialisierten Versionen der Superklasse sind.

Die folgende Abbildung zeigt ein Beispiel für Generalisierung und Spezialisierung.

Links und Assoziation

Verknüpfung

Ein Link stellt eine Verbindung dar, über die ein Objekt mit anderen Objekten zusammenarbeitet. Rumbaugh hat es als "physische oder konzeptionelle Verbindung zwischen Objekten" definiert. Über einen Link kann ein Objekt die Methoden aufrufen oder durch ein anderes Objekt navigieren. Ein Link zeigt die Beziehung zwischen zwei oder mehr Objekten.

Verband

Assoziation ist eine Gruppe von Verbindungen mit gemeinsamer Struktur und gemeinsamem Verhalten. Die Zuordnung zeigt die Beziehung zwischen Objekten einer oder mehrerer Klassen. Ein Link kann als Instanz einer Zuordnung definiert werden.

Grad eines Vereins

Der Grad einer Assoziation gibt die Anzahl der an einer Verbindung beteiligten Klassen an. Der Abschluss kann unär, binär oder ternär sein.

  • EIN unary relationship verbindet Objekte derselben Klasse.

  • EIN binary relationship verbindet Objekte zweier Klassen.

  • EIN ternary relationship verbindet Objekte von drei oder mehr Klassen.

Kardinalitätsverhältnisse von Assoziationen

Die Kardinalität einer binären Assoziation gibt die Anzahl der Instanzen an, die an einer Assoziation teilnehmen. Es gibt drei Arten von Kardinalitätsverhältnissen, nämlich -

  • One–to–One - Ein einzelnes Objekt der Klasse A ist einem einzelnen Objekt der Klasse B zugeordnet.

  • One–to–Many - Ein einzelnes Objekt der Klasse A ist vielen Objekten der Klasse B zugeordnet.

  • Many–to–Many - Ein Objekt der Klasse A kann vielen Objekten der Klasse B zugeordnet sein, und umgekehrt kann ein Objekt der Klasse B vielen Objekten der Klasse A zugeordnet sein.

Aggregation oder Zusammensetzung

Aggregation oder Zusammensetzung ist eine Beziehung zwischen Klassen, durch die eine Klasse aus einer beliebigen Kombination von Objekten anderer Klassen bestehen kann. Es ermöglicht die direkte Platzierung von Objekten im Hauptteil anderer Klassen. Aggregation wird als "Teil-von" - oder "hat-eine" -Beziehung bezeichnet, mit der Fähigkeit, vom Ganzen zu seinen Teilen zu navigieren. Ein Aggregatobjekt ist ein Objekt, das aus einem oder mehreren anderen Objekten besteht.

Example

In der Beziehung „ein Auto hat - einen Motor“ ist das Auto das gesamte Objekt oder das Aggregat, und der Motor ist ein „Teil“ des Autos. Aggregation kann bedeuten -

  • Physical containment - Ein Computer besteht beispielsweise aus Monitor, CPU, Maus, Tastatur usw.

  • Conceptual containment - Beispiel: Aktionär hat - einen Anteil.

Vorteile des Objektmodells

Nachdem wir uns nun mit den Kernkonzepten der Objektorientierung befasst haben, lohnt es sich, die Vorteile dieses Modells zu erwähnen.

Die Vorteile der Verwendung des Objektmodells sind:

  • Es hilft bei der schnelleren Entwicklung von Software.

  • Es ist leicht zu pflegen. Angenommen, ein Modul entwickelt einen Fehler, dann kann ein Programmierer dieses bestimmte Modul beheben, während die anderen Teile der Software noch aktiv sind.

  • Es unterstützt relativ problemlose Upgrades.

  • Es ermöglicht die Wiederverwendung von Objekten, Designs und Funktionen.

  • Es reduziert Entwicklungsrisiken, insbesondere bei der Integration komplexer Systeme.