Nutzerzentrierte Softwareentwicklung

Größe: px
Ab Seite anzeigen:

Download "Nutzerzentrierte Softwareentwicklung"

Transkript

1

2 Nutzerzentrierte Softwareentwicklung 3V + 1P SWS 5 CP Belegnummer: [PVL/Praktikum: ] Sommersemester 2016

3 Nutzerzentrierte Softwareentwicklung Gestaltung von grafisch-interaktiven Systemen hier: Smartphone mit Android Bedürfnisse, Fähigkeiten und Erwartungen der (spezifischen) Nutzergruppen stehen im Mittelpunkt Nutzergruppe(n) identifizieren Bedürfnisse befriedigen Fähigkeiten unterstützen Erwartungen erfüllen Interdisziplinäres Gebiet auch Psychologie, auch Design, auch Softwareentwicklung,... Usability steht in den verschiedenen Phasen im Vordergrund Anforderungen erfassen und analysieren Prototypen entwerfen, umsetzen, testen und reflektieren Ergebnisse evaluieren Nutzerzentrierte Softwareentwicklung, Seite 4

4 Überblick Java und Android for Run-aways Human Computer Interaction Usability Intuitive Bedienbarkeit, Erlernbarkeit, Konsistenz,... Gestaltung Farbe, Schrift, Anordnung, Layout, Entwurf: benutzerzentrierte Analyse, Design, Rapid Prototyping Konstruktionunter Android mit IDE: Views (Controls, Componenten), Container, Layouts, Eventhandling, Ressourcenkonzept Programmiermuster Model-View-Control, Observer, Adapter, Singleton Beispiele in der Vorlesung Nutzerzentrierte Softwareentwicklung, Seite 5

5 Inhalte SW-Technik: Rollen erfassen, Nutzungsfall identifizieren, Szenario und Screen-Diagramm erstellen Trennung Datenverarbeitung Oberfläche, Dokument Ansicht MVC als Architektur- und Designpattern Screen-Design und Ergonomie Gruppierung, Formen, Farben, statisches/dynamisches Layout Java/Android Crash-Kurs für Kenner von C++ Implementierungstechniken Baukasten: Views, Attribute, Ereignisse Screens (Activities): Layouts und Views Ereignisbehandlung auch zusätzliche Klassen (z.b. Collection, Persistenz: Dateihandling, ) Gute Beispiele, schlechte Beispiele Nutzerzentrierte Softwareentwicklung, Seite 6

6 Lernziele der Veranstaltung Grafisch-interaktive Benutzungsoberflächen (GO) Benutzerorientierung verinnerlichen (Benutzergruppen/Rollen identifizieren, Usability-Überlegungen einsetzen,...) intuitiv und ergonomisch gestalten visuell ansprechend entwerfen GO-Entscheidungen - Verwendung bestimmter Componenten - begründen können objektorientiert konstruieren gute GOs spiegeln sich im Entwurfs- und Realisierungsaufwand wider methodisch Vorgehen lernen Konzept der Ereignisorientierung verstehen Bausteine grafischer Oberflächen kennen und anwenden lernen... und das alles in Android (und Java) Nutzerzentrierte Softwareentwicklung, Seite 7

7 Prüfung/Klausur mit Papier und Kugelschreiber Raum und Zeit siehe OBS (achten Sie auf Anmelde- und Abmeldefristen) regelmäßige Teilnahme am Praktikum es sind 6 Terminewird kontrolliert und ist Voraussetzung für ein erfolgreiches Testat; alte Klausur und Übungs-/Vorbereitungstermin Tipp: Aktive Mitarbeit macht einen guten Teil der Prüfungsvorbereitung aus! Nutzerzentrierte Softwareentwicklung, Seite 8

8 Literatur zu Java Guido Krüger, Addison-Wesley, ISBN und Oracle (Sun): Java Documentation + Suchapplet Nutzerzentrierte Softwareentwicklung, Seite 9

9 Literatur und Tutorials zu Android Arno Becker, Marcus Pant: Android Grundlagen und Programmierung; dpunkt Verlag; ISBn Mike Bach: Mobile Anwendungen mit Android Entwicklung und praktischer Einsatz; Addison-Wesley; ISBN und viele weitere Online-Tutorials... liefert aktuelle Zahlen (Dez. 2015) zum Verbreitungsgrad von Android, Apple ios und Windows Phone! Nutzerzentrierte Softwareentwicklung, Seite 10

10 Weiterführende Literatur Bernhard Preim: Entwicklung interaktiver Systeme Ivo Wessel: GUI-Design Alan Cooper: About Face - The Essentials of User Interface Design Patrick J. Lynch, Sarah Horton : Web Style Guide (webstyleguide.com) Sun: Java Look and Feel Design Guidelines Online Sun: Sonstiges rund um Java Helmut Balzert: Lehrbuch Grundlagen der Informatik Nutzerzentrierte Softwareentwicklung, Seite 11

11 Praktikum Semesterprojekt: Entwurf, prototypische Realisierungund Verfeinerung eines Systems optimierende Iterationen sind wichtig! Problembewusstsein entsteht im Laufe des Semesters Implementierung mit Android Studio Get the Android Studio: Nutzerzentrierte Softwareentwicklung, Seite 12

12 Usability, Benutzeranforderungen, Rapid Prototyping ENTWURFSPHASE Nutzerzentrierte Softwareentwicklung, Seite 13

13 Gelegenheit, über Usability nachzudenken Ständiger Technologiewandel verlangt permanente Auseinandersetzung mit Organisationsabläufen und den Systemen Anstehende System-oder Versionswechsel sind zusätzlich günstige Zeitpunkte, dabei müssen gerade die unterschiedlichen Nutzer überzeugt und mitgenommen werden Bereitschaft, sich mit Arbeitsabläufen und der Einbindung von IT -Prozessen auseinander zusetzen mit dem Ziel Produktivität/Wirtschaftlichkeit zu steigern Ressourcen zu schon und Kosten (Durchlaufzeit) zu reduzieren Qualität und Kundenzufriedenheit zu verbessern Mobile Geräte bieten die Möglichkeit, Fragen neu zu beantworten oder Abläufe neu zu realisieren Neben den Aspekten Preis, Lizenzen, Standards, branchentypischen Lösungen, verkauften Systemen, Schnittstellen und Integration spielt die Nutzerzufriedenheit eine wichtige Rolle Nutzerzentrierte Softwareentwicklung, Seite 14

14 Bedeutung der Entwurfsphase Beim Entwurf und der Realisierung muss in der Praxis insbesondere darauf geachtet werden, dass man den Entwickleraufwand kalkulieren kann und dann auch einhält, das Projekt also in-time und in-budget bleibt und den Support nicht überstrapaziert die User Requirements erfüllt werden. Das muss auch etwas mit Qualität zu tun haben! Fehler in der Analyse und Konzeption haben dabei dramatische Auswirkungen auf die o.g. genannten Punkte! Ein erstes, wichtiges Ziel muss also sein, die Anforderungen der Benutzer richtig und vollständig zu erfassen Nutzerzentrierte Softwareentwicklung, Seite 15

15 Phänomene nicht nur im Zusammenhang mit grafischen Benutzungsoberflächen (1/2) Kognitive Dissonanz entsteht, wenn man zwischen verschiedenen Alternativen wählen muss und die Vor- und Nachteile dieser Systeme abwägt: hat man eine Entscheidung getroffen, ist man bemüht, sich zu versichern, dass man die richtige Wahl getroffen hat und nimmt Argumente besonders wahr, die die Entscheidung unterstützen und verharmlost/ignoriert Gegenargumente. Beispiel: Festhalten an möglicherweise kryptisch und schwer zu benutzenden oder teueren Systemen Anordnung der Tasten auf der qwertz-tastatur [Alternative siehe z.b. ]... Nutzerzentrierte Softwareentwicklung, Seite 16

16 Phänomene nicht nur im Zusammenhang mit grafischen Benutzungsoberflächen (2/2) Magisches Denken bezieht sich darauf, dass sich Benutzer eine Vorstellung (mentales Modell) von dem System/Geräte machen, mit dem sie arbeiten. Diese hängt von der Erfahrung und Vorbildung ab. Die Modelle sind so konstruiert, dass sie Analogieschlüsse zulassen: wenn das Mail-Tool geöffnet ist, stürzt die Textverarbeitung bei der Rechtschreibprüfung ab Benutzer sind sehr bemüht an diesen Modellen festzuhalten; auch dann wenn gedankliche Verrenkungen nötig werden: wenn das Mail-Tool offen ist und mehr als zehn neue Mails eingetroffen sind, dann stürzt die Textverarbeitung ab Nutzerzentrierte Softwareentwicklung, Seite 17

17 Entwickler und Anwender (1/4) spielen einen neuen Dialog durch: Entwickler: So, jetzt hast Du einen Teil der Aufgabe bereits ausgeführt. Willst Du nun noch etwas verändern? Anwender: Ja, ich möchte eine Komponente löschen. Was muss ich tun? E: Deute auf das Menu mit dem Namen CD. A: CD? E: CD bedeutet Component Delete. A: OK, ich habe verstanden Oh, was passiert jetzt? Nutzerzentrierte Softwareentwicklung, Seite 18

18 Entwickler und Anwender (2/4) E: Du bist jetzt im Analyse-Modus. Du musst aus Versehen AM ausgewählt haben. A: Ach so, ich dachte, ich hätte CD ausgewählt. Wie verlasse ich den Analyse-Modus? E: Kein Problem. Gib einfach control Q ein. A: [tippt C O N T R O L ] E: Nein! Drücke die Strg -Taste und die Q -Taste. A: Wie dumm von mir. Ich versuch s noch einmal. Es passiert gar nichts. Was habe ich falsch gemacht? Nutzerzentrierte Softwareentwicklung, Seite 19

19 Entwickler und Anwender (3/4) E: Du hast nichts falsch gemacht. Die Komponente ist gelöscht aber noch nicht vom Bildschirm entfernt. Gib noch control-j ein. A: Ich habe verstanden. Wenn ich die nächste Komponente lösche, gebe ich wieder control-q ein. Hoppla, warum ist der Bildschirm jetzt weiß? E: Du hast nur Q eingegeben. Q bedeutet Quit und beendet das Programm. Jetzt musst Du leider alles noch einmal eingeben! A: Wenn das so ist, machen wir nächste Woche weiter. Nutzerzentrierte Softwareentwicklung, Seite 20

20 Entwickler und Anwender (4/4) Folgende Fehler wurden gemacht: Kommandos (CD, AM) sind nicht intuitiv erzeugt unnötige Belastung für den Anwender Auf welches Objekt wird das Kommando angewendet? Keine Statusinformation zu Zuständen bzw. Zustandsänderungen Kryptische Kommandos (control-j, control-q) sind ungeeignet für unerfahrene, gelegentliche Benutzer Kein Feedback bei Delete erzeugt Frustration und Ablehnung bei dem Anwender ergibt Negativausstrahlung auf das Gesamtsystem Nutzerzentrierte Softwareentwicklung, Seite 21

21 Regeln für Interaktionsdesign (1) System soll dem Nutzer seinen Zustand spiegeln (2) System sollte Sprache der Benutzer sprechen und nicht in Systemcodes antworten (3) Bei Interaktionen kommt es zu Fehleingabe, Korrekturen (redo/undo) sollte unterstützt werden (4) Konsistenz und Standards Plattformkonventionen-sollten eingehalten werden; für Situationen, die dasselbe beschreiben, sollte einheitliche Terminologie und Symbole verwendet werden (5) Fehler vermeiden durch umsichtiges Design ist besser als Fehler beheben (6) Relevante Informationen (Objekte, Informationen) sollten verfügbar/sichtbar sein (7) Alternative Bedienungselemente sollten möglich sein (8) Informationen konkurrieren um Platz und Sichtbarkeit Information sollte präzise und auf das wesentlich konzentriert sein (9) Fehlermeldungen sollten das Problem präzise beschreiben (10)Hilfe und Dokumentation sollte auf Arbeitsschritte des Nutzers fokussiert sein Nutzerzentrierte Softwareentwicklung, Seite 22

22 Usability-Kriterien Usability-Kriterien sind: Effizienz (Efficiency) Wenig Interaktion (Benutzer entlasten) Fokussteuerung an Hauptabläufen orientiert (Benutzer führen) Effektivität (Effectiveness) Können alle Aufgaben vollständig gelöst werden? Erlernbarkeit (Learnability) Kann das UI aus der Benutzererfahrung heraus bedient werden? Erinnerbarkeit (Memorability) Kann man das UI nach einer gewissen Zeit noch sicher bedienen? Zufriedenheit/Wohlbefinden/Spaß (Satisfaction; Emotional Usability) Gestaltung, Feedback, Klarheit Umgang mit Fehlersituation durch Bedienung (Error) Nutzerzentrierte Softwareentwicklung, Seite 23

23 Analyse-Design-Realisierung-Test-Evaluation Analyse Benutzorientiertes RequirementsEngineering: Usability-Engineering Heuristic ohne Benutzer testen Observation Benutzer beim bedienen beobachten Thinking-Aloud Beim Bedienen laut denken Questionnaire - Fragebogen Interview Befragung u.u. Erarbeitung von Anwendungswissen u.u. Erarbeitung von zusätzlichem technischem Wissen Diesen Prozess wollen wir im Praktikum zumindest einmal durchlaufen Nutzerzentrierte Softwareentwicklung, Seite 24

24 Analyse-Design-Realisierung-Test-Evaluation Design Legen Sie Designziele fest Welche Benutzergruppen adressieren Sie? Entlasten Sie den Benutzer! Welche Vorteile, welchen Nutzwert liefert ihre App Beschreiben Sie Anwendungsszenariien und Use Cases Skizzieren Sie das Layout (es sollte dynamisch sein) Überlegen und begründen Sie Gestaltungsentscheidungen Nutzerzentrierte Softwareentwicklung, Seite 25

25 Analyse-Design-Realisierung-Test-Evaluation Realisierung Überlegen Sie, wie Sie Funktionalität und Dialog(Controls) koppeln: Model-View-Control Entwickeln Sie die Funktionalität getrennt von der GUI! Denken Sie auch an die Navigation im Systeme, die Arbeitsabläufe und den generellen Workflow Rapid Prototyping: iterativ, unter Einbeziehung der Nutzer Machbarkeit demonstrieren Nutzerzentrierte Softwareentwicklung, Seite 26

26 Analyse-Design-Realisierung-Test-Evaluation Test Wer von Ihnen würde ein nicht getestetes Programm benutzen? Überlegen Sie von Beginn an Testfälle Wie lange dauert es, um eine bestimmte Aufgabe zu lösen? Wie viele Klicks/Interaktionen werden benötigt, um die Aufgabe zu lösen? Wie schnell erlernbar ist das GUI? Wie viele Fehler werden gemacht? Wie sicher ist das GUI? Testen Sie die Gebrauchstauglichkeit (Usability) Nutzerzentrierte Softwareentwicklung, Seite 27

27 Analyse-Design-Realisierung-Test-Evaluation Evaluation der Umsetzung Welche Ziele werden erreicht? Wie gut werden die Ziele erreicht? Evaluationsmethoden: Experteninspektionen, kognitiver Walkthrough, Usability-Tests, Fragebogenverfahren Klassifikation von Evaluationsmethoden: analytisch vs. empirische bzw. deskriptiv vs. präskriptive Evaluationsmethoden Formen der Evaluation: summative und formative Evaluation Vereinbarung von Evaluationskriterien Nutzerzentrierte Softwareentwicklung, Seite 28

28 Usability-Aspekte Struktur (Layout, Design) planen und festlegen Dazu gehört auch Elemente präzise zu identifizieren Elemente sinnvoll zu benennen ( Sprache der Benutzer sprechen) Skizzen (und Entwürfe) zu erstellen und schrittweise (zunächst abstrakt dann konkret) zu verfeinern Die Anforderungen orientieren sich an den Aufgaben Welche Aufgaben möchte der Benutzer lösen? Aufgaben und Bedürfnissen der unterschiedlichen Benutzergruppen sind unterschiedlich Welche unterschiedlichen Benutzergruppen gibt es? Nutzerzentrierte Softwareentwicklung, Seite 29

29 Ziele (1/2) Einheitliches Look-and-Feel (Konsistenz) Innerhalb einer Applikation und applikationsübergreifend Benutzerführung gemäß Regeln Motto: Fehlervermeidung statt Fehlerbehebung Trennung von Anwendung und graphischer Benutzungsoberfläche einfache Anpassung von Text und Schrift; relative Positionierung ist zusätzlich sehr hilfreich: Methode Componente C1 links von C2; C3 oberhalb von C4 Dialog(schritt)e bilden Zustände ab Screens werden in separaten Ressource-Dateien (in XML) beschrieben Nutzerzentrierte Softwareentwicklung, Seite 30

30 Ziele (2/2) Aufgabenangemessene Präsentation und Interaktion Direkte Manipulation Benutzerunterstützung beim Gestalten und Steuern, Erstellen und Modifizieren, Inspizieren (surfen) und Prüfen, Navigation(sunterstützung) in komplexen Situationen Beherrschung der Komplexität und Menge durch Informationsaufbereitung: selbsterklärend, kontextbezogene Hilfe Realitätsnähe Abstraktion Auch auf mobilen Endgeräten und unter deren speziellen Einsatzbedingungen (unterwegs, draußen, bei widrigen Lichtverhältnissen, ) Joy of Use: begeistern, stimulieren, motivieren, überzeugen, fesseln,... Werfen Sie einen Blick unter youtube piano stairs Nutzerzentrierte Softwareentwicklung, Seite 31

31 Emotional Usability: Joy of Use Merkmale die Software unterstützt den Benutzer unauffällig bzw. weckt dessen Interesse, indem es interessante Funktionen als zu lösende Aufgaben präsentiert und Neugier weckt sowie Anreiz zum eigenständigen Lernen gibt die Aufgabenstellung wird in eine Geschichte integriert -die Bearbeitung einer Teilaufgabe ist ein Schritt in einer größeren Aufgabenstellung - die Glaubwürdigkeit in der Arbeitswelt wird durch Konsistenz und Aufmerksamkeit für Details gesichert ( Erwartungskonformität) Quelle: Marc Hassenzahl: Attraktive Software Was Gestalter von Computerspielen lernen können; In: J Machate&M.Burmester: User Interface Tuning; Benutzerschnittstellen menschlich gestalten; Software & Support Verlag 2003 Nutzerzentrierte Softwareentwicklung, Seite 32

32 1. Vollständiges Beispiel: BMI APP Nutzerzentrierte Softwareentwicklung, Seite 33

33 Aufgabenstellung: BMI-App Der BMI bezieht die Körpermasseauf das Quadrat der Körpergröße. Der BMI ist lediglich ein grober Richtwert, da er weder Statur und Geschlecht noch die individuelle Zusammensetzung der Körpermasseaus Fett-und Muskelgewebe eines Menschen berücksichtigt. Der Body Mass Index (BMI) bewertet einfach das Körpergewicht. Die (vereinfachte) Formel zu Berechnung des BMI lautet BMI = Masse in kg / (Größe in Meter) 2 Dabei bedeutet ein BMI zwischen 18,50 und 24,99 Idealgewicht; Werte unter 18,50 bedeuten Untergewicht und ein Wert von 25,00 oder mehr weist auf Übergewicht hin. Ein BMI Rechner soll als App realisiert werden. Nutzerzentrierte Softwareentwicklung, Seite 34

34 Vorbereitung der BMI-App Funktional ist (zunächst) die Formel umsetzen (geringer Aufwand) Zur Erfassung von Größe und Gewicht und zur Darstellung des BMI wird ein User Interface benötigt zumindest die Eingaben sollten auf Plausibilität überprüft werden! Eine Strukturierung des Ablaufs/Workflows in mehrere Screens/Schritte ist hier offensichtlich nicht erforderlich (weitere) Systemressourcen werden nicht benötigt Nutzerzentrierte Softwareentwicklung, Seite 35

35 Entwicklungsschritte Erster Entwurf Konkretisierung Umsetzung und Tests - grob und abstrakt - - mit Controls/Views - - funktional und bzgl. Usability (i.d.r. erfolgen Verbesserungen) Nutzerzentrierte Softwareentwicklung, Seite 36

36 Umsetzung der BMI-App benötigt werden eine Layoutbeschreibung (Ressource), eine Activity unter Android, die die Anwendungslogik umsetzt und ein Manifest, in welchem Berechtigungen, Icons und weitere Spezifika weitere Activities und Services benannt werden Nutzerzentrierte Softwareentwicklung, Seite 37

37 src/com.example.bmiapp/mainactivity.java Java kennt Compiler Annotationen ); Annotationen werden beim Kompilieren ausgewerten public class MainActivity extends Activity protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); Layoutressource setcontentview(r.layout.activity_main); camelcase Notation ist ein guter Stil für Variable Button button; button = (Button) findviewbyid(r.id.bmi); button.setonclicklistener(new OnClickListener() { public void onclick(view view) { float masse; float groesse; Verbindung zu Buttonressource Eventhandling im Code EditText etgroesse = (EditText) findviewbyid(r.id.groesse); EditText etmasse = (EditText) findviewbyid(r.id.masse); Nutzerzentrierte Softwareentwicklung, Seite 38

38 src/com.example.bmiapp/mainactivity.java } } Editable e = etmasse.gettext(); masse = Float.valueOf(e.toString()); e = etgroesse.gettext(); groesse = Float.valueOf(e.toString()); float bmi = masse / (groesse * groesse); EditText result = (EditText) findviewbyid(r.id.result); result.settext(string.valueof(bmi)); public boolean oncreateoptionsmenu(menu menu) { } } getmenuinflater().inflate(r.menu.activity_main, menu); return true; macht gglfs. die Menu- Einträge verfügbar Nutzerzentrierte Softwareentwicklung, Seite 39

39 res/layout/activity_main.xml <RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mainactivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centervertical="true" android:text="groesse" Wesentliche Merkmale derviews und das Layout der Activity wird hier festgelegt Hinweis, dass der Benutzer die Größe eingeben soll android:textappearance="?android:attr/textappearancemedium" /> Nutzerzentrierte Softwareentwicklung, Seite 40

40 res/layout/activity_main.xml <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:ems="10" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:layout_marginleft="26dp" android:layout_margintop="50dp" android:text="masse" Eingabefeld für die Größe Hinweis, dass der Benutzer die Masse eingeben soll android:textappearance="?android:attr/textappearancemedium" /> Nutzerzentrierte Softwareentwicklung, Seite 41

41 res/layout/activity_main.xml <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_margintop="33dp" android:ems="10" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_alignparentleft="true" android:layout_marginbottom="58dp" android:ems="10" /> Eingabefeld für die Masse Ergebnisfeld Nutzerzentrierte Softwareentwicklung, Seite 42

42 res/layout/activity_main.xml <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:text="bmi" /> Anklicken des Buttons soll bewirken, dassdie Formel ausgeführt wird </RelativeLayout> Nutzerzentrierte Softwareentwicklung, Seite 43

43 bin/res/androidmanifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="com.example.bmiapp" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion = "14" android:targetsdkversion = "17" /> Nutzerzentrierte Softwareentwicklung, Seite 44

44 bin/res/androidmanifest.xml <application android:allowbackup="true" > <activity android:name=".mainactivity" > <intent-filter> Mitdieser Activity wirddie App gestartet <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> Angabe weiterer Activities und der Berechtigungen Nutzerzentrierte Softwareentwicklung, Seite 45

45 Bewertung der BMIApp App ist erster rudimentärer Ansatz App kann nicht mit fehlerhaften Eingaben umgehen! (kritisch!) Aufbereitung und -auch grafische -Interpretation des Ergebnisses wäre wünschenswert (so nicht sehr benutzerfreundlich) Aufzeigen von Trends (gegenüber der letzten Berechnung) wäre wertvoll Nutzerzentrierte Softwareentwicklung, Seite 46

46 Dialogstruktur, Navigationsübersicht, Diagramme DIALOG(SCHRITT)E Nutzerzentrierte Softwareentwicklung, Seite 47

47 Mensch-Maschine-Schnittstelle - Graphische Benutzungsoberfläche Präsentation, Visualisierung kreativ, intuitiv Interaktion monoton, schnell Beobachten, Bedienen

48 Kommunikation und Mobiliät Kommunikation sich mit anderen austauschen Mobilität - unterwegs und Information über die Umgebung geschützt, vertraut, sicher, komfortabel Nutzerzentrierte Softwareentwicklung, Seite 49

49 Ein kleines Beispiel Überlegen Sie, wie ein Anwender den Dialog mit einem Geldautomaten wahrnimmt und auch beschreibt Zugangsberechtigung kontrollieren (EC-Karte und Ihre 4stellige Geheimnummer) Betrag angeben Betrag ausgeben Automat wieder in den Ausgangszustand versetzen Nutzerzentrierte Softwareentwicklung, Seite 50

50 siehe auch SWT-Skript Notation des Sequenzdiagramms Objekt Methodenausführung Lebenslinie Meth.aufrufen Bedingung Ablauf objektorientiert beschrieben Objekt erzeugen Objekt zerstören eigene Methode aufrufen Nutzerzentrierte Softwareentwicklung, Seite 51

51 Sequenzdiagramm "Geld holen" E! " $% +,,! '! E ' E '!! &!'! $!!./ 0% &' ()* +,-!' 111 Nutzerzentrierte Softwareentwicklung, Seite 52

52 Sequenzdiagramm "Geld abheben" Geld holen Ich: CBenutzer EC-Karte einlesen Use Case wählen PIN-Nummer einlesen Betrag einlesen Kreditinstitut Automat1: CGeldautomat EC-Karte ausgeben EC-Karte entnehmen Geld ausgeben in diese Richtung kann man das innere Verhalten weiter modellieren Screens = Zustände Ruhestellung Hauptmenü PIN-Dialog... Geld entnehmen Nutzerzentrierte Softwareentwicklung, Seite 53

53 Geldautomat als "Assistent (üblich) "Assistenten" serialisieren die Abfrage mehrerer Eingabewerte vom Benutzer Vereinfachung: Benutzer muss zu einem Zeitpunkt nur über eine Frage nachdenken sinnvoll für selten benutzte Anwendungsfälle oder für unerfahrene Benutzer langsam und schwerfällig für Profis zum Vergleich der bekannte Geldautomat nicht als Assistent: Nutzerzentrierte Softwareentwicklung, Seite 54

54 Szenario "Kontostand abfragen" Benutzer führt EC-Karte ein wählt "Kontostand abfragen" gibt PIN-Nummer ein nimmt EC-Karte Automat bietet Hauptmenü an erfragt PIN-Nummer gibt EC-Karte heraus zeigt Kontostand an geht in Ruhestellung Nutzerzentrierte Softwareentwicklung, Seite 55

55 Szenario "Geld holen" Sicht des Kunden Benutzer Automat führt EC-Karte ein wählt "Auszahlung" gibt PIN-Nummer ein gibt Betrag ein nimmt EC-Karte nimmt Geld Sicht der Bank bietet Hauptmenü an erfragt PIN-Nummer erfragt Betrag gibt EC-Karte heraus gibt Geld heraus geht in Ruhestellung Nutzerzentrierte Softwareentwicklung, Seite 56

56 Geldautomat: Use Case Diagramm Use Cases entsprechen oft der obersten Menüebene Geldautomat Kontostand abfragen Geldvorrat prüfen Geld Geld holen nachfüllen Kunde Schecks bestellen eingezogene Scheckkarten entnehmen Mitarbeiter eine Benutzergruppe sieht oft nicht die Funktionen der anderen Nutzerzentrierte Softwareentwicklung, Seite 57

57 Sequenzdiagramme -Notation stellen Objekte und deren Interaktion dar Interaktion: eine Methode ruft eine andere Methode auf Zeitachse von oben nach unten Lebensdauer des Objekts durch "Lebenslinie" dargestellt vgl. Flussdiagramm / Programmablaufplan ältere Diagrammtypen, die nicht objektorientiert sind Nutzerzentrierte Softwareentwicklung, Seite 58

58 Sequenzdiagramme -Bewertung Diagramme für GUI-Entwurf in UML nur beschränkt geeignet: UML konzentriert sich auf die Architektur von SW-Systemen vernachlässigt den visuellen Aspekt ein GUI wird zwar mit Klassen realisiert, anhand eines Klassen-oder Kollaborationsdiagramms kann man sich aber kein Bild von Aussehen und Benutzung machen! Vorschlag: Screen-Diagramme im Grunde abgewandelte Zustandsdiagramme Nutzerzentrierte Softwareentwicklung, Seite 59

59 abstrakt und konkret Beispiel: Lehrangebote ansehen abstrakte Elementliste (Stichwortliste, Halbsätze) Sortierung wählen: Semester, Dozent, Import/Export konkretes Layout (konkrete Anordnung, Festlegung auf Componenten) Fachbereich wählen Vorschau Drucken Ausgabe in Datei Schließen Nutzerzentrierte Softwareentwicklung, Seite 60

60 Verbindung zum Sequenzdiagramm LvPlanungView: CLvPlanungAusgDlg LvPlanungModel: CLvPlanungAusg OnSortClick OnFbChange SetSort(Sort) SetFb(Fb) OnDiskClick OnPrintClick Output(P) OnPreviewClick OnExitClick Nutzerzentrierte Softwareentwicklung, Seite 61

61 Komplexität beherrschen Diagramme beanspruchen viel Platz Problem beim Zeichnen Problem beim Verstehen gilt für alle, nicht nur für Zustandsdiagramme sinnvolle Zerlegung in Teildiagramme ist wichtig insbesondere auch hierarchische Gliederung Abstraktion nicht einfach orientiert an der Papiergröße zerschneiden aussagekräftige Bezeichnung für jedes Teildiagramm analog zu sinnvollen Klassen- und Funktionsnamen Nutzerzentrierte Softwareentwicklung, Seite 62

62 siehe auch OOAD-Skript! Zustandsdiagramme: Idee und Notation ein Objekt kann im Lauf der Zeit verschiedene Zustände annehmen Haben einen Anfang und ein Ende Zustandswechsel werden durch Ereignisse ausgelöst unterschiedliche Folgezustände sind möglich abhängig von Bedingungen (Verzweigungen im Diagramm) Aktionen können ausgeführt werden beim Übergang in den Folgezustand (notiert mit Ereignis/Aktion) während des Verweilens in einem Zustand (notiert mit do/...) Objekt wird erzeugt durchläuft mehrere Zustände und wird vernichtet Zustand do/aktion Ereignis[Bedingung]/Aktion Nutzerzentrierte Softwareentwicklung, Seite 63

63 Beispiele: Tür und Lampe Tür Lampe offen aus Schließen( rumms ) Öffnen Einschalten Ausschalten Übergangsaktion geschlossen an do/leuchten Zustandsaktion Nutzerzentrierte Softwareentwicklung, Seite 64

64 Implementierung Zustand: Kombination von Attributwerten des Objekts Ereignis: empfangene Nachricht / Handler-Aufruf Bedingung: wird im Handler ausgewertet Zustandsübergang: Funktionskörper eines Handlers Übergangsaktion: Methodenaufruf für anderes Objekt Zustandsaktion: Methodenaufruf (in separatem Thread) speziell bei GUIs: Screens / Dialoge sind Zustände des Objekts "Bedienoberfläche" Hauptfenster hat Zeiger auf untergeordnete Fenster als Attribute objektorientiert + ereignisorientiert Nutzerzentrierte Softwareentwicklung, Seite 65

65 Diagramme für wen? Diagramme aus der Softwaretechnik sind nichtgeeignet, um mit Auftraggebern zu kommunizieren selbst konkrete Screen-Diagramme nicht! allenfalls, wenn die Auftraggeber selbst Informatiker sind zur Kommunikation mit Auftraggebern und Benutzern braucht man Prototypen visuell und funktional konkret, nicht erklärungsbedürftig Diagramme helfen dem Entwickler beim Entwurf, dem Wartungsprogrammierer zum Verständnis Nutzerzentrierte Softwareentwicklung, Seite 66

66 Manifest und Prinzipien der agilen Softwareentwicklung (kurzer Exkurs)... Durch die[se] Arbeit haben wir Folgendes schätzen gelernt: Individuen und Interaktionen mehr als Prozesse und Tools Funktionierende Software mehr als umfassende Dokumentation Zusammenarbeit mit Kunden mehr als Vertragsverhandlungen Reaktion auf Änderungen mehr als einen Plan zu befolgen... We follow these principles: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Business people and developers must work together daily throughout the project. und Nutzerzentrierte Softwareentwicklung, Seite 67

67 Einschub: Modelle eines Systems Modelle sind vereinfachte Darstellungen einer Wirklichkeit siehe Atommodelle in der Chemie kein Modell entspricht der Realität" a) mentales Modell hoffentlich identisch Sicht des Benutzers; an der Anwendung orientiert b) augenscheinliches Modell wie sich das System nach außen darstellt c) Implementierungsmodell Sicht des Entwicklers; technologisch orientiert Nutzerzentrierte Softwareentwicklung, Seite 68

68 Use Cases eines Buchs der Leser? der gründliche Leser, der eilige Sucher, der Schenkende Fachbuch = System zur Informationsspeicherung von Anfang bis Ende lesen umblättern Überblick bekommen Inhaltsverzeichnis Information zu einem Thema suchen Inhaltsverzeichnis Detailinformation / Stichwort suchen Index Wieder Auffinden einer Stelle Lesezeichen weiterführende Information finden Literaturliste Kaufentscheidung treffen Inhaltsverz., Klappentext, Leseprobe; Preis vgl. Grundfunktionen eines Browsers vgl. dagegen einen Roman Nutzerzentrierte Softwareentwicklung, Seite 69

69 Von Use Cases zu Bildschirmmasken eine Möglichkeit jeder Use Case wird in eine Bildschirmmaske abgebildet Benennung des Use Case wird Titel des Screens ggfs. weitere untergeordnete Dialoge bei komplexen Use Cases keine Funktionen oder Daten in einen Screen, die nicht unmittelbar zu diesem Use Case gehören! Gruppierung der Screens nach Benutzergruppen Entwurf der Grobstruktur des Dialogsystems "Screen" besser: Identifikation des Benutzers durch Anmeldung und Ausblendung der Use Cases anderer Benutzergruppen; jeder Benutzer bekommt nur Screens "seiner" Gruppe zu sehen Hauptfenster enthält Übersicht der Use Cases und verzweigt dorthin im primitivsten Fall eine Liste Nutzerzentrierte Softwareentwicklung, Seite 70

70 (Rapid) Prototyping ob ein Entwurf "funktioniert", erkennt man nicht mit Hilfe von Diagrammen Begriff "funktionieren" unter Designern: "seinen Zweck erfüllen" frühzeitiger Test mit Benutzern ist notwendig erfordert weitgehend arbeitsfähigen Prototyp Benutzertest braucht eigentlich mehr als nur die Oberfläche... Benutzer fragen will gekonnt sein... mit geeigneten Tools ist die Erstellung einer Bedienoberfläche nicht aufwendiger als mit einem Zeichenwerkzeug vgl. Photoshop / Director 2Visual Basic / Visual C++ / Eclipse Nutzerzentrierte Softwareentwicklung, Seite 71

71 Der erste Eindruck zählt (Rapid) Prototyping Fake(Schwindel, Betrug, Fälschung, etwas vortäuschen) Mock Up(Fälschung, Schein, Imitation) Diese drei Begriffe beschreiben eine Idee: Um als Entwickler bereits in der frühen Phase einer Programmentwicklung mit dem Anwender Effekte an der Bedienoberfläche diskutieren zu können, entstehen unvollständige Prototypen, anhand derer das Look&Feel der Applikation und deren Wirkung auf den Anwender erörtert werden können. Verschiedene Softwareprototypen vermitteln in frühen Planungsphasen einen brauchbaren Eindruck für die gestellte Aufgabe. Kommunikationsprobleme zwischen IT-Experten und Kunden lassen sich mit Prototypen verringern. Nutzerzentrierte Softwareentwicklung, Seite 72

72 Der erste Eindruck zählt: Prototyping Grob lassen sich Prototypen unterteilen in Demonstrations-, Analyse-, Architektur- und Designprototypen Prototyp als Kommunikationsbasis für Entwickler und Anwender Proof-of-Concept (POC) im Sinne einer Machbarkeitsstudie GUI-Prototyping zielt darauf ab, den Anwender frühzeitig in den Entwicklungsprozess einzubeziehen Bewusst/Unbewusst entstehen Systemgrenzen bzw. Prototyp gibt Hinweise auf Strukturen ABER: Anwender ändern ihre Meinung! Nutzerzentrierte Softwareentwicklung, Seite 73

73 Prototypen -vertikal Vertikale Prototypen sollen helfen, Aussagen über die Architektur machen zu können; es ist darauf zuachten, dass der Ausschnitt der realisiert wird, nicht zu trivial ist! Nutzerzentrierte Softwareentwicklung, Seite 74

74 Prototypen -horizontal Horizontale Prototypen decken den kompletten Satz der Funktionen in einer Anwendungsebene ab; die technische Korrektheit spielt eine untergeordnete Rolle Nutzerzentrierte Softwareentwicklung, Seite 75

75 Screens -Ticketbeispiel Screen Anmeldung (login) als Kunde, Abteilungsleiter oder Sachbearbeiter: als Kunde/Client: 1 Erfassung und Bearbeitungsfortgang Ticket neu erfassen (Bearbeitungszustand eigener Tickets betrachten/inspizieren) als Abteilungsleiter/Dispatcher: 2 Monitoren (insgesamt) Sachbearbeitern zuordnen Bearbeitungszustand aller Tickets betrachten (alle) neu erfassten Tickets anhand Beschreibung sichten und Mitarbeiter zu ordnen Qualitätskontrolle und abschließende Freigabe als Sachbearbeiter/Consultant: 3 Bearbeiten/Kommentieren und testen zu gewiesene Tickets untersuchen/bearbeiten (Angabe d. Fehlerursache) Ticket mit Kommentar versehen testen (Angabe des Testprotokolls) und damit Zustand ändern Nutzerzentrierte Softwareentwicklung, Seite 76

76 Layout: Analyse Design Konstruktion Die fachlichen Anforderungen führen zu einem ersten groben Ablauf abstrakte Screens : Use Cases geben eine Hinweis auf sinnvolle Begriffe/Bezeichner und Ablauffolgen/Workflows Ein Screen entspricht dabei einem Abschnitt in einem Ablauf Die verschiedenen Bestandteile (Views) werden grafisch identifiziert konkrete Screens Das Überlagern eines Screens mit Rasterlinien ist aufschlussreich und liefert wertvolle Hinweise zur Struktur und dem Aufbau des Screens (Layout) Ein Layout passt nicht zwingend für alle Displaygrößen! Nutzerzentrierte Softwareentwicklung, Seite 77

77 Beispiel: Anschrift erfassen Abstrakter Screen Konkreter Screen - Identifikation der wesentlichen - Festlegung der Componenten Bestandteile -Layout - Zustandsinformation Ausrichtung, Anordnung, Abstand - nächste Schritte (Workflow!) - Merkmale (Farbe, Schriftgröße) Nutzerzentrierte Softwareentwicklung, Seite 78

78 Gestaltungsempfehlungen, Guide Lines Google gibt zur Anordnung und Gestaltung der Activities Empfehlungen Dies zielt darauf ab, gute Bedienbar- keit (Usability) herzustellen Erlernbarkeit Konsistenz Lesbarkeit, Interaktion Verwendung von Farbe siehe Nutzerzentrierte Softwareentwicklung, Seite 79

79 Layout: Analyse Design Konstruktion Konkrete Auswahl der Container: Scrollen? Splitten? Was passiert beim Vergrößern/Verkleinern des Screens? Auswahl und Festlegung des Farbklimas ( Style Guides entstehen) Schrift-, Fenster- und Icongröße beeinflussen die Gesamtgröße Was soll passieren, wenn sich die Componenten in Anzahl und Typ ändern? Das User Interface führt den Nutzer durch Zustandsanzeige, durch Feedback, durch Konsistenz, durch Fokussteuerung, Das User Interface entlastet den Nutzer durch Voreinstellung, durch Vorsorge zur Fehlervermeidung Das User Interface ist selbsterklärend durch Hints, Statusbar, Nutzerzentrierte Softwareentwicklung, Seite 80

80 Layout: Analyse Design Konstruktion Konkretes Programmieren und Zusammenfügen von Componenten (Dialogbausteine), Container und Layouts Eventhandling Anbindung an die Objekte in der Anwendung MVC Architektur mit interface und/oder Adapterklassen Kodierung in Android (Java) Nutzerzentrierte Softwareentwicklung, Seite 81

81 Dialogstruktur, Navigationsübersicht Unterstützen Sie die Navigation zwischen verschiedenen Screens Der Benutzer sollte einfach zu dem vorherigen Screen zurückkehren können Nutzerzentrierte Softwareentwicklung, Seite 82

82 Navigationsübersicht: Screens und Abläufe Abteilungsleiter verteilt/ordnet zu, hat Termine und Auslastung im Auge (macht Qualitätssicherung) Anmeldung/ Login als Kunde, Mitarbeiter oder Abteilungsleiter Kunde macht Ersterfassung Mitarbeiter bearbeitet und testet Prozess vollständig und am Arbeitsablauf orientiert? Screens vollständig und nicht überfrachtet (d.h. aufgaben- Nutzerzentrierte Softwareentwicklung angemessen)?, Seite 83

83 Navigationsübersicht Übersicht mit Workflow Notation und Vereinfachungen: Zustände als Skizzen/Screenshots Übergänge i.a. mit Linksklick Rmit Rechtsklick Rücksprung / Schließen Use Cases zurück UML passt nur bedingt für GUI; Zustandsdiagramm weiterentwickelt Nutzerzentrierte Softwareentwicklung, Seite 84

84 Notation der Navigationsübersicht Anwendung starten beenden Aktionen neues Hauptfenster neuer Dialog/PopUp Rücksprung Ereignisse keine Angabe: linker Mausklick rechter Mausklick R Zustände Elementliste (abstrakter Screen) oder Layout-Skizze (konkreter Screen) oder Screenshot (konkret, Dokumentation) Bedingungen mit Shift/Umschalttaste mit Ctrl/Strg-Taste mit Alt-Taste S C A Nutzerzentrierte Softwareentwicklung, Seite 85

85 High Level: Workflow ein Arbeitsablauf (Workflow) verkettet mehrere Anwendungsfälle verschiedener Benutzer (Mitarbeiter) Beispiel: Bestellung verbuchen Lieferung zusammenstellen Lieferschein schreiben Rechnung schreiben Zahlungseingang verbuchen Metapher: der Weg einer Akte durch eine Verwaltung typischerweise wird der nächste Mitarbeiter vom System durch eine Botschaft informiert, wenn der vorige seine Teilaufgabe erledigt hat kann mit Flussdiagramm / Programmablaufplan dargestellt werden Nutzerzentrierte Softwareentwicklung, Seite 86

86 Low Level: Szenarien Szenario: Ablauf hinter einem Anwendungsfall / Screen Verfeinerung des Anwendungsfalls verbale Beschreibung aus Sicht des Benutzers jetzt unter Berücksichtigung wichtiger systeminterner Objekte systeminterne Objekte sollten dem mentalen Modelldes Benutzers entsprechen formale Beschreibung mittels Sequenzdiagramm Präzisierung der verbalen Beschreibung Benutzerereignisse rufen Methoden der Fensterklasse auf Nutzerzentrierte Softwareentwicklung, Seite 87

87 Elemente der Programmiersprache, Bibliotheken JAVA UND ANDROIDCRASHKURS Nutzerzentrierte Softwareentwicklung, Seite 88

88 Java Crash-Kurs: Interpreter-Prinzip Compiler übersetzt Quellcode in Byte Code Quellcode in.java-datei Bytecode in.class-datei Bytecode ist hardware-unabhängiger Befehlssatz für einen Interpreter wird z.b. im Internet übertragen Java Virtual Machine interpretiert Byte Code teilweise zur Geschwindigkeitssteigerung: Just-In-Time-Compiler übersetzt Byte Code in Maschinencode der Zielhardware Nutzerzentrierte Softwareentwicklung, Seite 89

89 "Java ist streng objektorientiert" In Java gibt es dynamische Feldobjekte Laufzeitkontrolle (bzgl. Typen als auch bzgl. Feldgrenzen) Systemunabhängige Festlegung der elementaren Datentypen Garbage Collection ist Bestandteil der Sprache "keine" Pointer alle Objektvariable sind Pointer kein call-by-reference keine structs kein Dereferenzieren keines Pointerarithmetik spezielle Klassen zur Unterstützung der (einfachen) Entwicklung internetbasierter Anwendungen (z.b. httprequest) Hauptprogramme verlieren an Bedeutung Nutzerzentrierte Softwareentwicklung, Seite 90

90 Java ist streng objektorientiert! Java = C++-- Klassen, Objekte, Konstruktoren, Instanziierung wie unter C++ Syntax fast wie unter C++ (aber konsequenter) Vererbung/Inheritance Polymorphismus: gleicher Methodenname in unterschiedl. Klassen Überladen: gleicher Methodenname in gleicher Klasse bei unterschiedl. Parametern (Typ/Anzahl) kein Überladen von Operatoren ('+' hat immer die Bedeutung einer Addition; Ausnahme: Strings) "keine" Multiple Inheritance sondern interfaces Nutzerzentrierte Softwareentwicklung, Seite 91

91 Informatikervision plattformunabhängig gut: Wertebereiche primitiver Datentypen sind festgelegt die Sprache ist meist nicht das Problem, sondern die Bibliotheken AWT 1.0, AWT 1.1, Swing, SWT vgl. MFC, OWL, Qt Zugriff auf Betriebssystemfunktionen die Implementation der Virtual Machine (Dalvik für Android, HotSpot von Oracle,...) und ihrer Bibliotheken wird zur neuen Plattform Versionsnummern... hohe HW-Anforderung: viel Rechenleistung, viel RAM Nutzerzentrierte Softwareentwicklung, Seite 92

92 sicher etliche Methoden mittlerweile "deprecated (ablehnen, missbilligen), weil "inherently unsafe" z.b. Thread.stop(), Runtime.runFinalizersOnExit(...) Ausführungszeitpunkte von finalize und garbage collector undefiniert Zuweisungen für double und long (64-Bit-Werte) sind nicht atomar d.h. könnenals 2 Maschinenbefehle implementiert und damit unterbrechbar sein (müssen aber nicht) Programmierer machen in jeder Sprache Fehler... Sie sind nicht von Ihrer Sorgfaltspflicht entbunden! Nutzerzentrierte Softwareentwicklung, Seite 93

93 ausgereift große Zahl von "deprecated" Klassen, Feldern und Methoden grundlegender Wechsel der Ereignisverarbeitung von 1.0 auf 1.1 Java war ursprünglich für kleine Anwendungen gedacht; wurde dann zur Universalsprache mit vielen Spezialbibliotheken ausgebaut Nutzerzentrierte Softwareentwicklung, Seite 94

94 Dateitypen und Tools auch IDE mit GUI-Editor LIB LIB class Bibliotheken ( jar ( h mindestens eine Klasse enthält main (bei java) Editor java Compiler class Virtual Machine Editor java Compiler class Nutzerzentrierte Softwareentwicklung, Seite 95

95 Android Software Stack Nutzerzentrierte Softwareentwicklung, Seite 96

96 Entwickeln mit AndroidStudio Project View zugehörige Dateien (Klassen) Source Klasse, Attribute, Methoden, Importe Ressource Elemente der GUI-Oberfläche Editor für mehrere Dateien Source Text-Editor Design XML-Resource, grafischer Editor Doc Dokumentation - wenn vorhanden Message View (Konsole, LogCat, Properties) Meldungen von Compiler und VM, Systemausgaben Tutorial Nutzerzentrierte Softwareentwicklung, Seite 97

97 Hello, World public class hello { public static void main(string[] args) { System.out.println ("Hello, World!"); } } // Datei: hello.java jede.java-datei enthält genau eine public Klasse Klassenname = Dateiname; Groß-/Kleinschreibung beachten! weitere Klassen ohne Angabe von public sind möglich die Java VM braucht ein Klasse mit einer Methodemainals Start es gibt keine freistehenden Funktionen/Methoden (in einer objektorientierten Programmiersprache) in String[] args werden Kommandozeilenparameter übergeben Nutzerzentrierte Softwareentwicklung, Seite 98

98 Ausgabe auf die Konsole public class System { public static PrintStream out; } public class PrintStream extends FilterOutputStream { public void println(string x) {...} public void println(object x) {...} } der println-aufruf verwendet obige Klassen der Standardbibliothek System.out.println ("Hello, World!"); println ist überladen für alle einfachen Datentypen boolean, int,... jede Klasse, die von Object abgeleitet ist, hat eine Methode, die eine Textdarstellung des Objekts abliefert: String tostring() Nutzerzentrierte Softwareentwicklung, Seite 99

99 Java-Sprachelemente Klassen, Objektvariable, Datentypen array exception throws try catch finally Iterator instanceof Generizität Zusicherungen (Assertions) Aufzählungstypen: enum strukturierte Kommentare: javadoc ArrayList interface Nutzerzentrierte Softwareentwicklung, Seite 100

100 Allgemein package(1. Anweisung in der Datei) ordnet eine Klasse einem Paket (= Gruppe von logisch zusammenhängenden Klassen) zu (und werden auf Verzeichnisstrukturen abgebildet) Die Import Anweisung macht die entsprechende Klasse sichtbar/verfügbar instanceof-testet, ob ein Objekt Instanz einer best. Klasse ist:... if (obj instanceof class)... int, byte, short, long, float, double, boolean, char, sind intrinsische Datentypen (.d.h. sie sind elementarer Bestandteil der Sprache Wrapper-/Hüll-Klassen (Integer, Float, Double, Boolean, ) existieren, weil Methoden nur auf Objekte angewendet werden können (z.b. Umwandlung von String in Wert, spezielle Vergleichsoperationen, ) Nutzerzentrierte Softwareentwicklung, Seite 101

101 Bibliotheken: Packages Package ist ein Ordner im Dateisystem enthält mehrere.java-dateien und Subpackages (=Unterordner) Zugehörigkeit zu Package Import-Anweisung macht andere Packages verfügbar package meinpackage; eine Klasse: import java.util.arraylist; alle Klassen: import java.util.*; alle Klassen mit Kurzreferenz: import java.util; Kurzreferenz ist dann: util.arraylist; weltweit eindeutige Namen für wichtige Packages package de.h-da.fbi.projekt.meinpackage; spiegelt die Schachtelung der Verzeichnise wider Nutzerzentrierte Softwareentwicklung, Seite 102

102 Klassen public class NeueKlasse extends Basisklasse {... } Konstruktor Ableitung Vorinitialisierungsliste gibt es nicht super(...) ruft den Konstruktor der Basisklasse auf Attribute können an der Deklarationsstelle oder im Konstruktor initialisiert werden alle Methoden sind standardmäßig virtuell Schlüsselwort final(="nicht-virtuell") verhindert Überschreiben keine separaten Header-Dateien (jede Klasse kann zum Testen eine main-methode haben) Nutzerzentrierte Softwareentwicklung, Seite 103

103 Mutter aller Klassen: class Object viele Klassen sind (indirekt) von class Object abgeleitet public class Object { public String tostring() {...} //liefert Textdarstellung des Objekts public boolean equals(object obj) {...} // vergleicht Objekt-Inhalte protected Object clone() // dupliziert das Objekt throws CloneNotSupportedException {...} protected void finalize()// Aufruf vor der Garbage Collection throws Throwable {...} } Nutzerzentrierte Softwareentwicklung, Seite 104

104 Klassenhierarchie class NeueKlasse extends Basisklasse implements Interface1, Interface2 keine Mehrfachvererbung, nur Einfachvererbung aber Implementierung mehrerer interfaces möglich damit wird das Problem in verschiedenen Basisklassen eventuell doppelt vorhandener Elementvariablen umgangen; virtuelle Ableitung ist daher überflüssig Besonderheiten eine Klasse muss mit abstractmarkiert werden, wenn sie abstract Methoden enthält eine abstract Klasse kann nicht instantiiert werden! eine Klasse, die als finalmarkiert ist, kann nicht mehr als Basisklasse dienen! Nutzerzentrierte Softwareentwicklung, Seite 105

105 Objekte Objekte werden immer dynamisch allokiert newliefert einen Zeiger auf das neue Objekt Klasse Objektreferenz = new Klasse (Parameter); delete gibt es nicht dynamisch allokierter Speicher wird automatisch vom Garbage Collector freigegeben, nachdem kein Zeiger mehr darauf zeigt der Aufrufzeitpunkt des Garbage Collector ist undefiniert; das Laufzeitsystem macht das irgendwann Destruktor gibt es nicht stattdessen Methode protected void finalize(); Aufruf von dem Garbage Collector d.h. unter Umständen nie! Nutzerzentrierte Softwareentwicklung, Seite 106

106 Lebensdauer und Zugriffsrechte Ein Objekt existiert in Java/Android so lange, wie eine Referenz darauf existiert! manchmal auch ein bisschen länger, wie es dem Garbage Collector gerade gefällt public, protected, private wie in C++ jedes Element hat sein eigenes Zugriffsrecht Definition gilt (im Gegensatz zu C++) nicht für die nachfolgenden Elemente ohne Angabe bedeutet: private für Klassen public für Interfaces für Attribute und Methoden protected innerhalb des eigenen Packages private zur Sicherheit immer angeben außerhalb des eigenen Packages Nutzerzentrierte Softwareentwicklung, Seite 107

107 Datentypen Primitive Typen plattformunabhängig definiert byte (8 Bit), short (16 Bit), int (32 Bit), long (64 Bit), alle als vorzeichenbehaftete 2er-Komplementdarstellung char (16 Bit vorzeichenlos, Unicode Umlaute in Variablen erlaubt) float (32 Bit), double (64 Bit); beide IEEE Standard 754 kein enum in Sinne von C++; stattdessen Klasse bzw. Interface: public enum Size { SMALL, MEDIUM, LARGE; } Referenztypen sind "Zeiger" Objektinstanzen, Interfaces oder Arrays Bem.: C++ macht keinen Unterschied zwischen primitiven Typen und Klassen! neue primitive Typen werden in C++ als Klassen realisiert (CBruch, CComplex, CString) Nutzerzentrierte Softwareentwicklung, Seite 108

108 Initialisierung von Variablen automatisch initialisiert werden Klassenvariable ( = static) Instanzvariable ( = Attribute) Array-Komponenten (wenn es sich um Grundtypen handelt) Initialisierungswerte sind 0 für Zahlentypen false für boolean null für Objektreferenzen lokale Variable werden nicht automatisch initialisiert! Zugriff auf nicht initialisierte Variable bringt Fehler Nutzerzentrierte Softwareentwicklung, Seite 109

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

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 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

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

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

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

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien. Java 1 Einführung Grundlegende Übungsaufgaben Arbeitsauftrag 1.1 1. Formulieren Sie den Algorithmus nach den oben genannten Kriterien. Beispiel: Bedienung eines Getränkeautomaten

Mehr

SEQUENZDIAGRAMM. Christoph Süsens

SEQUENZDIAGRAMM. Christoph Süsens SEQUENZDIAGRAMM Christoph Süsens DEFINITION Das Sequenzdiagramm gibt Auskunft darüber: Welche Methoden für die Kommunikation zwischen ausgewählten Objekten zuständig sind. Wie der zeitliche Ablauf von

Mehr

ENA Entwicklung nutzerorientierter Anwendungen

ENA Entwicklung nutzerorientierter Anwendungen ENA Entwicklung nutzerorientierter Anwendungen 3V + 1P SWS 5 CP Belegnummer:30.7304 [PVL/Praktikum: 30.7305] Wintersemester 2014/15 Entwicklung nutzerorientierter Anwendungen Gestaltung von grafisch-interaktiven

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

Java Kurs für Anfänger Einheit 5 Methoden

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

Mehr

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

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

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

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

Objektorientierte Programmierung für Anfänger am Beispiel PHP

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

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

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

Präsentation zur Vorstellung meiner Bachelor-Arbeit beim BSE- Seminar. Vortrag von Patrick Bitterling

Präsentation zur Vorstellung meiner Bachelor-Arbeit beim BSE- Seminar. Vortrag von Patrick Bitterling Präsentation zur Vorstellung meiner Bachelor-Arbeit beim BSE- Seminar Vortrag von Patrick Bitterling Gliederung Meine Aufgabe Eckdaten zu meiner Bachelor-Arbeit Die Aufgabeneinteilung Die alte Saros-GUI

Mehr

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar 2014. inkl. zusätzlichem Übungsanhang K-W81-G-UA

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar 2014. inkl. zusätzlichem Übungsanhang K-W81-G-UA Markus Krimm, Peter Wies 1. Ausgabe, Januar 2014 Windows 8.1 Grundkurs kompakt inkl. zusätzlichem Übungsanhang K-W81-G-UA 1.3 Der Startbildschirm Der erste Blick auf den Startbildschirm (Startseite) Nach

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

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-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

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 26. April 2013 Programmieren II 10. Übungsblatt Hinweis: Insgesamt werden in diesem Semester fünf

Mehr

Programmierkurs Java

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

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

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

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

Einfü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 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

Mehr

14.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 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...

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

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

Verwenden von OnlineUebungen.ch nichts einfacher als das!

Verwenden von OnlineUebungen.ch nichts einfacher als das! Verwenden von OnlineUebungen.ch nichts einfacher als das! Diese Kurzanleitung soll Ihnen einen Schnell-Überblick über den SchulArena-Übungsgenerator www.onlineuebungen.ch verschaffen. 1. Anmeldung als

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

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

Programme im Griff Was bringt Ihnen dieses Kapitel?

Programme im Griff Was bringt Ihnen dieses Kapitel? 3-8272-5838-3 Windows Me 2 Programme im Griff Was bringt Ihnen dieses Kapitel? Wenn Sie unter Windows arbeiten (z.b. einen Brief schreiben, etwas ausdrucken oder ein Fenster öffnen), steckt letztendlich

Mehr

Unsere Webapplikation erweitern

Unsere Webapplikation erweitern Unsere Webapplikation erweitern Um die Webapplikation zu benutzen: 1. Starten Sie den Server, indem Sie das Hauptprogramm in der Klasse ImdbServer starten. 2. Laden Sie im Browser die Seite http://localhost:8080/html/index.html.

Mehr

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI TTS - TinyTimeSystem Unterrichtsprojekt BIBI Mathias Metzler, Philipp Winder, Viktor Sohm 28.01.2008 TinyTimeSystem Inhaltsverzeichnis Problemstellung... 2 Lösungsvorschlag... 2 Punkte die unser Tool erfüllen

Mehr

Microsoft Visual Studio Community 2015

Microsoft Visual Studio Community 2015 Microsoft Visual Studio Community 2015 Visual Studio Community 2015 ist eine kostenlose IDE mit leistungsfähigen Programmier- und Entwicklungswerkzeugen für Windows, ios und Android. Sie ist für einzelne

Mehr

Unified Modeling Language (UML)

Unified Modeling Language (UML) Kirsten Berkenkötter Was ist ein Modell? Warum Modellieren? Warum UML? Viele, viele Diagramme UML am Beispiel Was ist ein Modell? Ein Modell: ist eine abstrakte Repräsentation eines Systems, bzw. ist eine

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

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Wir wollen, dass ihr einfach für eure Ideen und Vorschläge werben könnt. Egal ob in ausgedruckten Flyern, oder in sozialen Netzwerken und

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999 Mind Mapping am PC für Präsentationen, Vorträge, Selbstmanagement von Isolde Kommer, Helmut Reinke 1. Auflage Hanser München 1999 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 21222 0 schnell

Mehr

Dokumentenverwaltung im Internet

Dokumentenverwaltung im Internet Dokumentenverwaltung im Internet WS 09/10 mit: Thema: Workflow und Rollenverteilung im Backend Gruppe: DVI 10 Patrick Plaum und Kay Hofmann Inhalt 1. Benutzer und Benutzergruppen erstellen...2 1.1. Benutzergruppen...2

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

Content Management System (CMS) Manual

Content Management System (CMS) Manual Content Management System (CMS) Manual Thema Seite Aufrufen des Content Management Systems (CMS) 2 Funktionen des CMS 3 Die Seitenverwaltung 4 Seite ändern/ Seite löschen Seiten hinzufügen 5 Seiten-Editor

Mehr

Abschluss Version 1.0

Abschluss Version 1.0 Beschreibung Der Abschluss wird normalerweise nur einmal jährlich durchgeführt. Dieses Tech-Note soll helfen, diesen doch seltenen aber periodisch notwendigen Vorgang problemlos durchzuführen. Abschlussvarianten

Mehr

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert. Usability Heuristiken Karima Tefifha Proseminar: "Software Engineering Kernkonzepte: Usability" 28.06.2012 Prof. Dr. Kurt Schneider Leibniz Universität Hannover Die ProSeminar-Ausarbeitung beschäftigt

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

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

Zahlen auf einen Blick

Zahlen auf einen Blick Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.

Mehr

Usability Engineering als Innovationsmethodik

Usability Engineering als Innovationsmethodik Usability Engineering als Innovationsmethodik Die vielen Gesichter einer Schnittstellendisziplin Folie 1 16. Mai 2013 Dr. Eric Fehse Wer hat das schon mal gehört? Usability bedeutet, die Benutzeroberfläche

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

iphone- und ipad-praxis: Kalender optimal synchronisieren

iphone- und ipad-praxis: Kalender optimal synchronisieren 42 iphone- und ipad-praxis: Kalender optimal synchronisieren Die Synchronisierung von ios mit anderen Kalendern ist eine elementare Funktion. Die Standard-App bildet eine gute Basis, für eine optimale

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

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

Graphische Benutzungsoberflächen

Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Drucken aus der Anwendung

Drucken aus der Anwendung Drucken aus der Anwendung Drucken aus der Anwendung Nicht jeder Großformatdruck benötigt die volle Funktionsvielfalt von PosterJet - häufig sind es Standarddrucke wie Flussdiagramme und Organigramme die

Mehr

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 - Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung

Mehr

2.1 Präsentieren wozu eigentlich?

2.1 Präsentieren wozu eigentlich? 2.1 Präsentieren wozu eigentlich? Gute Ideen verkaufen sich in den seltensten Fällen von allein. Es ist heute mehr denn je notwendig, sich und seine Leistungen, Produkte etc. gut zu präsentieren, d. h.

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

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar 2014 K-W81-G

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar 2014 K-W81-G Windows 8.1 Markus Krimm, Peter Wies 1. Ausgabe, Januar 2014 Grundkurs kompakt K-W81-G 1.3 Der Startbildschirm Der erste Blick auf den Startbildschirm (Startseite) Nach dem Bootvorgang bzw. nach der erfolgreichen

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

ec@ros2-installer ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg 7 64331 Weiterstadt

ec@ros2-installer ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg 7 64331 Weiterstadt ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Download des ecaros2-installer...3 2 Aufruf des ecaros2-installer...3 2.1 Konsolen-Fenster (Windows)...3 2.2 Konsolen-Fenster

Mehr

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1): Supportanfrage ESN Bitte füllen Sie zu jeder Supportanfrage diese Vorlage aus. Sie helfen uns damit, Ihre Anfrage kompetent und schnell beantworten zu können. Verwenden Sie für jedes einzelne Thema jeweils

Mehr

So geht s Schritt-für-Schritt-Anleitung

So geht s Schritt-für-Schritt-Anleitung So geht s Schritt-für-Schritt-Anleitung Software WISO Mein Verein Thema Fällige Rechnungen erzeugen und Verbuchung der Zahlungen (Beitragslauf) Version/Datum V 15.00.06.100 Zuerst sind die Voraussetzungen

Mehr

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

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

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

IT-Basics 2. DI Gerhard Fließ

IT-Basics 2. DI Gerhard Fließ IT-Basics 2 DI Gerhard Fließ Wer bin ich? DI Gerhard Fließ Telematik Studium an der TU Graz Softwareentwickler XiTrust www.xitrust.com www.tugraz.at Worum geht es? Objektorientierte Programmierung Konzepte

Mehr

Informationen zur Verwendung von Visual Studio und cmake

Informationen zur Verwendung von Visual Studio und cmake Inhaltsverzeichnis Informationen zur Verwendung von Visual Studio und cmake... 2 Erste Schritte mit Visual Studio... 2 Einstellungen für Visual Studio 2013... 2 Nutzung von cmake... 6 Installation von

Mehr

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten. Personenverzeichnis Ab dem Wintersemester 2009/2010 wird das Personenverzeichnis für jeden Mitarbeiter / jede Mitarbeiterin mit einer Kennung zur Nutzung zentraler Dienste über das LSF-Portal druckbar

Mehr

ECDL Europäischer Computer Führerschein. Jan Götzelmann. 1. Ausgabe, Juni 2014 ISBN 978-3-86249-544-3

ECDL Europäischer Computer Führerschein. Jan Götzelmann. 1. Ausgabe, Juni 2014 ISBN 978-3-86249-544-3 ECDL Europäischer Computer Führerschein Jan Götzelmann 1. Ausgabe, Juni 2014 Modul Präsentation Advanced (mit Windows 8.1 und PowerPoint 2013) Syllabus 2.0 ISBN 978-3-86249-544-3 ECDLAM6-13-2 3 ECDL -

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

Mehr

(C)opyright 2009 by Jochen Vajda

(C)opyright 2009 by Jochen Vajda (C)opyright 2009 by Jochen Vajda Inhalt Einführung Darstellung des Verzeichnisbaums Statusleiste Überschreibenvon Dateien Ordnereinstellungen Suche Einleitung Der folgende Artikel vergleicht den Windows

Mehr

Leseprobe. Bruno Augustoni. Professionell präsentieren. ISBN (Buch): 978-3-446-44285-6. ISBN (E-Book): 978-3-446-44335-8

Leseprobe. Bruno Augustoni. Professionell präsentieren. ISBN (Buch): 978-3-446-44285-6. ISBN (E-Book): 978-3-446-44335-8 Leseprobe Bruno Augustoni Professionell präsentieren ISBN (Buch): 978-3-446-44285-6 ISBN (E-Book): 978-3-446-44335-8 Weitere Informationen oder Bestellungen unter http://wwwhanser-fachbuchde/978-3-446-44285-6

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

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

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

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Wie erzeugt man ein Fotobuch im Internet bei Schlecker Seite Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Punkt 12 bis 24: -Wir arbeiten mit der Software 8-16 -Erstellung

Mehr

Welche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen.

Welche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen. Wir wollen mit Ihnen Ihren Auftritt gestalten Steil-Vorlage ist ein österreichisches Start-up mit mehr als zehn Jahren Erfahrung in IT und Kommunikation. Unser Ziel ist, dass jede einzelne Mitarbeiterin

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

Ordnung auf/im (Win-)PC bzw. der Festplatte

Ordnung auf/im (Win-)PC bzw. der Festplatte Ordnung auf/im (Win-)PC bzw. der Festplatte Ein Versuch da was zu (er)klären von Uwe Troll Vorbemerkung: Alles was später hier gezeigt wird, wird auf Ihrem PC anders aussehen! Das Prinzip bleibt aber gleich.

Mehr

davero akademie 2013 53 5. PC und Multimedia

davero akademie 2013 53 5. PC und Multimedia davero akademie 2013 53 5. PC und Multimedia 10 Finger sind schneller als 2 In wenigen Schritten zum 10-Finger-System Sie suchen oft die richtigen Buchstaben auf Ihrer Tastatur und vergeuden dadurch wertvolle

Mehr

BEISPIELKLAUSUR Softwareentwicklung:

BEISPIELKLAUSUR Softwareentwicklung: Prof. Dr. Andreas Fink Institut für Informatik Fakultät für Wirtschafts- und Sozialwissenschaften Helmut-Schmidt-Universität / Universität der Bundeswehr Hamburg BEISPIELKLAUSUR Softwareentwicklung: Objektorientierte

Mehr

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte! Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte! Aufgabe 1: Grundlagen (5 Punkte) a) Definieren Sie kurz Usability und User Experience.

Mehr

Installation von Druckern auf dem ZOVAS-Notebook. 1. Der Drucker ist direkt mit dem Notebook verbunden

Installation von Druckern auf dem ZOVAS-Notebook. 1. Der Drucker ist direkt mit dem Notebook verbunden Installation von Druckern auf dem ZOVAS-Notebook Bei der Installation eines Druckers muss grundsätzlich unterschieden werden, ob der Drucker direkt am Notebook angeschlossen ist oder ob ein Drucker verwendet

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design 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

Mehr

TISIS - Industrie 4.0. Ereignis, Ort, Datum

TISIS - Industrie 4.0. Ereignis, Ort, Datum - Industrie 4.0 Ereignis, Ort, Datum TISIS Software Die vollständige Maschinen- Software wird als Option für die gesamte Tornos Produktpalette angeboten Sie ermöglicht es Ihnen, Ihre Maschine zu programmieren

Mehr