6 Oberflächen und Daten
|
|
|
- Achim Solberg
- vor 9 Jahren
- Abrufe
Transkript
1 111 6 Oberflächen und Daten Nachdem wir nun viel über die Gestaltung von Oberflächen und den Zugriff auf Views gelernt haben, möchten wir in diesem Kapitel zeigen, wie man Bildschirmseiten mit Daten aus einer Datenquelle füllt. Die Datenquelle liefert uns beispielsweise Massendaten, die wir in einer Liste darstellen wollen. Oder wir haben Zugriff auf eine Bildgalerie und möchten alle Bilder darstellen. Dazu müssen wir eine Verbindung zwischen den Daten und der Oberfläche herstellen, ohne jeden einzelnen Datensatz selbst verarbeiten zu müssen. 6.1 Zielsetzung In Amando können wir Bekannten unsere Position mitteilen. Dazu müssen wir aus einer Liste aller der Anwendung bekannten Personen eine bestimmte Person (Geokontakt genannt) auswählen. Anhand dieses und weiterer Fälle werden wir zeigen, wie man eine Verbindung zwischen Datenquelle und Oberfläche mit Hilfe von Adaptern herstellt. Wir werden lernen, wie man diese mit den dafür passenden View- Elementen, den AdapterViews, verknüpft. Nicht immer ist jedoch ein Adapter nötig. Für Drop-Down-Boxen mit immer gleichen Texten können auch Array-Ressourcen als Datenquelle für die Auswahltexte verwendet werden. Um auch große Datenmengen performant und ressourcenschonend darstellen zu können, werden wir zeigen, wie man eigene Adapter mit einem Cache-Mechanismus implementiert. Mittels Callback-Methoden kann auf die Listenauswahl des Anwenders reagiert werden. Im Anschluss zeigen wir, wie man Activities für die Grundeinstellungen einer Anwendung programmiert und die eingegebenen Daten speichert. Speichervorgänge können länger dauern, weshalb wir abschließend die Verwendung von Fortschrittsanzeigen behandeln. Adapter verbinden Daten und Views. Verarbeitung von Massendaten
2 112 6 Oberflächen und Daten 6.2 AdapterViews und Ressourcen Layout anlegen Listing 6.1 Layout für die Geokontakt-Liste Wir legen zuerst das Layout für die neue Activity GeoKontakteAuflisten fest. Sie wird auf der Startseite durch einen Klick auf die Schaltfläche»Geokontakte«aufgerufen. Wir legen die Activity im Package gui an und tragen sie ins Android-Manifest ein. Listing 6.1 zeigt das Layout dieser Activity. Wir binden es in der oncreate-methode ein. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= " android:orientation="vertical" android:layout _ width="fill _ parent" android:layout _ height="fill _ parent"> <Spinner android:id="@+id/sp _ sortierung" android:layout _ width="wrap _ content" android:layout _ height="wrap _ content" android:drawselectorontop="true" android:entries="@array/sortierung"/> (1) <ListView (2) android:id="@+id/android:list" android:layout _ width="wrap _ content" android:layout _ height="wrap _ content" android:textfilterenabled="true" android:cachecolorhint="@color/hintergrund"/> <TextView android:id="@+id/android:empty" android:layout _ width="wrap _ content" android:layout _ height="wrap _ content" android:text= "@string/txt _ geokontakt _ auflisten _ keinedaten"/> </LinearLayout> Einen Spinner verwenden Das Layout enthält als Erstes einen Spinner. Spinner sind Drop-Down- Listen. Meist wird ein Spinner in einer Anwendung immer eine feste Liste von Werten haben. Diese Werte legt man in einer Array-Ressource ab. Wir legen dazu die Datei /res/values/arrays.xml an und füllen sie mit dem folgenden XML: <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="sortierung"> <item>standard</item>
3 6.3 AdapterViews und Adapter 113 <item>name</item> </string-array> </resources> Das XML-Attribut (1) in der Spinner-Definition in Listing 6.1 lädt automatisch die Daten aus der Ressource und zeigt sie an. 6.3 AdapterViews und Adapter Manche View-Elemente dienen der Anzeige von vielen Datensätzen. Sie werden als AdapterView bezeichnet und sind Views, deren Kindelemente durch Adapter mit Daten befüllt werden. Diese View-Elemente sind von android.widget.adapterview<t extends android.widget.adapter> abgeleitet, die wiederrum von android.view.viewgroup abgeleitetist. In Android sind folgende Views von AdapterView abgeleitet: Views mit Adaptern befüllen ListView Gallery GridView Spinner Den Spinner haben wir gerade in Listing 6.1 kennengelernt. Mit seiner Hilfe kann der Anwender die Sortierung ändern. Zur Anzeige der Geokontakte als Liste verwenden wir eine ListView (2). Als Bindeglied zwischen einer Datenmenge und einer AdapterView dienen Adapter. Ein Adapter erfüllt zwei Aufgaben: Aufgaben des Adapters Er füllt die AdapterView mit Daten, indem er ihr eine Datenquelle liefert. Er definiert, welche View bzw. Viewgroup zur Darstellung der einzelnen Elemente der Menge verwendet wird. Anhand der Art und Weise, wie die Datenmenge definiert ist, hat man die Wahl zwischen verschiedenen Implementierungen des Interface android.widget.adapter. Wir werden zwei Adapter vorstellen, den ArrayAdapter und den SimpleCursorAdapter. Alle anderen Adapter sind Variationen dieser beiden Adapter. Der ArrayAdapter operiert, wie der Name schon sagt, auf Arrays. Der SimpleCursorAdapter ist von CursorAdapter abgeleitet und verlangt einen Cursor als Datenquelle. Meist wird dies ein Datenbank-Cursor sein, mit dem wir einzelne Zeilen aus dem Ergebnis einer Datenbankabfrage erhalten. Mit Datenbanken beschäftigen wir uns intensiv in Kapitel 11. Das Verständnis des Wahl der Adapter
4 114 6 Oberflächen und Daten Cursors ist hier noch nicht wichtig. Wissen muss man aber, dass der CursorAdapter in jedem Fall eine Spalte names _ id erwartet ArrayAdapter Adapter Schritt für Schritt Listing 6.2 Nutzung eines ArrayAdapter In diesem Kapitel werden wir unsere Daten in Arrays speichern, daher stellen wir in Listing 6.2 den ArrayAdapter vor. Listing 6.2 zeigt den Quellcode der ersten Version der Activity GeoKontakteAuflisten. public class GeoKontakteAuflisten extends ListActivity { private static final String[] NAMEN = new String[] { // (1) "Berthold Schmitz", "Chantal Schulze", "Bartolomäus Weissenbaum", "Jean-Paul Küppers" public void oncreate(bundle icicle) { super.oncreate(icicle); setcontentview(r.layout.geokontakte _ auflisten); // (2) zeigegeokontakte(); // (3) /** * Zeige die Liste der GeoKontakte an. */ private void zeigegeokontakte() { final ArrayAdapter<String> kontaktadapter = new ArrayAdapter<String>(this, android.r.layout.simple _ list _ item _ 1, NAMEN); // (4) setlistadapter(kontaktadapter); // (5) ListActivity Wenn eine Bildschirmseite hauptsächlich zur Darstellung einer Liste von Daten benötigt wird, sollte man eine android.app.listactivity als Basis verwenden. Diese erweitert die Funktionalität einer normalen Activity durch folgende Punkte: Layout serienmäßig Die ListActivity verfügt über eine implizite android.widget.listview als Wurzel ihrer Bildschirmseite. Eine eigene Layoutdefinition ist möglich, aber nicht notwendig.
5 6.3 AdapterViews und Adapter 115 Vordefinierte Callbacks Die Callback-Methoden zur Behandlung typischer Ereignisse für Listen (z.b. ein Datenelement wird ausgewählt) werden bereits von der Activity implementiert und können nach Bedarf überschrieben werden. Es müssen keine separaten Event- Handler deklariert werden. Hilfestellung für Listenzugriffe Jede ListActivity bietet Methoden, mit deren Hilfe Informationen über die aktuelle Listenposition des Anzeige-Cursors oder das aktuell ausgewählte Listenelement abgefragt werden können. Man sollte von dem vordefinierten Layout einer ListActivity nur in Implizites Layout Ausnahmefällen abweichen. Es sorgt dafür, dass die Listenelemente optimal angezeigt werden. Bei Bedarf wird eine vertikale Bildlaufleiste (Scollbar) automatisch ergänzt. Wir haben einige Namen fest im Programmcode in einem Array definiert (1). In der oncreate-methode wird die AdapterView ermittelt (2). Danach werden die anzuzeigenden Daten geladen (3). Schließlich Adapter sind das verbindet der Adapter die View mit den Daten und gibt noch den Ressourcenschlüssel des Layouts mit, das die einzelnen Array-Elemente for- Views und Daten. Bindeglied zwischen matiert (4). Android bringt einige vorgefertigte Layouts für einzelne Zeilen in Listendarstellungen mit (Tabelle 6-1). Durch einen Blick in die Klasse android.r.layout kann man sehen, welche es gibt. Bei Bedarf können auch eigene Layoutdefinitionen verwendet werden (s. Online- Dokumentation). android.r.layout. simple_list_item_1 simple_list_item_2 simple_list_item_checked simple_list_item_single_choice simple_list_item_multiple_choice Beschreibung Einelementige Liste Zweielementige Liste Liste mit Checkbox Liste mit Einfachauswahl Liste mit Mehrfachauswahl Tab. 6-1 Vorgefertigte Layouts für ListView Im letzten Schritt wird der Adapter an die AdapterView übergeben und die Daten werden auf der Oberfläche angezeigt (5). Anstelle des fest im Programmcode implementierten Arrays könnte man auch eine Array- Ressource laden und die Werte dort ablegen. Falls man statische Listen im Programm verwendet, empfiehlt sich dies schon aus Gründen der Mehrsprachigkeit. Array-Ressourcen als Alternative
6 116 6 Oberflächen und Daten SimpleCursorAdapter Cursor als Datenquelle Listing 6.3 Nutzung eines SimpleCursorAdapter Wenden wir uns nun komplexeren Datenquellen zu. Gehen wir davon aus, dass wir schon eine Datenbank mit den Geokontakten haben und eine Klasse GeoKontaktColumns, die die Spaltennamen der Tabellen definiert. Die Implementierung von GeoKontaktColumns und der Methode ladegeokontaktliste (1) erfolgt später in Kapitel 11 über Datenbanken. Zugriff auf die Ergebnismenge einer Datenbankanfrage erhält man über einen Cursor. Wir ändern die Methode zeigegeokontakte und bringen die Werte, die uns der Cursor liefert, mittels eines SimpleCursorAdapters zur Anzeige (siehe Listing 6.3). private static final String[] ANZEIGE _ KONTAKTE = new String[] { GeoKontaktColumns.NAME, GeoKontaktColumns.STICHWORT _ POS; private static final int[] SIMPLE _ LIST _ VIEW _ IDS = new int[] { android.r.id.text1, // (3) android.r.id.text2 ; private void zeigegeokontakte() { final Cursor mckontakt = mkontaktspeicher. // (1) ladegeokontaktliste(null); startmanagingcursor(mckontakt); final SimpleCursorAdapter kontaktadapter = new SimpleCursorAdapter(this, android.r.layout.simple _ list _ item _ 2, mckontakt, // (2) ANZEIGE _ KONTAKTE, SIMPLE _ LIST _ VIEW _ IDS); setlistadapter(kontaktadapter); Spaltennamen und Ressourcen-Ids angeben Für den SimpleCursorAdapter brauchen wir noch zwei Deklarationen, die wir der Activity hinzufügen. Dies sind zum einen die Spaltennamen der Ergebnismenge, die uns der Cursor liefert (ANZEIGE _ KONTAKTE). Das ist nötig, da die Ergebnismenge noch wesentlich mehr Spalten enthalten könnte und wir daher angeben müssen, welche Spalten zur Anzeige kommen sollen. Zum anderen sind dies die Ressourcen-Ids des Layouts, welches wir zur Anzeige einer Ergebniszeile in der ListView verwenden (SIMPLE _ LIST _ VIEW _ IDS). Wir verwenden ein simple _ list _ item _ 2-Layout (2), welches zwei TextViews enthält, die über die Ressourcen-Ids in SIMPLE _ LIST _ VIEW _ IDS referenziert werden können (3). Der Adapter erhält alle notwendigen Attribute: den Context, das Layout für die Darstellung, die Daten mittels des Cursors und die Be-
7 6.3 AdapterViews und Adapter 117 schreibung, welche Spalten in welcher View zur Anzeige kommen sollen. Falls die Datenmenge leer ist, wird die View standardmäßig ohne Werte angezeigt. Es ist jedoch möglich, mittels AdapterView:: setemptyview eine Referenz auf eine View zu übergeben, die in diesem Fall als Platzhalter angezeigt wird. Auf diese Weise ließe sich beispielsweise eine TextView mit einem Hinweis darstellen. Leere Datenmenge TextView hinweiskeinkontakt = new TextView(this); hinweiskeinkontakt.settext(r.string.kein _ kontakt _ vorhanden); getlistview().setemptyview(hinweiskeinkontakt); Auf Ereignisse reagieren Nun können wir Massendaten in Views anzeigen. Doch wie reagieren wir auf eine Auswahl aus einer Liste oder finden das aktuell markierte Element? Jede AdapterView erlaubt den Zugriff auf die Elemente seiner Datenmenge (getitematposition(int)). Die Methoden getselecteditem und getselecteditemposition liefern Informationen über das aktuell markierte Element der Datenmenge. Eine weitere Aufgabe einer AdapterView ist es, auf Nutzereingaben, die in ihren Anzeigebereich fallen, zu reagieren. Sie tut dies, indem sie je nach Aktion (Einfachklick, langer Klick etc.) des Nutzers ein Ereignis auslöst, auf das die Anwendung reagieren kann. Damit wären wir beim Thema des nächsten Abschnitts. Wo bin ich? Reaktion auf Interaktion Auf Spinnerauswahl reagieren Bei AdapterViews ist eine Auswahl durch Anklicken möglich. In einer Drop-Down-Box (Spinner) oder einer ListView kann der Anwender einen Eintrag auswählen. Auf solch ein Oberflächenereignis muss im Programmcode reagiert werden. Im letzten Kapitel haben wir uns mit den Methoden befasst, die nach einem Klick auf ein Element eines Kontext- oder Optionsmenüs aufgerufen werden, um auf das Ereignis zu reagieren. Diese Methoden bezeichnen wir als Callback-Methoden. Die AdapterViews besitzen eigene Event-Handler-Klassen zur Behandlung solcher Auswahlereignisse. Es handelt sich wie bei Views (siehe Tabelle 5-22 auf Seite 71) um Interfaces für Event-Handler (Listener), die im Programmcode implementiert werden müssen. Tabelle 6-2 zeigt die möglichen Handler zum Reagieren auf Auswahlereignisse. Implementieren wir zunächst den Event-Handler für den Spinner mit der Callback-Methode onitemselected für den Fall, dass ein Element im Spinner ausgewählt wurde (Listing 6.4). Abbildung 6-1 zeigt die Activity GeoKontakteAuflisten mit der Auswahl, die der Spinner zur Callbacks Listenauswahl behandeln
8 118 6 Oberflächen und Daten Abb. 6-1 Geokontakte sortieren Tab. 6-2 Einige Event-Handler der Android-API Event-Handler wird aktiviert, wenn... AdapterView.OnItemClickListener AdapterView.OnItemLongClickListener AdapterView.OnItemSelectedListener ein Datenelement kurz angeklickt wird ein Datenelement für längere Zeit angeklickt wird ein Datenelement ausgewählt wird Verfügung stellt. Mittels des Spinners kann man auswählen, ob die Geodaten nach Namen sortiert oder nach Änderungsdatum angezeigt werden sollen. Listing 6.4 Einen Listener für den Spinner implementieren private AdapterView.OnItemSelectedListener mspinneritemauswahllistener = new AdapterView.OnItemSelectedListener() public void onitemselected(adapterview<?> arg0, View arg1, int position, long id) { Cursor sortedcursor; switch (position) { // (1) case 0: sortedcursor = mkontaktspeicher. ladegeokontaktliste(sortierung.standard, null); break; case 1: sortedcursor = mkontaktspeicher.
9 6.3 AdapterViews und Adapter 119 ; ladegeokontaktliste(sortierung.name, null); break; default: sortedcursor = mkontaktspeicher. ladegeokontaktliste(null); final ListView view = getlistview(); // (2) final SimpleCursorAdapter cursoradapter = // (3) ((SimpleCursorAdapter) view.getadapter()); cursoradapter.changecursor(sortedcursor); // public void onnothingselected(adapterview<?> arg0) { Wir erschaffen uns ein Exemplar der Klasse AdapterView.OnItemSelected Listener und überschreiben die Methode onitemselected (Listing 6.4). Als Parameter erhalten wir die Position des gewählten Elements im Spinner. Anhand dieser Position starten wir die gewünschte Aktion (1) durch Verwendung einer Switch-Case-Anweisung. Die Methode ladegeokontaktliste lädt alle Geokontakte neu aus der Datenbank, jedoch mit der gewünschten Sortierung, wenn der Parameter gesetzt ist. Abschließend wird die ListView ermittelt (2) und aus dieser der SimpleCursorAdapter (3). Die ListView können wir einfacher über die Methode getlistview erhalten anstatt wie bisher über die Methode findviewbyid. Nach der Sortierung steht er am Beginn der sortierten Ergebnismenge. Durch Austausch des Cursors (4) wird die Liste mit den Namen der Geokontakte neu aufgebaut. Für den Moment können wir alle unbekannten Programmteile auskommentieren, damit die Anwendung lauffähig bleibt. Nun fügen wir mspinneritemauswahllistener noch dem Spinner hinzu. Dazu holen wir uns die AdapterView, also unseren Spinner, mittels der Ressourcenklasse R aus dem Layout und nutzen die Methode setonitemselectedlistener (siehe Tabelle 6-2). Zugriff auf ListViews ((Spinner) this.findviewbyid(r.id.sp _ sortierung)). setonitemselectedlistener( mspinneritemauswahllistener);
10 120 6 Oberflächen und Daten Auf Listenauswahl reagieren Nun haben wir gezeigt, wie man in der Activity auf die Auswahl in einem Spinner reagiert. Schauen wir uns nun an, wie wir auf die Auswahl eines Elements in der Liste der Geokontakte reagieren können. Listing 6.5 Einen Listener für die ListView protected void onlistitemclick(listview l, View v, int position, long id) { super.onlistitemclick(l, v, position, id); // ToDo: rufe Anzeige Geokontakt auf. // Stattdessen: final Toast hinweis = Toast.makeText(this, "Element " + ((TextView) v).gettext(), Toast.LENGTH _ LONG); hinweis.show(); Listener muss nicht implementiert werden. Kurznachricht: Toast Listing 6.5 zeigt den Vorteil der ListActivity. Sie besitzt die Methode onlistitemclick, welche wir überschreiben, um einen Geokontakt aufzurufen. Der Listener, der beim Spinner zusätzlich implementiert werden musste, wird von ListActivity intern implementiert und wir haben alle notwendigen Parameter in der Methode direkt zur Verfügung. Eigentlich würden wir hier mittels eines Intents eine Activity zur Anzeige und Bearbeitung eines Geokontakts aufrufen. Mit Intents befassen wir uns jedoch erst in Kapitel 7. Daher lassen wir uns den ausgewählten Namen durch einen android.widget.toast anzeigen. Toast sind kleine Meldungsfenster, die nach kurzer Zeit wieder verschwinden. 6.4 Performante Listen Langsame Standardvariante Sichtbare Verzögerung Wir haben oben den SimpleCursorAdapter kennengelernt, um eine Verbindung zwischen Datenquelle und View herzustellen. Die Standardimplementierung des SimpleCursorAdapter hat jedoch einen gravierenden Nachteil: Sie ist nicht performant. Wenn wir große Datenmengen haben, kommt dieser Nachteil zum Vorschein. Wenn wir eine lange Liste mit Einträgen anzeigen und uns in dieser schnell nach oben oder unten bewegen, so läuft diese Liste nicht gleichmäßig durch, sondern ruckelt zwischendurch. Android verwendet zwar für die View-Objekte, die die Listeneinträge repräsentieren, einen Cache, jedoch nicht für die Daten, die der Listeneintrag anzeigt. Beim ersten Durchlaufen der Liste werden die View-Objekte erzeugt und später wiederverwendet. Die Daten werden aber jedesmal
5.5 Schaltflächen und Menüs
68 5 Oberflächengestaltung Texte definieren Um die Verweise auf Ressourcen aufzulösen, definieren wir die Texte in der Datei /res/values/strings.xml. Dort legen wir die folgenden Einträge an:
Android User Interface
Android User Interface Eine Einführung Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 2 besprechen (inkl. Repetition)
Modellierung einer Android-App. 2. Mai 2013
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
Übungen zur Android Entwicklung
Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen
Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
Implementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
Objektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute
4. Software-Kompponenten in Android Broadcast Intents und Broadcast Receivers. Broadcast Intents
Broadcast Intents Broadcast Intents sind eine spezielle Art von Intents, die auf Betriebssystemebene (genauer: Application Framework) verschickt werden, nicht auf der Anwendungsebene Zweck: informieren
Unsere Webapplikation erweitern
Unsere Webapplikation erweitern Um mit Play zu arbeiten: 1. Starten Sie zunächst den MySQL-Server. Führen Sie dazu auf dem USB-Stick mysql_start.cmd aus. 2. Sie brauchen eine Windows-Kommandozeile: Starten
Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
Anregungen zu Übung 2
Anregungen zu Übung 2 Allgemeine Informatik II - SS 2007 Was sind Arrays und wie kann man sie verwenden? Ein Array ist ein spezieller Datentyp, der mehrere Werte zu einer Einheit zusammenfasst. Er ist
5 Oberflächengestaltung
D3kjd3Di38lk323nnm 49 5 Oberflächengestaltung Die Qualität der Programmoberfläche ist ein wichtiges Kriterium für die Akzeptanz durch den Anwender. Schon durch den geschickten Einsatz der bereitgestellten
Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
Algorithmen und Datenstrukturen 07
(7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik
EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ
EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,
Verkettete Datenstrukturen: Listen
Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).
Theorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
Google Android API. User Interface. Eine knappe Einführung
Google Android API User Interface Eine knappe Einführung Google Android API User Interface Designelement Wofür Klasse/Package View Basisklasse für alle Designelemente public class android.view.view Viewgroup
Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz
Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.
2. GUI-Programmierung für mobile Geräte
2. GUI-Programmierung für mobile Geräte Lernziele 2. GUI-Programmierung für mobile Geräte Themen/Lernziele: Einführung Lebenszyklus einer Android-Anwendung Beispiele GUI-Elemente Einbindung externer Ressourcen
Handbuch für die Erweiterbarkeit
Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6
ADT: Verkettete Listen
ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren
JTable. W. Lang HWR Berlin, SS
JTable W. Lang HWR Berlin, SS 2014 1 JTable Die Swing-Komponente JTable dient der Darstellung einer zweidimensionalen Tabelle Verwendung häufig im Zusammenhang mit Datenbankanwendungen Im Gegensatz zu
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
Mobile App Development. - Grafische Oberflächen -
Mobile App Development - Grafische Oberflächen - Inhalt Ressourcen Allgemeines Views Layouting Ressourcen Android Ressourcen Ressourcen sind Dateien und Objekte, wie Layouts, Bilder, Farben und IDs Zu
Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3
Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................
Inhaltsverzeichnis. Apps für Android entwickeln
Inhaltsverzeichnis zu Apps für Android entwickeln von Jan Tittel und Jochen Baumann ISBN (Buch): 978-3-446-43191-1 ISBN (E-Book): 978-3-446-43315-1 Weitere Informationen und Bestellungen unter http://www.hanser-fachbuch.de/978-3-446-43191-1
Wie ich lernte die API zu lieben. 19. März 2013. [email protected] 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell
Burp- Burp- Wie ich lernte die zu lieben 19. März 2013 [email protected] 08142-4425 037 sic[!]sec GmbH Industriestraße 29-31 82194 Gröbenzell Burp- Was erwartet uns? Das erwartet euch Theorie:
(3) Button-Klick & Texteingabe
Nachdem ihr jetzt Buttons und ein Eingabefeld hinzugefügt habt, wollt ihr sie sicherlich auch benutzen können und festlegen, was bei einem Klick oder Eintrag passieren soll! Dazu taucht ihr nun in die
Überschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
Cocktail-Rezepte-APP
Application Name: Cocktails Company Domain: gsog.de Empty Activity Main Activity: FindCocktailActivity Layout: activity_find_cocktail Was ist neu??
Einstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
Fragen zur OOP in Java
- 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
Wiederholung. Klassenhierarchie:
Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse
12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
Einführung in Android
Einführung in Android FH Gießen Friedberg 12. Oktober 2010 Inhalt Historie / Prognosen / Trends Grundlagen Entwicklungsumgebung Standardbeispiel Erweitertes Beispiel Übung / Quellen 2 Grundlagen - Historie
Javakurs für Anfänger
Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:
Software Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer
Java Einführung Klassendefinitionen
Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse
Vorkurs Informatik WiSe 15/16
Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann
2. GUI-Programmierung für mobile Geräte
2. GUI-Programmierung für mobile Geräte Lernziele 2. GUI-Programmierung für mobile Geräte Themen/Lernziele: Einführung Lebenszyklus einer Android-Anwendung Beispiele GUI-Elemente Einbindung externer Ressourcen
Javakurs für Anfänger
Javakurs für Anfänger Einheit 04: Variablenzugriff und Eingaben Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Zugriff auf Instanzvariablen Praktisches Beispiel: Student
Programmiertechnik Klassenvariablen & Instantiierung
Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen
Programmierung Nachklausurtutorium
Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel
Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik
Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen
Android 2. Grundlagen und Programmierung. dpunkt.verlag. Arno Becker Marcus Pant. 2., aktualisierte und erweiterte Auflage
Arno Becker Marcus Pant Android 2 Grundlagen und Programmierung 2., aktualisierte und erweiterte Auflage Unter Mitarbeit von David Müller dpunkt.verlag IX I Inhaltsverzeichnis I Einführung 1 1 Ein erstes
1. Im Hauptmenü wechseln Sie in den Punkt Liste. 2. Im Seitenbaum klicken Sie in den Menüpunkt, wo das Formular eingefügt werden soll.
1. Im Hauptmenü wechseln Sie in den Punkt Liste. 2. Im Seitenbaum klicken Sie in den Menüpunkt, wo das Formular eingefügt werden soll. (ich habe hier als Beispiel den Punkt Angestellte benutzt) 3. In der
Präsentation Interfaces
Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.
Android: Navigation Drawer
Prof. Dr. Carsten Vogt,, Feb. 2015 Carsten Vogt,, 2015. Android: Navigation Drawer Prof. Dr. Carsten Vogt Prof. Dr. Carsten Vogt,, Feb. 2015 Carsten Vogt,, 2015. Android: Navigation Drawer 1.) Aussehen
Computeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) ArrayList 0 1 2 Obj0 Obj1 size() - 1 15.12.2014 CuP - VO 2 Auer 1 ArrayList import java.util.arraylist; ArrayList buchliste; buchliste = new ArrayList();
Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache
Klausur Software-Entwicklung März 01
Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,
Einführung in die Android App-Entwicklung. Patrick Treyer und Jannis Pinter
Einführung in die Android App-Entwicklung Patrick Treyer und Jannis Pinter Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung
Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler
Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Intents Activities werden von Objekten der Klasse android.content.intent gestartet Unterscheidung in explizite und implizite
Klausur Grundlagen der Programmierung
Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel
Handbuch ky2help Version 4. Grundlagen und Administration. Version 1.7 KYBERNA AG T F
Handbuch ky2help Version 4 Grundlagen und Administration Version 1.7 KYBERNA AG T +423-238 22 22. F +423-238 22 21 Fürst-Franz-Josef-Str.5. FL-9490 Vaduz [email protected]. www.kyberna.com 2 Grundlagen
EPROG 2.Teilprüfung. Aufgabe 1:
EPROG 2.Teilprüfung Dauer 50min. Keine Unterlagen erlaubt. Loginname ist q (also x.b. q0697801). Passwort ist Ihre Matrikelnummer. Speichern Sie Ihre Lösungen in den dafür vorgesehenen
Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält
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,
Android 2. Grundlagen und Programmierung. von Marcus Pant, Arno Becker. 2., aktualisierte und erweiterte Auflage
Android 2 Grundlagen und Programmierung von Marcus Pant, Arno Becker 2., aktualisierte und erweiterte Auflage Android 2 Pant / Becker schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG
Dokumentation: Content App Framework
Dokumentation: Content App Framework Andreas Breuninger, medialesson GmbH Januar 2013 Inhaltsverzeichnis 1. DataService... 3 1.1. Laden/Parsen der Daten... 3 1.1.1. GetDataset() -> GetDataAsync() ->
1 Abstrakte Klassen, finale Klassen und Interfaces
1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
Trainingsmanagement Gutschein Management. Beschreibung
Trainingsmanagement Beschreibung www.dastm.de [email protected] 1. Einführung... 2 2. Gutschein Funktionen... 3 2.1. Gutschein Menü... 3 2.2. Gutscheine anlegen... 4 Gutschein Kassenwirksam erfassen... 6 Gutschein
Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus
Vererbung Generalisierung und Spezialisierung Vererbung und Polymorphismus Wir wollen in unserem Aquarium verschiedene Arten von Fischen schwimmen lassen. In einem ersten Ansatz definieren wir nicht nur
Das Interface-Konzept am Beispiel der Sprache Java
Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse
Javakurs für Anfänger
Javakurs für Anfänger Einheit 08: Mehr zu Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Wiederholung Heutige Agenda Verwendung der ArrayList 2. Teil: Weitere Aspekte der OO
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
Sichtbarkeiten, Klassenmember und -methoden
Sichtbarkeiten, Klassenmember und -methoden Prof. Dr.-Ing. Thomas Schwotzer 11. November 2017 1 Einführung Wir haben uns mit Klassen und Objekten beschäftigt. Wir wissen nun, dass Objekte anhand von Klassen
Benutzeroberflächen. Java Teil 4
Benutzeroberflächen Java Teil 4 Einleitung Eine grafische Benutzeroberfläche (Graphical User Interface) ermöglicht dem Benutzer die Interaktion mit dem Computer über grafische Symbole. Die GUI haben in
Programmieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware
Objektorientierte Programmierung. Kapitel 14: Interfaces
14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/
DAS EINSTEIGERSEMINAR
DAS EINSTEIGERSEMINAR Microsoft Office Excel 2010 Gudrun Rehn-Göstenmeier LERNEN ÜBEN ANWENDEN Teil I: Lernen L1 Dateiorganisation Bevor wir uns mit den Excel-spezifischen Befehlen und Funktionen befassen
Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
Aufgabe 1 (Programmanalyse):
Prof. aa C. Bischof, Ph.D. M. Brockschmidt, F. Emmes, M. Lülfesmann, J. Willkomm Aufgabe 1 (Programmanalyse): (18 Punkte) Gegeben sei das folgende Java-Programm. Dieses Programm gibt sechs Zeilen Text
Sprachkonstrukte Verzweigungen und Array-Strukturen
Sprachkonstrukte Verzweigungen und Array-Strukturen Dr. Beatrice Amrhein Überblick Verzweigungen o if/else o switch/case Array-Strukturen o Vektoren und Matrizen 2 Verzweigungen 3 Verzweigungen: if/else
Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler
Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 SQLite als Datenbank-Managementsystem (DBMS) wenige 100 KB schlanke Programmbibliothek Aktuelle Version: 3.8.1 Für die
