Codegenerierung am Beispiel des PIMAR-Projekts PhoneBook. 14. Januar 2015
|
|
- Bella Langenberg
- vor 8 Jahren
- Abrufe
Transkript
1 Codegenerierung am Beispiel des PIMAR-Projekts PhoneBook 14. Januar 2015
2 Überblick Modell- und Codegenerierung (M2C, C2M) Modellinterpretation vs. Modellübersetzung PIMAR Code-Generierung am Beispiel des Projekts PhoneBook Erzeugte Projekte für eine Anwendung Struktur des Android-Projekts Abbildung ausgewählter Modellierungselemente auf Programmcode Kontrollfluss der mobilen Anwendung Parameterübergabe zwischen Prozessen und Tasks Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 2
3 Codegenerierung (M2C) Codegenerierung ist eine spezielle Form der Modelltransformation [MG06], die auch als vertikale exogene Modelltransformation bezeichnet wird. Es wird ein Modell in Code übersetzt (synthetisiert): public class AutoImpl extends MinimalEObjectImpl.Container implements Auto { } MG06: Mens, Tom and Pieter Van Gorp. "A taxonomy of model transformation." Electronic Notes in Theoretical Computer Science 152 (2006): Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 3
4 Codegenerierung (C2M) Die Rückübersetzung eines Modells aus Code (C2M) ist möglich, wenn: der Code generiert ist (z.b. Fujaba) oder das Modell auf einzelne Aspekte beschränkt ist. Bei der Übersetzung werden i.d.r. viele (technische) Informationen hinzugefügt. public class AutoImpl extends MinimalEObjectImpl.Container implements Auto { } Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 4
5 Generierung von Varianten Ein übersetztes Modell, d.h. eine generierte Anwendung, repräsentiert genau ein Modell. Zwei (fast) identische Modelle bilden immer zwei (fast) identische Anwendungen. Metamodell (M1) Instanzen Modell (M0) Modell (M0) generiert Anwendung Anwendung Was wäre, wenn man den abweichenden Modellanteil erst zur Laufzeit auswerten könnte? Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 5
6 Modellinterpretation (Laufzeitmodelle) Ein idealtypischer Modellinterpreter implementiert ein Metamodell und kann beliebige Instanzen des Metamodells zur Laufzeit interpretieren. Instanzen Metamodell (M1) Modell (M0) Modell (M0) implementiert Interpreter Modell (M0) interpretiert Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 6
7 Codegenerierung und Interpretation in PIMAR (1) Modellierung und Generierung der App (2) Installation der modellierten App (3) Modellierung rollenbasierter App-Varianten Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 7
8 Modellübersetzung (Vorteile) Schutz des Know-Hows Die Anwendung realisiert nur ein Modell. Der Anwender kann die Anwendung nur bestimmungsgemäß nutzen. Plattformspezifisch und Architekturgerecht Die Anwendung kann für eine bestimmte Architektur generiert werden. Die native Umsetzung garantiert eine hohe Performanz. Verständlichkeit Der generierte Programmcode ist i.d.r. gut verständlich und von guter Qualität. Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 8
9 Modellübersetzung (Vorteile) Prototypbasiertes Vorgehen Die Templates zur Übersetzung des Modells können aus Prototypen gewonnen werden. Iteratives Vorgehen Die erstmalig generierte Anwendung kann manuell erweitert werden. Die Erweiterungen lassen sich testen und anschließen in das Template überführen. Sicherheit, Robustheit und Debugging Der generierte Quellcode durchläuft als Zwischensprache einen Compiler. Dieser kann ggf. Fehler erkennen. Das Debuggen ist möglich! Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 9
10 Modellinterpretation (Vorteile) Schnelle Änderungen Modelländerungen setzten keinen Übersetzung des Modells und keine Übersetzung des generierten Programmcodes voraus. Änderungen zur Laufzeit Anwendungen lassen sich zur Laufzeit konfigurieren. Portabilität Plattformunabhängige Modelle (PIM) lassen sich auf allen Plattformen ausführen, für dies es einen Interpreter gibt (Vgl. Java) Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 10
11 Modellinterpretation (Vorteile) Sicherheit Die Installation einer potentiell unsicheren mobilen Anwendung kann durch die Ausführung eines geprüften Modellinterpreters vermieden werden. Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 11
12 PIMAR Code-Generierung Der PIMAR-Generator besteht aus zwei Teilgeneratoren, welche unterschiedliche Modellteile bearbeiten Prozess- und GUI-Modell PIMAR-Generator basierend auf Xtend (2.5.1) Datenmodell: EMF-Generator (2.10) (siehe Vorlesung ) basierend auf JET (Java Emitter Templates) Der PIMAR-Generator übersetzt Modellteile (M1) und generiert Laufzeitcode für entsprechende Laufzeitinstanzen (M0). Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 12
13 PIMAR Code-Generierung (Projekte) Der PIMAR-Generator übersetzt das App model (Data model, Process model und GUI model) in die Projekte: <Modelname>.Android <Modelname>.Lib <Modelname>.metaioSDK.Lib <Modelname>.google-play-services.Lib Der Generator erzeugt für alle Projekte passende Eclipse-Natures (inkl. Android-Konfiguration) und konfiguriert die Abhängigkeiten der Projekte. Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 13
14 PIMAR Code-Generierung (.Android) Das Projekt <Modelname>.Android enthält den Programmcode der mobilen Anwendung. Es besteht aus folgenden Packages <Modelname>.android.adapter (Listenadapter) <Modelname>.android.crud (CRUD-Klassen) <Modelname>.android.gui (Services- und Activities) <Modelname>.android.gui.* (Fragments) <Modelname>.android.model (DataAccessLayer) <Modelname>.android.util (Utility-Klassen) Neben diesen Packages werden alle Ressourcen (res/) und die AndroidManifest.xml generiert. Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 14
15 PIMAR Code-Generierung (Mapping) Prozesse werden zu Services (android.app.service) InvokeGUITasks werden zu Activities (android.app.activity) oder FramgmentActivities (android.support.v4.app.fragmentactivity) Create-, Delete-, Read-Tasks werden zu einfachen Klassen im Package <Modelname>.android.crud. Variablen werden zu einfachen Attributen ihrer referenzierenden Tasks. InvokeOperationTasks werden zu einem entsprechenden Methodenaufruf im umgebenden Prozess. InvokeProcessTask werden zu einem Intent (android.content.intent). Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 15
16 Beispiel: PIMAR Codegenerierung public class CreatePersonService extends Service public class CreatePerson private Person newperson; // Create-Task CreatePerson createperson = new CreatePerson(this.getApplicationContext()); newperson = createperson.getnewperson(); i = new Intent(CreatePersonService.this, EnterNewPersonActivity.class); startactivity(i); i = new Intent(CreatePersonService.this, ViewNewPersonActivity.class); startactivity(i); public class EnterNewPersonActivity extends FragmentActivity public class ViewNewPersonActivity extends FragmentActivity Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 16
17 Beispiel: PIMAR Codegenerierung public class MainProcessesActivity extends Activity main_list.setadapter(new ProcessAdapter(((ProcessSelector)process.getStartTask()). getprocesses(), this, "ProcessesOverview")); public class ProcessAdapter extends BaseAdapter Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 17
18 Beispiel: PIMAR Codegenerierung <uses-permission android:name="android.permission.call_phone"/> public class CallPersonService extends Service { // public int onstartcommand(intent intent, int flags, int startid) { //... object = bundle.get("objecturi0"); if (object instanceof String) { selectedperson = (Person)dataAccessLayer.root.eResource().getEObject(object.toString()); } else { selectedperson = (Person)((Sharable)object).obj(); } selectedperson.callmobilenumber(getapplicationcontext()); // } } Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 18
19 Beispiel: PIMAR Codegenerierung public class NearToMeService extends Service { // public int onstartcommand(intent intent, int flags, int startid) { //... i = new Intent(NearToMeService.this, SelectAndShowPersonAddressOnMapService.class); } } if (isanchor) { ArrayList<String> lst0 = new ArrayList<String>(); for (Person so : nearestpersons) { lst0.add( EcoreUtil.getURI(so).fragment()); } i.putstringarraylistextra("objecturi0", lst0); } else { i.putextra("objecturi0",new Sharable(nearestPersons)); } startservice(i); // Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 19
20 Beispiel: PIMAR Codegenerierung public class MainPersonFragment extends Fragment { private TextView tv_surname_data; private TextView tv_surname; private TextView tv_forename_data; private TextView tv_forename; private TextView tv_mobilenumber_data; private TextView tv_mobilenumber; private TextView tv_officenumber_data; private TextView tv_officenumber; private LinearLayout ll_main; private ScrollView sv_main; public class AddressFragment extends Fragment { private TextView tv_city_data; private TextView tv_city; private TextView tv_zip_data; private TextView tv_zip; private TextView tv_street_data; private TextView tv_street; private TextView tv_number_data; private TextView tv_number; private LinearLayout ll_main; private ScrollView sv_main; Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 20
21 Beispiel: PIMAR Codegenerierung (Kontrollfluss) CallPersonService CrudPersonService SearchPersonService CreatePersonService EditPersonService NearToMeService MainProcessesActivity DeletePersonService ShowPersonAddressOnMapService PersonsWithAddressService SelectAndShowPersonAddressOnMapService AllPersonsService Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 21
22 PIMAR Codegenerierung (Kontrollfluss) Die Architektur der generierten Anwendung realisiert folgenden Kontrollfluss: Prozesse (Services) geben die Kontrolle an ihre Pages oder weitere (Sub-)Prozesse ab. Eine Page (Activity) gibt die Kontrolle nur an ihren Prozess (Service) ab, falls sie nicht die letzte Task im Prozess ist. Dann wird die Kontrolle an den vorherigen Prozess abgegeben. Technisch wird für jede Pagen-Aufruf eine eigene Android- Activity generiert. Prozesse können wiederverwendet werden (siehe z.b. PersonsWithAddressService) Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 22
23 Beispiel: PIMAR Codegenerierung (Kontrollfluss) Der Kontrollflussrumpf von SearchPersonService: public class SearchPersonService extends Service public int onstartcommand(intent intent, int flags, int startid) { // Begin with clustered Tasks if (bundle.getstring("src") == null) { / startactivity(searchcriteriapersonactivity); } else if (bundle.getstring("src")!= null && bundle.getstring("src").equals("searchcriteriapersonactivity")) { / startactivity(choosepersonactivity) }else if (bundle.getstring("src")!= null && bundle.getstring("src").equals("choosepersonactivity")) { / i.putextra("islast", true); startactivity(viewsearchedperson); MainProcessesActivity } } Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 23
24 Beispiel: PIMAR Codegenerierung (Parameter) Die Parameterübergabe an die Page ShowAddressOnMap: SelectAndShowPersonAddressOnMapService.java: // i = new Intent(SelectAndShowPersonAddressOnMapService.this, ShowAddressOnMapActivity.class); i.putextra("objecturi0",new Sharable(latitude)); i.putextra("objecturi1",new Sharable(longitude)); i.putextra("service", "SelectAndShowPersonAddressOnMapService"); i.putextra("islast", true); startactivity(i); Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 24
25 PIMAR Code-Generierung (Parameter) Die Parameterübernahme von Page ShowAddress: public class ShowAddressOnMapActivity extends FragmentActivity { private double latitude; private double public void oncreate(bundle savedinstancestate) { // Bundle extras = getintent().getextras(); latitude = Double.valueOf(((Sharable)extras.get("ObjectUri0")).obj().toString()); longitude = Double.valueOf(((Sharable)extras.get("ObjectUri1")).obj().toString()); } // Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 25
26 Modellinterpretation vs. Modellübersetzung (Code) Umsetzung verschiedener Formatierungsinformationen bei der Übersetzung: getlistview().setbackgroundcolor(android.graphics.color.rgb(255, 255, 255)); Drawable divider = new ColorDrawable(android.graphics.Color.rgb(0, 0, 0)); getlistview().setdivider(divider); getlistview().setdividerheight(1); StateListDrawable st = new StateListDrawable(); st.addstate(new int[]{android.r.attr.state_pressed}, new ColorDrawable( Color.rgb(255, 255, 255))); getlistview().setselector(st); Lassen sich diese Formatierungsinformationen zur Laufzeit noch ändern? Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 26
27 Modellinterpretation vs. Modellübersetzung (Code) Umsetzung verschiedener Formatierungsinformationen (BackgroundColor, Separator, SelectionColor) auf der Seite SelectPerson zur Laufzeit: SelectLocatablePersonsActivity.java if (dataaccesslayer.getstylesettingfrompage("selectperson")!= null) { getlistview().setbackgroundcolor( Util.getRgbColor(dataAccessLayer.getStyleSettingFromPage("SelectPerson").getBackColor())); if dataaccesslayer.getstylesettingfrompage("selectperson").getliststyle().isseparatorshow()) { Drawable divider = // dataaccesslayer.getstylesettingfrompage("processoverview").getfontcolor())); getlistview().setdivider(divider); getlistview().setdividerheight(1); } StateListDrawable st = new StateListDrawable(); st.addstate(// dataaccesslayer.getstylesettingfrompage("selectperson").getselectionstyle().getselectioncolor()))); // } Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 27
28 Zusammenfassung Codegenerierung stellt eine Modelltransformation dar (M2C). Die Umkehrung (C2M) ist auch möglich. Modelle können sowohl übersetzt als auch interpretiert werden. Beide Ansätze haben Vor- und Nachteile. Der PIMAR-Generator folgt einer Modellübersetzung. Varianten werden durch Modellinterpretationen realisiert. Taentzer Modellgetriebene Entwicklung von mobilen Anwendungen 28
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:
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
MehrDesign Patterns 2. Model-View-Controller in der Praxis
Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrCopyright 2014 Delta Software Technology GmbH. All Rights reserved.
Karlsruhe, 21. Mai 2014 Softwareentwicklung - Modellgetrieben und trotzdem agil Daniela Schilling Delta Software Technology GmbH The Perfect Way to Better Software Modellgetriebene Entwicklung Garant für
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrIndividuelle Erweiterung des generierten Codes. 16. Januar 2013
Individuelle Erweiterung des generierten Codes 16. Januar 2013 Überblick Welche Möglichkeiten zur individuellen Erweiterung von generiertem Code gibt es? Innerhalb eines Moduls (Klasse) Auf Modulebene
MehrActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0
Jens Kohlmeyer 05. März 2007 Institut für Programmiermethodik und Compilerbau ActiveCharts Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Seite 2 Übersicht
Mehr14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt
14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrVersion 0.3. Installation von MinGW und Eclipse CDT
Version 0.3 Installation von MinGW und Eclipse CDT 1. Stellen Sie fest, ob Sie Windows in der 32 Bit Version oder in der 64 Bit Version installiert haben. 2. Prüfen Sie, welche Java Runtime vorhanden ist.
MehrNaviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org
Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Fachhochschule Münster Labor für Software Engineering luzar@fh-muenster.de www.naviki.org 1 Naviki die Idee www.naviki.org 2 Wie funktioniert
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
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
MehrSoftware Engineering Interaktionsdiagramme
Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrWhiteStarUML Tutorial
WhiteStarUML Tutorial Autor: Simon Balázs, BME IIT, 2015. Übersetzung: Kovács Márton, 2015. Installation Herunterladen und installieren Sie das WhiteStarUML: http://sourceforge.net/projects/whitestaruml/
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrEinführung in die Informatik Tools
Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrModel Driven SOA Modellgetriebene Entwicklung von SOA Anwendungen. OOP München, 26.01.2011
Model Driven SOA Modellgetriebene Entwicklung von SOA Anwendungen OOP München, 26.01.2011 I N H A L T 1. SOA das erste Projekt 2. Prozesse Ergebnisse aus dem Fachbereich 3. Der Business Analyst und BPMN
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
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrEntwicklung einer echtzeitfähigen CLI-Laufzeitumgebung für den Einsatz in der Automatisierungstechnik
Entwicklung einer echtzeitfähigen CLI-Laufzeitumgebung für den Einsatz in der Automatisierungstechnik Echtzeit 2010 Alexej Schepeljanski Martin Däumler Matthias Werner Echtzeit 2010 / 18. November 2010
MehrKünstliches binäres Neuron
Künstliches binäres Neuron G.Döben-Henisch Fachbereich Informatik und Ingenieurwissenschaften FH Frankfurt am Main University of Applied Sciences D-60318 Frankfurt am Main Germany Email: doeben at fb2.fh-frankfurt.de
MehrProgrammieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler
Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Inhalt Toast-Meldungen Permissions Sensoren GPS (Global Positioning System) Kamera Anzeigen von Koordinaten auf einer
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
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
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
Mehrmacs Support Ticket System
macs Support Ticket System macs Software GmbH Raiffeisenstrasse 8 78658 Zimmern ob Rottweil Tel. (0741)9422880 1 ALLGEMEIN... 3 2 ABLAUF TICKET-SYSTEM... 4 2.1 Ticket Erstellung... 4 2.2 Ablauf... 4 2.3
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Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
MehrVortrag von: Ilias Agorakis & Robert Roginer
MDA Model Driven Architecture Vortrag von: Ilias Agorakis & Robert Roginer Anwendungen der SWT - WS 08/09 Inhalt Was ist MDA? Object Management Group (OMG) Ziele Konzepte der MDA Werkzeuge Vor- und Nachteile
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
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
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
MehrErstellen eines Formulars
Seite 1 von 5 Word > Erstellen bestimmter Dokumente > Formen Erstellen von Formularen, die in Word ausgefüllt werden können Basierend auf einer Vorlage können Sie dieser Inhaltssteuerelemente und Hinweistext
MehrBrainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen
Brainfuck 1 Brainfuck 1.1 Brainfuck Geschichte und Umfeld Brainfuck ist eine sogenannte esoterische Programmiersprache. Sie wurde 1993 vom Schweizer Urban Müller entworfen mit dem Ziel, eine Sprache mit
MehrNaked-FHIR. Code-Generierung auf Basis von HL7 FHIR Andreas Schuler, MSc. Textmasterformate durch Klicken bearbeiten
Naked-FHIR Code-Generierung auf Basis von HL7 FHIR Andreas Schuler, MSc. HL7 Jahrestagung 2015 18. März 2015 Einführung HL7 FHIR stellt eine Reihe an Basis-Ressourcen zur Verfügung Über Zweite Conformance
MehrEin subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen
Ein subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen vorgestellt am 29.09.2008 in der PASS Regionalgruppe Karlsruhe Michael Riedmüller inovex GmbH Project
MehrPrüfung Software Engineering I (IB)
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 3 A Wintersemester 2014/15 Prüfung Software Engineering I (IB) Datum : 21.01.2015, 14:30 Uhr Bearbeitungszeit
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
MehrEinführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012
Einführung in modellgetriebene Softwareentwicklung 24. Oktober 2012 Überblick Was sind die Grundprinzipien der modellgetriebenen Softwareentwicklung? Entwicklung einer MDD-Infrastruktur Modellgetriebene
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:
MehrNathan Burgener. Design by Contract. Modul SWE
NathanBurgener DesignbyContract ModulSWE NathanBurgener Inhaltsverzeichnis 1 WasistDesignbyContract...3 1.1 Überblick...3 1.2 DesignbyContractmitMethoden...4 1.3 DesignbyContractmitKlassen...5 1.4 Vererbung...6
MehrKlassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java
Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
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
MehrSoftwarequalität: Zusammenfassung und Ausblick. 17. Juli 2013
Softwarequalität: Zusammenfassung und Ausblick 17. Juli 2013 Überblick Rückblick: Qualitätskriterien Qualitätsmanagement Qualitätssicherungsmaßnahmen Thesen zur Softwarequalität Ausblick: Lehrveranstaltungen
MehrWärmebildkamera. Arbeitszeit: 15 Minuten
Wärmebildkamera Arbeitszeit: 15 Minuten Ob Menschen, Tiere oder Gegenstände: Sie alle senden unsichtbare Wärmestrahlen aus. Mit sogenannten Wärmebildkameras können diese sichtbar gemacht werden. Dadurch
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrProgrammierung für Mathematik (HS13)
software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 5 1 Aufgabe: Eclipse IDE 1.1 Lernziele 1. Die Entwicklungsumgebung Eclipse einrichten. 2. Eclipse kennen lernen und mit
MehrCode wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum
MehrJava Entwicklung für Embedded Devices Best & Worst Practices!
Java Entwicklung für Embedded Devices! George Mesesan Microdoc GmbH Natürlich können wir dieses neue log4j Bundle auch auf dem Device verwenden. Ist doch alles Java. Java Micro Edition (ME) Java Standard
Mehr3D Visualisierung von UML Umgebungsmodellen
3D Visualisierung von UML Umgebungsmodellen Vortragender: Helmer Krämer Betreuer: Dr. Holger Giese 3D Visualisierung von UML Umgebungsmodellen Krämer Seite 1 Motivation und Anforderungen Das Umgebungsmodell
MehrAndroid-Geräte Programmieren 4. Hinweise zur Android-Programmierung. Stefan Rothe
Android-Geräte Programmieren 4. Hinweise zur Android-Programmierung Stefan Rothe 2014 01 29 Rechtliche Hinweise Dieses Werk von Thomas Jampen und Stefan Rothe steht unter einer Creative Commons Attribution-Non-
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrEinführung in PHP. (mit Aufgaben)
Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites
MehrProbeklausur Softwareengineering SS 15
Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das
MehrAlgorithmen & Datenstrukturen 1. Klausur
Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrWindows Server 2008 (R2): Anwendungsplattform
Mag. Christian Zahler, Stand: August 2011 13 14 Mag. Christian Zahler, Stand: August 2011 Mag. Christian Zahler, Stand: August 2011 15 1.5.2 Remotedesktop-Webverbindung Windows Server 2008 (R2): Anwendungsplattform
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/
MehrFragen 2015. Arthur Zaczek. Apr 2015
Arthur Zaczek Apr 2015 1 Ihre Fragen 2015 2 WPF 2.1 Code Behind Mit dem MVVM Pattern haben wir praktisch keinen Nutzen für das Code Behind der WPF Forms, sind diese dann eher für kleinere Applikationen
MehrAnleitung Typo3-Extension - Raumbuchungssystem
Anleitung Typo3-Extension - Raumbuchungssystem t3m_calendar v 1.1 Stand 15.12.2011 Mehr Datails siehe: http://www.typo3-macher.de/typo3-ext-raumbuchungssystem.html 1 INHALT 1. Bedienungsanleitung der Anwendung...
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrÜbungen zur Android Entwicklung
Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen
MehrAndroid-Apps weitere Möglichkeiten
Android-Apps weitere Möglichkeiten 2/20 weitere Möglichkeiten Speichern in der Sandbox OnTouchListener Senden und Empfangen von SMS Anbindung von Datenbanken Der Beschleunigungssensor Übung 3/20 Speichern
MehrDie Wasser App. www.wasserapp.com
Die Wasser App Die Wasser App ist ein innovatives Service für Ihre Bürger, welches Ihnen die hohen Kosten für die Wasserzählerstands-Erfassung um bis zu 70 % 1 reduzieren kann. Der Weg für Ihre Gemeinde
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 --
MehrWie ist das Wissen von Jugendlichen über Verhütungsmethoden?
Forschungsfragen zu Verhütung 1 Forschungsfragen zu Verhütung Wie ist das Wissen von Jugendlichen über Verhütungsmethoden? Wie viel Information über Verhütung ist enthalten? Wie wird das Thema erklärt?
MehrFakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012
WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **
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
MehrFULFILLMENT VON ALLYOUNEED
FULFILLMENT VON ALLYOUNEED Mit dem Fulfillment Angebot von Allyouneed.com steigern Sie die Effektivität Ihres Geschäftes. Allyouneed und DHL kümmern sich um den Rest. Wir erklären Ihnen, wie Sie in 4 einfachen
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
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
Mehr13. Tutorium zu Programmieren
13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting
MehrTELIS FINANZ Login App
Installation & Bedienung der TELIS FINANZ Login App 1. Voraussetzungen - Android Version 4.0 oder höher - Uhrzeit automatisch gestellt - Für die Einrichtung wird einmalig eine Internetverbindung benötigt
MehrEine Anwendung mit InstantRails 1.7
Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen
MehrDynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München
Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester
MehrFortgeschrittenes Programmieren mit Java. Test Driven Development
Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test
MehrMobile App Development. - Alarm -
Mobile App Development - Alarm - Inhalt Alarme AlarmManger Wake locks 2 Alarm Alarm Oft ist es notwendig eine App zu starten, auch wenn der Benutzer nicht mit ihr interagiert Starten von Activities zu
MehrProgramm GArtenlisten. Computerhinweise
Programm GArtenlisten Computerhinweise Liebe/r Vogelbeobachter/in, anbei haben wir Ihnen ein paar wichtige Tipps für ein reibungsloses Funktionieren der mitgelieferten Ergebnisdatei auf Ihrem Computer
MehrDAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE
DAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE UND ZEILENABSTAND Word 2010 und 2007 Jedes neue leere Dokument, das mit Word 2010 erstellt wird, basiert auf einer Dokumentvorlage mit dem Namen Normal.dotx.
Mehri n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Metamodellbasierte Codegenerierung in Java
Metamodellbasierte Codegenerierung in Java Codegenerierung Markus Völter, voelter@acm.org, www.voelter.de Codegenerierung bezeichnet die automatische Erstellung von Quelltext aus üblicherweise abstraktereren,
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 ++) {
MehrPraktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben
Technische Universität Kaiserslautern Prof Dr Sven O Krumke Dr Sabine Büttner MSc Marco Natale Praktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben Aufgabe 1 (Konvertieren
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,
MehrApplet Firewall und Freigabe der Objekte
Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable
Mehr5. Übung: PHP-Grundlagen
5.1. Erstes PHP-Programm 1. Schreiben Sie PHP-Programm innerhalb einer Webseite, d.h. innerhalb eines HTML-Dokument. Ihr PHP-Programm soll einen kurzen Text ausgeben und Komentare enthalten. Speichern
MehrNetzwerkeinstellungen unter Mac OS X
Netzwerkeinstellungen unter Mac OS X Dieses Dokument bezieht sich auf das D-Link Dokument Apple Kompatibilität und Problemlösungen und erklärt, wie Sie schnell und einfach ein Netzwerkprofil unter Mac
MehrIntegration mit. Wie AristaFlow Sie in Ihrem Unternehmen unterstützen kann, zeigen wir Ihnen am nachfolgenden Beispiel einer Support-Anfrage.
Integration mit Die Integration der AristaFlow Business Process Management Suite (BPM) mit dem Enterprise Information Management System FILERO (EIMS) bildet die optimale Basis für flexible Optimierung
MehrZeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
MehrFEHLER! TEXTMARKE NICHT DEFINIERT.
Inhaltsverzeichnis 1 ALLGEMEINE INFORMATIONEN 2 2 SYNCHRONISATION MIT DEM GOOGLE KALENDER FEHLER! TEXTMARKE NICHT DEFINIERT. 3 OPTIONALE EINSTELLUNGEN 5 1. Allgemeine Informationen Was ist neu? Ab sofort
Mehr