TDD with Contracts ein SOLIDer Ansatz

Größe: px
Ab Seite anzeigen:

Download "TDD with Contracts ein SOLIDer Ansatz"

Transkript

1 TDD with Contracts ein SOLIDer Ansatz Scrum Day 2015 Hagen Buchwald, Sheip Dargutev, Stefan Pölz VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins Karlsruher Software Ingenieure VKSI Verein Karlsruher Software Ingenieure

2 Inhaltsübersicht TDD with Contracts ein SOLIDer Ansatz 1. Prolog 2. Einführung in die Theorie von Contracts 3. TDD with Contracts 4. Excours: TDD with Contracts ein SOLIDer Ansatz 5. Epilog

3 OnGames PokerEngine: PokerBots simulieren Spieler und testen die Poker-Engine bei aktivierten Verträgen SIG Contracts for Java

4 Wirkung des Einsatzes von Testing by Contract mit C4J und PokerBots auf die Qualität der bwin PokerEngine bwin PokerEngine ohne C4J Fehlermeldungen pro Betriebsmonat bwin PokerEngine mit C4J Fehlermeldungen nach 38 Betriebsmonaten SIG Contracts for Java

5 Inhaltsübersicht TDD with Contracts ein SOLIDer Ansatz 1. Prolog 2. Einführung in die Theorie von Contracts 3. TDD with Contracts 4. Excours: TDD with Contracts ein SOLIDer Ansatz 5. Epilog

6 Was ist Objektorientierte Programmierung? Definition nach Alan Kay (2003): OOP to me means only - messaging, - local retention and protection and hiding of state-process, - and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I m not aware of them. One of the things I should have mentioned is that there were two main paths that were catalysed by Simula. The early one was the bio/net non-dataprocedure route that I took. The other one, which came a little later as an objects of study was abstract data types, and this got much more play Quelle:

7 Objekt-Orientierte Programmierung (OOP). Definition nach Bertrand Meyer (1988) Ein Softwaresystem besteht aus Prozessoren, die Methoden auf Datenstrukturen ausführen. Methoden Was ist die Hauptfunktion des Systems? Datenstrukturen ADT Objekt Auf was arbeitet das System? Prozessoren Object OOP ist die Erstellung von Softwaresystemen als strukturierte Sammlung von Implementierungen Abstrakter Datentypen (ADTs) Quelle: Bertrand Meyer, Object-Oriented Software Construction, 1988

8 Was ist ein Abstrakter Datentyp (ADT)? Ein Abstrakter Datentyp (Abstract Data Type) besteht aus vier Teilen: 1) TYP 2) METHODEN 3) VORBEDINGUNGEN 4) NACHBEDINGUNGEN 1) AccountSpec 2) void deposit(int amount) void withdraw(int amount) int getbalance() 3) deposit: amount > 0 withdraw: amount > 0 getbalance >= amount getbalance: --- 4) deposit: getbalance == old getbalance + amount withdraw: getbalance == old getbalance amount getbalance: result >= In Anlehnung an: Bertrand Meyer, Object-Oriented Software Construction, 1988

9 Das Prinzip eines Vertrags: Die Rechte des Kunden sind die Pflichten des Anbieters und umgekehrt! Kunde Rechte Anbieter Rechte Pflichten Pflichten

10 Beispiel eines Vertrags: Ein Kunde kauft ein Brötchen beim Anbieter. Kunde Rechte Ich bekomme ein Brötchen geliefert. Anbieter Rechte Ich bekomme 50 Cent bezahlt. Pflichten Ich muss 50 Cent zahlen. Pflichten Ich muss ein Brötchen liefern

11 Es reicht aus, den Vertrag bei dem Anbieter zu hinterlegen und dort auch zu überprüfen. Kunde Rechte Anbieter Rechte Pflichten Pflichten

12 Im Brötchen-Beispiel reicht es aus, den Vertrag beim Anbieter zu hinterlegen und zu überprüfen. Kunde Rechte Ich bekomme ein Brötchen geliefert. Anbieter Rechte Ich bekomme 50 Cent bezahlt. Pflichten Ich muss 50 Cent zahlen. Pflichten Ich muss ein Brötchen liefern

13 ADT Account : Die Vor- und Nachbedingungen stellen einen Vertrag dar. Es genügt, diesen Vertrag auf Anbieterseite zu definieren und zu prüfen. Kunde Rechte Pflichten 1) Account 2) void deposit(int amount) void withdraw(int amount) int getbalance() 3) deposit: amount > 0 withdraw: amount > 0 getbalance >= amount getbalance: --- 4) deposit: getbalance == old getbalance + amount withdraw: getbalance == old getbalance amount getbalance: result >= 0 Anbieter Rechte Pflichten Die Vorbedingungen definieren die Rechte des Anbieters (und damit die Pflichten des Kunden). Die Nachbedingungen definieren die Pflichten des Anbieters (und damit die Rechte des Kunden)

14 Kann man in Java Objekte als Implementierungen Abstrakter Datentypen beschreiben? TYP AccountSpec METHODEN void deposit(int amount) void withdraw(int amount) int getbalance() VORBEDINGUNGEN deposit: amount > 0 withdraw: amount > 0 getbalance >= amount getbalance: ---? NACHBEDINGUNGEN deposit: getbalance == old getbalance + amount withdraw: getbalance == old getbalance amount getbalance: result >=

15 Der Typ AccountSpec als Abstrakter Datentyp (ADT) in Java. TYP AccountSpec METHODEN void deposit(int amount) void withdraw(int amount) int getbalance() VORBEDINGUNGEN deposit: amount > 0 withdraw: amount > 0 getbalance >= amount getbalance: --- NACHBEDINGUNGEN deposit: getbalance == old getbalance + amount withdraw: getbalance == old getbalance amount getbalance: result >=

16 Der Standard-Konstruktor wird durch die Typen-Invariante als allgemeine Nachbedingung aller Methoden überprüft. TYP AccountSpec METHODEN void deposit(int amount) void withdraw(int amount) int getbalance() VORBEDINGUNGEN deposit: amount > 0 withdraw: amount > 0 getbalance >= amount getbalance: --- NACHBEDINGUNGEN deposit: getbalance == old getbalance + amount withdraw: getbalance == old getbalance amount getbalance: result >= 0 typeinvariant: getbalance >=

17 Die Vorbedingungen eines überladenen Konstruktors werden in der Vertragsklasse der Implementierung geprüft. TYP AccountSpec METHODEN void deposit(int amount) void withdraw(int amount) int getbalance() Account VORBEDINGUNGEN deposit: amount > 0 withdraw: amount > 0 getbalance >= amount getbalance: --- Account: amount >= 0 Account NACHBEDINGUNGEN deposit: getbalance == old getbalance + amount withdraw: getbalance == old getbalance amount getbalance: result >= 0 typeinvariant: getbalance >=

18 Für Legacy Systeme kann der Softwarevertrag ohne Codeänderung von außen an die Klasse gehängt werden. TYP AccountSpec METHODEN void deposit(int amount) void withdraw(int amount) int getbalance() Account VORBEDINGUNGEN deposit: amount > 0 withdraw: amount > 0 getbalance >= amount getbalance: --- Account: amount >= 0 Account NACHBEDINGUNGEN deposit: getbalance == old getbalance + amount withdraw: getbalance == old getbalance amount getbalance: result >= 0 typeinvariant: getbalance >=

19 custom doclet

20 Das C4J Plugin erlaubt u.a. das Text Hovering: Entweder im JavaDoc-Format Eclipse Plugin

21 Das C4J Plugin erlaubt u.a. das Text Hovering: oder im Quellcode-Format. Eclipse Plugin

22 Inhaltsübersicht TDD with Contracts ein SOLIDer Ansatz 1. Prolog 2. Einführung in die Theorie von Contracts 3. TDD with Contracts 4. Excours: TDD with Contracts ein SOLIDer Ansatz 5. Epilog

23 TDD Cycle make it red: schreibe einen Test, der fehlschlägt make it green: schreibe gerade so viel Code, dass alle Tests laufen make it right: beseitige duplizierten Code und andere code smells

24 TDD with Contracts Unit Test TDD Class Interface Unit Contract package bank; public class AccountTest { private AccountSpec account = new public static void report() { System.out.println("AssertCounter: " + public void newaccount_shouldhavebalancezero() { checkbalance(0); public void deposit_shouldupdatebalance() { account.deposit(10); checkbalance(10); public void repeateddeposit_shouldupdatebalance() { account.deposit(10); account.deposit(30); public void depositandwithdraw_shouldupdatebalance() { account.deposit(15); account.withdraw(5); = AssertionError.class) public void depositnegativeamount_shouldfail() { = AssertionError.class) public void withdrawnegativeamount_shouldfail() { account.withdraw(-5); = AssertionError.class) public void withdrawamountgreaterthanbalance_shouldfail() { account.deposit(10); Tests account.withdraw(20); private void checkbalance(int expectedamount) { AssertCounter.increment(); assertequals(expectedamount, account.getbalance()); package bank; public class Account implements AccountSpec { private int public int getbalance() { return public void deposit(int amount) { balance += public void withdraw(int amount) { balance -= amount; Clean Code package bank; import de.vksi.c4j.contractreference; import public interface AccountSpec { void deposit(int amount); void withdraw(int int getbalance(); package bank; Pre-Condition public class AccountSpecContract implements AccountSpec public void classinvariant() { assert target.getbalance() >= 0 : "balance >= Post-Condition public void deposit(int amount) { if (precondition()) { assert amount > 0 : "amount > 0"; if (postcondition()) Pre-Condition { assert target.getbalance() == old(target.getbalance()) + Post-Condition public void withdraw(int amount) { if (precondition()) { assert amount > 0 : "amount > 0"; assert target.getbalance() >= amount : "balance >= amount"; Pre-Condition if (postcondition()) { assert target.getbalance() == old(target.getbalance()) - amount; public int getbalance() { return ignored(); Clean Contract Klassen-Ebene (Implementierung) Typen-Ebene (Abstrakter Datentyp)

25 Clean Contract: Wie formuliert man einen vollständigen Vertrag? Die 6 Prinzipien der Vertragserstellung Prinzip 6 DRY: Formuliere Invarianten um Nachbedingungen, die für alle Methoden gelten, nur ein einziges Mal an zentraler Stelle zu formulieren. Damit werden die unveränderlichen Eigenschaften des Objekts beschreiben. Prinzip 5 PRE: Prüfe für jede Abfrage und jedes Kommando, ob eine Vorbedingung erforderlich ist. Die Vorbedingung beantwortet die Frage: Kann diese Methode zu jeder Zeit aufgerufen werden oder nur unter ganz bestimmten Voraussetzungen? Prinzip 4 Prinzip 3 Prinzip 2 POST: Erstelle für jedes Kommando eine Nachbedingung, die den Effekt des Kommandos auf den sichtbaren Zustand des Objekts mit Hilfe aller elementaren Abfragen beschreibt. Erstelle für jede abgeleitete Abfrage eine Nachbedingung, die beschreibt, welches Ergebnis zurückgegeben wird, ausgedrückt durch eine oder mehrere elementare Abfragen. Trenne elementare Abfragen von abgeleiteten Abfragen. Abgeleitete Abfragen können durch elementare Abfragen ausgedrückt werden. CQS: Trenne Abfragen von Kommandos. Prinzip 1 Abfragen geben ein Ergebnis zurück, ändern jedoch nicht die sichtbaren Eigenschaften des Objekts. Kommandos können das Objekt verändern, geben jedoch kein Ergebnis zurück In enger Anlehnung an: R. Mitchell / J. McKim: Design by Contract, by Example

26 Inhaltsübersicht TDD with Contracts ein SOLIDer Ansatz 1. Prolog 2. Einführung in die Theorie von Contracts 3. TDD with Contracts 4. Excours: TDD with Contracts ein SOLIDer Ansatz 5. Epilog

27 Was ist Clean Code? Robert C. Martin, author of Clean Code a handbook of Agile Software Craftmanship: Clean Code is a school of thoughts. Smells & Heuristics Meaningful Names DRY Don t Repeat Yourself! CQS Command Query Separation

28 Clean Code: Wie schreibt man qualitativ hochwertige Software? Die 5 SOLID-Prinzipien Initial Stands for (acronym) Concept S SRP [4] Single responsibility principle a class should have only a single responsibility (i.e. only one potential change in the software's specification should be able to affect the specification of the class) O OCP [5] Open/closed principle software entities should be open for extension, but closed for modification. L LSP [6] Liskov substitution principle objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program. See also design by contract. I ISP [7] Interface segregation principle many client-specific interfaces are better than one general-purpose interface. [8] D DIP [9] Dependency inversion principle one should Depend upon Abstractions. Do not depend upon concretions. [8] Quelle:

29 Was ist Clean Code? Ron Jeffries, author of Extreme Programming Installed: Abstraction often calls my attention to what s really going on. Reduced duplication, high expressiveness, and early building of simple abstractions: That s what makes clean code for me

30 Dependency Inversion Principle (DIP) Depend upon abstractions. Do not depend upon concretions (implementations). Joshua Bloch spricht in seinem Buch Effective Java (Second Edition, 2008) insgesamt 78 Punkte (Items) an, wie man mit Java programmieren sollte, um hohe Qualität zu erzeugen. Item 19: Use interfaces only to define types When a class implements an interface, the interface serves as a type that can be used to instances of the class. It is inappropriate to define an interface for any other purpose. Item 40: Design method signatures carefully Use interfaces rather than classes as parameter types. Item 52: Refer to objects by their interfaces If appropriate interfaces types exist, then parameters, return values, variables and fields should all be declared using interfaces types. If you get into the habit of using interfaces as types, your program will be much more flexible

31 SRP Singe Responsibilty Principle

32 OCP Open Closed Principle

33 LSP Liskov Substitution Principle

34 ISP Interface Segregation Principle

35 Was ist Clean Code? Ron Jeffries, author of Extreme Programming Installed: Abstraction often calls my attention to what s really going on. Reduced duplication, high expressiveness, and early building of simple abstractions: That s what makes clean code for me

36 Inhaltsübersicht TDD with Contracts ein SOLIDer Ansatz 1. Prolog 2. Einführung in die Theorie von Contracts 3. TDD with Contracts 4. Excours: TDD with Contracts ein SOLIDer Ansatz 5. Epilog

37 Einsatz von Softwareverträgen seit 2006 (bwin, Stockholm) Lessons Learned 1. Pareto-Prinzip: 20% der Klassen stellen 80% der genutzten Funktionalität zur Verfügung. Es reicht aus, diese Kernklassen mit Softwareverträgen zu schützen. 2. Falsche Annahmen als Hauptfehlerquelle: 80% der bei bwin gefundenen Fehler waren auf Verletzungen von Vorbedingungen (und Klasseninvarianten) zurückzuführen. Der Grund waren falsche bzw. fehlende Annahmen darüber, wie eine Klasse genutzt werden sollte. 3. Autorenschaft schützt nicht vor falschen Annahmen: Falsche Annahmen unterliefen auch den Autoren der Klassen. Nach nur wenigen Wochen Arbeit an anderen Modulen hatten sie die Annahmen vergessen, unter denen sie die Klassen erstellt hatten. 4. Testing by Contract: Die Kombination von Softwareverträgen mit PokerBots virtuellen Spielern, die über Nacht die aktuelle Version der PokerEngine nutzten erwies sich als äußerst wirkungsvolles Instrument, um subtile Fehler aufzuspüren (Boundary Conditions, Edge Conditions, Corner Conditions). 5. Macht der Gewohnheit: Trotz dieser Erfolge blieb die Nutzung von Softwareverträgen auf das PokerEngine-Team beschränkt. Andere Teams zogen nicht nach Quelle: Interview mit Jonas Bergström, Sept. 2012, Stockholm SIG Contracts for Java

38 CQS Command Query Separation Zentrales Prinzip für TDD with Contracts

39 OOP ist die Erstellung von Software- Systemen als strukturierte Sammlung von Klassen. Eine Klasse ist eine (von vielen möglichen) Implementierung eines Typs. Typen werden spezifiziert durch Abstrakte Datentypen (ADT)

40 OOP ist die Erstellung von Software- Systemen als strukturierte Sammlung von Implementierungen Abstrakter Datentypen (ADT)

41 TDD with Contracts ein SOLIDer Ansatz Anhang: Die C4J Syntax mit Beispielen VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins Karlsruher Software Ingenieure VKSI Verein Karlsruher Software Ingenieure

42 Contracts for Java: C4J 6.0 Die Syntax C4J Erläuterung Markieren einer Klasse oder eines Interfaces als geschützt durch die angegebene Vertragsklasse. Markieren einer Klasse als Vertragsklasse. Die zu schützende Klasse wird durch die Vererbungsbeziehung definiert. Dieser indirekte Ansatz ermöglicht externe Vertragsklassen, die ohne Veränderung des Quellcodes der zu schützenden Klasse von außen eingebracht werden können, z.b. bei Legacy-Systemen. Markieren einer Instanzvariablen namens target als Referenz auf das zu schützende Objekt. Markieren einer Methode (externer Vertrag) Markieren einer Methode als seiteneffektfreie Abfrage (in Abgrenzung zu Kommandos). Ist Überprüfung aktiviert, überprüft C4J zur Laufzeit automatisch die Methode auf Seiteneffektfreiheit Hagen Buchwald, Ben Romberg Contracts for Java C4J 6.0 VKSI

43 Contracts for Java: C4J 6.0 Die Syntax anhand von Beispielen C4J (externer Vertrag) public interface = PointSpec.class) public class private PointSpec public void classinvariant() { " assert target.getx() >= 0 : "x >= public public int getx() { Hagen Buchwald, Ben Romberg Contracts for Java C4J 6.0 VKSI

44 Contracts for Java: C4J 6.0 Die Syntax C4J 6.0 : statische Methoden precondition() postcondition() result() ignored() old() unchanged() Erläuterung Vorbedingung einer Methode (Pre-Condition). Nachbedingung einer Methode (Post-Condition). Rückgabewert der Methode (nur in Post-Conditions verfügbar). Liefert einen Dummy-Rückgabewert und wird benötigt, wenn die zu schützenden Methode in der zu schützenden Klasse (target class) einen Rückgabewert besitzt (Query). Abfragen des Zustands eines Objekts vor der Methodendurchführung (nur in Post-Conditions verfügbar). Überprüfung, ob der aktuelle Zustand des Objekts noch unverändert gegenüber dem Zustand des Objekts vor der Methodendurchführung ist (nur in Post-Conditions und bei Überprüfung verfügbar) Hagen Buchwald, Ben Romberg Contracts for Java C4J 6.0 VKSI

45 Contracts for Java: C4J 6.0 Die Syntax anhand von Beispielen C4J 6.0 : statische Methoden Beispiel precondition() public void setx(int x) { if (precondition()) { assert x >= 0 : "x >= 0"; postcondition() if (postcondition()) { assert target.getx() == x : "x set"; result() public int getx() { if (postcondition()) { int result = result(); assert result >= 0 : "result >= 0"; ignored() return ignored(); Hagen Buchwald, Ben Romberg Contracts for Java C4J 6.0 VKSI

46 Contracts for Java: C4J 6.0 Die Syntax anhand von Beispielen C4J 6.0 : statische Methoden Beispiel old() if (postcondition()) { assert target.size() == old(target.size()) + 1 : "size increased"; unchanged() if (postcondition()) { assert unchanged(target.size()) : "size "; Hagen Buchwald, Ben Romberg Contracts for Java C4J 6.0 VKSI

Typen in Java mit Interfaces und Unit Contracts - ein SOLIDer Ansatz

Typen in Java mit Interfaces und Unit Contracts - ein SOLIDer Ansatz Typen in Java mit Interfaces und Unit Contracts - ein SOLIDer Ansatz Clean Code Days 2017 Hagen Buchwald, Lars Alvincz andrena objects VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins

Mehr

TDD with Contracts. Karlsruher Entwicklertag 2014 Hagen Buchwald, andrena objects Prof. R. Küstermann, DHBW Karlsruhe. c4j.vksi.de

TDD with Contracts. Karlsruher Entwicklertag 2014 Hagen Buchwald, andrena objects Prof. R. Küstermann, DHBW Karlsruhe. c4j.vksi.de TDD with Contracts Karlsruher Entwicklertag 2014 Hagen Buchwald, andrena objects Prof. R. Küstermann, DHBW Karlsruhe VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins Karlsruher Software

Mehr

TDD with Contracts. XP Days Germany 2014, Hamburg Hagen Buchwald, andrena objects Prof. R. Küstermann, DHBW Karlsruhe. c4j.vksi.de

TDD with Contracts. XP Days Germany 2014, Hamburg Hagen Buchwald, andrena objects Prof. R. Küstermann, DHBW Karlsruhe. c4j.vksi.de TDD with Contracts XP Days Germany 2014, Hamburg Hagen Buchwald, andrena objects Prof. R. Küstermann, DHBW Karlsruhe VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins Karlsruher Software

Mehr

TDD with Contracts. XP Days Germany 2013 Dr. Lars Alvincz, Hagen Buchwald. c4j.vksi.de

TDD with Contracts. XP Days Germany 2013 Dr. Lars Alvincz, Hagen Buchwald. c4j.vksi.de TDD with Contracts XP Days Germany 2013 Dr. Lars Alvincz, Hagen Buchwald VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins Karlsruher Software Ingenieure VKSI Verein Karlsruher Software

Mehr

Die S.O.L.I.D-Prinzipien für C# Entwickler Thomas Claudius

Die S.O.L.I.D-Prinzipien für C# Entwickler Thomas Claudius Die S.O.L.I.D-Prinzipien für C# Entwickler Thomas Claudius Huber @ThomasClaudiusH BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH

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

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

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

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

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

Contracts im Software Engineering

Contracts im Software Engineering Contracts im Software Engineering Karlsruher Entwicklertag 2012 Karlsruhe, 10. Mai 2012 Ben Romberg Hagen Buchwald Institut AIFB KOMPLEXITÄTSMANAGEMENT KIT University of the State of Baden-Wuerttemberg

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

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

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

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

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

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

SOLID für.net und JavaScript

SOLID für.net und JavaScript SOLID für.net und JavaScript www.binarygears.de Stefan Dirschnabel Twitter: @StefanDirschnab #dncgn SOFTWARE ENTWICKLUNG BERATUNG SCHULUNG 5 Prinzipien für das Design von Software Wartbarer Code Leicht

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

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

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

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

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

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

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

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

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

Assertions (Zusicherungen)

Assertions (Zusicherungen) April 10, 2005 Oberseminar Software-Entwicklung Inhalt 1. Einführung (Motivation, Tony Hoare, Programmverifikation) 2. Design by Contract (Idee, Eiffel) 3. Praxis: Programming by Contract for Python 4.

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

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

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

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

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

DAS GROSSE ALM-SPEZIAL FÜR DIE ECLIPSE-WELT AUF ÜBER 50 HEFTSEITEN. C4J: Contracts, Java und Eclipse > 64 Mehr Ärger in Grün

DAS GROSSE ALM-SPEZIAL FÜR DIE ECLIPSE-WELT AUF ÜBER 50 HEFTSEITEN. C4J: Contracts, Java und Eclipse > 64 Mehr Ärger in Grün DAS GROSSE ALM-SPEZIAL FÜR DIE ECLIPSE-WELT AUF ÜBER 50 HEFTSEITEN 3.13 Eclipse & ALM ft! hier im He 51 ALM TOOLCHAIN EGIT/JGIT COLLABORATION TESTING ECLIPSE LYO SMART ECOSYSTEMS SCRUM VS. KANBAN r ü f

Mehr

Klassendefinitionen verstehen

Klassendefinitionen verstehen Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen

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

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

The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode

The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode The B Method B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode P. Schmitt: Formal Specification and Verification of Software p.1 The B Method

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in

Mehr

Softwarelizenzen und Open Source

Softwarelizenzen und Open Source 02. Februar 2016 Softwarelizenzen und Open Source Juristisches IT-Projektmanagement Vortrag von Michael Woborschil Inhalt 1. Einführung 2. Lizenzen allgemein 3. Open Source 4. Copyleft 4. Beispiele für

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

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

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords 4.0 Proinformatik III Objektorientierte Programmierung Michael Kölling University of Kent Canterbury, UK Selbstbestimmtes Lernen Vorlesung Tutorium Übungen Buch Web-Seite Üben, üben, üben! Format Vorlesung:

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

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

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

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

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

WAS IST DER KOMPARATIV: = The comparative

WAS IST DER KOMPARATIV: = The comparative DER KOMPATATIV VON ADJEKTIVEN UND ADVERBEN WAS IST DER KOMPARATIV: = The comparative Der Komparativ vergleicht zwei Sachen (durch ein Adjektiv oder ein Adverb) The comparative is exactly what it sounds

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

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

Kurzanleitung um Transponder mit einem scemtec TT Reader und der Software UniDemo zu lesen

Kurzanleitung um Transponder mit einem scemtec TT Reader und der Software UniDemo zu lesen Kurzanleitung um Transponder mit einem scemtec TT Reader und der Software UniDemo zu lesen QuickStart Guide to read a transponder with a scemtec TT reader and software UniDemo Voraussetzung: - PC mit der

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

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

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

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

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

Client-Server Beziehungen

Client-Server Beziehungen Ersetzbarkeit, Client-Server Beziehungen 182.132 VL Objektorientierte Programmierung Peter Puschner nach Folien von Franz Puntigam, TU Wien Überblick Ersetzbarkeit Kovarianz, Kontravarianz, Invarianz Client-Server

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

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

Das neue Volume-Flag S (Scannen erforderlich)

Das neue Volume-Flag S (Scannen erforderlich) NetWorker 7.4.2 - Allgemein Tip 2, Seite 1/5 Das neue Volume-Flag S (Scannen erforderlich) Nach der Wiederherstellung des Bootstraps ist es sehr wahrscheinlich, daß die in ihm enthaltenen Informationen

Mehr

Python SVN-Revision 12

Python SVN-Revision 12 Python SVN-Revision 12 Uwe Ziegenhagen 7. Januar 2012 Vorwort Dieses Skript erhebt keinen Anspruch auf Vollständigkeit oder Richtigkeit. Es wird geschrieben, um mir als Gedächtnisstütze für den Umgang

Mehr

SDK zur CRM-Word-Schnittstelle

SDK zur CRM-Word-Schnittstelle SDK zur CRM-Word-Schnittstelle SDK zur CRM Wordinterface für Microsoft Dynamics CRM2011 zur Version 5.2.0 Inhalt 1. Vorwort... 3 2. Voraussetzungen... 4 3. Funktionsbeschreibung... 4 4. Technische Funktionsbeschreibung...

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

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

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

Inhalt. 3.1 Der inkrementelle Entwurf im Überblick... 13 3.2 Flache Aufwandskurve... 14 3.3 Qualitätskriterien für den inkrementellen Entwurf...

Inhalt. 3.1 Der inkrementelle Entwurf im Überblick... 13 3.2 Flache Aufwandskurve... 14 3.3 Qualitätskriterien für den inkrementellen Entwurf... ix 1 Einleitung 1 Roman Pichler Stefan Roock 1.1 Agile Softwarewicklung und Scrum............................ 1 1.2 Zielgruppe und Zielsetzung.................................. 2 1.3 Überblick über das

Mehr

How-to: Webserver NAT. Securepoint Security System Version 2007nx

How-to: Webserver NAT. Securepoint Security System Version 2007nx Securepoint Security System Inhaltsverzeichnis Webserver NAT... 3 1 Konfiguration einer Webserver NAT... 4 1.1 Einrichten von Netzwerkobjekten... 4 1.2 Erstellen von Firewall-Regeln... 6 Seite 2 Webserver

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Mobile-Szenario in der Integrationskomponente einrichten

Mobile-Szenario in der Integrationskomponente einrichten SAP Business One Konfigurationsleitfaden PUBLIC Mobile-Szenario in der Integrationskomponente einrichten Zutreffendes Release: SAP Business One 8.81 Alle Länder Deutsch November 2010 Inhalt Einleitung...

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

Autorisierung von ArcGIS 10.3 for Server mit Internetverbindung

Autorisierung von ArcGIS 10.3 for Server mit Internetverbindung Autorisierung von ArcGIS 10.3 for Server mit Internetverbindung (Februar 2015) Copyright 2015 Esri Deutschland GmbH Inhalt 1 Einleitung... 3 2 Voraussetzungen... 3 3 Aktualisierungsprozess... 3 4 Überprüfung

Mehr

Praktische Übung 'JUnit-Test'

Praktische Übung 'JUnit-Test' Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse

Mehr

REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1

REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1 REQUIREMENTS ENGINEERING KONSTRUKTIVE QS REQUIREMENTS ENGINEERING 1 QUALITÄT FÜR SIE Qualität zeigt sich in Ergebnissen und Erfolgen. Sie hängt von der jeweiligen Problemstellung ab, deshalb sehen wir

Mehr

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

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

Klausur BWL V Investition und Finanzierung (70172)

Klausur BWL V Investition und Finanzierung (70172) Klausur BWL V Investition und Finanzierung (70172) Prof. Dr. Daniel Rösch am 13. Juli 2009, 13.00-14.00 Name, Vorname Anmerkungen: 1. Bei den Rechenaufgaben ist die allgemeine Formel zur Berechnung der

Mehr

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

Mehr

Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung Outlook Weiterleitungen & Abwesenheitsmeldungen Seite 1 von 6 Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung Erstellt: Quelle: 3.12.09/MM \\rsiag-s3aad\install\vnc\email Weiterleitung

Mehr

Neuer Releasestand Finanzbuchhaltung DAM-EDV E.1.22. Inhaltsverzeichnis. 1. Neuerungen Schnittstelle Telebanking mit IBAN und BIC...

Neuer Releasestand Finanzbuchhaltung DAM-EDV E.1.22. Inhaltsverzeichnis. 1. Neuerungen Schnittstelle Telebanking mit IBAN und BIC... Neuer Releasestand Finanzbuchhaltung DAM-EDV E.1.22 Inhaltsverzeichnis 1. Neuerungen Schnittstelle Telebanking mit IBAN und BIC... 2 1a. Programm 257: Auflösen Vorschlag Telebanking... 2 1b. Programm 254:

Mehr

Version 0.3. Installation von MinGW und Eclipse CDT

Version 0.3. Installation von MinGW und Eclipse CDT Version 0.3 Installation von MinGW und Eclipse CDT 1. Stellen Sie fest, ob Sie Windows in der 32 Bit Version oder in der 64 Bit Version installiert haben. 2. Prüfen Sie, welche Java Runtime vorhanden ist.

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

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08 Security Patterns Benny Clauss Sicherheit in der Softwareentwicklung WS 07/08 Gliederung Pattern Was ist das? Warum Security Pattern? Security Pattern Aufbau Security Pattern Alternative Beispiel Patternsysteme

Mehr

Hauptseminar AOSD. Design-by-Contract

Hauptseminar AOSD. Design-by-Contract Hauptseminar AOSD Seite 1 Entstehung Was ist das? Java Annotations und AOP ConceptJ Zusammenfassung Seite 2 Entstehung Entwickelt von Bertrand Meyer Heute Prof. an der ETH Zürich Erstmals in Programmiersprache

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

SWE5 Übungen zu Software-Engineering

SWE5 Übungen zu Software-Engineering 1 Übungen zu Software-Engineering 1) Klassen und Objekte 2) Telefonanlage 3) Objekt- und Klassendiagramme 4) Assoziationen 5) Telefonanlage (Erweiterung) 6) Fahrzeuge 7) Familien 2 Aufgabe 1: Klassen und

Mehr

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X SwissMacMeeting #1 26. Juni 2004 Messeturm Basel http://mac.naepflin.com Was ist das Ziel dieses Kurses? Starthilfe Einblick in die Möglichkeiten,

Mehr

Einführung in Eclipse und Java

Einführung in Eclipse und Java Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik

Mehr

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software Artologik EZ-Equip Plug-in für EZbooking version 3.2 Artologik EZbooking und EZ-Equip EZbooking, Ihre webbasierte Software zum Reservieren von Räumen und Objekten, kann nun durch die Ergänzung um ein oder

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

Installation mit Lizenz-Server verbinden

Installation mit Lizenz-Server verbinden Einsteiger Fortgeschrittene Profis markus.meinl@m-quest.ch Version 1.0 Voraussetzungen für diesen Workshop 1. Die M-Quest Suite 2005-M oder höher ist auf diesem Rechner installiert 2. Der M-Lock 2005 Lizenzserver

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

Programmiertechnik II

Programmiertechnik II Modultests Ziele Überprüfung der Korrektheit eines Moduls Korrektheit: Übereinstimmung mit (informaler) Spezifikation Modul: kleine testbare Einheit (Funktion, Klasse) Engl.: unit test White box testing

Mehr

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher) Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher) CS-TING Version 9 Das Programm CS-TING Version 9 für Microsoft Word 2000 (und höher) verwendet Makros bei der

Mehr