Mobile App Development - Multitasking -
|
|
- Ulrike Kerner
- vor 8 Jahren
- Abrufe
Transkript
1 Mobile App Development - Multitasking -
2 Inhalt Threading Services Service Lifecycle Gestartete Services Gebundene Services
3 Threading
4 Threading Standard Java Threads Thread Runnable volatile & synchronized
5 Threading Was ist Threading?
6 Threading Was ist Threading? Threading ist die quasi-parallele Ausführung von Programm-Code Ein Thread ist ein Faden / Ausführungsstrang
7 Threading Wie wird Threading in Java bewerkstelligt?
8 Threading Wie wird Threading in Java bewerkstelligt? Zentrale Java-Objekte zum Threading sind die Klasse Thread und das Interface Runnable
9 Threading Wie wird Threading in Java bewerkstelligt? public class MyThread extends Thread public void run() {!! /* Ausführung der Operationen */! Verwendung public void usemythread() {! MyThread thread = new MyThread();! thread.start();
10 Threading Was ist das Runnable Interface
11 Threading Was ist das Runnable Interface Runnable schreibt die Methode run() vor Runnables werden an Threads übergeben, die diese ausführen
12 Threading Runnable verwenden! public void usemythread() {!! Thread thread = new Thread(new Runnable() public void run() {!!!! /* Ausführung der Operationen */!!!!! );!! thread.start();!
13 Threading Was bedeutet das volatile-schlüsselwort?
14 Threading Was bedeutet das volatile-schlüsselwort? greifen mehrere Thread auf eine Variable zu, kann es durch Zwischenspeichern zu Inkonsistenzen kommen volatile Variablen werden zwischen allen Threads synchron gehalten
15 Threading Wofür wird das synchronized Schlüsselwort verwendet?
16 Threading synchronized synchronisiert den Zugriff auf... gemeinsam genutzte Resourcen... gemeinsame Methoden public class Test {! public static List list;!! public synchronized void dosomeaction1() {!! /* irgendeine Berechnung */!! public void dosomeaction2() {!! Object obj = list.get(0);!! synchronized (list) {!!! list = new ArrayList();!!!
17 Threading in Android
18 Threading Ausführung langer Operationen public class MainActivity extends Activity public void oncreate(bundle savedinstancestate) {!! super.oncreate(savedinstancestate);!! setcontentview(r.layout.activity_main);!!! dosomework()!!! private void dosomework() {!! /*!! * lang andauernde Berechnungen!! */!! String text = "result.of.my.operation";!! TextView txt = (TextView) findviewbyid(r.id.textview);!! txt.settext(text);!
19 Threading Werden lang andauernde Operationen auf dem MainThread ausgeführt, entstehen zwei Probleme: MainThread wird blockiert Application Not Responding (ANR), wenn es zu lange dauert Aulagerung der Operationen in Threads
20 Threading Auslagerung lang andauernder Operationen public class MainActivity extends Activity {! private void externalizesomthing() {!! final TextView txt = (TextView) findviewbyid(r.id.textview);!! // Auslagerung in einen Thread!! Thread thread = new Thread(new Runnable() public void run() {!!!! // lang andauernde Operationen!!!! txt.settext("new text");!!!!! );!! thread.start();!
21 Threading Auslagerung lang andauernder Operationen public class MainActivity extends Activity {! private void externalizesomthing() {!! final TextView txt = (TextView) findviewbyid(r.id.textview);!! // Auslagerung in einen Thread!! Thread thread = new Thread(new Runnable() public void run() {!!!! // lang andauernde Operationen!!!! txt.settext("new text");!!!!! );!! thread.start();! Problem???
22 Threading UI Manipulationen dürfen nur auf dem MainThread durchgeführt werden! Android bietet verschiedene Möglichkeiten View.post(Runnable) AsyncTask
23 Threading Jede View besitzt eine post-methode, der ein Runnable-Objekt üergeben werden kann, das auf dem MainThread ausgeführt wird
24 Threading Modifikation von UI-Elementen public class MainActivity extends Activity {! private void externalizesomthing() {!! final TextView txt = (TextView) findviewbyid(r.id.textview);!! Thread thread = new Thread(new Runnable() public void run() {!!!! // lang andauernde Operationen!!!! txt.post(new Runnable() public void run() {!!!!!! txt.settext("new text");!!!!!!!!! );!!!!! );!! thread.start();!
25 Threading AyncTask ermöglicht die Ausführung von Hintergrundoperationen bietet Zugriff auf den MainThread enthält Methoden um die Hintergrundausführung zu steuern
26 Threading AyncTask Methode execute() - wird aufgerufen, um die AsyncTask zu starten onpreexecute() - wird vor der Ausführung auf dem MainThread aufgerufen
27 Threading AyncTask Methode doinbackground() - enthält die eigentliche Hintergrundarbeit und wird in seperatem Thread ausgeführt publishprogress() - wird in doinbackground verwendet, um den aktuellen Fortschritt zu veröffentlichen onprogressupdate()
28 Threading AyncTask Methode onprogressupdate() - wird als Folge von publishprogress aufgerufen onpostexecute() - wird auf dem MainThread aufgerufen nachdem doinbackground fertig ist cancel() - wird zum Abbruch der Task verwendet
29 Threading AyncTask - Methoden-Parameter Params - Typ der execute() Parameter Progress - Typ für den Progress Result - Typ des Rückgabewerts von doinbackground()
30 Threading AyncTask - Beispiel private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {! protected void onpreexecute() { setupprogressbar(); protected Long doinbackground(url... urls) { int count = urls.length; long totalsize = 0; for (int i = 0; i < count; i++) { totalsize += Downloader.downloadFile(urls[i]); publishprogress((int) ((i / (float) count) * 100)); if (iscancelled()) break; return totalsize; protected void onprogressupdate(integer... progress) { setprogresspercent(progress[0]); protected void onpostexecute(long result) { showdialog("downloaded " + result + " bytes");
31 Threading AyncTask - starten und stoppen private void startdownloadtask() throws Exception {! // --- starten ---! DownloadFilesTask task = new DownloadFilesTask(); task.execute(new URL(!!! " // --- stoppen ---! task.cancel(true);
32 Threading AyncTask - Regeln AsyncTask muss auf dem MainThread erstellt werden execute() muss von MainThread aufgerufen werden onpreexecute(), onpostexecute() nicht manuell aufrufen Task kann nur einmal ausgeführt werden
33 Services
34 Services Services sind Anwendungsbausteine, die zur Ausführung von Hintergrundoperationen verwendet werden haben kein eigenes UI Start nicht nur bei bestimmten Ereignissen
35 Services Verwendung von Services Senden von großen s Musik-Streaming Downloads
36 Services Android unterscheidet zwei Arten Gestartet Services Gebunden Services
37 Services Gestartete Services werden von einer anderen Komponente mit startservice() gestartet können beliebig lange laufen laufen weiter, wenn die startende Komponente zerstört wird Beendung durch stopservice() oder stopself()
38 Services Gebundene Services werden durch bindservice() mit anderen Komponenten verbunden bieten eine Kommunikationsschnittstelle läuft nur solange mindestens eine andere Komponente verbunden ist
39 Services Services können sowohl gestartet als auch gebunden sein, um beliebig lange zu laufen und eine Kommunikationsschnittstelle zur Verfügung zu stellen
40 Services Ein Service läuft im Main Thread der Anwendung Längere Operationen sollten daher immer in einen eigenen Thread ausgelagert werden
41 Services Manifesteintrag Genauso wie Activities müssen Services im Android manifest deklariert werden Informationen Name Erreichbarkeit von außen Filter
42 Services Manifesteintrag <manifest xmlns:android=" package="de.htwds.emrolab.mada.services" android:versioncode="1" android:versionname="1.0" > <application > <service android:name=".testservice" android:enabled="true" android:exported="false" > <intent-filter > <action android:name="my.service.action"/> </intent-filter> </service> </application> </manifest>
43 Service Lifecycle
44 Service Lifecycle
45 Service Lifecycle onstart() / onstartcommand() wird immer aufgerufen, wenn ein Service durch startservice() gestartet wird sobald onstartcommand() ausgeführt ist, ist der Service gestartet Service muss explizit gestoppt werden
46 Service Lifecycle onbind() wird aufgerufen, wenn sich eine andere Komponente mit bindservice() verbindet gibt eine Kommunikationsschnittstelle in Form eines IBinders zurück muss immer implementiert werden
47 Service Lifecycle oncreate() wird aufgerufen, wenn der Service das erste mal erzeugt wird wird nicht aufgerufen, wenn der Service bereits läuft Verwendung für initiales Setup
48 Service Lifecycle onunbind() wird aufgerufen, wenn kein Client mehr mit dem Service verbunden ist Verwendung für Aufräumarbeiten
49 Service Lifecycle ondestroy() wird aufgerufen, wenn der Service gestoppt wird oder nicht mehr gebunden ist Verwendung für Aufräumarbeiten
50 Gestartete Services
51 Gestartete Services Implementierung public class TestService extends Service public void oncreate() { // initiales public int onstartcommand(intent intent, int flags, int startid) {!! return public IBinder onbind(intent intent) { // default Impl.!! return public void ondestroy() { // Aufräumarbeiten!
52 Gestartete Services onstartcommand / onstart Parameter intent: Intent, mit dem der Service gestartetet wurde, kann bei Neustart null sein flags: gibt an, wie der Service gestartet wurde (siehe return)
53 Gestartete Services onstartcommand / onstart Parameter startid: fortlaufende ID für die Start requests return Wert: legt fest wie der Service nach Beendung behandelt werden soll START_NOT_STICKY START_STICKY START_REDELIVER_INTENT
54 Gestartete Services Service starten public class MainActivity extends Activity {... /* Methode zum Starten eines Service */ private void startmyservice() {! /* Intent erstellen, der den aktuellen Context und! * den zu startenden Service erhält */! Intent intent = new Intent(this, MyService.class);!! /* Der Service wird analog zu Activities gestartet */! startservice(intent);
55 Gestartete Services Service stoppen public class MainActivity extends Activity {... /* Methode zum Starten eines Service */ private void stopmyservice() {! /* Intent erstellen, der den aktuellen Context und! * den zu stoppenden Service erhält */! Intent intent = new Intent(this, MyService.class);! /* Stoppen des Services */! stopservice(intent);
56 Gestartete Services Service stoppen public class MyService extends Service {! private Thread mythread;!! public IBinder onbind(intent intent) { return null;!!! public int onstartcommand(intent intent, int flags, int startid) {!! if (mythread == null) {!!! mythread = new MyThread();!!! mythread.start();!!!! return START_STICKY;!!!! private class MyThread extends Thread {!! public void run() {!!! /* lange andauernde Operationen ausführen */!!! stopself(); /* Service stoppen */!!!
57 Gestartete Services Nachteile onbind() muss üebrschrieben werden eigener Thread muss erstellt werden Multithreading Probleme durch gleichzeitige Service Requests
58 Gestartete Services Alternative: IntentService erstellt automatisch einen Worker thread keine Multithreading Probleme Service wird automatisch gestoppt, wenn alle Requests abgearbeitet sind Standard-Implementierung von onbind()
59 Gestartete Services Implementierung /* Intent services werden von IntentService abgeleitet */ public class MyIntentService extends IntentService {! public MyIntentService() {!! /* Super Konstruktor wird der Name für den worker!! * thread übergeben */!! protected void onhandleintent(intent intent) {!! for (int i = 0; i < 100; i++) {!!! //... download file i...!!!
60 Gebundene Services
61 Gebundene Services Gebundene Services stellen eine Kommunikaitonsschnittstelle zur Verfügung Bei der Implementierung wird unterschieden zwischen Services für lokale und remote Benutzung
62 Gebundene Services Implementierung /* gebundene Services leiten ebenfalls von Service ab */ public class MyService extends Service public void oncreate() {!! /* initiales Setup public IBinder onbind(intent intent) {!! return public void ondestroy() {!! /* Aufräumarbeiten */!!
63 Gebundene Services Lokale Implementierung Service stellt über onbind() eine Implementierung von IBinder zur Verfügung Binder Objekt enthält Methoden zum Zugriff auf den Service oder Binder gibt Service Referenz mit öffentlichen Methoden zurück
64 Gebundene Services public class MyService extends Service {! /* der LocalBinder */! private final IBinder mbinder = new LocalBinder();!! /* Binder implementieren, der die Service Instanz zurück gibt*/! public class LocalBinder extends Binder {!! /* gibt eine Referenz auf den Service zurück */!! public MyService getservice() {!!! return MyService.this;!!!!! /* Liefert die Referenz auf den LocalBinder zurück */! public IBinder onbind(intent intent) {!! return mbinder;!! /* Service Methode */! public double getrandomnumber() {!! return Math.random();!
65 Gebundene Services mit dem Service verbinden public class MainActivity extends Activity {! private MyService myservice; // Service Referenz! private boolean mbound = false; // gibt an, ob Service verbunden ist!! /* Enthält callbacks für die Service Verbindung */! private ServiceConnection mconn = new ServiceConnection() {!! /* Wird aufgerufen, wenn der Service verbunden ist public void onserviceconnected(componentname name, IBinder service) {!!! LocalBinder binder = (LocalBinder) service;!!! myservice = binder.getservice();!!! mbound = true;!!!! /* Wird aufgerufen, wenn der Service nicht mehr verbunden ist public void onservicedisconnected(componentname name) {!!! mbound = false;!!! ;
66 Gebundene Services public class MainActivity extends Activity {! private MyService myservice; // Service Referenz! private boolean mbound = false; // gibt an, ob Service verbunden ist!! private ServiceConnection mconn = new ServiceConnection() {!! public void onserviceconnected(componentname name, IBinder service) {!!! LocalBinder binder = (LocalBinder) service;!!! myservice = binder.getservice();!!! mbound = true;!!!! public void onservicedisconnected(componentname name) {!!! mbound = false;!!! ;! public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); /* Intent erstellen, um mit dem Service zu verbinden */! Intent intent = new Intent(this, MyService.class); /* mit dem Service verbinden */ bindservice(intent, mconn, Context.BIND_AUTO_CREATE);
67 Gebundene Services den Service verwenden public class MainActivity extends Activity {! private MyService myservice; // Service Referenz! private boolean mbound = false; // gibt an, ob Service verbunden ist!! private ServiceConnection mconn = new ServiceConnection() {!! /* callbacks für Service connect implementieren */! ;! public void oncreate(bundle savedinstancestate) {!! /* mittels bindservice() mit dem Service verbinden */!! /* Methode zur Benutzung des Service */! private void usemyservice() {! if (mbound) {!! double number = myservice.getrandomnumber();!! /* das Ergebnis verwenden... */!!
68 Gebundene Services Service Verbindung schließen public class MainActivity extends Activity {! private MyService myservice; // Service Referenz! private boolean mbound = false; // gibt an, ob Service verbunden ist!! private ServiceConnection mconn = new ServiceConnection() {!! /* callbacks für Service connect implementieren */! ;! public void oncreate(bundle savedinstancestate) {!! /* mittels bindservice() mit dem Service verbinden */!! private void usemyservice() {!! /* den Service verwenden... */!!! protected void ondestroy() {! super.ondestroy();! /* Service Verbindung trennen */! unbindservice(mconn);!
69 Gebundene Services Alternativ können die Schnittstellen über den LocalBinder bereitgestellt werden In diesem Fall wird nicht die Service Referenz zurück gegeben, sondern über Methoden des Binders Methoden der Services angesteuert
70 Gebundene Services public class MyService extends Service {! private final IBinder mbinder = new LocalBinder();!! /* Binder als Schnittstelle zum Service */! public class LocalBinder extends Binder {!! public double getarandomnumber() {!!! return getrandomnumber();!!!! public double getanotherrandomnumber() {!!! return getrandomnumber();!!!!! /* Liefert die Referenz auf den LocalBinder zurück */! public IBinder onbind(intent intent) {!! return mbinder;!! /* Service Methode */! public double getrandomnumber() {!! return Math.random();!
71 Gebundene Services Die Kommunikation mittels LocalBinder kann nur innerhalb des gleichen Prozesses verwendet werden! Für Remote Prozess Kommunikation werden Messenger oder AIDL verwendet
72 Gebundene Services Messenger Kommunikation Service erhält Messenger Objekt an das Nachrichten gesendet werden können Messenger erhält einen Handler, der die Nachrichten behandelt onbind() gibt das Binder-Objekt des Messengers zurück
73 Gebundene Services Messenger Kommunikation public class MessengerService extends Service {! public static final int MSG_SAY_HELLO = 0;! private Messenger messenger = new Messenger(myHandler);!! private Handler myhandler = new Handler() {!! public void handlemessage(message msg) {!!! if (msg.what == MSG_SAY_HELLO) {!!!! sayhello();!!!!! ;! public IBinder onbind(intent intent) { return messenger.getbinder(); private void sayhello() {! Toast.makeText(this, "Hello!", Toast.LENGTH_SHORT).show();
74 Gebundene Services Messenger Kommunikation public class MessengerActivity extends Activity {! private boolean mbound = false; private Messenger servicemessenger = null; private ServiceConnection mconn = new ServiceConnection() {!! public void onservicedisconnected(componentname name) {!!! mbound = false;!!! servicemessenger = null;!!!! public void onserviceconnected(componentname name, IBinder service) {!!! servicemessenger = new Messenger(service);!!! mbound= true;!! ;! public void oncreate(bundle savedinstancestate) { /* bindservice() wie beim LocalBinder */ protected void ondestroy() { /* unbindservice() wie beim LocalBinder */
75 Gebundene Services Messenger Kommunikation public class MessengerActivity extends Activity {! private boolean mbound = false; private Messenger servicemessenger = null; private ServiceConnection mconn = new ServiceConnection() { /* Impl */ ; private void sayhello() {! if (mbound) {!! try {!!! Message message = Message.obtain( null, MessengerService.MSG_SAY_HELLO);!!!! servicemessenger.send(message);!!! catch (RemoteException e) {!!!! /* Handle exception */!!!!! /* Implementierung von oncreate und ondestroy */
76 Gebundene Services Auf Nachrichten antworten Soll die gesendete Nachricht vom Service beantwortet werden, muss der Nachricht ein eigener Messenger mitgegeben werden, an den die Antwort gesendet wird
77 Gebundene Services Auf Nachrichten antworten public class MessengerActivity extends Activity {! /* Erstellen eines eigenen Messengers, der die Antworten behandelt */! private Messenger mymessenger = new Messenger(new Handler() {!! public void handlemessage(message msg) {!!! if (msg.what == MessengerService.MSG_RAND_REPLY) {!!!! Log.d("my.tag", "value: " + msg.getdata().getdouble("rand"));!!!!! ;! ); public void getrand(view view) {! if (mbound) {!! try {!!! Message message = Message.obtain();!!! message.replyto = mymessenger; /* Messenger setzen */!!! message.what = MessengerService.MSG_RAND;!!!! servicemessenger.send(message);!!! catch (RemoteException e) { /* Handle exception */!
78 Gebundene Services Auf Nachrichten antworten public class MessengerService extends Service {! public static final int MSG_RAND = 0;! public static final int MSG_RAND_REPLY = 1;!! private Handler myhandler = new Handler() {!! public void handlemessage(message msg) {!!! if (msg.what == MSG_RAND) {!!!! try {!!!!! Message reply = Message.obtain();!!!!! Bundle bundle = new Bundle();!!!!! bundle.putdouble("rand", Math.random());!!!!! reply.setdata(bundle);!!!!! reply.what = MSG_RAND_REPLY;!!!!! msg.replyto.send(reply);!!!! catch (RemoteException e) { /* Handle exception */!!!!! ;! ;
79 Gestartet & Gebunden
80 Gestartet & Gebunden Services können gestartet und gebunden sein Das Starten, Binden, Stoppen und Schließen der Verbindung erfolgt wie bei gestarteten und gebundenen Services Auch die Verwendung des Service erfolgt analog
81 Gestartet & Gebunden Implementierung public class StartedBoundService extends Service {! public void oncreate() {!! public int onstartcommand(intent intent, int flags, int startid) {!! new Thread(new Runnable() public void run() {!!!! // do some work!!!! stopself();!!!!!, "my.thread.name").start();!! return START_STICKY;!! public void ondestroy() {!
82 Gestartet & Gebunden Implementierung public class StartedBoundService extends Service {! public class LocalBinder extends Binder {!! public StartedBoundService getservice() {!!! return StartedBoundService.this;!!!! private LocalBinder binder = new LocalBinder();! public IBinder onbind(intent intent) {!! return binder;!! public boolean onunbind(intent intent) {!! return true;!! public int onstartcommand(intent intent, int f, int sid) {...! public void oncreate() {...! public void ondestroy() {...
83 Gestartet & Gebunden public class StartedBoundActivity extends Activity { private StartedBoundService myservice; private boolean mbound = false;! private ServiceConnection mconn = new ServiceConnection() { public void onserviceconnected(componentname name, IBinder service) {!!! LocalBinder binder = (LocalBinder) service;!!! myservice = binder.getservice(); mbound = true; public void onservicedisconnected(componentname name) { mbound = false; ;! public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); Intent intent = new Intent(this, StartedBoundService.class); startservice(intent); bindservice(intent, mconn, Context.BIND_AUTO_CREATE); protected void ondestroy() {! super.ondestroy();! stopservice(new Intent(this, StartedBoundService.class));! unbindservice(mconn);
84 Gestartet & Gebunden Wann wird der Service gestoppt? Bei stopself() oder unbind()?
85 Gestartet & Gebunden Wann wird der Service gestoppt? Ist kein Client mehr verbunden, wird bei stopself()/stopservice() gestoppt Ist noch mindestens ein Client verbunden, wird der Service bei stopself()/stopservice() noch nicht gestoppt, erst bei unbind()
86 AIDL
87 AIDL Android Interface Definition Language dient der Definition von Schnittstellen zur Interprozesskommunikation Methodenaufrufe aus anderen Prozessen vergleichbar mit Java RMI, RPC
88 AIDL Erzeugen einer.aidl-datei enthält Schnittstellen, die von außen erreichbar sind vergleichbar mit einem Java Interface wird im src-verzeichnis angelegt
89 AIDL Erzeugen einer.aidl-datei src/de/htwds/emrolab/mada/aidltest/itest.aidl /* package in dem die AIDL Datei angelegt wurde */ package de.htwds.emrolab.mada.aidltest; /* Beispiel Service interface */ interface ITest {! /* gibt einen zufälligen Integer aus der Range zurück */! int getrandomint(int range);
90 AIDL Aus der.aidl-datei wird nach dem Speichern ein gleichnamiges Java Interface im gen-ordner erzeugt Interface enthält abstrakte Stub-Implementierung der Interfaces
91 AIDL den Stub implementieren public class TestImpl extends ITest.Stub {! private Random random = new public int getrandomint(int range) throws RemoteException {!! return random.nextint(range);!!
92 AIDL Veröffentlichung der Schnittstelle Das Interface wird den externen Prozessen über einen Service zur Verfügung gestellt Da die Stub-Klasse von Binder ableitet, kann die Stub-Implementierung direkt in onbind() im Service zurückgegeben werden
93 Gestartet & Gebunden Datentypen Unterstützte Datentypen primitive Datentype (int, double,...) String, CharSequence, List, Map Für alle anderen Datentypen müssen imports geschrieben werden
94 AIDL Service Implementierung public class TestService extends Service {! public class TestImpl extends ITest.Stub public int getrandomint(int range) throws RemoteException {!!! return random.nextint(range);!!!!! private ITest.Stub mbinder = new TestImpl();! private Random random = new public IBinder onbind(intent intent) { return mbinder; /* oncreate(), ondestroy(), onunbind(),... */
95 AIDL Der Service muss im Manifest eingetragen werden <manifest xmlns:android=" package="de.htwds.emrolab.mada.aidltest" android:versioncode="1" android:versionname="1.0" > <application > <service android:name=".testservice" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="de.htwds.emrolab.mada.aidlservice"/> </intent-filter> </service> </application> </manifest>
96 AIDL Den AIDL Service verwenden Nun kann der Service über das AIDL Interface aus anderen Apps genutzt werden Die andere App muss eine Kopie der AIDL-Datei erhalten, um auf die Schnittstellen zugreifen zu können
97 AIDL Den AIDL Service verwenden In der benutzenden App wird eine Kopie der AIDL Datei abgelegt Package beachten! ServiceConnection wie gehabt
98 AIDL Den AIDL Service verwenden public class AidlTestUserActivity extends Activity {! private ITest mtestservice;! private boolean mbound = false;! private ServiceConnection mconn = new ServiceConnection() {!!!! public void onservicedisconnected(componentname name) {!!! mbound = false;!!! mtestservice = null;!!!!!! public void onserviceconnected(componentname name, IBinder service) {!!! mtestservice = ITest.Stub.asInterface(service);!!! mbound = true;!!! ;
99 AIDL Den AIDL Service verwenden public class AidlTestUserActivity extends Activity {! private ITest mtestservice;! private boolean mbound = false;! private ServiceConnection mconn = new ServiceConnection() {... ; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_aidl_test_user); /* Hier wird Name aus dem Manifest action Attribut eingetragen */ Intent intent = new Intent("de.htwds.emrolab.mada.aidlService"); bindservice(intent, mconn, BIND_AUTO_CREATE); protected void ondestroy() {! unbindservice(mconn);! super.ondestroy();
100 AIDL Den AIDL Service verwenden public class AidlTestUserActivity extends Activity {! private ITest mtestservice;! private boolean mbound = false;! private ServiceConnection mconn = new ServiceConnection() {... ; public void oncreate(bundle savedinstancestate) {... protected void ondestroy() {... private void useservice() {! /* Service Schnittstelle benutzen */! try {!!! mtestservice.getrandomint(10);!! catch (RemoteException e) {!!! /* Handle exception */!!
101 Zusammenfassung
102 Zusammenfassung Gestartete Services Gebundene Services in App extern Gestartete und gebundene Services AIDL
103 Literatur I. Sven Haiges: Android Schnelleinstieg entwickler.press, 2011 II. Thomas Künneth: Android 3 - Apps entwickeln mit dem Android SDK Galileo Press, 2011 III. IV.
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
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)
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
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
Mehr14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt
14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...
MehrEinfü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
MehrÜ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
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
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
MehrMobile App Development. - Alarm -
Mobile App Development - Alarm - Inhalt Alarme AlarmManger Wake locks 2 Alarm Alarm Oft ist es notwendig eine App zu starten, auch wenn der Benutzer nicht mit ihr interagiert Starten von Activities zu
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
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrDer lokale und verteilte Fall
Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
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,
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
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
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrDatenmanagement in Android-Apps. 16. Mai 2013
Datenmanagement in Android-Apps 16. Mai 2013 Überblick Strukturierung von datenorientierten Android-Apps Schichtenarchitektur Möglichkeiten der Datenhaltung: in Dateien, die auf der SDCard liegen in einer
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrRemote Method Invocation
Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem
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
MehrSichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben
Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrSoftware Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015
Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrEinführung in die Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
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
Mehr2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services. Service
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
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrÜberleben im Funkloch
Überleben im Funkloch Offlinefähige Apps für Android entwickeln Christian Janz (@c_janz ) christian.janz@bridging-it.de Christian Janz Consultant im Bereich Softwareentwicklung Java/JEE bei Bridging IT
MehrAnleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)
Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite
Mehri n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging
Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
MehrÜbung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrSynchronisation in Java. Invisible Web
Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections
MehrAccounts und Kontakte in Android
Accounts und Kontakte in Android Die letzten Wochen habe ich daran gearbeitet, die Kontakte der AddressTable von Leonardo und mir ins Android Adressbuch zu bringen. Dazu habe ich die AddressManagement-Applikation
Mehr2.2 Prozesse in Java
2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrProblemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrJavakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrÜbung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
MehrApplet Firewall und Freigabe der Objekte
Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrInhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
MehrDOKUMENTATION VOGELZUCHT 2015 PLUS
DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP
MehrVerteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
MehrProgrammieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen
Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrBeispiel droidremoteppt
Arthur Zaczek Nov 2014 1 Beispiel droidremoteppt 1.1 Beschreibung Powerpoint soll mit ein Android Handy über Bluetooth gesteuert werden Folien wechseln (Vor/Zurück) Folien am Handy darstellen Am Handy
MehrKommunikations-Parameter
KNX App knxpresso für Android Tablets/Phones Kommunikations-Parameter Ausgabe Dokumentation: Mai. 2015 Doku Version V1.0.0 - Seite 1/8 Inhaltsverzeichnis 1.1 Nützliche Links... 3 1.2 Beschreibung der Kommunikations-Datei...
MehrObjektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
MehrSchedulingund Thread-Ausführer
Schedulingund Thread-Ausführer Scheduling Ein Scheduler arbeitet Programmstücke nach einer festen Zeitspanne oder zu einer fixen Zeitpunkt wiederholt oder einmal ab. Notwendigkeiten für Scheduling sind
MehrAndroid-Apps weitere Möglichkeiten
Android-Apps weitere Möglichkeiten 2/20 weitere Möglichkeiten Speichern in der Sandbox OnTouchListener Senden und Empfangen von SMS Anbindung von Datenbanken Der Beschleunigungssensor Übung 3/20 Speichern
MehrInstitut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrEs sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
MehrNaviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org
Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Fachhochschule Münster Labor für Software Engineering luzar@fh-muenster.de www.naviki.org 1 Naviki die Idee www.naviki.org 2 Wie funktioniert
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrProgrammieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek
Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrÜber die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.
Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
MehrANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum
Analyse der Android Plattform Andre Rein, Johannes Florian Tietje FH-Gieÿen-Friedberg Android Praktikum 28. Oktober 2010 Topics 1 Übersicht Android Plattform Application Framework Activities und Services
Mehr5. Abstrakte Klassen
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,
MehrVS Praktikum 03 Konzept
Darstellung der Architektur: Manager VS Praktikum 03 Konzept Account 3 3 7 6 NameServiceServer 4 5 2 1 2 1 Geldautomat Filiale Messagearten: Für jede unterschiedliche Message gibt es eine eigene Klasse:
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrSession Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de
s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful
MehrE Mail Versand mit der Schild NRW Formularverwaltung
-Seite 1- E Mail Versand mit der Schild NRW Formularverwaltung Seit der Version 1.12.3.97 der Reportverwaltung ist die Möglichkeit integriert, E Mails direkt, d.h. ohne Umweg über einen externen Mailclient
MehrMusterlösung Übungsblatt 2 Netzprogrammierung WS 05/06
Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person
MehrInternet Explorer Version 6
Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster
MehrGeoPilot (Android) die App
GeoPilot (Android) die App Mit der neuen Rademacher GeoPilot App machen Sie Ihr Android Smartphone zum Sensor und steuern beliebige Szenen über den HomePilot. Die App beinhaltet zwei Funktionen, zum einen
MehrEine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.
Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,
MehrPowermanager Server- Client- Installation
Client A Server Client B Die Server- Client- Funktion ermöglicht es ein zentrales Powermanager Projekt von verschiedenen Client Rechnern aus zu bedienen. 1.0 Benötigte Voraussetzungen 1.1 Sowohl am Server
MehrEinstieg in die Informatik mit Java
1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet
Mehr