EPMD Teil 6 Feature-Orientierung
|
|
- Cornelius Braun
- vor 8 Jahren
- Abrufe
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 Sven Apel (Universität Passau) Christian Kästner (Universität Marburg) Gunter Saake (Universität Magdeburg) 1 Application Eng. Domain Eng. Wie Variabilität
MehrSo#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
MehrSoftwareproduktlinien 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
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
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
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
MehrDieses 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
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
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
MehrSoftware 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
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
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
MehrErstellen 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
MehrPrint2CAD 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
MehrL10N-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
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
Mehr1 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
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
MehrB12-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,
MehrAutoSPARQL. 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
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
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
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:
MehrWorkshop 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
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
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/
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrGrundbegriffe 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
MehrSoftwareproduktlinien - 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
MehrGEONET 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
MehrDownloadfehler 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
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++,
MehrZä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 --
MehrSpeicher 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
MehrGenerative 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
MehrAnleitung ü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
MehrWinCVS 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
Mehr2. 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
MehrInstitut 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
MehrDateimanagement 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.
MehrStarten 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
MehrArbeiten 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
MehrAnleitung 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,
MehrIst 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,
MehrMusterlö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
MehrDefinition 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
MehrSEND-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
MehrGrundlagen 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)
MehrEinfü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,
MehrDaniel 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
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,
MehrC++ 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
MehrObjectBridge 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
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
MehrJava 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)
MehrWORKFLOW 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 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,
MehrFacebook 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
MehrMARCANT - 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.
MehrKurzanleitung 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
MehrAGROPLUS 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
MehrDas 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:
MehrMediator 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
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
Mehr2.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
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
MehrNetzwerkversion 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
MehrHandbuch 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
MehrComputeranwendung 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
Mehr1 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.
MehrProgrammieren 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
MehrIMS - 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
MehrAnmerkungen 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
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
MehrTest-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
MehrInnovator 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
MehrInformationsblatt 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
MehrBeweisbar 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
MehrImport 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.
MehrWindows. 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
MehrBreiten- 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
MehrKeePass 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
MehrFMGate 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
Mehr1. 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
MehrBinä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
MehrStep 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.
MehrMedina-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
MehrKapitel 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
Mehr368 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
Mehr4. 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 ++) {
MehrAbschnitt 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
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
MehrAutoCAD 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
MehrProfessionelle 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
MehrJavakurs 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,
Mehr4. 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
MehrCAD 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
MehrInfo-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
MehrCode-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