Modellierung einer Android-Appswt/ss13/swPrak/files/Folien... · onCreateOptionsMenu() – wird...

26
42 Modellierung einer Android-App 2. Mai 2013 Taentzer Software-Praktikum 2013

Transcript of Modellierung einer Android-Appswt/ss13/swPrak/files/Folien... · onCreateOptionsMenu() – wird...

42

Modellierung einer Android-App

2. Mai 2013

Taentzer Software-Praktikum 2013

Taentzer Software-Praktikum 2013 43

Überblick

Modellierung der wesentlichen Aspekte Welche Anwendungsfälle haben wir?

Übersicht durch Anwendungsfalldiagramme Wie ist die Benutzerführung?

Verfeinerung der Anwendungsfälle durch Aktivitätendiagramme

Mit welchen Datenstrukturen arbeiten wir? Datenmodellierung mit Klassendiagrammen

Taentzer Software-Praktikum 2013 44

Überblick über AnwendungsfälleKonzepte: Akteure: Benutzer, Kunde,… Anwendungsfall Akteur führt Anwendungsfall aus. Anwendungsfall ist einem anderen enthalten (include). Anwendungsfall erweitert einen anderen (extend).

Erweiterungspunkt definieren

Beispiel „ClickCounter“

Taentzer Software-Praktikum 2013 45

Aktivitätendiagramme im Praktikum

Ein Anwendungsfall wird durch ein Aktivitäten-diagramm verfeinert. Es beschreibt den Ablauf des Anwendungsfalls.

Es gibt zwei Arten von Aktivitäten: externe: Anzeige einer graphischen Komponente. interne: Durchführung einer internen Aktion, z.B.

Datenspeicherung Endaktivitäten werden mit Anwendungsfällen

verknüpft. Zur Beschreibung des Kontrollflusses zwischen mehreren

Anwendungsfällen.

Taentzer Software-Praktikum 2013 46

Aktivitätendiagramm „Zählerliste zeigen“

Taentzer Software-Praktikum 2013 47

Aktivitätendiagramm „Zähler anlegen“

Taentzer Software-Praktikum 2013 48

Aktivitätendiagramm „Klicken“

Taentzer Software-Praktikum 2013 49

Aktivitätendiagramm „Gruppe anlegen“

Klassendiagramme im Praktikum

zur Modellierung der Objektstrukturen in der objektorientierten Schicht

Beispiel:

Taentzer Software-Praktikum 2013 50

51

Android-Vertiefung

2. Mai 2013

Taentzer Software-Praktikum 2013

Taentzer Software-Praktikum 2013 52

Überblick Entwicklung der Benutzeroberfläche

Views Layouts Events Menüs Adapter

Entwicklung einer Zwei-Schichten-Architektur Entwicklungsrichtlinien

Best Practices: generelle und spezielle Richtlinien für mobile Geräte

Taentzer Software-Praktikum 2013 53

Views

Views: graphische Komponenten in einer Activity, z.B. Listen, Textfelder, Knöpfe und auch ein einbettbarer Web-Browser

Definition der View-Hierarchie in der Layout-Datei der Activity

aus „android.com“

View-Hierarchie:

Zeichnen einer View

Zeichnen einer View durch Aufruf von setContentView() der enthaltenden Activity Parameter: Wurzel der View-Hierarchie

Taentzer Software-Praktikum 2013 54

CreateCounter.java:

Verweis auf XML-Datei

Taentzer Software-Praktikum 2013 55

Layout graphischer Komponentencreate_counter.xml

Layout-Definition durch eine XML-Layout Datei.

Jedes XML-Element ist entweder ein View oder ein ViewGroup-Objekt.

Layouts für ViewGroup-Objekte: LinearLayout RelativeLayout AbsoluteLayout TableLayout GridLayout etc.

Widget: View-Objekt für Benutzerinteraktion Z.B. Button, Checkbox,

Texteingabefeld, Uhr Interaktion über Events

Layout-Gruppen

Gruppieren mehrere Views zu einer ViewGroup. FrameLayout definiert einen leeren Rahmen, der

später durch ein Objekt gefüllt werden kann. LinearLayout bringt alle Kinder in eine Reihe. TableLayout positioniert seine Kinder in Zeilen und

Spalten. Die Tabelle wird durch eine Liste von TableRows aufgebaut. Einzelne Zellen können frei bleiben, aber nicht kombiniert werden.

RelativeLayout überlässt seinen Kinder das Layout. Sie positionieren sich relativ zueinander (links, rechts, über, unter).

Taentzer Software-Praktikum 2013 56

Taentzer Software-Praktikum 2013 57

Der Event-Mechanismus

Prinzipielle Idee: Views interagieren über Events miteinander und mit dem Benutzer.

Wenn ein View auf einen Typ von Events hören möchte, meldet er sich als Listener an.

Wenn das Event eintrifft, werden alle Listener benach-richtigt und jeweils eine Callback-Methode ausgeführt.

Views können bereits auf viele Typen von Events hören: z.B. View.onClickListener() View.ontouchListener() View.onKeyListener() Anmeldung des akt. View:

z.B. setOnClickListener() Überschreiben einer

Callback-Methode bei eigenen Views möglich, z.B.: onClick() onKeyDown()

Taentzer Software-Praktikum 2013 58

Beispiel: Events in CreateCounterCreateCounter.java:

Taentzer 59

Definition eines Menüs Drei Arten von Menüs:

OptionsMenu – durch Drücken von MENU

ContextMenu – ein Kontextmenü

PopupMenu – zum Anzeigen von Daten

Zur Definition von Menüs werden Callback-Methoden überschrieben: onCreateOptionsMenu() onOptionsItemSelected()

Menüeinträge können in einer Layout-Datei definiert werden.

Weitere View-Komponenten werden im Emulator unter ApiDemos erklärt.

Menü mit Icons

Software-Praktikum 2013

Weitere Menü-KonzepteCallback-Methoden:

onCreateOptionsMenu() – wird beim Erzeugen einer Activity aufgebaut

onPrepareOptionsMenu() – wird nach dem Drücken des Menu-Knopfs aufgerufen

onOptionsItemSelected() – wird bei Auswahl eines Menüeintrags aufgerufen und behandelt die möglichen Menüaktionen

onCreateContextMenu() - wird zum Erzeugen eines Kontextmenüs aufgerufen (anders als bei onCreatOptionsMenu)

onContextItemSelected() () – wird bei Auswahl eines Menüeintrags aufgerufen und behandelt die möglichen Menüaktionen

Taentzer Software-Praktikum 2013 60

Taentzer Software-Praktikum 2013 61

ListView als spezieller AdapterView

Ein ListView ist eine ViewGroupzur Darstellung von Aufzählungen

Die ListView ist ein AdapterViewund braucht einen Adapter, um die Daten darzustellen.

Ein AdapterView ist an eine externe Datenquelle gebunden. Zwischen der ListView und der

Datenquelle fließt ein Adapter-Objekt.

Mit einem spezialisierten Array Adapter kann die Darstellung der Listeneinträge angepasst werden.

Beispiel: Ein ListView mit angepasstem Array-Adapter

Taentzer Software-Praktikum 2013 62

Darzustellender Inhalt: Liste mit

ClickCounts

Darstellung eines Eintrags: Darstellung eines ClickCounts

Context: umgebene Activity: ClickConfig

ClickConfig.java:

Erstellung des ListView:

Beispiel: Benutzerauswahl behandeln

Taentzer Software-Praktikum 2013 63

ClickConfig.onCreate():

Ausgewählter Eintrag

Callback-Methode, die nach einem Klick ausgeführt wird

view – der View, der geklickt wurdei - die Position des geklickten Eintragsl – die Id des geklickten Eintrags

Taentzer Software-Praktikum 2013 64

Entwicklungsrichtlinien für effizienten Code

Performanz: Schreib keinen unnötigen

Programmcode! kein Code für alle

Eventualitäten Best Practices:

generelle Empfehlungen spezielle Empfehlungen für

mobile Anwendungen

Generelle Best Practices: Benutze Klassen und

Methoden, die schon im SDK vorhanden sind!

Deklariere Methoden, die keine Objektinformation brauchen, als statisch!

Deklariere Felder und Methoden als final, wenn sie nicht überschrieben werden!

Taentzer Software-Praktikum 2013 65

Beispiele: Best Practices

Konstanten werden nicht überschrieben und sind von Objekten unabhängig:// Menu item ids

public static final int MENU_ITEM_DELETE = Menu.FIRST;public static final int MENU_ITEM_INSERT = Menu.FIRST + 1;

Methode zur Berechnung des Durchschnitts ist von Objekten unabhängig.public static double mean(int[] p) {

int sum = 0; // sum of all the elements for (int i=0; i<p.length; i++) {

sum += p[i]; } return ((double)sum) / p.length;

}

Aufruf:double averageAttendance =

MyUtils.mean(attendance);

Taentzer Software-Praktikum 2013 66

Entwicklungsrichtlinien für effizienten Code (2)

Spezielle Best Practices für mobile Anwendungen: Erzeuge nicht mehr Objekte als

nötig! Verlier keine Daten!

onSaveInstanceState() onPause()

Überlade einzelne Seiten nicht! Entwirf die Benutzeroberfläche

so, dass die Anwendung auf verschiedenartigen Geräten laufen kann.

Nutze Netz und Strom wenig!

Generelle Best Practices: Vermeide doppelten Code!

keine Copy-and-Paste-Programmierung

Vermeide Spaghetti-Code! Vermeide temporäre Felder!

keine Zwischenergebnisse in Objektfeldern

Vermeide Klassen, die ihr Erbe verweigern! Alle geerbten Felder und

Methoden sollen auch in den Unterklassen sinnvoll sein.

Taentzer Software-Praktikum 2013 67

Zusammenfassung Activities enthalten Views.

Layout in XML-Datei möglichst relatives Layout Views hören auf Events vom Benutzer (Listener-Konzept)

AdapterViews: Sind an Datenquellen angeschlossen Können Daten durch spezielle Adapter speziell darstellen.

Zwei-Schichten-Architektur: Datenhaltung und Oberfläche: Die obere Schicht benutzt die

untere. Die untere Schicht schickt Notifications an die obere. Entwicklungsrichtlinien

generelle für guten Programmierstil spezielle für mobile Geräte, um Zeit und Platz zu sparen