2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services. Service
|
|
- Roland Zimmermann
- vor 8 Jahren
- Abrufe
Transkript
1 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Service Services sind Teil des Komponentenmodells von Android. Sie kapseln Programmlogik, die unabhängig von einer Benutzerschnittstelle ausgeführt werden kann. Sie haben ihr eigenes Lebenszyklusmodell und werden anders behandelt als Activities. Sie können Schnittstellen für den Zugriff durch andere Komponenten anbieten. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 54
2 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Vorteile von Services automatischer Restart höhere Priorität als nicht sichtbare Activities Priorität kann heraufgesetzt werden auf die sichtbarer Activities Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 55
3 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Arten von Services Local Service Service, der im Prozess der Anwendung läuft, die ihn gestartet hat. Remote Service Ein Service der in einem eigenen Prozess läuft. Vorteil: Stabilität Nachteil: Erhöhte Kommunikationskosten, Interprozesskommunikation (IPC) notwendig, typischerweise in Form von Remote Procedure Calls (RPC) Wir betrachten zunächst nur Local Services. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 56
4 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Deklaration von Services im Manifest (1) Service muss als Komponente im Manifest deklariert werden, auf gleicher Ebene wie Activities. Für Local Services genügt die Angabe des Namens der Klasse, die den Service implementiert. <service android:name=".meintollerservice"/> Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 57
5 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Deklaration von Services im Manifest (2) Für einen Remote Service muss man zusätzlich einen Prozessnamen angeben: <service android:name=".meintollerservice" android:process=":meinserviceprozess"/> Prozessname beginnt mit Großbuchstabe: Nur die startende Anwendung kann der Service verwenden, Service läuft unter der User-ID der startenden Anwendung Prozessname beginnt mit Kleinbuchstabe: Jede Anwendung kann auf Service zugreifen Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 58
6 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Services und Threads Ein Service sorgt nicht automatisch für Parallelität, seine Lebenszyklusmethoden laufen im Main Thread Konsequenz: auch für langlaufende Teile im Service benötigen wir Threads. Service hat höhere Priorität, wird nach Möglichkeit nicht unterbrochen und wenn doch u.u. wieder automatisch gestartet. Threads dagegen hängen am Prozess und sterben mit dem Prozess. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 59
7 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Szenario 1: Services als Dienstleistung ohne Kommunikation Operationen: Starten und Stoppen des Service Der Service arbeitet autonom im Hintergrund. Ansonsten keine Kommunikation mit dem Service notwendig Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 60
8 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Die Klasse Service Zur Implementierung eines Service müssen wir von der Klasse android.app.service ableiten. Die wichtige Methoden in diesem Szenario: public void oncreate () Wird aufgerufen, wenn der Service (nicht das repräsentierende Objekt) erzeugt wird. public int onstartcommand (Intent intent, int flags, int startid) seit Android 2.0: Wird jedesmal aufgerufen, eine andere Komponente den Service starten will. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 61
9 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services intent: Der Intent, der den Start auslöste, kann zusätzliche Daten beinhalten flags: Flags, die vom Laufzeitsystem gesetzt werden und genauer über den Start informieren startid: Eine ID, die vom Laufzeitsystem vergeben wird. Der Rückgabewert informiert das Laufzeitsystem über die Betriebsart des Service. public void onstart (Intent intent, int startid) vor Android 2.0 public abstract IBinder onbind (Intent intent) In diesem Szenario ohne Bedeutung, muss als abstrakte Methoden aber implementiert werden. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 62
10 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services public void ondestroy () Wird aufgerufen, wenn der Service beendet wird, weil z.b. alle Klienten den Service nicht mehr benötigen stopself() Damit der Service sich selbst anhalten kann. Alle on...-methoden werden implizit durch die Laufzeitumgebung aufgerufen, kein expliziter Aufruf! Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 63
11 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Betriebsart Konstanten für die Rückgabe in onstartcommand(): START STICKY: Für Services, die explizit gestartet und gestoppt werden sollen. Automatischer Restart nach Unterbrechung durch das Laufzeitsystem START NOT STICKY: Für Services, die sich nach ausgeführter Arbeit selbst beenden (stopself()). Kein automatischer Restart durch das Laufzeitsystem START REDELIVER INTENT: Für Services, bei denen garantiert werden soll, dass sie ihre Arbeit beenden können Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 64
12 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Automatischer Restart bei Unterbrechung vor Aufruf von stopself() Flags: START FLAG REDELIVER: Unterbrechung durch das Laufzeitsystem bevor stopself() aufgerufen wurde Intent wird wieder mit übergeben START FLAG RETRY: Unterbrechung durch das Laufzeitsystem bei der Betriebsart START STICKY, Intent wird nicht mit übergeben Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 65
13 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 1: Lebenszyklus oncreate(): Wird beim Erzeugen des Service aufgerufen und sollte für Initialisierungen verwendet werden. onstartcommand(): Wenn eine Komponente den Service startet, mehrfacher Aufruf möglich ondestroy(): Wird aufgerufen, wenn der Service beendet wird. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 66
14 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 1: Starten und Stoppen Hierfür stehen Methoden im Context zur Verfügung, Beispiel Activity: public abstract ComponentName startservice (Intent service) vgl. startactivity(), Startet einen Service mit Hilfe eines Intents (explizit oder implizit) Liefert null, wenn der Service nicht gestartet werden konnte. public abstract boolean stopservice (Intent service) Hält den Service an, auch wenn noch andere Komponenten den Service benutzen. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 67
15 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 1: Beispiel Beispiel 2.1. Schreiben in Log alle 5 Sekunden Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 68
16 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 2: Service mit Callback an andere Komponente Wenn im Service ein Ereignis eintritt, über das die Klienten informiert werden sollen, kann man einen Broadcast Intent verschicken. Broadcast Intents sind auch selbstdefinierbar und können mit zusätzlichen Daten versehen werden. Für die Behandlung eines Intents, müssen wir einen Broadcast Receiver implementieren, hier typischerweise einen dynamischen Broadcast Receiver. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 69
17 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Wiederholung: Dynamischer Broadcast Receiver siehe Mobile Informationsysteme I Hier aber: Verschicken der Broadcast Intents auf Anwendungsebene Definition eigener Broadcast Intents Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 70
18 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 2: Anwendungsstruktur In der Service-Klasse wird eine öffentliche String-Konstante als Intent- Bezeichner definiert. In der Service-Routine der Service-Klasse wird ein Broadcast Intent versendet. In der Client-Klasse wird ein Broadcast Receiver (als innere Klasse) definiert und es wird eine Instanz dieser Klasse erzeugt. In der Client-Klasse wird der Broadcast Receiver registriert. Hierbei wird der öffentliche Intent-Bezeichner aus der Service-Klasse verwendet. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 71
19 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Wir starten und stoppen den Service wie bisher üblich. Die gewünschten Reaktion auf eintreffende Broadcast Intents definieren wir in onreceive() des Broadcast Receivers. Da der Broadcast Receiver in der Activity liegt und im Main-Thread läuft, können wir von onreceive() aus die GUI-Elemente manipulieren. Die Methode onreceive() definiert den Lebenszyklus eines Broadcast Receivers. Hier dürfen natürlich auch keine langdauernden Berechnungen stattfinden. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 72
20 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 2: Beispiel Beispiel 2.2. Schreiben in Log alle 5 Sekunden; zusätzlich wird ein Broadcast Intent mit einem Zählerwert versendet, der in einer View angezeigt wird. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 73
21 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Service mit erweiterter Schnittstelle Ein Service bietet zusätzliche Methoden an, über die sich die Klienten über den Zustand des Service informieren können oder weitere Dienstleistungen des Service nutzen können. Die zusätzlichen Methoden und Dienstleistungen können mit Hilfe eines sogenannten Binders genutzt werden. Auswirkungen auf den Lebenszyklus: Methode onbind() des Service ist vernüftig zu implementieren, Rückgabe einer IBinder-Instanz. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 74
22 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Binder Eine Binder-Instanz stellt zusätzliche Methoden für den (eventuellen remote) Zugriff auf einen Service bereit. Klasse Binder im Paket android.os Schnittstelle IBinder im Paket android.os Binder implementiert IBinder. Typisches Vorgehen: Innerhalb der Service-Klasse wird eine öffentliche Binder-Klasse abgeleitet von Binder definiert. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 75
23 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Weiterhin wird in der Service-Klasse eine Instanz der Binder-Klasse angelegt und gespeichert, z.b. in einer privaten Klassenvariablen. Die Methode onbind() liefert dann die Binder-Instanz als Ergebnis. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 76
24 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Lebenszyklus Services mit Binder haben einen anderen Lebenszyklus: oncreate(): Wie in Szenario 1 onbind(): Wird aufgerufen, wenn sich eine Methode mit dem Service verbunden hat und liefert typischerweise die Binder-Instanz als Ergebnis. onunbind(): Wird aufgerufen, wenn alle Komponenten die Verbindung mit dem Service beendet haben. Wird in der Regel nicht überschrieben. ondestroy(): Wie in Szenario 1 Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 77
25 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Anders als in Szenario 1 kann hier ein Service erst dann angehalten werden, wenn keine Komponente mehr eine Verbindung zum Service hat. Auch ein stopservice() hält in diesem Fall den Service nicht an. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 78
26 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Verbinden und Trennen Verbinden und Trennen statt Starten und Stoppen Verbinden: Mit Hilfe der Methode public boolean bindservice (Intent service, ServiceConnection conn, int flags) Verbinden (und evtl. Erzeugen) mit Hilfe eines Intents Zur Verwaltung der Verbindung wird ein Objekt verwendet, das ServiceConnection implementiert. Automatisches Starten mit Hilfe des Flags Context.BIND AUTO CREATE Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 79
27 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Trennen: Mit Hilfe der Methode public abstract void unbindservice (ServiceConnection conn) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 80
28 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: ServiceConnection Schnittstelle im Paket android.component; enthält zwei Methoden: public void onserviceconnected (ComponentName name, IBinder service) Aufruf erfolgt als Folge von bindservice(); service ist hier die Binder-Instanz, die der Service in onbind() als Ergebnis lieferte. typischerweise erfolgt Downcast auf konkreten Typ (öffentliche innere Klasse des Service) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 81
29 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services public void onservicedisconnected (ComponentName name) wenn die Verbindung zum Service beendet wurde, z.b. durch ein unbindservice() Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 82
30 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Anwendungsstruktur Schnittstelle für die Methoden definieren, die der Service (via Binder) anbieten soll in Service-Klasse: öffentliche innere Binder Klasse, die die Schnittstelle implementiert in Service-Klasse: Binder-Instanz wird einmalig angelegt und gespeichert in Service-Klasse: onbind() liefert Binder-Instanz in Klient-Klasse: Implementierung von ServiceConnection Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 83
31 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services in Klient-Klasse: Instanziierung einer ServiceConnection in Klient-Klasse: Aufruf von bindservice() und unbindservice() in Implementierung von ServiceConnection: Downcast von IBinder auf öffentlichen Binder-Typ, Speicherung des Binders in Klient-Klasse: Zugriff auf die Dienste des Service über das Binder- Objekt Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 84
32 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Beispiel Beispiel 2.3. Service mit folgenden Diensten: int generaterandomint() neue Zufallszahl wird generiert int getlastrandomint() liefert die zuletzt erzeugte Zufallszahl void setrange(int low, int high) Intervall für die Generierung Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 85
33 Remote Services bisher: Alle Services waren lokal, liefen im gleichen Prozess wie die nutzenden Komponenten. jetzt: Services in eigenem Prozess. Damit betreten wir den Bereich der verteilten Systeme. insbesondere: Interprozesskommunikation (IPC) für Datenaustausch mit Service notwendig, aber auch eine Reihe weiterer allgemeiner Techniken verteilter Systeme: IDL, RPC, Marshalling, Asynchronität Android bietet kein Remote Method Invocation (RMI) an! Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 86
34 IDL Interface Definition Language, also Schnittstellenbeschreibungssprache beschreibt remote angebotene Dienste, reine Spezifikationssprache Definition u.a. von: Methoden mit Ein- und Ausgabeverhalten Datenstrukturen Asynchronität eigene Syntax, eigene Datentypen, aber angelehnt an Implementierungssprachen Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 87
35 IDL-Compiler zur automatischen Erzeugung von Quelltexten für Hilfsklassen oder -prozeduren, z.b. sogenannte Stub-Klassen Beispiel für C (Sprache) und RPC (Verteilte Umgebung): rpcgen Bindung an unterschiedliche Sprachen möglich, z.b. bei CORBA Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 88
36 AIDL AIDL steht für Android Interface Definition Language Dateiendung:.aidl automatische Generierung von Java Klassen mit weiteren inneren Klassen für den remote Aufruf von Diensten eines Service und der Übertragung der Parameterdaten und des Ergebnisses (Marshalling) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 89
37 Marshalling Bezeichnet das Umwandeln von einfachen oder strukturierten Daten in ein Format, das die Übermittlung der Daten an andere Prozesse ermöglicht. Auf der Empfängerseite werden die Daten wieder in ihre originäre Form gebracht (Unmarshalling). Problem: Sender und Empfängerseite nutzen u.u. unterschiedliche Repräsentationsformate. Ursachen: unterschiedliche Rechnerarchitekturen, unterschiedliche Sprachstandards Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 90
38 Dies muss von den entsprechenden IDL-Compilern berücksichtigt werden. Basis hierzu sind neutrale Datenrepräsentationsformate. Beispiel C in Verbindung mit rpcgen: External Data Representation (XDR) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 91
39 Stub Als Stub bezeichnet man Quelltext, der für anderen Quelltext, typischerweise auf einem anderen Rechner oder Speicherbereich steht. vgl. Entwurfsmuster Proxy Beispiel: Eine Methode, die in einem anderen Prozess verfügbar ist, wird lokal durch einen Stub zur Verfügung gestellt. Der Stub übernimmt Marshalling der Methodenparameter, Kommunikation mit dem anderen Prozess und Unmarshalling des Ergebnisses. Der Stub-Quelltext für den Client wird dabei automatisch vom IDL- Compiler erzeugt und kann i.d.r. direkt so genutzt werden. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 92
40 Die meisten IDL-Compiler erzeugen auch einen sogenannten Server-Stub. Dies ist ein Quelltext-Rahmen, in den der Entwickler nur noch die Implementierung des eigentlichen Server-Dienstes einsetzen muss. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 93
41 AIDL in der Praxis Anlegen einer Textdatei mit der Endung.aidl im src-verzeichnis In der ersten Zeile muss das zugehörige Package deklariert werden. Diese Package-Deklaration wird in den generierten Quelltext übernommen. Im allereinfachsten Fall sieht die AIDL-Definition wie eine übliche Schnittstellendefinition aus. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 94
42 Beispiel: package mobis2.beispiel24; interface IRandomService { int generaterandomint(); int getlastrandomint(); void setrange(int low, int high); } Der im SDK enthaltene AIDL-Compiler erzeugt daraus automatisch im gen-verseichnis eine Datei IRandomService.java. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 95
43 Was enthält der generierte Quelltext? In IRandomService.java werden definiert: Die Schnittstelle IRandomService, mit den drei definierten Methoden, erweitert um eine Exception-Deklaration. Die öffentliche abstrakte innere Klasse IRandomService.Stub, abgeleitet von Binder, mit den abstrakten Methoden aus IRandomService. Der Typ IRandomService.Stub wird später im Service genutzt, um die konkrete Binder-Klasse zu implementieren, dient also als Rahmen für die Serviceimplementierung. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 96
44 Die private innere Klasse IRandomService.Stub.Proxy, implementiert (konkret) IRandomService, führt dazu Marshalling, Kommunikation mit Service und Unmarshalling aus. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 97
45 Serviceimplementierung Wir definieren zum Typ IRandomService.Stub eine konkrete Instanz, z.b. in Form einer anonymen Klassendefinition. Hierbei müssen wir die Methoden des Service implementieren. Die wichtigste Methode ist jetzt onbind(). Dort geben wir einfach unsere IRandomService.Stub als Ergebnis zurück. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 98
46 Manifest Service muss im Manifest deklariert werden. Verwendung des Attributs android:process, um einen eigenen Prozess für den Service zu erzwingen. Definition eines Intent-Filters zwingend erforderlich, da kein expliziter Aufruf möglich. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 99
47 Servicenutzung Prinzipiell wie bei einem lokal Service mit Verbindung (Szenario 3), mit den folgenden Änderungen: Wir definieren eine private Variable vom Typ IRandomService. In der Methode onserviceconnected(): Statt eines Downcasts nutzen wir die Methode asinterface() der Klasse IRandomService.Stub. Diese Methode liefert (für uns verdeckt) auf der Client Seite eine Instanz der Proxy-Klasse IRandomService.Stub.Proxy. Diese implementiert aber IRandomService. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 100
48 Beispiel:... private IRandomService service;... public void onserviceconnected(componentname name, IBinder binder) { service = IRandomService.Stub.asInterface(binder); } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 101
49 Jetzt können wir an anderer Stelle mit Hilfe des Proxy-Objektes service die Methoden des Remote Service aufrufen, fast so, als wären es lokale Methoden: int value; try { value = service.generaterandomint(); } catch (RemoteException e) {... } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 102
50 Szenario 4: Remote Service mit Verbindung und einfachen Daten (Zusammenfassung) 1. AIDL-Schnittstelle deklarieren, 2. Serviceklasse implementieren, dabei Stub-Klasse um Methoden aus AIDL- Schnittstelle erweitern, 3. Service in Manifest eintragen, 4. Service mit bindservice() starten und in onserviceconnected() auf Schnittstelle (Proxy-Objekt) des Service zugreifen und 5. Methoden der AIDL-Schnittstelle über das Proxy-Objekt aufrufen. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 103
51 Szenario 4: Beispiel Beispiel 2.4. Dienste wie bei Szenario 3, diesmal aber als Remote Service in eigenem Prozess. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 104
52 Datentypen für Remote Services (1) Als Parameter- oder Ergebnistyp dürfen nur die folgenden Datentypen verwendet werden: einfache Datentypen String und CharSequence List und Map AIDL-generierte Schnittstellen Klassen, die Parcelable implementieren Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 105
53 Datentypen für Remote Services (2) Listen können eine Typinstanziierung enthalten, z.b. List<String>; sie werden als ArrayList übertragen. Für Maps ist nur der Raw-Type erlaubt(?). Sie werden als HashMap übertragen. Elemente von Kollektionstypen müssen wiederum ein übertragbarer Typ sein. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 106
54 Parcelable Schnittstelle, die eine Serialisierung eines Objektes für die Datenübertragung ermöglicht sprachneutrale Serialisierung, deshalb keine Verwendung von Serializable Implementierung muss sich um Ablage in und Wiederherstellung aus einer Instanz der Klasse Parcel kümmern. Instanzen der Klasse Parcel enthalten die serialisierten Objekte. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 107
55 Implementierung von Parcelable Eine Klasse T muss zur Implementierung von Parcelable folgendes aufweisen: public static final Parcelable.Creator<T> CREATOR Öffentliche finale Klassenvariable, die ein Objekt referenziert, das Parcelable.Creator implementiert. Dieses Objekt wird für die Wiederherstellung einer Instanz der Klasse T aus einem Parcel benötigt. public void writetoparcel(parcel dest, int flags) Methode zur Ablage einer Instanz von T in einem Parcel. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 108
56 Wenn flag den Wert PARCELABLE WRITE RETURN VALUE hat, dann wird die Methode genutzt, um einen Rückgabewert im Parcel abzulegen, ansonsten == 0. public int describecontents() Bit-Maske um anzuzeigen, dass der Inhalt des Parcels besonders behandelt werden muss. Bisher ist hierfür nur CONTENTS FILE DESCRIPTOR definiert, üblicher Rückgabewert == 0. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 109
57 Schnittstelle Parcelable.Creator generische Schnittstelle public T createfromparcel (Parcel source) Wiederherstellung einer Instanz der Klasse T aus einem Parcel. public T[] newarray (int size) Liefert ein Feld der Länge size mit T als Komponententyp. Notwendig für Typsicherheit, da in Java keine Felderzeugung mit einem generischen Typ möglich ist. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 110
58 Die Klasse Parcel Bytecontainer Schreibmethoden: writexxx(value) für verschiedene Datentypen Schreiben von Feldern, Listen und Maps möglich Lesemethoden: readxxx() für verschiedene Datentypen Felderm Listen Maps müssen voher erzeugt werden und werden durch das Lesen nur gefüllt, Beispiel: public final void readintarray (int[] val) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 111
59 Beispielimplementierung Beispiel 2.5. Eine Klasse für Punkte im IR 2, die Parcelable implementiert: public class Point2D implements Parcelable { private double x; private double y; public Point2D(double x, double y) { this.x = x; this.y = y; } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 112
60 private Point2D(Parcel in) { this.x = in.readdouble(); this.y = in.readdouble(); } public static final Parcelable.Creator<Point2D> CREATOR = new Parcela public Point2D createfromparcel(parcel in) { return new Point2D(in); } }; public Point2D[] newarray(int size) { return new Point2D[size]; } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 113
61 public void writetoparcel(parcel out, int flags) { out.writedouble(x); out.writedouble(y); } } public int describecontents() { return 0; } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 114
62 Parcelable und AIDL Neben der Implementierung ist eine AIDL-Definition erforderlich. Für das Beispiel: In Datei Point2D.aidl: package mobis2.beispiel25; parcelable Point2D; Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 115
63 Modifier für Parameterübergabe Bei der Paramterdefinition innerhalb von AIDL können folgende Modifier verwendet werden: in: Nur für die Übergabe an den Remote-Prozess, Änderungen werden nicht an den aufrufenden Prozess übertragen. out: Nur für das Ergebnis, eine Übertragung an den Remote-Prozess ist nicht notwendig inout: Sowohl Übertragung an den Remote-Prozess, als auch zurück an den aufrufenden Prozess Die Modifier werden nicht für einfache Datentypen verwendet! Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 116
64 Asynchrone Methodenaufrufe Die Aufrufe der Methoden eines Remote-Service sind, wenn nicht anders definiert, stets synchron, d.h. der rufende Thread wird blockiert, bis die Antwort vom Service eintritt. Problem: mögliches ANR bei Aufrufen aus dem Main-Thread heraus Lösung: asynchrone Methodenaufrufe: der aufrufende Thread wartet nicht bis das Ergebnis eintrifft. für AIDL: Kennzeichnung von asynchronen Methoden durch oneway: oneway void myasynchronousmethod(int para); Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 117
65 Ergebnisübermittlung bei asynchronen Methoden einfacher Ansatz: Broadcast Receiver im Client, Versand eines Broadcast Intent im Remote Service andere Möglchkeit: dedizierte Callback-Objekte verwenden Callback-Objekte werden vom Client an den Remote Service geschickt und im Remote-Service registriert. Die Callback-Objekte bieten wiederum eine Methode an, um ein Ergebnis vom Remote Service an den Client zu schicken. Hierzu erforderlich: Definition zweier Remote-Interfaces Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 118
66 Übersicht: Asynchrone Methoden Wir definieren in AIDL ein Interface IServiceCallBack mit einer Methode docallback(in T value). Dabei ist T der Ergebnistyp, falls erforderlich muss die entsprechende Klasse Parcelable implementieren. Die AIDL-Definition des Remote Service IRemoteService enthält: Eine asynchrone Methode oneway void myasynchronousmethod(int para), eine Methode um Callbacks zu registrieren: void registercallback(iservicecallback callback) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 119
67 und eine Methode um Callbacks abzumelden: void unregistercallback(iservicecallback callback) Zur Implementierung der Methoden registercallback() und unregistercallback() nutzt der Binder des Remote Service eine Instanz der Klasse android.os.remotecallbacklist. Nach Beendigung der Berechnung in der asynchronen Methode werden die in der RemoteCallbackList gespeicherten Callbacks genutzt, um die Antworten an die Clients zu schicken. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 120
68 Quelltextskizze Remote Service public class RemoteService extends Service {... private RemoteCallbackList<IServiceCallback> callbacks = new RemoteCa... private IRemoteService.stub binder = new IRemoteService.Stub() { public void registercallback(iservicecallback callback) throws Re callbacks.register(callback); } public void unregistercallback(iservicecallback callback) throws callbacks.unregister(callback); } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 121
69 public void myasynchronousmethod(int para) { T resultdata;... // langandauernde Berechnung f"ur resultdata } } int ncb = callbacks.beginbroadcast(); for (int i=0; i<ncb ; i++) { try { callbacks.getbroadcastitem(i).docallback(resultdata); } catch (Remote Exception e) {... } } callbacks.finishbroadcast(); Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 122
70 }... // oncreate(), onbind(), etc. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 123
71 Quelltextskizze Client public class ClientActivity extends Activity { private IRemoteService service;... private IServiceCallback callback = new IServiceCallback.Stub() { public void docallback(t value) {... // value verarbeiten und in value enthaltene Werte z.b. a } }... private ServiceConnection connection = new ServiceConnection() { public void onserviceconnected(componentname name, IBinder binder Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 124
72 } service = IRemoteService.Stub.asInterface(binder); try { service.registercallback(callback); } catch (RemoteException e) {... } } public void onservicedisconnected(componentname name) { try { service.unregistercallback(callback); } catch (RemoteException e) {... } }... // oncreate() mit Aufruf von bindservice(), etc. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 125
73 } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 126
Szenario 3: Service mit erweiterter Schnittstelle
2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Service mit erweiterter Schnittstelle Ein Service bietet zusätzliche Methoden an, über die sich
Mehr2. Hintergrundverarbeitung in Android: Services und Notifications
2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht: In Mobis 1: Threads; hier genauerer Blick auf Services
MehrMobile Informationssysteme II
Mobile Informationssysteme II Peter Becker Hochschule Bonn-Rhein-Sieg Fachbereich Informatik peter.becker@h-brs.de Vorlesung Wintersemester 2010/11 Allgemeines zur Vorlesung Vorbemerkungen Homepage zur
MehrAndroid Processes & Services
Android Processes & Services Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 4 besprechen (inkl. Repetition)
MehrKapitel 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
MehrB Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion
1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2)
MehrMobile App Development - Multitasking -
Mobile App Development - Multitasking - Inhalt Threading Services Service Lifecycle Gestartete Services Gebundene Services Threading Threading Standard Java Threads Thread Runnable volatile & synchronized
Mehr4. 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
MehrEinführung: Verteilte Systeme - Remote Method Invocation -
Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation
MehrProzesse und Threads in Android
Prozesse und Threads in Android Jede gestartete Applikation ist eigener Prozess und läuft in eigener Dalvik VM Prozess startet User-Interface-Thread (UI-Thread), der für die sichtbaren Bestandteile der
MehrSystemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007
Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung
MehrEinstieg in die Informatik mit Java
1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung
MehrRemote Method Invocation
Remote Method Invocation spezielle Technik aus dem Java-Umfeld Ausführung der Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VM s Aufruf
Mehr7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc.
7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc.html) bietet leider nur begrenzte Verteilungsabstraktion Unterstützung
Mehr7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
MehrWeitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax
Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste
MehrRemote Method Invocation
Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf
MehrJava-Programmierung. Remote Method Invocation - RMI
Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig
MehrNeben 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
MehrEinstieg in die Informatik mit Java
1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren
MehrProgrammieren 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
Mehr1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI
1 Motivation Motivation ierte Objektmodel Standard Middleware für objektorientierte Anwendungen CORBA,.NET-Remoting Java Remote Method Invocation (RMI) Java RMI ierte Objekte undjava RMI Zusammenfassung
MehrObjektorientierte Programmierung und Klassen
Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP
MehrEinstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Mehr1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
MehrVererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1
MehrVererbung, Polymorphie
Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08
MehrThemen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
MehrEinstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
MehrGeschachtelte Klassen
Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte
MehrTheorie 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
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
MehrDas 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
MehrTag 7 Repetitorium Informatik (Java)
Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
MehrRemote Methode Invocation (RMI) ETIS SS05
Remote Methode Invocation (RMI) ETIS SS05 Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung Gliederung 2 Motivation I RMI: Remote Method Invokation Möglichkeit verteilte Java-Anwendungen
MehrJava RMI Remote Method Invocation
Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert
MehrInnere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
Mehr1. Abstrakte Klassen
1. Abstrakte Klassen Lernziele 1. Abstrakte Klassen Lernziele: Das Konzept abstrakter Klassen und abstrakter Methoden kennen und verstehen, in der Lage sein, abstrakte Klassen und Methoden in Java zu formulieren,
MehrKapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
MehrJohannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Weiterführende Spracheigenschaften
JAVA Weiterführende Spracheigenschaften 100 AGENDA Strings Exceptions Enums Generics Lambdas & Methods Bulk-Operations 101 DIE KLASSE STRING Zeichenketten werden in Java als String repräsentiert Wie der
MehrFaulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen
Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List
MehrProgrammierung 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
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
MehrLösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am
Aufgabe 1 Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am 16.3.2002 Folgende Implementierung löst die gestellte Aufgabe : public interface Figur { public void anzeigen (); public
MehrProgrammieren 2 Java Überblick
Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10
MehrB Java RMI B.1 B.2. 1 Java. 1.1 Objekte. Objektorientierte Sprache
B Java RMI B.1 1 Java 1.1 Objekte Objektorientierte Sprache Objekte beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. Objektreferenzen Verweise auf Objekte keine Zeiger,
MehrKomponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1
Komponenten 1 2. Die Anfänge 3 Peter Sturm, Universität Trier 1 Selbstzufrieden Anwendung Hardware 4 Oh? Da gibt es noch jemanden? Anwendung Anwendung TCP/IP Hardware Hardware 5 Peter Sturm, Universität
MehrProf. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen
Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen
MehrPraktikum Verteilte Anwendungen
Technische Informatik (Info II) -Sommersemester 2006 - Folie 1 / 27 0 Gliederung 1.) Kurze Wiederholung/ Einleitung 2.) RPC/ RMI 3.) Praktisches Beispiel 4.) Aufgabenblatt Folie 2 / 27 Wiederholung/ Einleitung
MehrBeispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung
Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]
MehrEinstieg in die Informatik mit Java
1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung
MehrProgrammieren 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
Mehr3. Klassen Statische Komponenten einer Klasse. Klassenvariablen
Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.
MehrProgrammieren II. Remote Method Invocation (RMI) Heusch -- Ratz. Institut für Angewandte Informatik
Programmieren II Remote Method Invocation (RMI) Heusch -- Ratz KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Remote Method
MehrJavakurs 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,
MehrKapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik
Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen
Mehr4. Vererbung Die Klasse Object. Die Klasse Object
4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige
MehrInstitut 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
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen
MehrInstitut 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
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrJavakurs 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
MehrAbstrakte Klassen, Interface. DVG Abstrakte Klassen, Interface
Abstrakte Klassen, Interface Beispiel: Vögel Definition von Klassen enthält Abstraktion von den konkreten Objekten. Z.B.: Klasse: Vogel Kann ein Objekt der Klasse Vogel instanziiert werden? Nein, es gibt
MehrObjektorientierte Programmierung
Objektorientierte Programmierung WS 2006/2007 Klassen und Vererbung in Java Walter Binder Universität Lugano 2006-11-23 Objektorientierte Programmierung 1 Überblick Konstruktoren Verdecken versus Überschreiben
Mehr1 Einleitung Generizität Syntax... 2
Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 1 1.1 Generizität................................ 1 1.2 Syntax.................................. 2 2 Realisierung 2 2.1 Compilierung generischer Klassen...................
MehrTag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)
MehrKonzepte von Betriebssystem-Komponenten Middleware RMI
Konzepte von Betriebssystem-Komponenten Middleware RMI Mario Kiefer 21. Januar 2005 1 Einführung RMI (Remote Method Invocation) ermöglicht es mit relativ einfachen Mitteln verteilte Anwendungen zu erstellen.
MehrDr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
MehrImplementieren 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
MehrÜberblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen
Überblick Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Stubs & Skeletons Aufgabe 2 Tutorial: http://download.oracle.com/javase/tutorial/reflect/index.html
MehrÜberblick. Beispiel: get()-methodenaufruf am VSBoard aus Übungsaufgabe 1. Analyse einer Methode: java.lang.reflect.method
Überblick Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Stubs & Skeletons Aufgabe 2 Tutorial: http://docs.oracle.com/javase/tutorial/reflect/index.html
MehrDurch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei
Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object
MehrRealisierungsmöglichkeiten für parametrische Polymorphie
4. Parametrisierbare Klassen Realisierung von Generics Realisierungsmöglichkeiten für parametrische Polymorphie heterogen Für jeden konkreten Typ wird individueller Code erzeugt (type expansion). Diesen
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Klassenattribute und -methoden Bieniusa Software Entwicklung 1 2/ 23 Beispiel: Klassenattribute I class Uebungsgruppe
MehrPrä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.
Mehr12 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,
MehrKlassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:
Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit
MehrII.4.4 Exceptions - 1 -
n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen
MehrInfo B VL 14: Java Collections/Reflections
Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections
MehrObjektorientierte 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
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
MehrVorkurs 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
MehrVerteilte Systeme. Verteilte Objektorientierte Systeme I. Prof. Dr. Oliver Haase
Verteilte Systeme Verteilte Objektorientierte Systeme I Prof. Dr. Oliver Haase 1 Überblick Verteilte Objektorientierte Systeme 1 RPC verteilte objektorientierte Architekturen Java RMI Verteilte Objektorientierte
MehrIUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only
IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES 2016 Software AG. All rights reserved. For internal use only DIGITAL BUSINESS APPLICATIONS DRIVE THE DIGITAL BUSINESS Partner Lieferanten Kunden SaaS
MehrInternetanwendungstechnik (Übung)
Internetanwendungstechnik (Übung) JacORB S. Bissell, G. Mühl Technische Universität Berlin Fakultät IV Elektrotechnik und Informatik Kommunikations- und Betriebssysteme (KBS) Einsteinufer 17, Sekr. EN6,
MehrBeispiel: die Klasse Brüche
Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II -138 Beispiel: die Klasse Brüche class Fraction { int num; Int denom; // numerator // denominator Fraction (int n, int d) { num =
MehrSilke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...
Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch
MehrErste Java-Programme (Java Wiederholung & Vererbung)
Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Java Wiederholung & ) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/
MehrJavakurs 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:
Mehr