Programmierung im Grossen

Ähnliche Dokumente
Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

OO Softwareentwicklung

Einführung in die Programmierung. Bertrand Meyer. Vorlesung 23: Ein Beispiel: Undo-Redo. Das Problem

Struktur am Beispiel einer Liste

Vererbung & Schnittstellen in C#

Programmieren in Haskell. Abstrakte Datentypen

Grundlagen der Informatik für Ingenieure I

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Kapitel 5: Das Design

8. Generics Grundlagen der Programmierung 1 (Java)

Assertions (Zusicherungen)

Teil IV : Abstrakte Datentypen (ADT)

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Theorie zu Übung 8 Implementierung in Java

Abstrakte Datentypen.

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

8 Zugriffstypen ( Zeiger )

Software- und Systementwicklung

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Objektbasierte Entwicklung

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Einführung in die Programmierung

Folge 18 - Vererbung

Prinzipien Objektorientierter Programmierung

11/2009 Bernhard Gangl. Steuerungen mit OOP entwickeln 11 / Themenübersicht. Übersicht und Begriffsklärung: Objektorientierte Programmierung

Problemlösen, ein Einstieg nicht nur für die Informatik

Software Engineering in der Praxis

SS / 16 schrittweise Verfeinerung -> Wirth, 1971, Programm Development by Stepwise Refinement

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Objektorientierte Programmierung. Kapitel 12: Interfaces

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu

MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools

Kapitel 11: Wiederholung und Zusammenfassung

Repetitorium Informatik (Java)

Java Einführung Objektorientierte Grundkonzepte

Daten mit Typetikett Abstrakter Datentyp (ADT) 4-Stufen-Modell Generische Operationen Datengesteuerte Programmierung.

11 Design by Contract

Einstieg in die Informatik mit Java

Modell/Metamodell. Generated Source Code. Generator. Model. Fakultät für Informatik und Wirtschaftsinformatik MDSD - SS 2014

1.3 Charakteristische Eigenschaften von objektorientierten Systemen

Szenario 3: Service mit erweiterter Schnittstelle

Objektorientierte und Funktionale Programmierung SS 2014

Client-Server Beziehungen

CORBA. Systemprogrammierung WS

Zwischenbericht Diplomarbeit Entwicklung einer Laufzeitumgebung für Komponenten mit Ressourcenanforderungen

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Kapitel 6. Vererbung

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Kapitel 6. Vererbung

Algorithmen und Datenstrukturen (für ET/IT)

Vorlesung Datenstrukturen

Einstieg in die Informatik mit Java

Probeklausur: Programmierung WS04/05

Erste Schritte der Programmierung in C

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Java Generics & Collections

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Prädikatenlogik in der Praxis. Richard Cubek (Teil der Master Thesis, 2011)

Javakurs für Anfänger

2. Programmieren gegen Schnittstellen Advanced Programming Techniques

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

COPE COuPled Evolution of metamodels and models

Programmieren I. Kapitel 8. Vererbung

2.4.3 Polymorphie (Wiederholung von Alp2)

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio /9

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Proseminar: C# und.net. 6. Vortag Generische Klassen. Sebastian Wolf

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Die Inhalte der Vorlesung wurden primär auf Basis der Vorlesung Software Engineering von Prof. Dr. Faustmann (FHW Berlin Fachbereich II) erstellt.

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Das Liskovsche Substitutionsprinzip

Software Analyse Tooldemo: JQuery Sommersemester Jonas Pusch

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

4. AuD Tafelübung T-C3

Nagios Erweiterungen Der Rest. Nagios / Icinga. OpenSource Network-Monitoring im großen Stil. Manuel Landesfeind

Java, OO und UML Fortsetzung

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Javakurs für Anfänger

Einführung in die Programmierung Vorlesungsprüfung

Objektorientierte Analyse (OOA) Inhaltsübersicht

Assoziation und Aggregation

Zur Beschreibung datenbasierter Parametrisierung von Softwarekomponenten

Transkript:

1 Letzte Aktualisierung: 16. April 2004 Programmierung im Grossen Bertrand Meyer

2 Vorlesung 4: Abstrakte Daten-Typen

Übungen 3 Passe die vorhergehende Spezifikation von Stacks (LIFO, Last-In First-Out so an, dass sie nun Queues beschreibt (FIFO, First-In First-Out. Passe die vorhergehende Spezifikation von Stacks so an, dass sie begrenzte Stacks beschreibt, die eine Maximalgröße capacity haben. Hinweis: put wird eine partielle Funktion.

Formale Stack-Ausdrücke 4 value = item (put (new,,, x6, item (new, x5, x4, x2, x1

Anders ausgedrückt 5 value = item (new,,, x6, item (new, x5, x4, x2, x1 s1 = new s2 = s1,,, x6 s3 = s2 s4 = new s5 = s4, x5, x4 s6 = s5 y1 = item (s6 s7 = s3, y1 s8 = s7, x2 s9 = s8 s10 = s9, x1 s11 = s10 value = item (s11

Ausdrucks-Reduktion 6 value = item (, x1 Stack 1 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 7 value = item (, x1 Stack 1 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 8 value = item (, x1 Stack 1 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 9 value = item (, x1 x6 Stack 1 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 10 value = item (, x1 x6 Stack 1 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 11 value = item (, x1 Stack 1 Stack 2 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 12 value = item (, x1 Stack 1 x5 Stack 2 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 13 value = item (, x1 Stack 1 x4 x5 Stack 2 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 14 value = item (, x1 Stack 1 x4 x5 Stack 2 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 15 value = item (, x1 Stack 1 x5 Stack 2 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion 16 value = item (, x1 x5 Stack 1 x5 Stack 2 new,,, x6, item ( new, x5, x4, x2

Ausdrucks-Reduktion value = item (, x1 x2 x5 Stack 1 new,,, x6, item ( new, x5, x4, x2 17

Ausdrucks-Reduktion value = item (, x1 x2 x5 Stack 1 new,,, x6, item ( new, x5, x4, x2 18

Ausdrucks-Reduktion value = item (, x1 x1 x5 Stack 1 new,,, x6, item ( new, x5, x4, x2 19

Ausdrucks-Reduktion value = item (, x1 x1 x5 Stack 1 new,,, x6, item ( new, x5, x4, x2 20

Ausdrucks-Reduktion 21 value = item (, x1 x5 Stack 1 new,,, x6, item ( new, x5, x4, x2

Anders ausgedrückt 22 value = item (new,,, x6, item (new, x5, x4, x2, x1 s1 = new s2 = s1,,, x6 s3 = s2 s4 = new s5 = s4, x5, x4 s6 = s5 y1 = item (s6 s7 = s3, y1 s8 = s7, x2 s9 = s8 s10 = s9, x1 s11 = s10 value = item (s11

Eine operationale Sicht des Ausdrucks 23 x6 x4 y1 s1 (empty s2 s3 s4 (empty x5 s5 x5 s6 x2 x1 x5 x5 x5 s7 (s9, s11 s8 s10 value = item (new,,, x6, item (new, x5, x4, x2, x1

Ausreichende Komplettheit 24 Drei Formen von Funktionen in der Spezifikation eines ADT T: Erzeuger (Creators: OTHER T e.g. new Anfragen (Queries: T... OTHER e.g. item, empty Befehle (Commands: T... T e.g. put, remove Ausreichend komplette Spezifikation: ein Anfrage- Ausdruck der Form: f (... wobei f eine Anfrage ist, kann durch die Anwendung der Axiome in eine Form ohne T gebracht werden.

Stack: Ein Abstrakter Daten-Typ 25 Typen: STACK [G] -- G: Formaler generischer Parameter Funktionen (Operationen: put: STACK [G] G STACK [G] remove: STACK [G] STACK [G] item: STACK [G] G empty: STACK [G] BOOLEAN new: STACK [G]

ADTs und Software Architektur 26 Abstrakte Daten-Typen liefern eine ideale Basis zum modularisieren von Software. Baue jedes Modul als Implementierung eines ADT: Impl. eine Menge an Objekten mit gleicher Schnittstelle Schnittstelle ist definiert durch eine Menge von Operationen (des ADT s functions beschränkt durch abstrakte Eigenschaften (seine axioms und preconditions. Das Modul besteht aus: Eine Darstellung des ADT Eine Implementierung für jede seiner Operationen Möglicherweise zusätzliche Hilfsoperationen

Implementierung eines ADT 27 Drei Komponenten: (E1 Die Spezifikation des ADT: Funktionen, Axiome, Vorbedingungen. (Beispiel: Stacks. (E2 (E3 Die Auswahl einer Repräsentation. (Beispiel: <representation, count>. Eine Menge von Subprogrammen (Routinen und Attributen, die jeweils eine der Funktionen der ADT Spezifikation (E1 mit der gewählten Repräsentation (E2 implementieren. (Beispiel: Routinen put, remove, item, empty, new.

Die Wahl einer Stack Repräsentation 28 (array_up capacity count Push Operation: count := count + 1 representation [count] := x 1 representation

Anwendung beim Information Hiding 29 Öffentlicher Teil: ADT Spezifikation (E1 Geheimer Teil: Auswahl der Repräsentation (E2 Implementierung der Funktionen durch Features (E3

Objekt-Technologie: Erste Definition 30 Objekt-orientierte Software Konstruktion ist die Herangehensweise an das Strukturieren von Systemen, die die Architektur von Software Systemen auf den Typen der Objekte basiert, die sie manipulieren nicht auf der Funktion die sie erreichen.

Objekt-Technologie: Genauere Definition 31 Objekt-orientierte Software Konstruktion ist die Konstruktion von Software Systemen als strukturierte Sammlungen von (möglicherweise partiellen Implementierungen von abstrakten Daten-Typen.

Klassen: Die grundlegende Struktur 32 Zusammenmischung der Begriffe Modul und Typ: Modul = Einheit der Zerlegung: Menge von Dienstleistungen Typ = Beschreibung einer Menge von Laufzeit- Objekten ( Instanzen des Typs Die Verbindung: Die von einer Klasse angebotenen Dienstleistungen, als Modul betrachtet, sind die verfügbaren Operationen auf einer Instanz der Klasse, als Typ betrachtet.

Beziehungen von Klassen 33 Zwei Beziehungen: Kunde Erbe

Allgemeine System-Struktur 34 space_before space_after CHUNK add_space_before add_space_after FEATURES FIGURE word_count justified? PARAGRAPH add_word remove_word justify unjustify QUERIES length font WORD COMMANDS set_font hyphenate_on hyphenate_off Inheritance Client

Eine sehr hinausgeschobene Klasse 35 deferred class COUNTER feature item: INTEGER is -- Counter value up is deferred end -- Increase item by 1. deferred ensure item = old item + 1 end down is -- Decrease item by 1. deferred ensure item = old item 1 end invariant item >= 0 end

36 Ende Vorlesung 4