Modellierung einer Android-App

Werbung
Modellierung einer Android-App
2. Mai 2013
Taentzer
Software-Praktikum 2013
42
Ü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
43
Überblick über Anwendungsfälle
Konzepte:
 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
44
Aktivitätendiagramme im Praktikum
 Ein Anwendungsfall wird durch ein Aktivitätendiagramm 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
45
Aktivitätendiagramm „Zählerliste zeigen“
Taentzer
Software-Praktikum 2013
46
Aktivitätendiagramm „Zähler anlegen“
Taentzer
Software-Praktikum 2013
47
Aktivitätendiagramm „Klicken“
Taentzer
Software-Praktikum 2013
48
Aktivitätendiagramm „Gruppe anlegen“
Taentzer
Software-Praktikum 2013
49
Klassendiagramme im Praktikum
 zur Modellierung der Objektstrukturen in der
objektorientierten Schicht
 Beispiel:
Taentzer
Software-Praktikum 2013
50
Android-Vertiefung
2. Mai 2013
Taentzer
Software-Praktikum 2013
51
Ü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
52
Views
 Views: graphische
Komponenten in einer
Activity, z.B. Listen,
Textfelder, Knöpfe und auch
ein einbettbarer WebBrowser
 Definition der ViewHierarchie in der LayoutDatei der Activity
View-Hierarchie:
aus „android.com“
Taentzer
Software-Praktikum 2013
53
Zeichnen einer View
 Zeichnen einer View durch Aufruf von setContentView() der
enthaltenden Activity
 Parameter: Wurzel der View-Hierarchie
CreateCounter.java:
Taentzer
Software-Praktikum 2013
Verweis auf
XML-Datei
54
Layout graphischer Komponenten
create_counter.xml



Layout-Definition durch
eine XML-Layout Datei.
Jedes XML-Element ist
entweder ein View oder ein
ViewGroup-Objekt.
Layouts für ViewGroupObjekte:
 LinearLayout
 RelativeLayout
 AbsoluteLayout
 TableLayout
 GridLayout
 etc.
 Widget: View-Objekt für
Benutzerinteraktion
 Z.B. Button, Checkbox,
Texteingabefeld, Uhr
 Interaktion über Events
Taentzer
Software-Praktikum 2013
55
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
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 benachrichtigt und jeweils eine
Callback-Methode
ausgeführt.
Taentzer
 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()
Software-Praktikum 2013
57
Beispiel: Events in CreateCounter
CreateCounter.java:
Taentzer
Software-Praktikum 2013
58
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.
Taentzer
Software-Praktikum 2013
Weitere ViewKomponenten
werden im
Emulator unter
ApiDemos erklärt.
Menü mit
Icons
59
Weitere Menü-Konzepte
Callback-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
ListView als spezieller AdapterView
 Ein ListView ist eine ViewGroup
zur Darstellung von Aufzählungen
 Die ListView ist ein AdapterView
und braucht einen Adapter, um die
Daten darzustellen.
 Ein AdapterView ist an eine
externe Datenquelle gebunden.
 Zwischen der ListView und der
Datenquelle fließt ein AdapterObjekt.
 Mit einem spezialisierten Array
Adapter kann die Darstellung
der Listeneinträge angepasst
werden.
Taentzer
Software-Praktikum 2013
61
Beispiel: Ein ListView mit angepasstem
Array-Adapter
ClickConfig.java:
Darstellung eines Eintrags:
Darstellung eines ClickCounts
Darzustellender
Inhalt: Liste mit
ClickCounts
Context: umgebene
Activity: ClickConfig
Erstellung des ListView:
Taentzer
Software-Praktikum 2013
62
Beispiel: Benutzerauswahl behandeln
Callback-Methode, die
nach einem Klick
ausgeführt wird
ClickConfig.onCreate():
view – der View, der geklickt wurde
i - die Position des geklickten Eintrags
l – die Id des geklickten Eintrags
Taentzer
Ausgewählter
Eintrag
Software-Praktikum 2013
63
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
Taentzer
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!
Software-Praktikum 2013
64
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;
Aufruf:
// sum of all the elements
double averageAttendance =
for (int i=0; i<p.length; i++) {
MyUtils.mean(attendance);
sum += p[i]; }
return ((double)sum) / p.length;
}
Taentzer
Software-Praktikum 2013
65
Entwicklungsrichtlinien für effizienten
Code (2)
Generelle Best Practices:
 Vermeide doppelten Code!
 keine Copy-and-PasteProgrammierung
 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
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!
Software-Praktikum 2013
66
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
Taentzer
Software-Praktikum 2013
67
Herunterladen