Software Engineering. 8. Prinzipien objektorientierten Designs. Franz-Josef Elmer, Universität Basel, HS 2010

Größe: px
Ab Seite anzeigen:

Download "Software Engineering. 8. Prinzipien objektorientierten Designs. Franz-Josef Elmer, Universität Basel, HS 2010"

Transkript

1 Software Engineering 8. Prinzipien objektorientierten Designs Franz-Josef Elmer, Universität Basel, HS 2010

2 Software Engineering: 8. Prinzipien objektorientierten Designs 2 Warum Prinzipien? Geben Hinweise, wie man das Design anpacken soll. Helfen typische Fehler zu vermeiden. Aus Prinzipien wurden Handlungsrichtlinien abgeleitet. Vorgaben für Qualitätsbeurteilung. Aus Prinzipien wurden Metriken abgeleitet, um die Qualität messbar zu machen. Prinzipien sind Erfahrungswissen. Abstrahiert aus langjährigen Erfahrungen. Von anderen übernommen, bestätigt und weiterverbreitet. Aber: Nur wenige empirische Untersuchungen über Wirksamkeit und Relevanz von Designprinzipien.

3 Software Engineering: 8. Prinzipien objektorientierten Designs 3 Ziele des Designs Design ist unsichtbar. Software, die alle funktionalen Anforderungen genügt, kann trotzdem schlecht entworfen sein. Design ist gut wenn es die Komplexität der Software in handhabbare und einfache Probleme herunterbricht die Entwicklung zügig verläuft die Software wartbar ist die Software leicht geändert und erweitert werden kann die Software stabil ist Bugs schnell behebbar sind die Software in anderen Softwareprojekten wiederverwendbar ist der Code verständlich ist

4 Software Engineering: 8. Prinzipien objektorientierten Designs 4 Symptome verfaultem (eng. rotten) Designs Never-touch-running-code Syndrom: Entwickler haben Angst undurchschaubaren Code zu ändern. Es wird Code darum herum entwickelt (workaround). So entsteht toter Code, d.h. Code der (wahrscheinlich) nie ausgeführt wird. Änderungen haben unbekannte und unerkannte Seiteneffekte: Z.B. Bugfixing produziert weitere Bugs, die erst viel später (sprich: beim Kunden!) gefunden werden. Eine kleine Änderung in den Anforderungen führt zu grossen Änderungen im Code: Z.B. sollen alle Datumsanzeigen von zweistellige auf vierstellige Jahreszahlen umgestellt werden (Y2K Problem). Copy-Paste Sünde: Wiederverwendung durch Codeduplikation (mit oder ohne kleine Änderungen). Entwickler jagen den Stellen hinterher die geändert werden müssen, falls sich die Logik geändert hat.

5 Software Engineering: 8. Prinzipien objektorientierten Designs 5 Allgemeine Designprinzipien KISS: Keep It Simple, Stupid DRY: Don't Repeat Yourself Separation of Concerns Design by Contract Geheimnisprinzip (Information Hiding)

6 Software Engineering: 8. Prinzipien objektorientierten Designs 6 KISS (Keep It Simple, Stupid) Prinzip Immer nach der einfachsten und klarsten Lösung suchen. Keine Optimierung der Performanz auf Kosten der Verständlichkeit und Modularität. Erhöht die Verständlichkeit des Codes. Vermeidet never-touchrunning-code Syndrom. Aber: KISS quick and dirty Verwandt mit dem YAGNI Prinzip (You Aren't Gonna Need It) aus extreme Programming, d.h. nur soviel Funktionalität wie nötig entwerfen und implementieren. So einfach wie möglich, aber nicht einfacher! Nicht in eine Richtung verallgemeinern, die später nie gebraucht wird. Beispiel: Braucht ein Interface neben einer add() Methode auch eine remove() Methode? Aber: Design offen halten für nicht erwartete Erweiterungen. Erst mittels Profiling die Engpässe aufspüren und nur diese beheben.

7 Software Engineering: 8. Prinzipien objektorientierten Designs 7 DRY (Don't Repeat Yourself) Prinzip Jedes Wissen, jede Information (Daten, Metadaten, Logik, Funktionalität, Algorithmus, etc.) wird nur an einer massgebenden Stelle im System kodiert bzw. repräsentiert. Vermeidung von Problemquellen wie: Ausnahmen: Copy-Paste Sünde Codeduplikation Automatische Synchronisation (z.b. Codegenerator) Automatische Detektion von Asynchronität (z.b. durch den Compiler) Grosse technologische Hindernisse Performanzprobleme In Stein gemeisselte Wissensschnipsel (z.b. Kreisfläche) aber nicht Berechnung der Mehrwertsteuer (kann sich ändern) Fläche eines beliebigen Polygons (komplexer Algorithmus)

8 Software Engineering: 8. Prinzipien objektorientierten Designs 8 Separation of Concerns Aufteilung der verschiedenen Anliegen: Sachanliegen (aus den Anforderungen) technische Anliegen (z.b. Datenpersistenz, Datenverarbeitung, Datenpräsentation) Führt zur Zerlegung der Software in Schichten Module Komponenten Objekte Konsequenz: Schnittstellen zwischen den Teilen

9 Software Engineering: 8. Prinzipien objektorientierten Designs 9 CRC Karten CRC = Class-Responsibility-Collaborators Designtechnik um Separation of Concerns umzusetzen Eine Karte pro Klasse (Interface, Komponente, Schicht, etc.) mit 3 Sektoren: Das Design-Meeting beginnt mit leeren Karten. Durch Diskussion und Rollenspiel wird versucht aus den Anforderungen bzw. Spezifikationen herauszufinden: Class Resp. Klassenname Coll. Verantwortlichkeiten der Klasse Andere Klassen mit denen diese Klasse zusammenarbeitet Welche Klassen es braucht. Wie sie heissen sollen. Für was welche Klasse zuständig ist. Wie die Klassen untereinander kommunizieren. All das wird auf den Karten notiert, durchgestrichen, geändert etc.

10 Software Engineering: 8. Prinzipien objektorientierten Designs 10 Schnittstelle Teil A Teil B Datenfluss Typen von Schnittstellen: Schnittstelle Eine Schnittstelle repräsentiert den öffentlichen Aspekt eines Teils des Systems. Sie trennt Absicht von Realisierung Abstraktion von Implementierung (Geheimnisprinzip) Client von Service Benutzer von Autor Funktionen die in C Header Dateien als API deklariert sind. Öffentliche (public) Attribute und Operationen einer Klasse Das Sprachkonstrukt Interface in Sprachen wie Java, C#, etc.

11 Software Engineering: 8. Prinzipien objektorientierten Designs 11 Design by Contract Konzept von Bertrand Meyer zum Entwurf von Schnittstellen. Idee: Eine Schnittstelle ist ein Vertrag (eng. contract) zwischen Client und Service (Realisierung der Schnittstelle). Im Vertrag steht für jede Operation die Vorbedingung (eng. precondition), die erfüllt sein muss bevor die Operation aufgerufen wird, die Nachbedingung (eng. postcondition), die der Service garantiert. Vorbedingung und Nachbedingung sind Zusicherungen (eng. assertions). Das sind Boolesche Ausdrücke, die wahr sind, wenn der Vertrag eingehalten wird. Ausnahmen (eng. exceptions) werden geworfen wenn die Voraussetzungen nicht erfüllt wurden oder der Service die Nachbedingung nicht einhalten kann.

12 Software Engineering: 8. Prinzipien objektorientierten Designs 12 Geheimnisprinzip (Information Hiding) Unterscheidung zwischen dem was ein Teil des Systems (Module, Komponente oder Klasse) macht und dem wie es seine Aufgabe erfüllt. WAS: Schnittstelle. Diese ist offen und bekannt. WIE: Implementierung. Diese ist versteckt. Kommunikation zwischen den Teilen via Schnittstellen Verhindert unerwünschte Kopplungen zwischen Teilen des Systems. Reduziert die Komplexität. Erlaubt unabhängige Entwicklung von Modulen, Komponenten, bzw. Klassen. Voraussetzung: Schnittstelle ist stabil und gut dokumentiert. Erlaubt Testbarkeit einzelner Module, Komponenten, bzw. Klassen. Dummies und Mocks der Schnittstellen ersetzen den Rest des Systems.

13 Software Engineering: 8. Prinzipien objektorientierten Designs 13 Geheimnisprinzip und Kapselung Geheimnisprinzip Kapselungsprinzip der OOP Beispiel: Kapselung fasst Daten und Methoden zusammen (Objekte). Die Kapsel kann transparent oder undurchsichtig sein. Kapselung: Daten (Attribute) nicht direkt sichtbar. public class NoInformationHidingNorEncapsulation { public ArrayList points = new ArrayList(); public class NoInformationHidingButEncapsulation { private ArrayList points = new ArrayList(); public ArrayList getpoints(){ return points; ArrayList List public class InformationHidingAndEncapsulation{ private ArrayList points = new ArrayList(); public List getpoints(){ return points; public class InformationHidingWithoutEncapsulation { public List points = new ArrayList(); Quelle:

14 Software Engineering: 8. Prinzipien objektorientierten Designs 14 Objektorientierte Designprinzipien Open-Closed Prinzip Liskovsche Substitutionsprinzip Komposition vor Vererbung Prinzip der minimalen Kopplung Prinzip der maximalen Kohäsion Prinzip der Umkehrung von Abhängigkeiten Prinzip der azyklischen Abhängigkeit

15 Software Engineering: 8. Prinzipien objektorientierten Designs 15 Open-Closed Prinzip Eine wiederverwendbare Klasse sollte offen sein für Erweiterungen, aber geschlossen für Änderungen. (Bertrand Meyer, 1988) D.h. der Code der Klasse muss nicht geändert werden, um dem System ein neues Feature hinzuzufügen. Mögliche Umsetzungen dieses Prinzips: Subklasse bilden und Methode überschreiben. Bestehende Klassen durch Delegation wiederverwenden. Frameworks sind Beispiele für die Anwendung dieses Prinzips: Um Frameworks benutzen zu können, müssen Basisklassen erweitert, Interfaces implementiert werden. Frameworks sind i.r. 3 th -party Software und als solche nicht änderbar (ausser bei Open Source).

16 Software Engineering: 8. Prinzipien objektorientierten Designs 16 Open-Closed Prinzip: Beispiel Folgendes Codefragment verletzt dieses Prinzip: public void draw(form form) { if (form.type == CIRCLE) { drawcircle(form); else if (form.type == SQUARE) { drawsquare(form); Die Methode draw() soll eine geometrisch Form zeichnen. Falls das Programm um eine neue Form (z.b. Dreieck) erweitert wird, muss diese Methode angepasst werden. Lösung durch Polymorphismus: «Interface» Form draw() public void draw(form form) { form.draw(); Circle Square Triangle

17 Software Engineering: 8. Prinzipien objektorientierten Designs 17 Liskovsche Substitutionsprinzip Instanzen von einer Klassen können durch Instanzen ihrer Subklasse ersetzt werden. (Barbara Liskov, 1988) Beispiel: Client Base Derived D.h. statt mit einem Objekt der Klasse Base arbeitet Client genauso gut mit einem Objekt der Subklasse Derived. Das ist nicht selbstverständlich, da sich die abgeleitete Klasse anders verhalten kann als die Basisklasse.

18 Software Engineering: 8. Prinzipien objektorientierten Designs 18 Liskovsche Substitutionsprinzip: Beispiel Klasse: Subklasse: public class Ellipse { private Point focus1; private Point focus2; public void setfoci(point f1, Point f2) { focus1 = f1; focus2 = f2; public Point getfocus1() { return focus1; public Point getfocus2() { return focus2; public class Circle extends Ellipse { public void setfoci(point f1, Point f2) { focus1 = f1; focus2 = f1; Folgender Clientcode wirft ein AssertionError: public void test(ellipse e) { Point p1 = new Point(1, 0); Point p2 = new Point(-1, 0); e.setfoci(p1, p2); assert e.getfocus2().equals(p2);

19 Software Engineering: 8. Prinzipien objektorientierten Designs 19 Liskovsche Substitutionsprinzip: Regel Die Verletzung des Liskovschen Substitutionsprinzips zeigt sich erst zur Laufzeit. Folgende Regeln garantieren die Einhaltung das Liskovschen Substitutionsprinzips: 1.Die Vorbedingungen an die überschriebenen Methoden sind nicht strenger als die für die Basisklasse. Aussagelogisch: precondition class precondition subclass 1.Die Nachbedingung an die überschriebenen Methoden sind nicht schwächer als die für die Basisklasse. Aussagelogisch: postcondition subclass postcondition class

20 Software Engineering: 8. Prinzipien objektorientierten Designs 20 Komposition vor Vererbung Vererbung: A work() B work() Überschreibt Methode der Superklasse Komposition: Delegiert an a: a.work() B work() a 1 A work() Vererbung problematisch: Liskovsche Substitutionsprinzip kann verletzt werden. Starke Abhängigkeit zwischen Subklasse und Basisklasse Verletzung des Geheimnisprinzips möglich: Verhalten der Subklasse kann von Implementierungsdetails der Superklasse abhängen.

21 Software Engineering: 8. Prinzipien objektorientierten Designs 21 Problematische Vererbung: Beispiel Subklasse von HashSet: Zähl wie oft versucht wurde ein Objekt hinzuzufügen. import java.util.*; public class MonitoredSet extends HashSet { private int addcounter; public int getaddcounter() { return addcounter; public boolean add(object object) { addcounter++; return super.add(object); public boolean addall(collection collection) { addcounter += collection.size(); return super.addall(collection); Dies führt in folgendem Codefragment zu einem AssertionError: MonitoredSet set = new MonitoredSet(); set.addall(arrays.aslist(new String[] { a, b, c ); assert set.getaddcounter() == 3; «Interface» Set HashSet MonitoredSet

22 Software Engineering: 8. Prinzipien objektorientierten Designs 22 Problematische Vererbung: Komposition Lösung: MonitoredSet delegiert an HashSet: import java.util.*; public class MonitoredSet implements Set{ private Set set = new HashSet(); private int addcounter; public int getaddcounter() { return addcounter; public boolean add(object object) { addcounter++; return set.add(object); public boolean addall(collection collection) { addcounter += collection.size(); return set.addall(collection);... «Interface» Set MonitoredSet 1 HashSet

23 Software Engineering: 8. Prinzipien objektorientierten Designs 23 Regeln für Vererbung Vererbung (B ist Subklasse von A) ist unproblematisch wenn: Objekt vom Typ B ist eine spezielle Art von A und nicht ist eine Rolle von A. B erweitert A. Es wird keine Operation überschrieben. B überschreibt Operationen von A, die ausdrücklich überschrieben werden dürfen (z.b. die Methode init() der Klasse java.applet.applet). A ist Teil einer schlecht entworfenen 3 th -party API. Im Zweifelsfall: Komposition statt Vererbung

24 Software Engineering: 8. Prinzipien objektorientierten Designs 24 Prinzip der minimalen Kopplung Keine Kopplung zwischen Klassen, die nicht eine gemeinsame Aufgabe erfüllen. Kopplung zwischen Modulen bzw. Komponenten nur über Schnittstellen. Interface Klasse Abhängigkeit

25 Software Engineering: 8. Prinzipien objektorientierten Designs 25 Prinzip der maximalen Kohäsion Starke Kopplung zwischen Klassen, die eine gemeinsame Aufgabe erfüllen. Klassen, die eine gemeinsame Aufgabe erfüllen, gehören zusammen in ein Paket. Klassen, die nur schwach gekoppelt sind, gehören in verschiedene Pakete (Separation of Concerns auf Paketebene).

26 Software Engineering: 8. Prinzipien objektorientierten Designs 26 Prinzip der Umkehrung von Abhängigkeiten Abstraktionen sollen nicht von Details abhängen, sondern umgekehrt. (Robert C. Martin, 1995) Typische Abhängigkeiten in prozeduralen Systeme: Hauptprogramm Funktion 1 Funktion 2 Funktion A Funktion B Funktion C Umkehrung der Abhängigkeiten: Main «Interface» I1 «Interface» I2 Implementation1 Implementation2

27 Software Engineering: 8. Prinzipien objektorientierten Designs 27 Prinzip der azyklischen Abhängigkeit Der Graph der Abhängigkeiten zwischen Modulen bzw. Paketen sollte azyklisch sein. (John Lakos, 1996, Robert C. Martin, 1996) Zyklische Abhängigkeiten sind problematisch weil grösserer Aufwand in der Wartung, bezüglich Erweiterungen, beim Testen. Zyklische Abhängigkeiten zwischen Klassen sind vertretbar wenn alle Klassen im selben Paket, nur eine handvoll Klassen involviert sind.

28 Software Engineering: 8. Prinzipien objektorientierten Designs 28 Zyklische Abhängigkeiten auflösen Zwischen Klassen: Interface einführen A A «Interface» IB C B C B Ursache zyklischer Abhängigkeiten von Paketen: Klassenzyklus mit Klassen in verschiedenen Paketen. Auflösung: Siehe oben Klasse(n) in falschem Paket Auflösung: Klasse(n) verschieben p Paketname r p r A B q D A q B D C C UML Paket Notation

29 Software Engineering: 8. Prinzipien objektorientierten Designs 29 Links Wiki zu OO Design (und andere IT Themen): Martin Fowler's Web Site:

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

16 Architekturentwurf Einführung und Überblick

16 Architekturentwurf Einführung und Überblick Teil III: Software-Architekturentwurf 16 Architekturentwurf Einführung und Überblick 16.1 Software entwerfen Warum? Beim Arbeiten im Kleinen nicht oder nur ansatzweise (Detailentwurf) Größere Software

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

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

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

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Objektorientiertes JavaScript

Objektorientiertes JavaScript Objektorientiertes JavaScript Christoph Fabritz dm121506@fhstp.ac.at http://goo.gl/jzqxnw Inhalt JavaScript Objektorientierung OO in JavaScript Literatur JavaScript Interpretiert / gescriptet Dynamische

Mehr

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

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing Fassade Objektbasiertes Strukturmuster C. Restorff & M. Rohlfing Übersicht Motivation Anwendbarkeit Struktur Teilnehmer Interaktion Konsequenz Implementierung Beispiel Bekannte Verwendung Verwandte Muster

Mehr

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum

Mehr

Assoziation und Aggregation

Assoziation und Aggregation Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben

Mehr

2015-06-11 Tagesprogramm

2015-06-11 Tagesprogramm 1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme

Mehr

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

Nathan Burgener. Design by Contract. Modul SWE

Nathan Burgener. Design by Contract. Modul SWE NathanBurgener DesignbyContract ModulSWE NathanBurgener Inhaltsverzeichnis 1 WasistDesignbyContract...3 1.1 Überblick...3 1.2 DesignbyContractmitMethoden...4 1.3 DesignbyContractmitKlassen...5 1.4 Vererbung...6

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Java Einführung Packages

Java Einführung Packages Java Einführung Packages Inhalt dieser Einheit Packages (= Klassenbibliotheken) Packages erstellen Packages importieren Packages verwenden Standard Packages 2 Code-Reuse Einbinden von bereits (selbst-/fremd)

Mehr

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.

Mehr

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

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

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

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

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Design by Contract with JML

Design by Contract with JML Thema: Design by Contract with JML Proseminar: Assertions Verfasser: Literatur: Betreuer: Natalya Moriz Gary T.Leavens and Yoonsik Cheon: Design by Contract with JML Prof. Dr. Heike Wehrheim 1 Inhalt DBC

Mehr

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

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

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08 Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements von Stephanie Wilke am 14.08.08 Überblick Einleitung Was ist ITIL? Gegenüberstellung der Prozesse Neuer

Mehr

SDD System Design Document

SDD System Design Document SDD Software Konstruktion WS01/02 Gruppe 4 1. Einleitung Das vorliegende Dokument richtet sich vor allem an die Entwickler, aber auch an den Kunden, der das enstehende System verwenden wird. Es soll einen

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt Objektorientierter Software-Entwurf Grundlagen 1 1 Einordnung der Veranstaltung Analyse Design Implementierung Slide 1 Informationssystemanalyse Objektorientierter Software-Entwurf Frühe Phasen durch Informationssystemanalyse

Mehr

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung

Mehr

BIF/SWE - Übungsbeispiel

BIF/SWE - Übungsbeispiel BIF/SWE - Übungsbeispiel Arthur Zaczek Feb 2015 1 Allgemein 1.1 Ziele Ziele dieses Übungsbeispieles ist es: GUI: Implementierung einer grafischen Oberfläche mit JavaFX oder WPF UI-Komponente: Implementierung

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Übungsklausur vom 7. Dez. 2007

Übungsklausur vom 7. Dez. 2007 Übungsklausur vom 7. Dez. 2007 Ein Lösungsmuster Teilbereiche der Softwaretechnik Software Anforderungen Software Entwurf Software Konstruktion Software Test Software Wartung Software Konfigurationsmanagement

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

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

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

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

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

Mehr

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin Fragestellungen: Warum reicht das Lastenheft nicht aus? Was kann ich mit dem Lastenheft machen? Was unterscheidet das Pflichtenheft vom Lastenheft? Was gehört zum Auftragsumfang einer Individualsoftware?

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

PHP Aufbaukurs. Tag 3. PHP5 & Klassen PHP Aufbaukurs Tag 3. PHP5 & Klassen Organisatorisches 2 Igor Olkhovskiy Dr. Dipl.- Ing. Kontakt: olkhovskiy@rrzn.uni-hannover.de PHP Aufbaukurs 19.09.2006 Folie 2 PHP. OOP. Geschichte 3 PHP/FI ( PHP 1

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Factory Method (Virtual Constructor)

Factory Method (Virtual Constructor) Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms

Mehr

Software Entwicklung II (SS12)

Software Entwicklung II (SS12) Prof. Dr. P. Liggesmeyer Dipl.-Inf. K. Bizik M.Sc. K. Nehring TU Kaiserslautern Fachbereich Informatik AG Software Engineering: Dependability Software Entwicklung II (SS12) Übung 5 Ausgabe: 04.06.2012

Mehr

am Beispiel von JUnit

am Beispiel von JUnit Aufbau eines Testwerkzeugs am Beispiel von JUnit Üblicher Ansatz für Tests und Fehlersuche: Print-Befehle, Debugger-Ausdrücke, Test-Skripte möglichst über globale Variable debug steuerbar Command Pattern

Mehr

Probeklausur. Lenz Belzner. January 26, 2015. Lenz Belzner Probeklausur January 26, 2015 1 / 16

Probeklausur. Lenz Belzner. January 26, 2015. Lenz Belzner Probeklausur January 26, 2015 1 / 16 Probeklausur Lenz Belzner January 26, 2015 Lenz Belzner Probeklausur January 26, 2015 1 / 16 Definieren Sie Software Engineering in Abgrenzung zu Individual Programming. Ingenieursdisziplin professionelle

Mehr

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse Kapitel 9 Inner Classes 9.1 Wiederholung: Iteratoren Ausführen einer Operation auf allen Elementen einer Containerklasse (zb Liste, Baum,...) vgl. map/f old in der funktionalen Programmierung. Aber: higher-order

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

6 Architektur-Mittel (WOMIT)

6 Architektur-Mittel (WOMIT) 6 Architektur-Mittel (WOMIT) Abb. 6-1: Positionierung des Kapitels im Ordnungsrahmen. Dieses Kapitel befasst sich mit der WOMIT-Dimension des architektonischen Ordnungsrahmens, indem es grundlegende Konzepte

Mehr

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Fortgeschrittenes Programmieren mit Java. Test Driven Development Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test

Mehr

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 23. April 2009 1/14 Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung Prof. G. Kemnitz Institut für Informatik,

Mehr

How to do? Projekte - Zeiterfassung

How to do? Projekte - Zeiterfassung How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...

Mehr

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger Software Engineering (Übungsblatt 2) Sommersemester 2012, Dr. Andreas Metzger Übungsblatt-Themen: Prinzip, Technik, Methode und Werkzeug; Arten von Wartung; Modularität (Kohäsion/ Kopplung); Inkrementelle

Mehr

U08 Entwurfsmuster (II)

U08 Entwurfsmuster (II) U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange

Mehr

SEMINAR Modifikation für die Nutzung des Community Builders

SEMINAR Modifikation für die Nutzung des Community Builders 20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen

Mehr

Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer

Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer Zentrum für Datenverarbeitung der Universität Tübingen Inhaltsverzeichnis 1.Synchronisation...aber

Mehr

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert https://www.sws.bfh.ch/studium/cas/swe-fs13/protected/re/re_buch.

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert https://www.sws.bfh.ch/studium/cas/swe-fs13/protected/re/re_buch. Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert https://www.sws.bfh.ch/studium/cas/swe-fs13/protected/re/re_buch.pdf 2 Nach derbefragung aller Stakeholder und der Dokumentation

Mehr

Der lokale und verteilte Fall

Der lokale und verteilte Fall Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Some Software Engineering Principles

Some Software Engineering Principles David L. Parnas: Some Software Engineering Principles Marco Oppel 30.06.2004 Seminar Software-Architektur Institut für Informatik Humboldt Universität zu Berlin 1 Problemstellung Software Engineering Multi-Personen

Mehr

Probeklausur Softwareengineering SS 15

Probeklausur Softwareengineering SS 15 Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das

Mehr

Selbststudium OOP4 Auftrag

Selbststudium OOP4 Auftrag Selbststudium OOP4 Auftrag Kapitel 3.6 1. Wie deklarieren Sie eine Referenzvariable? Mit new z.b. Student studenta = new Stundent( Meier ); 2. Zeichnen Sie das Objektdiagramm zum BlueJ Picture Projekt

Mehr

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung. StuPro-Seminar Dokumentation in der Software-Wartung StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung Folie 1/xx Software-Wartung: theoretisch Ausgangslage eigentlich simpel: fertige

Mehr

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse: Informationssystemanalyse Problemstellung 2 1 Problemstellung Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse: große Software-Systeme werden im Schnitt ein Jahr zu spät

Mehr

IAWWeb PDFManager. - Kurzanleitung -

IAWWeb PDFManager. - Kurzanleitung - IAWWeb PDFManager - Kurzanleitung - 1. Einleitung Dieses Dokument beschreibt kurz die grundlegenden Funktionen des PDFManager. Der PDF Manager dient zur Pflege des Dokumentenbestandes. Er kann über die

Mehr

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler

Mehr

Was meinen die Leute eigentlich mit: Grexit?

Was meinen die Leute eigentlich mit: Grexit? Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?

Mehr

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Softwareentwicklungsprozess im Praktikum. 23. April 2015 Softwareentwicklungsprozess im Praktikum 23. April 2015 Agile Softwareentwicklung Eine agile Methodik stellt die beteiligten Menschen in den Mittelpunkt und versucht die Kommunikation und Zusammenarbeit

Mehr

Behindert ist, wer behindert wird

Behindert ist, wer behindert wird Behindert ist, wer behindert wird Alle Menschen müssen lernen, dass Menschen mit Behinderungen gleichberechtigt sind Auf der ganzen Welt leben sehr viele Menschen mit Behinderungen: über 1 Milliarde Menschen

Mehr

OO Softwareentwicklung

OO Softwareentwicklung OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung

Mehr

Einführung und Motivation

Einführung und Motivation Einführung und Motivation iks-thementag: Requirements Engineering 16.11.2010 Autor Carsten Schädel Motto Definiere oder Du wirst definiert. Seite 3 / 51 These Im Privatleben definiert jeder (seine) Anforderungen.

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi Design Pattern - Strukturmuster CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi Agenda Einleitung Strukturmuster Fassade Model View Controller Vergleich 2 Einleitung Strukturmuster

Mehr

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

Mehr