Objektorientierte Softwareentwicklung



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

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

1 Mathematische Grundlagen

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Objektorientierte Programmierung OOP

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

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

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

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

Objektorientierte Konzepte und Notation in UML. Objekt Klasse Attribut Operation

5. Abstrakte Klassen

Unified Modeling Language (UML)

6.2 Scan-Konvertierung (Scan Conversion)

Klassendiagramm. (class diagram)

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

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Datenbanken. Erstellen des Semantischen Modells. Manuel Friedrich. Schiller-Gymnasium Hof

Arbeiten mit UMLed und Delphi

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

Datenbankmodelle 1. Das Entity-Relationship-Modell

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Datenbanken Kapitel 2

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Was man mit dem Computer alles machen kann

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Einführung in. Logische Schaltungen

Eigenwerte und Eigenvektoren von Matrizen

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Lösungsmethoden gewöhnlicher Differentialgleichungen (Dgl.)

7. Analyse-Phase: Datenmodellierung Software Engineering

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

So funktioniert das online-bestellsystem GIMA-direkt

4. BEZIEHUNGEN ZWISCHEN TABELLEN

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Musterlösungen zur Linearen Algebra II Blatt 5

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Einführung in die Java- Programmierung

Definition und Begriffe

Korrelation (II) Korrelation und Kausalität

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Kontakte Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

SWT MN Vorlesung Übungsblatt Hausaufgaben und Hörsaalübungen zum Themenbereich UML-Modellierung mit Rollen und OOA-Muster

AutoCAD Dienstprogramm zur Lizenzübertragung

Vorkurs C++ Programmierung

Statuten in leichter Sprache

Professionelle Seminare im Bereich MS-Office

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

Softwareentwicklungspraktikum Sommersemester Grobentwurf

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

Simulation LIF5000. Abbildung 1

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

Die Näherung durch die Sekante durch die Punkte A und C ist schlechter, da der Punkt C weiter von A entfernt liegt.

Objektorientierte Programmierung. Kapitel 12: Interfaces

So gehts Schritt-für-Schritt-Anleitung

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

Professionelle Seminare im Bereich MS-Office

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Die Bundes-Zentrale für politische Bildung stellt sich vor

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Lineare Gleichungssysteme

4. AuD Tafelübung T-C3

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Was ist Sozial-Raum-Orientierung?

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

Produktschulung WinDachJournal

BEISPIELKLAUSUR Softwareentwicklung:

Quadratische Gleichungen

Das Festkomitee hat die Abi-Seite neu konzipiert, die nun auf einem (gemieteten) Share Point Server

1 BEDIENUNGSANLEITUNG

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Zählen von Objekten einer bestimmten Klasse

7 Rechnen mit Polynomen

1 topologisches Sortieren

Primzahlen und RSA-Verschlüsselung

Kurzeinweisung. WinFoto Plus

Feiertage in Marvin hinterlegen

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Vorlesung "Software-Engineering"

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

Software-Engineering SS03. Zustandsautomat

2.1 Präsentieren wozu eigentlich?

Jederzeit Ordnung halten

Kulturelle Evolution 12

1. Kennlinien. 2. Stabilisierung der Emitterschaltung. Schaltungstechnik 2 Übung 4

Aufklappelemente anlegen

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

SWE5 Übungen zu Software-Engineering

Objektorientierte Programmierung

Handout 6. Entwicklung von Makros

Massenversand Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Papa - was ist American Dream?

Übung - Konfigurieren einer Windows 7-Firewall

Kreative Schreibtechnik Clustering

Sunet. Kurzanleitung. Schadenmeldung UVG

GS-Buchhalter/GS-Office 2015 Saldovorträge in folgenden Wirtschaftsjahren erfassen

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Transkript:

Objektorientierte Softwareentwicklung Objektorientierte Softwareentwicklung Smalltalk CLOS Ada 9 C++ Objektorientierte Softwareentwicklung Object Pascal Java Oberon-2 Frage: Die Bibliothek der Fachhochschule möchte eine Software entwickeln lassen, die es erlaubt Bestellungen, Ausleihe/Rückgabe und Mahnungen elektronisch zu verarbeiten. Wie gehen Sie vor? Ihre Antwort: Erkenntnis: komplexe Angelegenheit, mit divide et impera zu lösen (VHIT =Vom Hirn Ins Terminal funktioniert nicht) müssen abstrahieren Projektplanung mit Phasen notwendig Abstraktion Definition: Abstraktion = auf zufällige Einzelheiten verzichten, begrifflich zusammengefasste Darstellung (Duden) Abstraktion ist eine vereinfachte Beschreibung, welche 1. sich auf wichtige Eigenschaften konzentriert 2. unwichtige Eigenschaften weglässt Eine Abstraktion ist abhängig vom Standpunkt des Betrachters (bzw. Aufgabe der Applikation). Beispiel: Auto (zu abstrahierendes Objekt) 1. Abstraktion Spielzeugauto Obwohl das Spielzeugauto (Modellauto) nicht mal einen Motor aufweist, ist es für Kinder die damit spielen ein vollwertiges Auto, da das Spielzeugauto alle Eigenschaften aufweist, die für sie wichtig sind: man kann damit fahren, es parkieren, Unfälle bauen, es verkaufen usw. 2. Auto aus Sicht eines Autohändlers Wichtige Eigenschaften sind Marke, Modell, Farbe, Jahrgang, Neuwagen/Occasion, Marge, Neupreis, letztes Vorführdatum, Marktpreis 3. Auto aus Sicht des Automechanikers Wichtig ist letzter Ölwechsel, auszuführende Reparaturarbeiten Niklaus Mannhart, OO Softwareentwicklung 1/8

Phasen Analyse Design Implementierung = WAS = WIE = REALIESIERUNG Beispiel: Hausbau 1. Analyse (WAS): Der Architekt versucht herauszufinden, was wir für ein Haus wollen, wie viele Zimmer, welche Art von Zimmer, sonstige Räume wie Stube, Bad, Schwimmbad welchen Stil uns gefällt usw. 2. Design (WIE): In dieser Phase werden konkrete Baupläne gezeichnet. Es wird festgelegt welche Materialen wir benötigen, wie die Grundmauer aussieht usw. 3. Implementation (REALISIERUNG): Der Bauleute und der Bagger treffen ein und es entsteht das konkrete Haus gemäss Bauplan Analyse versucht Teil der realen Welt in einem Modell darzustellen (Abläufe, Anforderungen, Zusammenhänge usw.) hilft eine systematische Übersicht der realen Welt zu geben Vorsicht: Analyse beschäftigt sich nicht mit WIE das Modell realisiert werden kann! Das ist Sache der Designphase. UML (Unified Modeling Language) Ein Modell für die Abbildung der realen Welt ist die Uniform Modeling Language, abgekürzt UML. ist ein Standard ist eine Methode, welche allgemein benützt werden kann. Im Vordergrund stand jedoch die Informatik ist ein mächtiges Hilfsmittel für Analyse und spätere Phasen Objekt Ein Objekt ist eine Abstraktion von etwas Realem oder Erfundenem: Physische Entität Objekt Haus Konzeptionelle Entität Soll Haben Objekt Konto Software Konstrukt Objekt Stack Niklaus Mannhart, OO Softwareentwicklung 2/8

Ereignis Objekt Eheschliessung Eigenschaften von Objekten Jedes Objekt hat die folgenden drei wichtigen Eigenschaften: Status (Attribut): Verhalten (Methoden): Identität: aktueller Zustand aller Attribute und Beziehungen bestimmt, was das Objekt machen kann und was mit ihm gemacht werden kann. Eigenschaft die ein Objekt von anderen Objekten unterscheidbar macht, auch wenn diese Objekte zur gleichen Klasse gehören und gleichen Status haben. Beispiel: Konto KontoMannhart Anfangsbestand = 1000 aktueller Stand = 300 Methoden: geldabheben(betrag) kontodrucken() Klassen Aus ihren Programmierkenntnissen von C++ wissen Sie, das eine Variable verschiedene Werte besitzen kann. Zu jeder Variablen gehört ein Datentyp. Beispiel: int i; i = 5; i ist die Variable mit dem Wert 5, der dazugehörende Typ ist int. Ähnlich verhält es sich mit Objekten. Objekte können verschiedene Zustände besitzen und gehören zu einem Datentyp. In der Objektorientierten Sprache wird nicht mehr von Datentyp oder Typ gesprochen, sondern von Klasse. Beispiel: IntStack st1, st2; IntStack ist der Klassenname (Typ) und st1, st2 sind Objekte (Variablen). Beispiel Kuh Kuh Klasse Instanz von Elsa Vollmich Susi Milka Sarah von der Alm Objekte Niklaus Mannhart, OO Softwareentwicklung 3/8

Definition von Klasse: Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte. Definition von Objekt: Ein Objekt ist eine zur Ausführungszeit vorhandene und für ihre Attribute Speicher allozierte Variable, die sich entsprechend dem Protokoll ihrer Klasse verhält. UML Notation Klasse Klassenname Attributname Attribut-Typ Operationen Kreis radius {radius > 0} mittelpunkt: Point = (10, 10) anzeigen() entfernen() setposition(pos: Point) setradius(neuerradius) Zusicherung Initialwert Parameter (Name: Typ = Initalwert) Weggelassen werden implizite Methode wie setzen und lesen von Attributen usw. UML Notation Objekt Exemplarname Attributnamen einkreis: Kreis radius = 25 mittelpunkt: Point = (10, 10) Klassenname Attributwerte Abstraktion und Klassifikation Realität Objekte Klasse Max Müller Person Vorname Nachname Ida Huber Abstraktion Klassifikation Wichtig: Abstraktion und Klassifikation wird meistens gleichzeitig gemacht. Niklaus Mannhart, OO Softwareentwicklung 4/8

IsA Beziehung Wir möchten eine Software schreiben, mit der wir auf dem Bildschirm 2 dimensionale geometrische Figuren zeichnen können. Wir unterstützen in der ersten Version folgende Figuren: Kreis, Dreieck und Rechteck. Die dazugehörenden Klassen werden in UML wie folgt dargestellt: Kreis bb: BoundingBox radius {radius > 0} setradius(neuerradius) Dreieck bb: BoudingBox a {c-b < a < b+c} b {a-c < b < a+c} c {a-b < c < a+b} seta(neua) setb(neub) setc(neuc) Rechteck bb: BoundingBox a {a > 0} b {b > 0} seta(neua) setb(neub) In den drei Klassen kommen die Attribute pos (Position), bb (Bounding Box) und die Methoden, und vor. Es stellt sich die Frage, ob es nicht Sinn macht, diese in einer Klasse von Geometrische Figur zusammenzufassen und eine Beziehung zu Kreis, Dreieck und Rechteck herzustellen. Ein Kreis ist eine geometrische Figur. Ein Dreieck und Rechteck sind ebenfalls geometrische Figuren. Von der Klasse geometrische Figur betrachtet, sind Kreis, Rechteck und Dreieck eine Spezialisierung von geometrische Figur. Von der Klasse Kreis, Dreieck und Rechteck betrachtet ist die Klasse geometrisches Figur eine Generalisierung. In der objektorientierten Welt wird die Klasse geometrische Figur Oberklasse (engl. Superclass) von der Klasse Kreis, Dreieck und Rechteck genannt. Die Klassen Kreis, Dreieck und Rechteck heissen Unterklasse (engl. Subclass) von der Klasse geometrische Figur. Eine ist Beziehung wird IsA Beziehung (Generalisierung Spezialisierung) genannt. Sämtliche Unterklassen weisen alle Eigenschaften der Oberklasse auf und eventuell kommen neue dazu. Dies wird auch Vererbung genannt. Niklaus Mannhart, OO Softwareentwicklung 5/8

Oberklasse (engl. Superclass) geometrische Figur bb: BoundingBox Generalisierung Spezialisierung Kreis radius {radius > 0} setradius(neuerradius) Dreieck a {c-b < a < b+c} b {a-c < b < a+c} c {a-b < c < a+b} seta(neua) setb(neub) setc(neuc) a {a > 0} b {b > 0} seta(neua) setb(neub) Rechteck Unterklasse (engl. Subclass) Abstrakte Klassen Im obigen Beispiel haben wir die Klasse geometrische Figur eingeführt, welche die Position pos, die Bounding Box bb als Attribute und die Methoden, und aufweist. Was ist nun ein Objekt von dieser Klasse? Ein Punkt? Was wäre die Bounding Box des Punktes? Wir stellen 2 dimensionale Figuren dar und der Punkt ist 1 dimensional. Es macht somit keinen Sinn Objekte von der Klasse geometrisches Figur zu erzeugen. Von der Klasse geometrische Figur gibt es keine Objekte! Eine solche Klasse nennt man abstrakte Klasse. Notation: geometrische Figur {abstract} bb: BoundingBox Zusicherung, dass gemometrische Figur abstrakt ist. Assoziation Objekte können in Beziehungen zu anderen Objekten stehen. Beispiel: Fenster geometrische Figur 1 stellt dar 0..* Fenster geometrische Figur Ein geometrisches Objekt wird in einem Fenster dargestellt. Ein Fenster stellt 0 oder beliebig viele geometrische Figuren dar. Niklaus Mannhart, OO Softwareentwicklung 6/8

Beispiel: Kunde Artikel Kunde name adresse 0..* bestellt 0..* Artikel bezeichnung preis Ein Kunde bestellt 0 oder beliebig viele Artikel. Ein Artikel kann durch mehrere Kunden bestellt werden. bestellt ist der Name der Assoziation. Beispiel: Person Nachbar Person name adresse 0..* nachbarn Eine Person hat (kennt) 0 oder beliebig viele Nachbarn. nachbarn ist der Name der Assoziation. In der Regel ist eine Assoziation symmetrisch. D.h. die beteiligten Klassen bzw. Objekte kennen sich grundsätzlich gegenseitig. Falls dies nicht nötig ist, spricht man von einer gerichteten Assoziation. Definition: Eine Assoziation ist eine Beziehung zwischen verschiedenen Objekten einer oder mehreren Klassen. Aggregation Has Beziehung Eine Aggregation ist eine besondere Variante der Assoziation. Es handelt sich um eine Beziehung zwischen Klassen, jedoch mit der Besonderheit, dass die Klassen zueinander in Beziehung stehen, wie ein ganzes zu seinen Teilen. Beispiel: Segelboot Segelboot = Rumpf + Segel + Motor Beispiel Firma Unternehmen Abteilung Mitarbeiter besteht aus besteht aus 1 1..* 1 1..* Eine Firma besteht (hat) eine Abteilung. Die Abteilung besteht (hat) Mitarbeiter Aus den obigen Beispielen geht hervor, dass ein Objekt aus anderen Objekten besteht, diese hat. Diese hat Beziehung nennt man Has. Niklaus Mannhart, OO Softwareentwicklung 7/8

Beispiel Verein Verein 1..* mitglieder 3..* Mitglied Ein Verein besteht aus mindestens 3 Mitgliedern. Ein Mitglied gehört zu mindestens 1 Verein. mitglieder ist der Name der Has Beziehung Komposition Beispiel: Rechnung Rechnung hat 1 1..* Rechnungsposition Eine Rechnung hat mindestens eine Rechnungsposition. Eine Rechnungsposition gehört zu einer Rechnung. Nehmen wir an, wir löschen eine Rechnung. Was geschieht nun mit den Rechnungspositionen? Diese müssen auch gelöscht werden, denn eine Rechnungsposition gehört genau zu einer Rechnung. Da diese nicht mehr existiert muss diese ebenfalls gelöscht werden. Eine solche Beziehung wird Komposition genannt. Niklaus Mannhart, OO Softwareentwicklung 8/8