Objektorientierte Programmiersprachen



Ähnliche Dokumente
Objektorientierte Programmierung OOP

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

3. Konzepte der objektorientierten Programmierung

OO Softwareentwicklung

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Vorkurs C++ Programmierung

How to do? Projekte - Zeiterfassung

Programmieren in Java

Prinzipien Objektorientierter Programmierung

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Vererbung & Schnittstellen in C#

Objektorientierte Programmierung

Archiv - Berechtigungen

Zeichen bei Zahlen entschlüsseln

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Übungen zur Softwaretechnik

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Unified Modeling Language (UML)

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Programmiersprachen und Übersetzer

Urlaubsregel in David

Objektorientierte Programmierung. Kapitel 12: Interfaces

macs Support Ticket System

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

teischl.com Software Design & Services e.u. office@teischl.com

Einführung in die Java- Programmierung

Inhalt. meliarts. 1. Allgemeine Informationen Administration Aufruf Das Kontextmenü Vorlagen...

Objektorientierte Programmierung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

O UTLOOK EDITION. Was ist die Outlook Edition? Installieren der Outlook Edition. Siehe auch:

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

2. Negative Dualzahlen darstellen

Tevalo Handbuch v 1.1 vom

Use Cases. Use Cases

Klassenbeziehungen & Vererbung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Dokumentation Typo3. tt - news - Nachrichtenmodul

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

ARCO Software - Anleitung zur Umstellung der MWSt

Kostenstellen verwalten. Tipps & Tricks

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5.2 Neue Projekte erstellen

Softwaretechnik (Allgemeine Informatik) Überblick

Lehrer: Einschreibemethoden

Richtlinien für das Design und das Bestellen von Nutzen für Leiterplatten im Pool

Microsoft Office 365 Kalenderfreigabe

Aufbau des CariNet 2.0 Was ist CariNet?

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Updatebeschreibung JAVA Version 3.6 und Internet Version 1.2

Einführung in die Programmierung

GetName(), GetName(), GetGeschlecht() und AelterWerden().

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

Updatehinweise für die Version forma 5.5.5

Kapitalerhöhung - Verbuchung

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Benutzerverwaltung Business- & Company-Paket

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

SWE5 Übungen zu Software-Engineering

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

SEPA-Umstellungshilfe für die VR-NetWorld Software

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Leichte-Sprache-Bilder

Erklärung zum Internet-Bestellschein

Erstellen einer in OWA (Outlook Web App)

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

e LEARNING Kurz-Anleitung zum Erstellen eines Wikis 1. Wiki erstellen

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

Anbindung Borland CaliberRM

Berechtigungsgruppen TimeSafe Leistungserfassung

Bauteilattribute als Sachdaten anzeigen

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Grundfunktionen und Bedienung

BEISPIELKLAUSUR Softwareentwicklung:

5. Abstrakte Klassen

1 Mathematische Grundlagen

Step by Step Webserver unter Windows Server von Christian Bartl

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

Beschaffung mit. Auszug aus dem Schulungshandbuch: Erste Schritte im UniKat-System

Java: Vererbung. Teil 3: super()

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Transkript:

Objektorientierte Programmiersprachen 1960 Algol 1970 Simula Pascal 1980 Smalltalk C Ada 1990 C++ Eiffel Eine ovale Box symbolisiert eine objektorientierte Programmiersprache. Eine rechteckige Box steht für eine nicht-objektorientierte Programmiersprache. c MM Joachim Lammarsch, Rothenberg (o00010) 1

Objekt Ein Objekt ist eine Software-Einheit, die Datenelemente (Attribute) und die auf ihnen anwendbare Operationen (Methoden) zusammenfaßt. Die Werte der Datenelemente können jederzeit variiert werden. Sie bilden den veränderlichen Zustand eines Objekts. Methoden realisieren die auf ein Objekt anwendbare Operationen. Sie bilden das Verhalten eines Objekts. Objekte modellieren konkrete und abstrakte Einheiten aus dem Anwendungsbereich. c MM Joachim Lammarsch, Rothenberg (o00020) 2

Beispiel für Attribute Zahlen Zeichenketten Graphische Figuren Listen Prozesse Angestellte Aufträge Fahrzeuge... c MM Joachim Lammarsch, Rothenberg (o00020) 3

Beispiel für Methoden addieren, subtrahieren multiplizieren, dividieren verketten, aufteilen zeichnen, vergrößern starten, stoppen einstellen, entlassen einsortieren, bearbeiten parken, reparieren... Nachdem man die Attribute und Methoden festgelegt hat, kann man sie zu den benötigten Objekten kombinieren. c MM Joachim Lammarsch, Rothenberg (o00020) 4

Beispiel für Objekte Das Objekt Datum Zu diesem Objekt existieren beispielsweise folgende Attribute: Tag Monat Jahr und man könnte nachfolgende Methoden anwenden: Gebe aus Ändere datum Differenz tage Datum morgen c MM Joachim Lammarsch, Rothenberg (o00022) 5

Das Objekt Person Zu diesem Objekt existieren beispielsweise folgende Attribute: Name Geburtsdatum Familienstand Adresse und man könnte nachfolgende Methoden anwenden: Ändere namen Ändere anschrift Ändere familienstand Berechne alter c MM Joachim Lammarsch, Rothenberg (o00023) 6

Nachrichten als Mittel der Interaktion Objekte kommunizieren ausschließlich durch Zusendung von Nachrichten. Eine Nachricht ist eine Aufforderung an ein Objekt, eine Operation mit den in der Nachricht angegebenen Parametern durchzuführen. Sie setzt sich aus drei Teilen zusammen: Name des Empfängerobjekts Name der Methode, die ausgeführt werden soll Gegebenenfalls weitere Übergabeparameter für die Methode Eine Nachricht kann einen einfachen Wert oder ein Objekt zurückgeben. Nachrichten können mit Prozeduraufrufen verglichen werden. c MM Joachim Lammarsch, Rothenberg (o00030) 7

Beispiel Sender Datum 31.12.1995 Nachricht Hugo Schmidt Berechne alter 31.12.1995 Empfänger Person Hugo Schmidt c MM Joachim Lammarsch, Rothenberg (o00030) 8

Verbergen von Informationen Die Interna eines Objekts bleiben durch zwei Maßnahmen verborgen: Datenkapselung Trennung von Spezifikation und Implementierung einer Methode Datenkapselung Die inneren Daten eines Objekts sind nach außen nicht sichtbar. Sie können nur durch die Methoden des eigenen Objekts gelesen und verändert werden. Trennung Bei der Trennung der Spezifikation und der Implementierung einer Methode kennt der Sender einer Nachricht nur die Methodenschnittstelle. Die Implementierung bleibt vor ihm verborgen. c MM Joachim Lammarsch, Rothenberg (o00035) 9

Das Verbergen der Objektinterna Das Verbergen der Objektinterna unterstützt die Datensicherheit und die Änderungsfreundlichkeit. Datenelemente können nicht direkt von anderen Objekten verändert werden. Es reicht aus, wenn die Methoden des eigenen Objekts die Richtigkeit der Daten sicherstellen, da nur sie auf die Daten zugreifen. Andere Objekte brauchen nichts über die manchmal komplexen internen Datenstrukturen zu wissen, was die Programmierung vereinfacht. Solange sich die Methodenschnittstellen nicht ändern, haben Änderungen in den internen Datenstrukturen keine Auswirkungen auf die restlichen Objekte. Solange sich die Methodenschnittstellen nicht ändern, haben Änderungen bei den Methodenimplementierungen keine Auswirkungen auf das Restsystem. c MM Joachim Lammarsch, Rothenberg (o00036) 10

Gleichartigkeit von Objekten Oft sind sich Objekte einander so ähnlich, daß sie sich nur in ihren Attributwerten unterscheiden. Ihre Attribute und Methoden sind gleich und brauchen deshalb nur einmal beschrieben zu werden. Beispiel Datum 28.2.1993 Attribut: Tag 28 Monat 2 Jahr 1993 Methode: Gebe aus Ändere datum Differenz tage Datum morgen c MM Joachim Lammarsch, Rothenberg (o00040) 11

Datum 31.12.1994 Attribut: Tag 31 Monat 12 Jahr 1994 Methode: Gebe aus Ändere datum Differenz tage Datum morgen Datum 22.5.1995 Attribut: Tag 22 Monat 5 Jahr 1995 Methode: Gebe aus Ändere datum Differenz tage Datum morgen c MM Joachim Lammarsch, Rothenberg (o00040) 12

Klassen und Instanzen Eine Klasse ist die statische Beschreibung gleichartiger Objekte. Die Beschreibung umfaßt die Attribute und Methoden der Objekte. Attribut: Name und Typ Methode: Schnittstelle und Implementierung Sie dient als Schablone zur Erzeugung von Objekten. Diese Objekte werden Instanzen der Klasse genannt. Die Instanzen einer Klasse besitzen alle die gleichen Attribute und Methoden. Die Attribute und Methoden sind einmal in der Klasse definiert. Sie können sich aber in ihren Attributwerten unterscheiden. Jedes Objekt ist Instanz genau einer Klasse. c MM Joachim Lammarsch, Rothenberg (o00045) 13

Objektorientiertes Programmsystem Die Klassen bilden den statischen Teil eines objektorientierten Programmsystems. Objektorientiertes Programm: Strukturierte Menge von Klassen Objektorientierte Programmierung: Definition der Klassen sowie Implementierung der Methoden Die Instanzen bilden den dynamischen Teil eines objektorientierten Programmsystems. In einem ablaufenden Programm werden Instanzen erzeugt und wieder vernichtet. Der Programmablauf ist charakterisiert durch eine Anzahl von miteinander interagierenden Instanzen, die sich Nachrichten zusenden. Die Empfänger einer Nachricht reagieren durch Ausführung von Methoden. c MM Joachim Lammarsch, Rothenberg (o00050) 14

Gleichartigkeit von Klassen Ähnliche Klassen besitzen oft gleiche Attribute und Methoden, die in jeder Klasse getrennt definiert werden. Klasse Arbeiter Attribute Name Adresse Arbeitszeit Stundenlohn Urlaub Klasse Vertreter Attribute Name Adresse Arbeitszeit Stundenlohn Verkäufe Kommission Methoden Drucke anschrift() Berechne gehalt() Methoden Drucke anschrift() Berechne gehalt() c MM Joachim Lammarsch, Rothenberg (o00068) 15

Klasse Manager Attribute Methoden Name Drucke anschrift() Adresse Berechne gehalt() Gehalt c MM Joachim Lammarsch, Rothenberg (o00068) 16

Vererbung Klassenhierarchie Die Klassen werden in einer Hierarchie von Ober- und Unterklassen angeordnet. Oberklassen definieren die Gemeinsamkeiten ihrer Unterklassen. Vererbung Die Oberklassen vererben ihre Eigenschaften (Attribute und Methoden) an ihre Unterklassen. In den Unterklassen können weitere Eigenschaften hinzugefügt werden. Vererbte Methoden können in der Unterklasse redefiniert werden. Bemerkung Es werden keine Objekte vererbt. c MM Joachim Lammarsch, Rothenberg (o00070) 17

Variationen der Vererbung Mehrfachvererbung Eine Klasse kann von mehreren Oberklassen erben. Namenskonflikte müssen aufgelöst werden. Selektive Vererbung Nicht alle Attribute und Methoden einer Klasse werden weitervererbt. Selektiver Export geerbter Methoden Die Sichtbarkeit von geerbten Methoden wird in der Unterklasse für andere Klassenbenutzer eingeschränkt. c MM Joachim Lammarsch, Rothenberg (o00075) 18

Vorteile Das Vererbungskonzept gestattet es, gemeinsame Eigenschaften von Klassen einmal weiter oben in der Klassenhierarchie zu definieren und an alle Unterklassen weiterzuvererben. Das führt zu folgenden Vorteilen: Der Implementierungsaufwand reduziert sich, da nur noch die Unterschiede zu den Funktionalitäten der Oberklassen programmiert werden müssen. Änderungen in Oberklassen sind für alle Unterklassen gültig und brauchen nicht mehrfach nachgezogen werden. Einfaches Hinzufügen neuer Klassen durch Unterklassenbildung. Bestehende Klassen werden nicht kopiert und nicht verändert. Natürlichere Modellierung der Anwendungswelt durch Generalisierung und Spezialisierung. Das System wird überschaubarer und leichter verständlich. Wiederverwendung von Klassenbibliotheken und eigener Klassen. c MM Joachim Lammarsch, Rothenberg (o00080) 19

Polymorphismus und Bindung Polymorphismus Polymorphismus ist die Fähigkeit einer Variablen, auf Objekte unterschiedlicher Klassen verweisen zu können. Die Klasse der Variablen legt fest, welche Methodenaufrufe zulässig sind. Die Objekte müssen Instanzen von Unterklassen der Variablenklasse sein. Die Klassenzugehörigkeit der Objekte kann erst bei Laufzeit ermittelt werden. Die Variablenklasse kann auch eine abstrakte Klasse sein. Dynamisches Binden Die Zuordnung einer Methodenimplementierung zu einem Methodenaufruf während der Laufzeit eines Programms wird als dynamisches Binden bezeichnet. Sie wird automatisch vom Laufzeitsystem ausgeführt. c MM Joachim Lammarsch, Rothenberg (o00085) 20

Vorteile Die Vorteile des Polymorphismus und dynamischen Bindens sind: Es sind keine Datentypunterscheidungen im Code zur Auswahl der richtigen Methode notwendig. Die sichere Auswahl der richtigen Methode in Abhängigkeit des jeweiligen Objekttyps ist durch das Laufzeitsystem gegeben. Beim Hinzufügen neuer Methoden ist der Änderungsaufwand im bestehenden Code minimal. Vermeidung von Namensexplosion Nachteile Kleinere Einbußen in der Speicher- und Laufzeiteffizienz Das Verfolgen der aufgerufenen Methoden wird schwieriger. c MM Joachim Lammarsch, Rothenberg (o00086) 21

Der Zugriffsschutz protected Bisherige Zugriffsschutzarten public Elemente können von den Elementfunktionen der eigenen Klasse und von externen Funktionen benutzt werden private Elemente dürfen nur von den Elementfunktionen der eigenen Klasse benutzt werden Dritte Zugriffsschutzart protected Elemente dürfen nur von den Elementfunktionen der eigenen Klasse und von den Elementfunktionen der abgeleiteten Klassen benutzt werden. Der Zugriffsschutz protected ermöglicht eine Unterscheidung von den Benutzern einer Klasse. Sie müssen sich an die public-schnittstelle halten und dürfen auf protected-elemente nicht zugreifen. c MM Joachim Lammarsch, Rothenberg (o00090) 22

den Erben (Ableitungen) einer Klasse. Sie erweitern die Klassenfunktionalität und dürfen deshalb auf weitere Klasseninterna zugreifen c MM Joachim Lammarsch, Rothenberg (o00090) 23

Vorteile Einfachere Implementierung der abgeleiteten Klassen Oft sind Erweiterungen von Basisklassen nur möglich, wenn der Zugriff auf bestimmte Klasseninterna erlaubt wird Bessere Laufzeiteffizienz Nachteile Die direkte Änderung von geerbten Elementen kann zu Inkonsistenzen führen. Die Erben sind für die Richtigkeit ihrer Änderungen verantwortlich. Änderungen von protected-elementen müssen in allen Ableitungen nachgezogen werden. c MM Joachim Lammarsch, Rothenberg (o00091) 24

Inhaltsverzeichnis c MM Joachim Lammarsch, Rothenberg (o00091) 25