Programmierparadigmen

Ähnliche Dokumente
Objektorientierte Konzepte

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

Das Ersetzbarkeitsprinzip

Programmierparadigmen

Arten von Klassen-Beziehungen

Faustregeln zu Zusicherungen

Untertypen, Vererbung, Sichtbarkeit A01 OOP. Untertypen, Vererbung, Sichtbarkeit

Das Ersetzbarkeitsprinzip

Arten von Klassen-Beziehungen

Programmieren in Java

Objektorientierte Programmierung

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

Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

1. In welchen Formen (mindestens zwei) kann man durch das Ersetzbarkeitsprinzip Wiederverwendung erzielen?

OOP. Tagesprogramm. Zusicherungen Zusicherungen und Ersetzbarkeit

Gliederung der Folien

Objektorientierte Programmierung. Agenda für heute, 26. März, Eines der drei wichtigsten Programmierparadigmen

Ersetzbarkeit und Verhalten

Objektorientierte Programmierung II

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:

Objektorientierte Programmierung (OOP)

Objekt-Funktionale Programmierung. am Beispiel von SCALA. Thorsten Jolitz

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

Objektorientierte Programmierung III

Objektorientierte Programmierung OOP

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

Konzepte der Programmiersprachen

Client-Server Beziehungen

Objektorientierte Programmierung

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Client-Server-Beziehungen

Gliederung. Algorithmen und Datenstrukturen II. Java: Objektorientierung. Java: Objektorientierung. Objektorientierung in JAVA. D.

Java als erste Programmiersprache

Praxisbuch Objektorientierung

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

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

7. Zusammenfassung (1)

Software Engineering

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Grundlagen der Informatik 0

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

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Polymorphie. 15. Java Objektorientierung II

1 Klassen und Objekte

Vorlesung Programmieren

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen

Polymorphie. 15. Java Objektorientierung II

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

Programmierung in C/C++

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Objektorientiert in C++

Objektorientierte Programmierung OOP

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Objektorientiertes Programmieren

Manfred Schüttengruber. Objektorientierte Programmierung mit Visual Basic 2005

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Begriffe 1 (Wiederholung)

Einführung in die Programmierung mit C++

Ersetzbarkeit, Client-Server Beziehungen

Java für Bauingenieure

Prinzipien der objektorientierten Programmierung (OOP)

Intuitive Einführung. Informatik B Objektorientierte Programmierung in Java. Vorlesung 01: Objektorientierte Programmierung (Teil 1)

1. Abstrakte Klassen

JavaScript objektorientiert

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Ausarbeitung OOP. 1. Grundlagen und Ziele. 1.1 Konzepte objektorientierter Programmierung

Einführung in die Programmiersprache Java II

7. Übung Informatik II - Objektorientierte Programmierung

ALGOL 68 im Aspekt einer modernen Programmiersprache???

Objektorientierte Programmiertechniken Kapitel 1 1. Was versteht man unter einem Programmierparadigma? Unter Programmierparadigma versteht man eine

OOP 11. Skriptum zu Objektorientierte Programmiertechniken im Wintersemester 2011/2012

Repetitorium Informatik (Java)

Objektorientiertes Programmieren in C++

Transkript:

Programmierparadigmen Paradigma = Denkweise oder Art der Weltanschauung klassische Einteilung: Programmiersprache imperativ deklarativ prozedural objektorientiert funktional logisch Zusammenhänge tatsächlich wesentlich komplexer Objektorientierte Programmiertechniken, Programmierparadigmen 1

Berechnungsmodell formaler Hintergrund (Funktionen, diverse Logiken, Algebren, Automaten, etc.) praktische Realisierung entscheidend Kombinierbarkeit Konsistenz Abstraktion Systemnähe Unterstützung und Beharrungsvermögen Objektorientierte Programmiertechniken, Programmierparadigmen 2

Struktur im Kleinen widersprüchlich: flexibel, sicher, verständlich breites Spektrum an Sprachen, Evolution nichtlinear strukturierte Programmierung: Sequenz, Auswahl, Wiederholung Umgang mit Querverbindungen (durch Seiteneffekte) funktional Seiteneffekte verbieten objektorientiert Querverbindungen sichtbar machen First-Class-Entities Aufwand lohnt sich nur für wichtigste Konzepte Objektorientierte Programmiertechniken, Programmierparadigmen 3

Modularisierungseinheiten Modul (Übersetzungseinheit, zyklenfrei) Objekt (zur Laufzeit) Klasse (Modul und Muster für Objekterzeugung) Komponente (komplexere Initialisierung) Namensraum Objektorientierte Programmiertechniken, Programmierparadigmen 4

Parametrisierung Befüllen der Löcher zur Laufzeit Konstruktor Initialisierungsmethode zentrale Ablage Generizität (Überseztungszeit) Annotationen (Parametrisierung optional) Aspekte (Modifikation des Programms) Objektorientierte Programmiertechniken, Programmierparadigmen 5

Ersetzbarkeit A durch B ersetzbar wenn B überall verwendbar wo A erwartet Schnittstellen von A und B folgendermaßen spezifizierbar: Signatur (einfach, wenig aussagekräftig) Abstraktion (intuitiv, nicht immer zuverlässig) Zusicherungen (manchmal komplex, recht zuverlässig) überprüfbare Protokolle (sehr komplex, nicht verfügbar) Objektorientierte Programmiertechniken, Programmierparadigmen 6

Typisierung statische versus dynamische Typprüfungen = Einschränkungen versus Freiheit = diktierte Disziplin versus freiwillige Disziplin explizit deklarierte Typen verbessern Lesbarkeit Sicherheit (durch Lesbarkeit, nicht Typprüfungen) deklarierte Typen frühe Entscheidungen Effizienz deklarierte Typen deklarierte Abhängigkeiten Objektorientierte Programmiertechniken, Programmierparadigmen 7

Abstraktion und Typen struktureller Typ nur Signatur nominaler Typ Typname ermöglicht Abstraktion abstrakter Datentyp (ADT) = nominale Schnittstelle einer Modularisierungseinheit Objekt aus realer Welt Softwareobjekt gemeinsamer Name ADT Denken in Konzepten Objektorientierte Programmiertechniken, Programmierparadigmen 8

Untertypen Ein Typ U ist Untertyp eines Typs T wenn jede Instanz von U überall verwendbar ist wo eine Instanz von T erwartet wird. für strukturelle Typen eindeutig ohne Deklarationen vom Compiler prüfbar für ADT in der Verantwortung der Programmierer explizite Deklaration von Untertypbeziehungen Zusicherungen als Ergänzung müssen in Untertypbeziehungen berücksichtigt werden Objektorientierte Programmiertechniken, Programmierparadigmen 9

Gestaltungsspielraum für Typen Typen zeigen Grenzen auf: kovariante Probleme bei Untertypen rekursive Datentypen erfordern induktive Konstruktion Typinferenz mächtig, aber nicht mit Untertypen Typen bieten ungeahnte Möglichkeiten: praktisch alle Eigenschaften statisch propagierbar aber derzeit unzureichend unterstützt Objektorientierte Programmiertechniken, Programmierparadigmen 10

Objekt kapselt Variablen und Methoden Eigenschaften: Identität (identisch = mehrere Namen für ein Objekt) Zustand (gleich identisch) Verhalten (Reaktion auf Nachrichten) Softwareobjekt (ADT) simuliert, abstrahiert reales Objekt Objektorientierte Programmiertechniken, Programmierparadigmen 11

Klasse beschreibt Struktur der Objekte Konstruktoren zur Initialisierung aller Objekte gleiche Klasse selbe Schnittstellen und selbes Verhalten jedes Objekt ist Instanz genau einer Klasse Objektorientierte Programmiertechniken, Programmierparadigmen 12

Polymorphismus Objekt hat gleichzeitig mehrere Typen ( Schnittstellen) Polymorphismus universeller Polymorphismus Ad-hoc- Polymorphismus Untertypen Generizität Überladen Typumwandlung Objektorientierte Programmiertechniken, Programmierparadigmen 13

Untertypen und Vererbung Untertypen bedingen Ersetzbarkeit Variable hat deklarierten und dynamischen Typ dynamisches Binden Vererbung = Übernehmen von Code aus Oberklasse Praxis: Vererbung als Hilfsmittel für Untertypen Objektorientierte Programmiertechniken, Programmierparadigmen 14

Erfolg in der OO-Programmierung gezielter Einsatz von Erfahrung erhöht Erfolgsaussichten OOP = viele Möglichkeiten zur Faktorisierung erleichtert gezielten Einsatz von Erfahrung ermöglicht Wiederverwendung durch Ersetzbarkeit überfordert Anfänger OOP gut für große, langlebige Programme OOP schlecht für komplexe Algorithmen Objektorientierte Programmiertechniken, Programmierparadigmen 15

Verantwortlichkeiten einer Klasse definiert durch drei w-ausdrücke, Ich ist Objekt der Klasse: was ich weiß (Zustand der Objekte) was ich mache (Verhalten der Objekte) wen ich kenne (sichtbare Objekte, Klassen) wer Klasse entwickelt ist zuständig für Änderungen in den Verantwortlichkeiten der Klasse Objektorientierte Programmiertechniken, Programmierparadigmen 16

Klassen-Zusammenhalt Klassen-Zusammenhalt (class coherence) = Grad der Beziehungen zwischen den Verantwortlichkeiten der Klasse hoch, wenn Variablen und Methoden eng zusammenarbeiten und durch Klassenname gut beschrieben Klassen-Zusammenhalt soll hoch sein Hinweis auf gute Faktorisierung verringert Wahrscheinlichkeit für nötige Änderungen Objektorientierte Programmiertechniken, Programmierparadigmen 17

Objekt-Kopplung Objekt-Kopplung (object coupling) = Abhängigkeit der Objekte voneinander stark, wenn viele sichtbare Methoden und Variablen viele Nachrichten im laufenden System viele Parameter in Methoden Objekt-Kopplung soll schwach sein Hinweis auf gute Kapselung weniger unnötige Beeinflussung bei Änderungen Objektorientierte Programmiertechniken, Programmierparadigmen 18

Frühe Bewertung von Alternativen Klassenzusammenhalt und Objektkopplung hängen oft zusammen (beides gut oder beides schlecht) sind bereits in früher Entwicklungsphase abschätzbar helfen bei der Bewertung von Alternativen Objektorientierte Programmiertechniken, Programmierparadigmen 19

Refaktorisierung Refaktorisierung = Änderung der Programmstruktur (bei gleicher Funktionalität) in Anfangsphase billig wenige gezielte Refaktorisierungen stabile Faktorisierung Objektorientierte Programmiertechniken, Programmierparadigmen 20