Objektorientierte Entwurfsmuster
|
|
|
- Insa Bauer
- vor 8 Jahren
- Abrufe
Transkript
1 Objektorientierte Entwurfsmuster 2 Im 1. Band Grundlagen haben wir bereits Entwurfsmuster für die Entwicklung von Algorithmen kennengelernt. Das Ziel bestand darin, für bestimmte Problemklassen allgemeine Muster zu konstruieren, um diese geeignet für ein konkretes Problem anzuwenden. Diese Muster sind ein abstrakter Programmrahmen, der dann für das jeweilige Problem nur noch ausgefüllt werden muss. Wir haben diese allgemeinen Lösungsmethoden zunächst vorgestellt und sie anschließend an einem einfachen Beispiel gezeigt. Im Bereich der objektorientierten Programmierung gehen wir nun auf ähnliche Weise vor. In der Softwareentwicklung gibt es für viele Entwicklungsschritte spezielle Muster zum Entwurf und der Implementierung von Programmen. Diese Entwurfsmuster sind bewährte Lösungsvorschläge für bestimmte Problemstellungen, die bereits in vielen Anwendungen erfolgreich verwendet wurden. Ähnlich wie algorithmische Muster sind auch die objektorientierten Entwurfsmuster nicht auf eine bestimmte Programmiersprache beschränkt. Beim Erlernen der allgemeinen Prinzipien ist es jedoch von großem Vorteil, diese Muster an einem konkreten Beispiel zu implementieren. Genau diesen Weg werden wir in diesem Kapitel mithilfe der Programmiersprache Java verfolgen. Das Ziel von objektorientierten Entwurfsmustern für den Softwareentwurf ist, bereits gewonnene Erkenntnisse wiederverwendbar zu machen, die Flexibilität der Softwarearchitektur zu erhöhen sowie einen verständlichen, erweiterbaren und wartungsfreundlichen Code zu schreiben. Durch das hohe Abstraktionsniveau dieser Entwurfsmuster lässt sich damit auch die Entwicklung großer Softwarepakete zielsicher und effizient planen. In diesem Kapitel werden wir zunächst in einem einführenden Beispiel die Grundprinzipien der objektorientierten Programmierung wiederholen. Im Anschluss daran stellen wir zentrale und weiterführende Konzepte der objektorientierten Programmierung in Java vor. Die objektorientierten Entwurfsmuster beruhen vor allem auf den zwei Konzepten der Vererbung und der Polymorphie. Mit diesen Konzepten stellen wir die zentralen Entwurfsmuster objektorientierter Programmierung mithilfe von Beispielen in Java vor. Springer-Verlag GmbH Deutschland 2017 S. Dörn, Programmieren für Ingenieure und Naturwissenschaftler, examen.press, DOI / _2 15
2 16 2 Objektorientierte Entwurfsmuster 2.1 Einführendes Beispiel Als einführendes Beispiel betrachten wir eine Aufgabenstellung zur Klassifizierung von Produkten in Form von Schrauben. Ein Hersteller von Schrauben will seine Produkte nach dem folgenden Schema einordnen: Schrauben mit einem Durchmesser bis zu 3 mm und einer Länge bis zu 20 mm haben den Preis EUR 0,30. Schrauben mit einem Durchmesser zwischen 3 und 5 mm und einer Länge zwischen 20 und 30 mm haben den Preis EUR 0,40. Schrauben mit einem Durchmesser zwischen 5 und 6 mm und einer Länge zwischen 20 und 30 mm haben den Preis EUR 0,60. Schrauben mit einem Durchmesser zwischen 6 und 15 mm und einer Länge zwischen 30 und 50 mm haben den Preis EUR 0,80. Schrauben mit einem Durchmesser zwischen 15 und 20mm und einer Länge zwischen 30 und 50 mm haben den Preis EUR 0,90. Die Aufgabe besteht darin ein Programm zu erstellen, das den richtigen Preis einer Schraube ermittelt, wenn Durchmesser und Länge eingegeben werden. Sollte eine Schraube keiner der oben beschriebenen Kategorien angehören, soll die Meldung Unbekannter Schraubentyp ausgegeben werden. Wir stellen im Folgenden zwei Varianten zur Lösung dieser Problemstellung vor. Der erste Fall ist die herkömmliche strukturierte Programmierung, die wir bereits in vielen Fällen erfolgreich angewandt haben. Mit diesem Programmierparadigma können wir schnell eine Lösung für eine gegebene Problemstellung finden. Wesentlicher Nachteil dieses Ansatzes ist es, dass die Struktur der Daten bekannt sein muss und kein logischer Zusammenhang zwischen Daten und den darauf anwendbaren Operationen besteht. Das Ergebnis ist in vielen Fällen ein starrer, unflexibler und schwer erweiterbarer Code. Im zweiten Fall verwenden wir einen objektorientierten Ansatz, bei dem zusammengehörige Daten und die darauf arbeitende Programmlogik zu einer Einheit zusammengefasst werden. Dieser Programmcode verlangt auf den ersten Blick vom Programmierer etwas mehr Arbeit ab, vor allem da ein Konzept von mehreren Klassen erstellt werden muss. Der große Vorteil davon ist, dass wir einen gut erweiterbaren, modularen und für andere ähnliche Problemstellungen wiederverwendbaren Programmcode erhalten. Strukturierte Programmierung Die einfachste und kürzeste Implementierung erfolgt über eine Methode bestimmepreis mithilfe von if-else-konstrukten:
3 2.1 Einführendes Beispiel 17 Dieser Programmtext ist zwar schnell geschrieben, hat jedoch, wie wir gleich sehen werden, zahlreiche Nachteile. Objektorientierte Programmierung In der realen Welt gibt es eine Preisgruppe für die Schraubentypen. Diese Preisgruppe bilden wir nun mit einer Klasse Preisgruppe nach. Die Attribute sind neben dem Preis die Unter- und Obergrenzen für den Durchmesser und die Länge.
4 18 2 Objektorientierte Entwurfsmuster Die Prüfung, ob ein gegebener Durchmesser und eine gegebene Länge zu einer Preisgruppe gehören, erfolgt mit der Methode pruefepreis. Diese bekommt die zwei Parameter des zu testenden Durchmessers und der zu testenden Länge übergeben. Anschließend vergleicht die Methode diese beiden Parameter mit ihren eigenen Attributen. Diese Methode muss nur ein einziges Mal geschrieben werden, da einzelne Preisgruppenobjekte mit unterschiedlichen Parametern erzeugt worden sind. Auf die verschachtelten if-else-schleifen können wir damit verzichten. Liegt die übergebene Größe im Bereich der Preisgruppe, dann gibt die Methode true zurück, andernfalls false. Die Methode getpreis gibt den zugehörigen Preis als double-wert zurück. Änderungen wie ein Steueraufschlag können leicht in dieser Methode noch ergänzt werden. In der Klasse TestSchrauben definieren wir nun die 5 Preisgruppenobjekte in Form eines Feldes vom Typ Preisgruppe. Anschließend gehen wir der Reihe nach durch alle Preisgruppen durch und vergleichen, ob der zu testende Durchmesser und die zu testende Länge vorhanden sind. Am Ende wird das Ergebnis ausgegeben.
5 2.1 Einführendes Beispiel 19 Ausgabe Der Preis beträgt 0,60 Euro. Die objektorientierte Implementierung ist auf den ersten Blick etwas umfangreicher, dafür besitzt sie zahlreiche Vorteile. Die beiden Klassen sind übersichtlicher und gut nachvollziehbar. Änderungen wie beispielsweise durch Hinzufügen oder Weglassen von Gleichheitszeichen in der if-abfrage benötigen nur 1 Änderung, statt 5 wie in der obigen Implementierung. Damit können problemlos neue Preisgruppen ergänzt werden, ohne Programmcode gegebenenfalls wieder fehlerhaft zu machen. Aufgrund der Tatsache, dass das Programm in zwei Teilklassen zerlegt ist, kann die Klasse Preisgruppe für andere Produkte leicht wiederverwendet werden.
6 20 2 Objektorientierte Entwurfsmuster 2.2 Objektorientierte Analyse Die Grundlage der objektorientierten Programmierung eines Softwaresystems ist die Modellierung der Aufgabenstellung durch kooperierende Objekte. Objekte sind besondere Daten- und Programmstrukturen, die Eigenschaften (Attribute) und Verhaltensweisen (Methoden) besitzen. Bei der objektorientierten Analyse sind die zu modellierenden Objekte zu finden, zu organisieren und zu beschreiben. Die einzelnen Schritte lassen sich in der folgenden Reihenfolge darstellen: 1. Finden der Objekte In der gegebenen Problemstellung des zu modellierenden Softwaresystems sind die darin enthaltenden Objekte zu finden. Diese Objekte beschreiben eine Gruppe von interagierenden Elementen, um damit reale Objekte wie Autos, Kunden, Aufträge oder Artikel direkt in Software zu modellieren. 2. Organisation der Objekte Bei einer großen Anzahl von beteiligten Objekten werden die zusammengehörigen Objekte in Gruppen zusammengesetzt. Diese Zusammenstellung ergibt sich aus den Beziehungen der einzelnen Objekte zueinander. Beispielsweise können Objekte andere Objekte enthalten (z. B. Bestellsystem enthält Artikel, Maschine enthält Komponenten). Die Gruppenzusammengehörigkeit ist umso größer, je mehr Beziehungen zwischen einzelnen Objekten bestehen. 3. Interaktion der Objekte Die Interaktion bzw. Assoziation zweier Objekte beschreibt die Beziehung zwischen zwei Objekten. Die Aggregation beschreibt die Zusammensetzung eines Objekts aus anderen Objekten. Die Komposition ist ein Spezialfall einer Aggregation, bei der Abhängigkeiten zwischen den Objekten in der Form bestehen, dass ein beschriebenes Objekt nur durch gewisse Teilobjekte existiert (z. B. Maschine besteht aus Teilen, Container besteht aus Behältern, Behälter besteht aus Gegenständen). 4. Beschreibung der Attribute der Objekte Die Attribute sind die individuellen Eigenschaften zur Definition des aktuellen Zustands des Objekts. Das Attribut ist ein Datenelement einer Klasse, das in allen Objekten vorhanden ist (z. B. Farbe eines Autos, Name eines Artikels, Länge eines Behälters). 5. Beschreibung des Verhaltens der Objekte Das Verhalten eines Objekts wird durch Methoden innerhalb einer Klasse definiert, die jeweils auf einem Objekt dieser Klasse operieren. Die Methoden definieren dabei eine Aufgabe in Form von Operationen auf der Instanz einer Klasse (z. B. Algorithmus steuert Maschine, Kalkulation berechnet Preis eines Artikels).
7 2.2 Objektorientierte Analyse 21 Das Ergebnis dieser Analyse ist die obige Beschreibung sowie die Erstellung von Abbildungen mit den einzelnen Klassen (Kästchen) und deren Beziehung untereinander (Linien und Text). Beispiel 2.1 Wir modellieren eine Software für die Produktionsplanung einer Firma. Das Softwaresystem besteht aus einer Eingabemaske, bei dem der Kunde die Auftragsdaten und die Produktionsplanungsdaten eingeben muss. Die Auftragsdaten bestehen aus den einzelnen Artikeln und die Produktionsplanungsdaten aus der Produktionsmaschine und deren Konfiguration. 1. Finden der Objekte: Eingabemaske, Kunde, Auftrag, Artikel, Produktionsplanung, Produktionsmaschine, Konfiguration 2. Organisation der Objekte: Die Objekte werden in 4 Gruppen aufgeteilt: (a) Eingabemaske (b) Kunde (c) Auftrag, Artikel (d) Produktionsplanung, Produktionsmaschine, Konfiguration 3. Interaktion der Objekte: Kunde, Auftrag und Produktionsplanung werden über die Eingabemaske eingegeben. Artikel gehört zu dem Auftrag Produktionsmaschine ist Produktionsplanung zugeordnet Konfiguration wird von Produktionsplanung ausgewählt 4. Beschreibung der Attribute der Objekte: Kunde: Name, Adresse, Kundennummer Artikel: Nummer, Name, Preis, Anzahl Auftrag: Array von Artikeln Konfiguration: Maschinenparameter Produktionsmaschine: Maschinenbezeichner, Laufzeit Produktionsplanung: Produktionsmaschine, Konfiguration 5. Beschreibung des Verhaltens der Objekte: Kunde: getkundennummer, getkunde,... Auftrag: getauftragswert, getanzahlauftraege,... Artikel: getartikelnummer, getartikelanzahl,... Produktionsplanung: getkonfiguration,... Konfiguration: getparameter, setparameter,... Produktionsmaschine: getmaschinenbezeichner,...
8 22 2 Objektorientierte Entwurfsmuster Abb. 2.1 Objektorientierte Analyse einer Planungssoftware Die Abb. 2.1 zeigt ein Übersichtsdiagramm der objektorientierten Analyse dieser Planungssoftware. 2.3 Objektorientierte Konzepte Die objektorientierte Programmierung ist sehr gut geeignet, umfangreiche Programme in eine Gruppe von interagierenden Objekten aufzuteilen, um damit eine ganze Reihe von wichtigen Prinzipien der Programmierung zu erfüllen: Flexibilität: Klassen sind nicht starr auf ein vorliegendes Problem angepasst, sodass Änderungen problemlos möglich sind. Wiederverwendbarkeit: Einzelne Module können in neuen Anwendungen weiterverwendet werden, sodass die Kosten für die Neuentwicklung neuer Systeme sinken. Erweiterbarkeit: System kann gut um neue Funktionalität erweitert werden, um beispielsweise neue Bibliotheksklassen optimal hinzuzufügen. Veränderbarkeit: Veränderungen an einer bestimmten Stelle wirken sich nicht auf andere Teile des Systems aus. Wartbarkeit: System besteht nur aus wenigen Abhängigkeiten, sodass es über die Zeit kostengünstig weiterentwickelbar ist. Redundanzfreiheit: System besitzt keine mehrfache Verwendung von identischem oder ähnlichem Code. Verständlichkeit: System ist logisch durch einen gut lesbaren Code aufgebaut, damit Änderungen schnell und sicher umgesetzt werden können.
9 2.3 Objektorientierte Konzepte 23 Das Ziel der objektorientierten Programmierung ist, die Abhängigkeiten der verschiedenen Module zu minimieren, die Korrektheit sicherzustellen sowie ein verständliches und gut dokumentiertes Programmpaket zu schaffen. Alle in diesem Kapitel vorgestellten Konzepte sind dazu da, diese Prinzipien in die Praxis umzusetzen. Im Rahmen der objektorientierten Programmierung bezeichnet der Begriff des Refactoring die Veränderung des Programmcodes, ohne die Funktionalität zu erweitern. Das Refactoring eines Codes wird durchgeführt, um die Erweiterbarkeit und die Wartbarkeit sicherzustellen. Bei größeren Programmpaketen ist es oftmals sehr sinnvoll, in gewissen Entwicklungsschritten suboptimale Codeteile zu identifizieren, aufzuräumen und für eventuell weitere Erweiterungen vorzubereiten Innere Klassen In Java ist es möglich eine Klasse in eine andere Klasse mit hineinzunehmen, um beispielsweise nur lokale Typdeklarationen zu definieren, die keine weitere Sichtbarkeit benötigen. Wir stellen nun einige verschiedene Varianten zur Definition von inneren Klassen vor. Innere Klassen sind oft sehr nützlich für den Entwurf von Hilfsdatenstrukturen, die nur in speziellen Klassen benötigt werden. Ebenso finden Sie in einigen Entwurfsmustern der Softwaretechnik Anwendung. Mitgliedsklasse Eine Mitgliedsklasse einer äußeren Klasse ist ähnlich einem Attribut und wird wie folgt definiert: class AeussereKlasse { class InnereKlasse {... } } Um ein Objekt der inneren Klasse zu erzeugen, muss ein Objekt der äußeren Klasse existieren: AeussereKlasse out = new AeussereKlasse(); InnereKlasse in = out.new InnereKlasse(); Zum Zugriff von der inneren Klasse auf eine Variable var der äußeren Klasse, die von inneren Klassen überdeckt wird, verwenden wir den Befehl AeussereKlasse.this. var.
10 24 2 Objektorientierte Entwurfsmuster Beispiel 2.2 Wir definieren eine äußere und eine innere Klasse mit einer Methode ausgabe: Ausgabe Innen Aussen Allgemeine Erklärung Zuerst wird ein Objekt out der äußeren Klasse AeussereKlasse angelegt. Anschließend kann ein Objekt in der inneren Klasse InnereKlasse mithilfe der Variable out definiert werden. Mithilfe der Objektvariable in kann dann auf die Methode ausgabe der inneren Klasse zugegriffen werden. Statische innere Klasse Bei einer statischen inneren Klasse wird eine innere Klasse als eine Art statische Eigenschaft in der äußeren Klasse definiert. Der Unterschied zur Mitgliedsklasse ist das Schlüsselwort static: class AeussereKlasse { static class InnereKlasse {... } }
11
Klausur Grundlagen der Programmierung
Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel
Einstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen
Objektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel Alina Stürck WS2016/17 11. Oktober 2016 Objektorientierte Programmierung OOP 1 Was ist das? 2 Wie geht das? 3 Warum
Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Objektorientierte Modellierung (1)
Objektorientierte Modellierung (1) Die objektorientierte Modellierung verwendet: Klassen und deren Objekte Beziehungen zwischen Objekten bzw. Klassen Klassen und Objekte Definition Klasse Eine Klasse ist
Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster
Entwurfsmuster Lukas Klich Projektgruppe SHUTTLE Seminar: 28.11.2002 Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1 Motivation Die Menschheit löst Probleme, indem sie beobachtet, Beobachtungen
Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
Einführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
VBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich WS 02/03 Warum muss ein Objekt wissen, zu welcher Klasse es gehört? Damit die Klassenzugehörigkeit
Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
Theorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
Grundlagen der Informatik für Ingenieure I
3 Einführung in das objektorientierte Programmier-Paradigma 3 Einführung in das objektorientierte Programmier-Paradigma 3.1.1 Top-down structured design 3.1.2 Data-driven design 3.1.3 Object-oriented design
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Algorithmen und Datenstrukturen 06
31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung
8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure
8. Objektorientierte Programmierung Informatik II für Verkehrsingenieure Grundbegriffe ALAN KAY, ERFINDER DER SPRACHE SMALLTALK, HAT DIE GRUNDBEGRIFFE DER OBJEKTORIENTIERTEN PROGRAMMIERUNG WIE FOLGT ZUSAMMENGEFASST:
Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte
Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)
Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
Objektorientierte und Funktionale Programmierung SS 2014
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
Funktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
Einstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
Algorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
Geschachtelte Klassen
Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte
Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer
Decorator Pattern Analyse- und Design-Pattern CAS SWE FS14 Roland Müller Samuel Schärer Entwurfsmuster der «Gang of Four» Strukturmuster fassen Klassen und Objekte zu grösseren Strukturen zusammen Adapter
Software-Entwurfsmuster
Software-Entwurfsmuster Prinzip von Entwurfsmustern und einige elementare Beispiele Malte Spiess [email protected] Seminar Bildanalyse und Simulation mit Java im WS 2003/2004 Universität Ulm
Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
Entwurfsprinzip. Entwurfsprinzip
Die Komposition (hat ein Beziehung) ist der Vererbung (ist ein Beziehung) vorzuziehen. Es können Familien von Algorithmen in eigenen Klassensätzen gekapselt werden. Das Verhalten lässt sich zu Laufzeit
II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
Java-Programmierung mit NetBeans
Java-Programmierung mit NetBeans Klassen, Objekte, Alternativen Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2012/13 Grundlegende Definitionen - Objekt Ein Objekt ist allgemein ein Gegenstand
Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik
Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen
Entwurfsmuster Martin Fesser 00IN
Entwurfsmuster Martin Fesser 00IN Inhalt Was sind Entwurfsmuster? Vorteile, Nachteile Entwurfsmusterkatalog (nach GoF) Variation von Entwurfsaspekten Wie Entwurfsmuster Entwurfsprobleme lösen Beispiele
15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595
Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified
Vorlesung Programmieren
Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache
UML (Unified Modelling Language) von Christian Bartl
UML (Unified Modelling Language) von Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 UML Unified Modelling Language... 3 2 Diagrammtypen... 3 2.1 Aktivitätsdiagramm... 3 2.1.1 Notation... 4 2.1.2 Beispieldiagramm...
Objektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen
Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren
Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ
Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die
Einführung in die Programmierung
Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität
2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article
2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String
OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
Einführung in die Programmierung mit Java. Hörsaalübung
Einführung in die Programmierung mit Java Hörsaalübung Folie 1 Grundlagen der Objektorientierung Seit Anfang der Neunzigerjahre Standardmethode der Softwareentwicklung. Die OOP Objektorientierte Programmierung
Kapitel 4: Klassen und Unterklassen
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind
Dieses Dokument enthält alle Teilaufgaben zur Java-Pflichtaufgabe für das Sommersemester Aufgabe 1 (Vier Gewinnt 1. Teil)
Vier Gewinnt Dieses Dokument enthält alle Teilaufgaben zur Java-Pflichtaufgabe für das Sommersemester 2008. Aufgabe 1 (Vier Gewinnt 1. Teil) Implementieren Sie eine Java-Klasse VierGewinnt1, mit einer
Instanz ist objeket einer klasse. bsp: elefant Name gewicht alter Frisst scheißt fliegt. Assoziation haben?
A u f g abe 1 : a ) Was ist eine Klasse? Was ist ein Objekt? Geben Sie ein Beispiel fur eine Klasse mit mindestens je 3 Attributen und je 3 Operationen. Finden Sie zu dieser Klasse mindestens 3 Instanzen.
PROGRAMMIERUNG IN JAVA
PROGRAMMIERUNG IN JAVA ZUWEISUNGEN (1) Deklaration nennt man die Ankündigung eines Platzhalters (Variablen) und Initialisierung die erste Wertvergabe bzw. die konkrete Erstellung des Platzhalters. In einem
Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java
Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Einstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4
wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken
1 Java ist... gut erlernbar wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax objektorientiert Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken robust keine Adressen,
4.Grundsätzliche Programmentwicklungsmethoden
4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden
1 Abstrakte Klassen, finale Klassen und Interfaces
1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
Entwurfsmuster in Java
Entwurfsmuster in Java Das Observer- und das Decorator-Pattern Friederike Löwe 13. März 2011 Inhaltsverzeichnis Einleitung Wozu eigentlich Entwurfsmuster? Die Grundlage: Design-Prinzipien Das Decorator-Pattern
Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
4. AuD Tafelübung T-C3
4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {
Objektorientierte Softwareentwicklung
Objektorientierte Softwareentwicklung Analyse- und Designmethoden Analyse- & Designmethoden Strukturierte, traditionelle Methoden Objektorientierte Methoden Funktionsorientierte Methoden Datenorientierte
Analyse und Modellierung von Informationssystemen
Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2
Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
Analyse und Modellierung von Informationssystemen
Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2
188.154 Einführung in die Programmierung Vorlesungsprüfung
Matrikelnummer Studienkennzahl Name Vorname 188.154 Einführung in die Programmierung Vorlesungsprüfung Donnerstag, 27.1.2005, 18:15 Uhr EI 7 Arbeitszeit: 60 min - max. 50 Punkte erreichbar - Unterlagen
Objektorientierte Analyse (OOA) Strukturmodellierung
Strukturmodellierung Seite 1 Strukturmodellierung Seite 2 Anwendung im Projekt Strukturmodellierung Voraussetzung: Use Case Diagramm liefert die funktionelle Gliederung mit Angabe der Ein- und Ausgaben
Javakurs für Anfänger
Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik
Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Grundidee abstrakter Klassen:
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens [email protected] Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare
Einführung in die objektorientierte Programmierung. mit Squeak
Einführung in die objektorientierte Programmierung mit Squeak Quellen Squeak Object-Oriented Design with Multimedia Applications, Mark Guzdial, 2001, Prentice Hall http://people.freenet.de/deckard73/page
Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration
Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if
Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.
Objekt-Orientierung Die ersten objektorientierten Sprachen wurden ab 1967 entwickelt (Simula, Smalltalk). Die Grundidee besteht darin, Objekte der realen Welt abzubilden. Java-Programme bestehen aus Klassen.
Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217
EIDI 1 Einführung in die Informatik 1 PGdP Praktikum Grundlagen der Programmierung Harald Räcke 2/217 Wie löst man Probleme mithilfe von Computern? 0 Harald Räcke 3/217 Inhalte: EIDI 1 1. Was ist das Problem?
PRÜFUNG. Grundlagen der Softwaretechnik
Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner PRÜFUNG Grundlagen der Softwaretechnik Name: Matrikelnummer: Note: Prüfungstag: 03.03.2011 Prüfungsdauer:
Musterlösung Stand: 5. Februar 2009
Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)
Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung
Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]
2 Grundsätzliches zur objektorientierten Programmierung.. 33
Inhaltsverzeichnis Informationen für Leser.... 13 1 Die Entwicklung der Steuerungstechnik... 18 1.1 Die Anfänge der speicherprogrammierbaren Steuerung... 19 1.2 Die SPS lernt zu kommunizieren.........................................
Das Softwaresystem BASEMENT
Numerische Modellierung von Naturgefahren mit dem Softwaresystem BASEMENT Workshop vom 6. Oktober 2006 an der VAW ETH Zürich Das Softwaresystem BASEMENT David Vetsch Inhalt 1. Motivation und Entstehungsgeschichte
Institut für Programmierung und Reaktive Systeme 24. Juni Programmieren II. 14. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Juni 2016 Programmieren II 1. Übungsblatt Hinweis: Auf diesem Übungsblatt finden Sie die fünfte,
Objektorientierte Analyse (OOA) OOA-Pattern
OOA-Muster (Architektur Pattern) Ein Pattern (Entwurfsmuster) ist ein Problem mit seiner Lösung in einem Kontext. Der Kontext enthält in der Regel Zielkonflikte, die der Designer lösen muss, z.b. Performance
Faustregeln zu Zusicherungen
Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während
EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2
EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2
Arten von Klassen-Beziehungen
Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant
Präsentation Interfaces
Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.
Softwarepraktikum: Enigma
Softwarepraktikum: Enigma Martin Steffen Sommersemester 2003 Abschnitt I Softwareentwurf Bereiche der Softwareentwicklung 1 Softwareentwurf eigentliche Softwareentwicklung Projektmanagement Konfigurationsmanagement
Einführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
Übungen Softwaretechnik I
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Übungen Softwaretechnik I Übung 5: Objektorientierte Analyse Einführung Objektorientierung in der
Objektorientierte Konzepte und Notation in UML. Objekt Klasse Attribut Operation
Objektorientierte Konzepte und Notation in UML Objekt Klasse Attribut Operation Objekt Wodurch zeichnet sich ein Objekt aus? - Zustand - Verhalten - Identität Objektdiagramm - Notationsregeln :Kuh Elsa:Kuh
System.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
Algorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2007 11. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] Das Rucksack-Problem Ein Dieb, der einen Safe
ALGOL 68 im Aspekt einer modernen Programmiersprache???
ALGOL 68 im Aspekt einer modernen Programmiersprache??? General-purpose-Programmiersprache: Ein sehr wichtiges Kriterium ist die Möglichkeit, alle Algorithmen (=Lösungsverfahren) in einer Programmiersprache
1. Java ist... 2. Stammbaum der Programmiersprachen 3. Die "Softwarekrise"
im Überblick im Überblick Inhalt 1. Java ist... 2. Stammbaum der Programmiersprachen 3. Die Softwarekrise 1. Merkmale von Software 2. Fortlaufende Veränderungen 3. Erschwerte Rahmenbedingungen bei der
Handbuch für die Erweiterbarkeit
Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6
Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik
Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Prinzip der Vererbung: Aus
Design Pattern. Motivation, Beispiel Definition "Das" Buch der Gang of Four Ausführliches Beispiel: Facade Beispiele. Aufgabe
, Beispiel der Gang of Four Ausführliches Beispiel: Beispiele Wiederverwendung ist etwas Gutes...!!! Wiederverwendung (auch: Verständlichkeit, Änderbarkeit, Portierbarkeit etc.) wird auf Design-Ebene ermöglicht
Java Einführung Klassendefinitionen
Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse
Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen
Brainfuck 1 Brainfuck 1.1 Brainfuck Geschichte und Umfeld Brainfuck ist eine sogenannte esoterische Programmiersprache. Sie wurde 1993 vom Schweizer Urban Müller entworfen mit dem Ziel, eine Sprache mit
Einstieg in die Informatik mit Java
1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:
