TDD with Contracts ein SOLIDer Ansatz
|
|
- Margarete Geier
- vor 8 Jahren
- Abrufe
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 Clean Code Days 2017 Hagen Buchwald, Lars Alvincz andrena objects VKSI SIG C4J - Special Interest Group Contracts for Java des Vereins
MehrTDD 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
MehrTDD 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
MehrTDD 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
MehrDie 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
MehrClient-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
MehrSEP 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
MehrProgrammieren 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
MehrJavadoc. 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
MehrObjektorientierte 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/
MehrContracts 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
MehrVererbung & 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
MehrJava 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
MehrJava 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
MehrAssoziation 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
MehrDesign 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
MehrJavakurs 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
MehrSOLID 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
MehrVorkurs 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:
MehrObjektorientierte 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
MehrVerhindert, 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:
MehrKlassenentwurf. 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 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
MehrObjektorientierte 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
MehrProf. 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
MehrEinfü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
MehrNathan 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
MehrAssertions (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.
Mehr2015-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
MehrPrinzipien 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........................
MehrKlausur 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-
MehrWintersemester 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
MehrApplet 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
MehrDAS 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
MehrKlassendefinitionen verstehen
Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen
MehrGrundlagen 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
Mehr5. 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:
MehrThe 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 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,
MehrObjektorientierung: 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
MehrSoftwarelizenzen 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
MehrObjektorientierte 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)
Mehr5. 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,
MehrSelbstbestimmtes 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:
MehrSoftware 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
MehrGroß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,
MehrProbeklausur 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
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
MehrProgrammentwicklung 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
MehrWAS 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
MehrEinfü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
MehrJava 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
MehrKurzanleitung 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
MehrJava: 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
MehrSoftware 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
MehrEs 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
Mehr3 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
MehrProgrammieren 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
MehrKlausur 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
MehrEin 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++,
MehrClient-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
Mehr1. 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:
MehrTesten 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
MehrDas 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
MehrPython 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
MehrSDK 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...
MehrProgrammierkurs 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
MehrEinfü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
MehrEinfü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
MehrInhalt. 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
MehrHow-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
MehrProgrammierkurs 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
MehrMobile-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...
MehrFachgebiet 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
MehrAutorisierung 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
MehrPraktische Ü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
MehrREQUIREMENTS 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
MehrSichtbarkeit & 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
MehrInnere 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
MehrSome 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
MehrKlausur 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
MehrObjects 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
MehrJava 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
MehrSoftware-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
MehrBeschreibung 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
MehrNeuer 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:
MehrVersion 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.
MehrFortgeschrittenes 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
MehrSecurity 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
MehrHauptseminar 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
MehrAlbert 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.
MehrSWE5 Ü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
MehrXcode/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,
MehrEinfü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
MehrHandbuch. 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
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
MehrInstallation 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
MehrInformatik 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,
MehrProgrammiertechnik 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
MehrWichtige 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