Der Aufbau der Bibliothek ist relativ simpel gehalten. Das >>oop<< Paket beinhaltet lediglich das Interface der Bibliothek sowie die Konstanten. Das >>util<< Paket beinhaltet Klassen, die zur Realisierung der Bibliothek notwendig waren. Das >>impl<< Paket beinhaltet diejenigen Klassen, welche die �bertragung der Daten letzten Endes realisieren. Das >>exceptions<< Paket enth�lt die von der OOP Bibliothek definierten Ausnahmen. Die Funktionalit�t der Klassen der jeweiligen Pakete wird im folgenden erl�utert.
Durch Implementierung des IObexObjectPassing Interfaces ist zus�tzlich eine einfache Weiterverarbeitung der Daten m�glich, sollen diese persistent auf dem Ger�t gespeichert werden. Begr�ndet werden kann dies durch die Limiterung, welchen den mobilen Endger�ten auferlegt ist. Da sie laut der CLDC keine Kenntnis eines Dateisystems vorweisen m�ssen18, ist ein alternativer Mechanismus im MIDP zur Verf�gung gestellt worden; das RMS19. Lese- und Schreiboperationen auf das RMS k�nnen jedoch ausschliesslich in Byte-Str�men durchgef�hrt werden. Durch die Implementierung der IObexObjectPassing Schnittstelle sind die Entit�tsobjekte bereits auf diese Aufgabe vorbereitet. Auf den Umgang mit dem RMS soll an dieser Stelle jedoch nicht n�her eingegangen werden20.
„Es werden funktionale Abstraktionen in Form von Operationssignaturen bereitgestellt, die das >>Was<<, aber nicht das >>Wie<< festlegen. Eine Schnittstelle besteht also im Allgemeinen nur aus Operationssignaturen, d. h. sie besitzt keine Operationsr�mpfe und keine Attribute. Schnittstellen k�nnen jedoch in Vererbungsstrukturen verwendet werden. Eine Schnittstelle ist �quivalent zu einer Klasse, die keine Attribute und ausschlie�lich abstrakte Operationen besitzt.“ [Bal00, S. 817]Da in der Java Programmiersprache allerdings der Mechanismus der Mehrfachvererbung nicht vorgesehen ist, w�re die Modellierung als abstrakte Basisklasse f�r den Programmierer unvorteilhaft gewesen, da eine Schnittstelle, im Gegensatz zur abstrakten Basisklasse, auf n-ter Stufe der Erbhierarchie implementiert werden kann, wohingegen die abstrakte Basisklasse an der Wurzel der Erbhierarchie implementiert werden m�sste.
Die Klassen ObjectPusher, ObjectReceiver und BulkObjectPusher aus [Abb.: 3.5] stellen dabei die in [Abb.: 3.4] als Concrete Subject bezeichnete Klasse dar.
Die Funktionalit�t der im >>impl<< Paket enthaltenen Klassen ist folgende:
Nach der Erzeugung des ObjectPusher Objekts ruft es, durch die interne Thread-Erzeugung, die Methode run() auf, in der die eigentliche Arbeit des Objekts verrichtet wird.
Die Testreihe konnte auf Grund mangelnder Hardware nicht auf zwei reale Mobiltelefone ausgedehnt werden. Der Versuch mit Hilfe der Bibliothek Daten von einem Laptop auf ein Mobiltelefon zu �bertragen, schlug ebenfalls fehl. Das entfernte Ger�t konnte weder vom Laptop noch vom Mobiltelefon aus gefunden werden.
Testbeschreibung Erwartetes Ergebnis Test Erf�llt Es wird versucht ein Objekt zu �bertragen, dass die Schnittstelle IObexObjectPassing nicht implementiert. Die �bertragung wird abgebrochen. Ja Sind die Daten am Empfangsger�t korrekt rekonstruiert worden? Korrekte Rekonstruktion der Daten. Ja Es existieren zwei Ger�te auf denen der Server ObjectReceiver gestartet wurde. Die Implementierung informiert den Anwender, dass mehrere Ger�te verf�gbar sind. Nein26 Es wird versucht zu senden, jedoch ist am Empfangsger�t keine ObjectReceiver Instanz erzeugt worden. Die Methode OOPFinder.getConnectionURL() liefert null. Ja Wird nach einer abgelehnten Verbindung durch das BCC eine erneute R�ckfrage an den Benutzer gestellt? R�ckfrage wird erneut gestellt. Nein27 Besteht die M�glichkeit ObjectReceiver und BulkObjectPusher parallel auf einem Ger�t zu instanziieren? Beide k�nnen parallel gestartet werden. Ja Tabelle 3.1: W�hrend der Entwicklung durchgef�hrte Testf�lle