EPMD Teil 6 Feature-Orientierung

Größe: px
Ab Seite anzeigen:

Download "EPMD Teil 6 Feature-Orientierung"

Transkript

1 EPMD Teil 6 Feature-Orientierung Christian Kästner (Universität Magdeburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg)

2 Kästner, Apel, Saake EPMD Folie 6-2 Grundidee Agenda Implementierung mit AHEAD Prinzip der Uniformität Formalisierung

3 Kästner, Apel, Saake EPMD Folie 6-3 Ziel: Feature-Kohäsion ( Feature Traceability Problem) Eigenschaft eines Programms alle Implementierungseinheiten eines Features an einer Stelle im Code zu lokalisieren Features sind explizit im Programmcode Ein Frage des Programmiersprache bzw. der Programmierumgebung! Virtuelle vs. physische Trennung

4 Kästner, Apel, Saake EPMD Folie 6-4 Feature Traceability mit Werkzeugunterstützung Feature-Modell Ein Werkzeug verwaltet die Abbildung Implementierungseinheiten

5 Kästner, Apel, Saake EPMD Folie 6-5 Feature Traceability mit Sprachunterstützung Feature-Modell 1:1 Abbildung (oder zumindest 1:n) Implementierungseinheiten

6 Kästner, Apel, Saake EPMD Folie 6-6 Feature-Orientierte Programmierung Prehofer, ECOOP'97 und Batory, ICSE'03 Sprachbasierter Ansatz zur Überwindung des Feature-Traceability-Problems Jedes Feature wird durch ein Feature-Modul implementiert Lösung des Feature-Traceability-Problems Trennung und Modularisierung von Features Einfache Feature-Komposition Algebra-basierte Programmgenerierung

7 Kästner, Apel, Saake EPMD Folie 6-10 Feature-Komposition

8 Kästner, Apel, Saake EPMD Folie 6-11 Produktlinien mit Feature-Modulen Feature-Modell 1:1 Mapping von Features zu Feature-Modulen Feature-Module Feature-Auswahl als Eingabe Feature-Auswahl Kompositions-Algorithmus Fertiges Program

9 Kästner, Apel, Saake EPMD Folie 6-12 Grundidee Agenda Implementierung mit AHEAD Prinzip der Uniformität Formalisierung

10 Kästner, Apel, Saake EPMD Folie 6-13 Implementierung von Feature-Modulen Aufteilung in Klassen ist etabliert und als Grundstruktur nutzbar Features werden oft von mehreren Klassen implementiert Klassen implementieren oft mehr als ein Feature Idee: Klassenstruktur prinzipiell beibehalten, aber Klassen aufteilen AHEAD (Algebraic Hierarchical Equations for Application Design) oder FeatureHouse als ein mögliches Werkzeug

11 Kästner, Apel, Saake EPMD Folie 6-14 Aufspalten von Klassen Klassen Graph Edge Node Weight Color Search Features Directed Weighted Colored

12 Kästner, Apel, Saake EPMD Folie 6-15 Kollaborationen & Rollen Kollaboration: eine Menge von Klassen, die miteinander interagieren, um ein Feature zu implementieren Verschiedene Klassen spielen verschiedene Rollen innerhalb einer Kollaboration Eine Klasse spielt verschiedene Rollen in verschiedenen Kollaborationen Eine Rolle kapselt das Verhalten/die Funktionalität einer Klasse, welche(s) für eine Kollaboration relevant ist

13 Kästner, Apel, Saake EPMD Folie 6-16 Kollaborationen & Rollen Klassen Graph Edge Node Weight Color Kollaborationen Search Directed Weighted Colored Rollen

14 Kästner, Apel, Saake EPMD Folie 6-17 Beispiel Die Kollaboration Weighted umfasst alle Rollen, die nötig sind, um gewichtete Kanten zu implementieren (Graph, Edge und Weight) Die Klasse Edge hat eine Rolle, die den relevanten Teil für gewichtete Kanten implementiert, z. B. das Feld weight, die Methoden getweight und setweight und die Erweiterung der Methode print. Die Klasse Edge hat eine weitere Rolle für gerichtete Kanten

15 Kästner, Apel, Saake EPMD Folie 6-18 Repräsentation von Rollen und Kollaborationen in AHEAD Verschiedene Möglichkeiten für Rollen Jede Rolle einer Kollaboration in einem Modul (z. B. einer Java Datei) Geringe Feature-Kohäsion Klassenhierarchien Unzureichende Variabilität Klassenverfeinerung (class refinement) Sammlung von Rollen in Kollaborationen Verzeichnisse enthalten Rollen (containment hierarchies); implementieren Feature-Module Geschachtelte Module möglich

16 Kästner, Apel, Saake EPMD Folie 6-19 Auszug: Kollaborationenentwurf class Graph { Vector nv = new Vector(); Vector ev = new Vector(); Edge add(node n, Node m) { Edge e = new Edge(n, m); nv.add(n); nv.add(m); ev.add(e); return e; void print() { for(int i = 0; i < ev.size(); i++) ((Edge)ev.get(i)).print(); class Edge { Node a, b; Edge(Node _a, Node _b) { a = _a; b = _b; void print() { a.print(); b.print(); class Node { int id = 0; void print() { System.out.print(id); refines class Graph { Edge add(node n, Node m) { Edge e = Super.add(n, m); e.weight = new Weight(); Edge add(node n, Node m, Weight w) Edge e = new Edge(n, m); nv.add(n); nv.add(m); ev.add(e); e.weight = w; return e; refines class Edge { Weight weight = new Weight(); void print() { Super.print(); weight.print(); class Weight { void print() {...

17 Kästner, Apel, Saake EPMD Folie 6-20 Auszug: Verzeichnishierarchie

18 Kästner, Apel, Saake EPMD Folie 6-21 Implementierung von Klassenverfeinerungen mit Jak Erweiterung von Java 1.4 mit neuen Schlüsselwörtern für Verfeinerungen refines für Klassenverfeinerungen Super für Methodenverfeinerungen Aus technischen Gründen müssen hinter Super die erwarteten Typen der Methode angegeben werden, z. B. Super(String, int).print('abc', 3) refines class Edge { private int weight; void print() { Super().print(); System.out.print(' weighted with' + weigth);

19 Kästner, Apel, Saake EPMD Folie 6-22 Implementierung von Klassenverfeinerungen mit FeatureHouse Behält Java 1.5 Syntax, aber neuer Kompositionsprozess Jede Klasse kann verfeinert werden (kein refines Schlüsselwort) original für Methodenverfeinerungen class Edge { private int weight; void print() { original(); System.out.print(" weighted with" + weigth);

20 Kästner, Apel, Saake EPMD Folie 6-23 Beispiel: Klassenverfeinerungen Edge.jak class Edge {... Schrittweise Erweiterung der Basisimplementierung durch Verfeinerungen Edge.jak refines class Edge { private Node start;... Ungenaue Definition der Basisimplementierung Edge.jak refines class Edge { private int weight;...

21 Kästner, Apel, Saake EPMD Folie 6-24 Beispiel: Methodenverfeinerungen Methoden können in jeder Verfeinerung eingeführt oder erweitert werden Überschreiben von Methoden Aufruf der Methode aus vorheriger Verfeinerung mit Super Ähnlich zu Vererbung class Edge { void print() { System.out.print( 'Edge between ' + node1+' and + node2); refines class Edge class { Edge { private Node start; void print() { Super.print(); original(); System.out.print( ' directed from ' + start); refines class Edge class { Edge { private int weight; void print() { Super.print(); original(); System.out.print( ' weighted with' + weigth);

22 Kästner, Apel, Saake EPMD Folie 6-25 Alternativen zu Klassenverfeinerungen Traits Keinen Zustand Virtuelle Klassen Kollaboration Familienklasse Rolle virtuelle (innere) Klasse Komposition und Instantiierung zur Laufzeit z.b. CaesarJ Verschachtelte Klassen-, Layer- und Package- Hierarchien z.b. Scala, Classbox/J, ContextL

23 Kästner, Apel, Saake EPMD Folie 6-26 Komposition in AHEAD Equation-Datei jampack Komponierte Jak-Dateien Composer mixin jak2java Feature-Module (Verzeichnisse) mit Jak-Dateien Java-Dateien

24 Kästner, Apel, Saake EPMD Folie 6-27 Komposition in AHEAD Equation-Datei FeatureHouse (FSTComposer) Java-Dateien Feature-Module (Verzeichnisse) mit Jak-Dateien

25 Kästner, Apel, Saake EPMD Folie 6-28 Komposition von Verzeichnissen Alle Rollen einer Kollaboration werden in einem Package/Modul gespeichert, r.d.r. in einem Verzeichnis Komposition von Kollaborationen durch Komposition von Klassen mit allen enthaltenen gleichnamigen Klassenverfeinerungen

26 Kästner, Apel, Saake EPMD Folie 6-29 Beispielkomposition Base Search Directed Weighted Colored Graph Edge Node Weight Color Graph Edge Node Feature-Auswahl in Equation-Datei (Textdatei, Feature-Namen in Zeilen)

27 Kästner, Apel, Saake EPMD Folie 6-30 Komposition mit Jampack Zusammenbauen zu einer Klasse durch Überlagerung (superimposition) Super/original- Aufrufe werden durch inlining integriert Ergebnis: eine Klasse class Edge { private Node start; private int weight; void print() { System.out.print( 'Edge between ' + node1+' and + node2); System.out.print( ' directed from ' + start); System.out.print( ' weighted with' + weigth);

28 Kästner, Apel, Saake EPMD Folie 6-31 Komposition mit Mixin Generierung einer Klasse pro Rolle mit entsprechender Hierarchie Umbenennung, so dass finale Klasse den Klassennamen erhält Ersetzen von Super durch super class Edge$$Base { void print() {... class Edge$$Directed extends Edge$$Base { private Node start; void print() { super.print(); System.out.print( ' directed from ' + start); class Edge extends Edge$$Directed{ private int weight; void print() { super.print(); System.out.print( ' weighted with' + weigth);

29 Kästner, Apel, Saake EPMD Folie 6-32 Jampack Mixins vs. Jampack Zuordnung von generierten Code zu Rollen verschwindet nach Generierung Mixins Code-Overhead Langsamer, durch Indirektion bei Methodenaufrufen

30 Kästner, Apel, Saake EPMD Folie 6-33 Werkzeuge AHEAD Tool Suite + Dokumentation Kommandozeilenwerkzeuge für Jak (Java 1.4-Erweiterung) FeatureHouse Kommandozeilenwerkzeug für Java, C#, C, Haskell, UML, FeatureC++ Alternative zu AHEAD für C++ FeatureIDE Eclipse Plugin für AHEAD, FeatureHouse und FeatureC++ Automatisches Bauen, Syntax Highlighting, etc

31 Kästner, Apel, Saake EPMD Folie 6-34 FeatureIDE Demo Feature-Modell anlegen Jak-Dateien erstellen Equation-Datei erstellen - Programm starten

32 Kästner, Apel, Saake EPMD Folie 6-35 Zusammenfassung zum AHEAD-Ansatz Eine Basisklasse + beliebige Verfeinerungen (Rollen) Klassenverfeinerungen können Felder einführen Methoden einführen Methoden erweitern Feature-Modul (Kollaboration): Verzeichnis mit Basisklassen und/oder Verfeinerungen Beim Kompilieren werden Basisklasse + Verfeinerungen der ausgewählten Feature-Module zusammengebaut

33 Kästner, Apel, Saake EPMD Folie 6-36 Grundidee Agenda Implementierung mit AHEAD Prinzip der Uniformität Formalisierung

34 Kästner, Apel, Saake EPMD Folie 6-37 Prinzip der Uniformität Software besteht nicht nur aus Java-Quellcode Andere Programmiersprachen (z. B. C++, Javascript) Build-Skripte (Make, XML) Dokumentation (XML, HTML, PDF, Text, Word) Grammatiken (BNF, ANTLR, JavaCC, Bali) Modelle (UML, XMI,...) Alle Software-Artefakte müssen verfeinert werden können Integration von verschiedenen Artefakten in Kollaborationen

35 Kästner, Apel, Saake EPMD Folie 6-38 Prinzip der Uniformität Features are implemented by a diverse selection of software artifacts and any kind of software artifact can be subject of subsequent refinement. -- Don Batory Don Batory

36 Kästner, Apel, Saake EPMD Folie 6-39 Beispiel: Prinzip der Uniformität Graph Edge Node Buildfile Documentation Base Grap h.jak Edge.jak Node.jak build. xml index.htm Search Grap h.jak Node.jak build. xml index.htm Directed Grap h.jak Edge.jak build. xml index.htm Weighted Grap h.jak Edge.jak build. xml index.htm Colored Node.jak Node.jak build. xml index.htm Weitere Dateien: Grammatiken, Unit-Tests, Modelle, Spezifikationen, u.v.m.

37 Kästner, Apel, Saake EPMD Folie 6-40 Werkzeugunterstüzung AHEAD Konzept sprachübergreifend, separate Tools für: Jak (Java 1.4) Xak (XML) Bali-Grammatiken FeatureHouse sprachübergreifendes Tool, leicht erweiterbar, z. Z. implementiert für: Java 1.5 C# C Haskell JavaCC- und Bali-Grammatiken XML Virtuelle Klassen, Traits, Scala sind sprachabhängig

38 Kästner, Apel, Saake EPMD Folie 6-41 Grundidee Agenda Implementierung mit AHEAD Prinzip der Uniformität Formalisierung

39 Kästner, Apel, Saake EPMD Folie 6-42 Wozu eine Formalisierung? Diskussion bisher hauptsächlich auf Ebene verschiedener Sprachkonstrukte Eine Formalisierung zeigt die gemeinsamen Ideen in einem abstrakten Modell und ignoriert ablenkende Details Abstrahiert von Details in AHEAD, FeatureHouse oder anderen Sprachen Ermöglicht die Diskussion von Konzepten unabhängig einer konkreten Programmiersprache ( Prinzip der Uniformität)

40 Kästner, Apel, Saake EPMD Folie 6-43 Wozu eine Formalisierung? Erlaubt später neue Operationen auf Features (z. B. Typprüfung oder Interaktionsanalyse) formal und sprachunabhängig zu diskutieren Vereinfacht die Implementierung von Werkzeugen (z. B. Komposition innerer Klassen?) Analyse algebraischer Eigenschaften von Feature- Komposition potentielle Optimierung

41 Kästner, Apel, Saake EPMD Folie 6-44 Feature-Komposition Features können mit anderen Features komponiert werden und bilden so komplexere Features Programme sind selber auch (zusammengesetzte) Features Menge F der Features; Kompositionsoperator (assoziativ, aber nicht kommutativ, wie wir zeigen werden)

42 Kästner, Apel, Saake EPMD Folie 6-45 Features modelliert als Bäume Ein Feature besteht aus einem oder mehreren Code-Artefakten, je mit einer internen Struktur Features werden als Bäume modelliert (Feature StructureTree FST), welche die Struktur der Artefakte reflektieren util package util; class Calc { int e0 = 0, e1 = 0, e2 = 0; void enter(int val) { e2 = e1; e1 = e0; e0 = val; void clear() { e0 = e1 = e2 = 0; String top() { return String.valueOf(e0); e0 Calc e1 e2 top enter clear Feature Structure Tree (FST)

43 Kästner, Apel, Saake EPMD Folie 6-46 Struktur von FSTs Nur die wesentliche Struktur eines Artefakts im FST Beispiel Java: Packages, Klassen, Methoden, und Felder abgebildet Statements, Parameter, Initialwert von Feldern nicht im FST abgebildet Andere Granularität möglich je nach Programmiersprache und Aufgabe wählen

44 Kästner, Apel, Saake EPMD Folie 6-47 Eigenschaften von FSTs Knoten im FST haben einen Namen und einen Typ Ordnung der Kinder kann relevant sein package util; class Calc { int e0 = 0, e1 = 0, e2 = 0; void enter(int val) { e2 = e1; e1 = e0; e0 = val; void clear() { e0 = e1 = e2 = 0; String top() { return String.valueOf(e0); e0 util Calc package class e1 e2 top enter clear field field field method method method

45 Kästner, Apel, Saake EPMD Folie 6-48 package util; class Calc { void add() { e0 = e1 + e0; e1 = e2; feature: Add Komposition durch Überlagerung von Bäumen feature: CalcBase package util; class Calc { int e0 = 0, e1 = 0, e2 = 0; void enter(int val) { e2 = e1; e1 = e0; e0 = val; void clear() { e0 = e1 = e2 = 0; String top() { return String. valueof(e0); = feature: CalcAdd package util; class Calc { int e0 = 0, e1 = 0, e2 = 0; void enter(int val) { e2 = e1; e1 = e0; e0 = val; void clear() { e0 = e1 = e2 = 0; String top() { //... void add() { e0 = e1 + e0; e1 = e2; util Calc util = Calc util Calc add e0 e1 e2 top enter clear e0 e1 e2 top enter clear add

46 Kästner, Apel, Saake EPMD Folie 6-49 Überlagerung von Bäumen Rekursive Überlagerung (superimposition) der Knoten, beginnend bei der Wurzel Zwei Knoten werden überlagert, wenn ihre Vaterknoten überlagert wurden... und beide den gleichen Namen und Typ haben Nach der Überlagerung von zwei Knoten, werden ihre Kinder rekursiv überlagert Wenn zwei Knoten nicht überlagert wurden, werden sie beide dem Ergebnisbaum an entsprechender Stelle hinzugefügt

47 Kästner, Apel, Saake EPMD Folie 6-50 Terminal- und Nichtterminalknoten Nichtterminalknoten Transparente Knoten Können Kinder haben Name und Typ, aber keinen weiteren Inhalt Können problemlos überlagert werden Terminalknoten Haben keine Kinder Name und Typ Können weiteren Inhalt haben, Überlagerung daher nicht trivial

48 Kästner, Apel, Saake EPMD Folie 6-51 Feature-Komposition Rekursive Komposition der FST-Elemente package package package (auch für Unterpakete) class class class (auch für innere Klassen) method method? field field?

49 Kästner, Apel, Saake EPMD Folie 6-52 Überlagerung von Terminalknoten Option 1: Zwei Terminalknoten mit gleichem Namen und Typ können nie überlagert werden Option 2: Zwei Terminalknoten mit gleichem Namen und Typ können unter bestimmten Umständen überlagert werden method method method, falls eine Methode die andere erweitert, z. B. indem sie Super oder original aufruft field field field, falls min. ein Attribut keinen Initialwert hat

50 Kästner, Apel, Saake EPMD Folie 6-53 Komposition von Terminalknoten class Calc { int count = 0; void enter(int val) { original(val); count++; class Calc { int count; void enter(int val){ = e2 = e1; e1 = e0; e0 = val; class Calc { int count = 0; void enter(int val) { e2 = e1; e1 = e0; e0 = val; count++;... Calc... = Calc... Calc enter count enter count enter count

51 Kästner, Apel, Saake EPMD Folie 6-54 Bedingungen durch bisherige Definition Die Struktur eines Features muss hierarchisch sein (Baumstruktur) Jedes Strukturelement muss einen Namen und einen Typ haben Ein Element darf nicht zwei Kinder mit dem gleichen Namen und dem gleichen Typ haben Elemente, die keine hierarchische Unterstruktur haben (Terminale) müssen eine spezielle Kompositionsregel angeben oder können nicht komponiert werden

52 Kästner, Apel, Saake EPMD Folie 6-55 Welche Sprachen können mittels FSTs modelliert werden? Objektorientierte Sprachen erfüllen meist die Bedingungen Einige andere Sprachen, u. a. Grammatiken, erfüllen die Bedingungen auch Sprachen, welche die Bedingungen nicht erfüllen gelten als nicht feature-ready, da sie nicht ausreichend Struktur aufweisen Einige Sprachen können mit zusätzlicher Struktur angereichert werden, z. B. XML

53 Kästner, Apel, Saake EPMD Folie 6-56 Feature-Algebra Feature-Algebra beschreibt Operationen auf FSTs Beschreibt die Komposition als algebraische Ausdrücke

54 Kästner, Apel, Saake EPMD Folie 6-57 Pfade und Introduktionen Jedes Element im FST wird als atomare Introduktion bezeichnet Notation als Pfadausdruck i 1 = util i 3 = util.calc.enter util Calc enter count i 2 = util.calc i 4 = util.calc.count Die hierarchische Struktur ist in den Identifikatoren kodiert

55 Kästner, Apel, Saake EPMD Folie 6-58 Introduktionen kodieren Feature- und Typinformationen Zusätzlich zu der in den Folien verwendeten Notation müssen die Pfade auch die Typen und das Feature kodieren util package Calc class e0 e1 e2 top enter clear field field field method method method i CalcBase:util package. Calc class.enter method

56 Kästner, Apel, Saake EPMD Folie 6-59 Features und Introduktionen Ein Feature kann durch eine Summe von Introduktionen ( ) beschrieben werden CalcProg CalcBase CalcBase.Calc CalcBase.Calc.e0 CalcBase.Calc.e1 CalcBase.Calc.e2 CalcBase.Calc.enter CalcBase.Calc.clear CalcBase.Calc.top Ein Compiler kann diesen Ausdruck auswerten, optimieren und Code erzeugen

57 Kästner, Apel, Saake EPMD Folie 6-60 Feature-Komposition Zwei Features werden komponiert indem ihre Introduktionen addiert werden F j Werden zwei Introduktionen mit gleichem Pfad addiert, werden diese überlagert (oder gelten als Fehler) Aus der Introduktionssumme kann jetzt rückwärts wieder ein FST erstellt werden F i

58 Kästner, Apel, Saake EPMD Folie 6-61 Neue Knoten & Unterbäume einfügen Calculator Calculator Calculator Display notify Display show = show Display notify Calculator Calculator Calculator Display notify Calc enter = Calc enter Display notify

59 Kästner, Apel, Saake EPMD Folie 6-62 Anwendungsfälle der Introduktionssumme Einfügen neuer Knoten und/oder Unterbäume Hinzufügen neuer Pakete, Klassen, Schnittstellen, Methoden, Attribute Überschreiben von Blattknoten Methoden überschreiben Initialwert von Feldern überschreiben (Konkatenieren von implements und extends Klauseln)

60 Kästner, Apel, Saake EPMD Folie 6-63 Introduktionssumme Die Summe über der Menge I der Introduktionen erzeugt einen idempotenten, nichtkommutativen Monoid ( I,, ξ ) Assoziativität: (a b) c = a (b c) Identität: ξ a = a ξ = a (ξ - Xi ist die leere Introduktion) Nicht-Kommutativität: a b b a (aufgrund von nicht-kommutativer Terminal- Komposition) Idempotenz: a a = a (sogar entfernte Idempotenz: a b a = b a )

61 Kästner, Apel, Saake EPMD Folie 6-64 Formalisierung Fazit Soweit FST-Modell Features sind Bäume Komposition durch Addition der Baumelemente Spezielle Kompositionsregeln für Terminale Die Feature-Algebra mit Introduktionssumme kann den gesamten Funktionsumfang Kollaborationssprachen (z. B. Jak) modellieren Ausblick Später Erweiterung um Aspekte Einführung eines weiteren Konstrukts neben Introduktionen: die Modifikation

62 Kästner, Apel, Saake EPMD Folie 6-65 Wozu war das ganze gut? Die Algebra zeigt die Grenzen von Feature-Komposition à la Jak... die Anforderungen an Sprachen um feature-ready zu sein... grundsätzliche, wiederverwendbare Mechanismen für die Implementierung von Kompositionstools

63 Kästner, Apel, Saake EPMD Folie 6-66 FeatureHouse FeatureHouse entstand aus der Formalisierung

64 Kästner, Apel, Saake EPMD Folie 6-67 FeatureHouse-Fallstudien Features LOC Artifact Types Description FFJ JavaCC Grammar of the FFJ language Arith Haskell Arithmetic expression evaluator GraphLib C Low level graph library Phone XMI/UML Phone system ACS XMI/UML Audio control system CMS XMI/UML Conference management system GPL (C#) C# Graph product line (C# version) GBS XMI/UML Gas boiler control system (IKERLAN) GPL (Java) Java, XHTML Graph product line (Java version) FGL Haskell Functional graph library Violet Java, Text Visual UML editor GUIDSL Java Product line configuration tool Berkeley DB Java Oracle's embedded DBMS

65 Kästner, Apel, Saake EPMD Folie 6-68 Perspektiven der Algebra Diskussion von Sprachmitteln unabhängig einer spezifischen Sprache, z. B. Was würde es bedeuten wenn ein Feature in einem Ausdruck mehrfach vorkommen kann (z. B. X Y X)? Wie können wir Komposition von Strukturen erreichen, bei dem die Reihenfolge der Kinder wichtig ist (z. B. XML)? Unter welchen Voraussetzungen ist Feature-Komposition kommutativ? Wie können wir eine Sprache feature-ready gestalten (insb. Definition von Sprachmechanismen für Terminalüberlagerung)? Was passiert wenn wir das Löschen von Methoden erlauben wollen?

66 Kästner, Apel, Saake EPMD Folie 6-69 Zusammenfassung Feature-orientierte Programmierung löst das Feature-Traceability-Problem durch Kollaborationen und Rollen (1:1 Mapping) Implementierung mittels Klassenverfeinerungen Prinzip der Uniformität Formalisierung als Feature Structure Trees und Feature-Algebra

67 Kästner, Apel, Saake EPMD Folie 6-70 Ausblick Implementierung von querschneidenen Belangen kann in bestimmten Fällen sehr aufwendig sein Aspektorientierung Features sind nicht immer unabhängig. Wie implementiert man abhängige Kollaborationen? Bewertung / Abgrenzung

68 Kästner, Apel, Saake EPMD Folie 6-71 Literatur I D. Batory, J. N. Sarvela, and A. Rauschmayer. Scaling Step- Wise Refinement. IEEE Transactions on Software Engineering, 30(6), [Vorstellung von AHEAD] S. Apel, C. Kästner, and C. Lengauer. FeatureHouse: Language-Independent, Automated Software Composition. In Proc. Int l Conf. Software Software Engineering, [Überblick über FSTs und FeatureHouse] M. Kuhlemann, M. Rosenmüller, S. Apel, and T. Leich. Streamlining Feature-Oriented Designs. In Proc. Int'l. Symp. Software Composition, 2007 [Vergleich von Mixin und Jampack]

69 Kästner, Apel, Saake EPMD Folie 6-72 Literatur II S. Apel, C. Lengauer, B. Möller, and C. Kästner. An Algebra for Features and Feature Composition. In Proc. Int l Conf. Algebraic Methodology and Software Technology, Springer, [Formalisierung & Feature-Algebra]

Softwareproduktlinien Teil 7: Feature-Orientierung

Softwareproduktlinien Teil 7: Feature-Orientierung Softwareproduktlinien Teil 7: Feature-Orientierung Sven Apel (Universität Passau) Christian Kästner (Universität Marburg) Gunter Saake (Universität Magdeburg) 1 Application Eng. Domain Eng. Wie Variabilität

Mehr

So#wareproduktlinien - Feature-Orien4erung. Sven Apel (Universität Passau) Chris4an Kästner (CMU) Gunter Saake, Thomas Thüm (Universität Magdeburg)

So#wareproduktlinien - Feature-Orien4erung. Sven Apel (Universität Passau) Chris4an Kästner (CMU) Gunter Saake, Thomas Thüm (Universität Magdeburg) So#wareproduktlinien - Feature-Orien4erung Sven Apel (Universität Passau) Chris4an Kästner (CMU) Gunter Saake, Thomas Thüm (Universität Magdeburg) 1 Wie Variabilität implemen4eren? Domain Eng. Feature-Modell

Mehr

Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme

Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) 1 Application Eng. Domain

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

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

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

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

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

Mehr

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

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

Software Engineering Klassendiagramme Assoziationen

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

Mehr

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

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

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Print2CAD 2017, 8th Generation. Netzwerkversionen

Print2CAD 2017, 8th Generation. Netzwerkversionen Installation der Netzwerkversion Kazmierczak Software Print2CAD 2017, 8th Generation Print2CAD 2017, 8th Generation Netzwerkversionen Einführung Installationshinweise Die Programme von Kazmierczak Software

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

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

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

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

B12-TOUCH VERSION 3.5

B12-TOUCH VERSION 3.5 Release B12-TOUCH VERSION 3.5 Braunschweig, August 2014 Copyright B12-Touch GmbH Seite 1 B12-Touch 3.5 Die neue B12-Touch Version 3.5 beinhaltet wesentliche Verbesserungen im Content Management System,

Mehr

AutoSPARQL. Let Users Query Your Knowledge Base

AutoSPARQL. Let Users Query Your Knowledge Base AutoSPARQL Let Users Query Your Knowledge Base Christian Olczak Seminar aus maschinellem Lernen WS 11/12 Fachgebiet Knowledge Engineering Dr. Heiko Paulheim / Frederik Janssen 07.02.2012 Fachbereich Informatik

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

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

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

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

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

Mehr

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

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

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme

Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme Christian Kästner (Carnegie Mellon University) Sven Apel (Universität Passau) Gunter Saake, Martin Kuhlemann (Universität Magdeburg) 1 Application

Mehr

GEONET Anleitung für Web-Autoren

GEONET Anleitung für Web-Autoren GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth Alfred.Wassermann@uni-bayreuth.de 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden

Mehr

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler Downloadfehler in DEHSt-VPSMail Workaround zum Umgang mit einem Downloadfehler Downloadfehler bremen online services GmbH & Co. KG Seite 2 Inhaltsverzeichnis Vorwort...3 1 Fehlermeldung...4 2 Fehlerbeseitigung...5

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

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Generative Prozessmodelle Patrick Otto MDD Konferenz 22.03.2009

Generative Prozessmodelle Patrick Otto MDD Konferenz 22.03.2009 Generative Prozessmodelle Patrick Otto MDD Konferenz 22.03.2009 Gliederung 1. Generative Programmierung 2. Möglichkeiten und Einsatzgebiet 3. Prozess / Tools 4. Zusammenfassung 19.03.2009 GENERATIVE PROGRAMMIERUNG

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

WinCVS Version 1.3. Voraussetzung. Frank Grimm fgr@micenet.de http://www.micenet.de. Mario Rasser mario@rasser-online.de http://www.rasser-online.

WinCVS Version 1.3. Voraussetzung. Frank Grimm fgr@micenet.de http://www.micenet.de. Mario Rasser mario@rasser-online.de http://www.rasser-online. WinCVS Version 1.3 Frank Grimm fgr@micenet.de http://www.micenet.de Mario Rasser mario@rasser-online.de http://www.rasser-online.de Voraussetzung 1. Installation von Python (Version >= 2.1) Download von

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

Dateimanagement in Moodle Eine Schritt-für

Dateimanagement in Moodle Eine Schritt-für Übersicht: Lehrende können Dateien in einen Moodle-Kurs hochladen, in Verzeichnissen verwalten und für Studierende zugänglich machen. Jeder Moodle-Kurs hat einen Hauptordner Dateien im Administrationsblock.

Mehr

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace. Starten Sie Eclipse: Abgesehen vom Kommandozeilenfenster, auf welches wir später eingehen, öffnet sich ein Dialog (in der FH vermutlich nicht, überspringen Sie in diesem Fall): Hier tragen sie Ihr Arbeitsverzeichnis

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0 Anleitung zur Installation und Verwendung von eclipseuml 2.1.0 In dieser Anleitung wird die Installation und Verwendung von Omodo eclipseuml 2.1.0 beschrieben. eclipseuml ist eine Zusatzsoftware für Eclipse,

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014 Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung

Mehr

SEND-IT Bedienungsanleitung

SEND-IT Bedienungsanleitung SEND-IT Bedienungsanleitung 1 Allgemeine Konfiguration 1.1 Erfassen / Editieren 2 HTML Editor (EDIT-IT) 2.1 Editor starten 3 Newsletter 3.1 Verteiler erfassen 3.2 Verteiler editieren 3.3 Adressbuch 3.3.1

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

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

Mehr

Einführung in TexMaker

Einführung in TexMaker Einführung in TexMaker 23. November 2007 TexMaker ist ein ist ein freier Texteditor für LA TE X-Dokumente unter Windows. Mit diesem Editor lassen sich ohne große Schwierigkeiten *.tex-dokumente aufrufen,

Mehr

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

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

Mehr

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

C++ mit Eclipse & GCC unter Windows

C++ mit Eclipse & GCC unter Windows C++ mit Eclipse & GCC Seite 1 / 14 C++ mit Eclipse & GCC unter Windows Hinweise Stand 18. Okt. 2014 => GCC 4.9.1 Boost 1.56.0 Eclipse Luna V. 4.4.1 Java Version 8, Update 25 (entspricht 1.8.0_25) Achtung

Mehr

ObjectBridge Java Edition

ObjectBridge Java Edition ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente

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

Java Einführung Packages

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

Mehr

WORKFLOW DESIGNDOKUMENT

WORKFLOW DESIGNDOKUMENT Architectural Design WORKFLOW DESIGNDOKUMENT Softwareentwicklung Praktikum, Übungsbeispiel 2 Gruppe 86 Andreas Hechenblaickner [0430217] Daniela Kejzar [0310129] Andreas Maller [0431289] Gruppe 86 Seite

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

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten Seit Anfang Juni 2012 hat Facebook die Static FBML Reiter deaktiviert, so wird es relativ schwierig für Firmenseiten eigene Impressumsreiter

Mehr

MARCANT - File Delivery System

MARCANT - File Delivery System MARCANT - File Delivery System Dokumentation für Administratoren Der Administrationsbereich des File Delivery Systems ist ebenfall leicht zu bedienen. Die wichtigsten drei Abschnitte sind: 1. Profil, 2.

Mehr

Kurzanleitung zu XML2DB

Kurzanleitung zu XML2DB Kurzanleitung zu XML2DB Inhaltsverzeichnis 1. Einleitung...3 2. Entwicklungsumgebung...3 3. Betriebsanleitung...3 3.1 Einrichten der Java Umgebung...3 3.2 Allgemeines zu java und javac...4 3.2.1 Allgemeines

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

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

2.11 Kontextfreie Grammatiken und Parsebäume

2.11 Kontextfreie Grammatiken und Parsebäume 2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle

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

Netzwerkversion PVG.view

Netzwerkversion PVG.view Netzwerkversion PVG.view Installationshinweise Einführung Die Programm PVG.view kann zur Netzwerkversion erweitert werden. Die Erweiterung ermöglicht, bestehende oder neu erworbene Programmlizenzen im

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren I. Kapitel 15. Ein und Ausgabe Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random

Mehr

IMS - Learning Design

IMS - Learning Design IMS - Learning Design Ein Vortrag zum Thema Learning Design von Maayan Weiss Inhalt Was ist IMS Learning Design? Kurzer Einblick Welche Lücken gibt es im e-learning? Was hat IMS-LD zu bieten. Wie sieht

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

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

Test-Driven Design: Ein einfaches Beispiel

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

Mehr

Innovator 11 classix. Anbindung an Eclipse. Einführung, Installation und Konfiguration. Connect. Michael Kaaden. www.mid.de

Innovator 11 classix. Anbindung an Eclipse. Einführung, Installation und Konfiguration. Connect. Michael Kaaden. www.mid.de Innovator 11 classix Anbindung an Eclipse Einführung, Installation und Konfiguration Michael Kaaden Connect www.mid.de Einführung in die Innovator-Eclipse-Anbindung Die hier beschriebene Anbindung steht

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

Beweisbar sichere Verschlüsselung

Beweisbar sichere Verschlüsselung Beweisbar sichere Verschlüsselung ITS-Wahlpflichtvorlesung Dr. Bodo Möller Ruhr-Universität Bochum Horst-Görtz-Institut für IT-Sicherheit Lehrstuhl für Kommunikationssicherheit bmoeller@crypto.rub.de 6

Mehr

Import und Export von Übergängern

Import und Export von Übergängern Import und Export von Übergängern SibankPLUS bietet Ihnen eine komfortable Schnittstelle, um den Wechsel der Schüler nach der Stufe 4 von der Grundschule auf eine weiterführende Schule zu verarbeiten.

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Breiten- und Tiefensuche in Graphen

Breiten- und Tiefensuche in Graphen Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen

Mehr

KeePass Anleitung. 1.0Allgemeine Informationen zu Keepass. KeePass unter Windows7

KeePass Anleitung. 1.0Allgemeine Informationen zu Keepass. KeePass unter Windows7 KeePass Anleitung 1.0Allgemeine Informationen zu Keepass KeePass unter Windows7 2.0 Installation unter Windows7 2.1 Erstellen einer neuen Datenbank 2.2 Speichern von Benutzernamen und Passwörtern 2.3 Sprache

Mehr

FMGate Installation & Benutzung 2016-04

FMGate Installation & Benutzung 2016-04 FMGate Installation & Benutzung 2016-04 Downloads Stand 2016-04. Transit und FMGate werden kontinuierlich weiterentwickelt. Aktuelle Service Packs, Installationsanleitungen, Benutzerdokumentationen und

Mehr

1. EINLEITUNG 2. GLOBALE GRUPPEN. 2.1. Globale Gruppen anlegen

1. EINLEITUNG 2. GLOBALE GRUPPEN. 2.1. Globale Gruppen anlegen GLOBALE GRUPPEN 1. EINLEITUNG Globale Gruppen sind system- oder kategorieweite Gruppen von Nutzern in einem Moodlesystem. Wenn jede Klasse einer Schule in eine globale Gruppe aufgenommen wird, dann kann

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Step by Step-Anleitung Version 1.00 vom 03. März 2009 Christian Schnettelker, www.manoftaste.de

Step by Step-Anleitung Version 1.00 vom 03. März 2009 Christian Schnettelker, www.manoftaste.de Step by Step-Anleitung Version 1.00 vom 03. März 2009 Christian Schnettelker, www.manoftaste.de Einleitung seit einiger Zeit steht allen Mitgliedern der Laborgemeinschaft Mediteam und den an das MVZ Dr.

Mehr

Medina-DynCmd-Schnittstelle

Medina-DynCmd-Schnittstelle 38261 Seite 1 von 15 38261 Erfolgreicher Einsatz der Schnittstelle bei Seite 2 von 15 EGA-Akustik und Schwingungen Fahrwerk Antriebsstrang Karosserie Innengeräusche Strukturdynamik Dynamische Festigkeit

Mehr

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Abschnitt 12: Strukturierung von Java-Programmen: Packages Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung

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

AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung

AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung Problem: Um AutoCAD abwechselnd auf mehreren Rechnern einsetzen zu können konnte man bis AutoCAD 2000 einfach den Dongle umstecken. Seit AutoCAD 2000i

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Gegenüber PowerPoint 2003 hat sich in PowerPoint 2007 gerade im Bereich der Master einiges geändert. Auf Handzettelmaster und Notizenmaster gehe ich in diesen Ausführungen nicht ein, die sind recht einfach

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

CAD Warehouse- Verbindungen. Plattformspezifische Darstellung

CAD Warehouse- Verbindungen. Plattformspezifische Darstellung CAD Warehouse- Verbindungen Plattformspezifische Darstellung Tipps & Tricks Dezember 2010 2010 Intergraph SG&I Deutschland GmbH. Alle Rechte vorbehalten. Der Inhalt dieses Dokuments ist urheberrechtlich

Mehr

Info-Veranstaltung zur Erstellung von Zertifikaten

Info-Veranstaltung zur Erstellung von Zertifikaten Info-Veranstaltung zur Erstellung von Zertifikaten Prof. Dr. Till Tantau Studiengangsleiter MINT Universität zu Lübeck 29. Juni 2011 Gliederung Zertifikate Wer, Wann, Was Ablauf der Zertifikaterstellung

Mehr

Code-Erzeugung aus UML-Klassendiagrammen

Code-Erzeugung aus UML-Klassendiagrammen Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter

Mehr