Object C (8)

Aktuelles zum Stand der Dinge: Neues rund um das portable C-Paket.

Im vorliegenden Artikel wollen wir die in Object C implementierte Adreßverwaltung um die Methoden "DoSave" und "DoLoad" erweitern. Der folgende Artikel wird dann die noch fehlenden Methoden "DoQuery' und "DoInfo" bereitstellen. Der letzte Artikel enthielt übrigens einen Tippfehler. Es werden natürlich keine "Studio"-Programme sondern "Std10"-Programme (z.B. TTP-Programme unter TOS) erstellt, was die übliche Abkürzung für "Standard Input and Output", also für normale Terminal-basierte Programme ohne grafische Benutzerschnittstelle ist. Die grafische Benutzerschnittstelle (GUI) werden wir später implementieren.

Neues von Object C

Der FTP-Server der Object C Homepage war kurzzeitig nicht erreichbar, bietet dafür ab etwa 10. März zusätzlich einige neue Dateien unter der gewohnten Adresse

(Listingl)

In Teil 2 wurde mit "$$Enter (Obj obj, char* valuename, char* inputstr)" eine Eingabemethode implementiert, die besser zur Abfrage bestimmter Werte geeignet war, indem der Name des gefragten Wertes zunächst ausgegeben und dann in "inputstr" geliefert wurde. Zusätzlich haben wir die Methoden "$$DoNew(Obj obj) " und "$$DoDel(Obj obj)" programmiert. Der Anwender kann bisher also mit "new" neue Datensätze anlegen, die Liste der Kommandos mit "help" oder "?" abrufen oder das Programm mit "quit" oder "exit" verlassen. "$$DoDel(Obj obj)" bezieht sich auf aktuell selektierte Objekte. Die Selektion dieser Objekte wird dann im "$$DoQuery(Obj obj)" vorgenommen. Diese Methode muß aber erst noch von uns implementiert werden. In jedem Fall sollten wir die Klassenbeschreibung vor Augen haben, um zu wissen, um welche Attribute es jeweils geht.

(Listing 2)

Speicherung der Adreßdaten "ADR-SAVE.M"

Implementieren wir nun ein e Methode "DoSave(Obi obj)". Die Methode wird von der Haupteingabeschleife durch "$$DoSave(obj);" aufgerufen, wobei "obj" von der Klasse Globals ist und somit unserem Objekt "o_glo" ent spricht (wir verwenden ja nur ein einziges Objekt der Klasse Globals). Innerhalb der Methode wird dann "DoSave" für die einzelnen Unterklassen aufgerufen, wobei sich wieder zeigen wird, dass der Object C Syntax mit seiner Methodengruppierung der Klassengruppierung von C++ überlegen ist.

Übrigens: Ab Release Object C 2.7.1 wurde die Datei "obj.h" in "oc.h" umbenannt, das "#include <obj.h>" müßte dann also "#include <oc.h>" lauten. In unserer Methode "$$Open (Obj obj, Bool write, char** name, Bool * success)" hat sich ein Tippfehler eingeschlichen. Richtig wäre "char * name" anstatt "char ** name". Wir hätten auch besser auf die Übergabe des "name" verzichten sollen und direkt den Namen im Objekt der Klasse "File" verwenden sollen. Dann wäre die Übergabe von "op_file->name" unnötig.

Wir verwenden "$par(Obj o - file, long num, Bool success;", um uns ein paar weitere zusätzliche Parameter für die einzelnen klassenspezifischen Blöcke von "DoSave" bereitzustellen. Ohne $par müßten wir jedesmal "op_glo>O-file" schreiben und "long num; Bool success;" definieren. Im Gegensatz zu C++ oder Java, bei denen die klassenspezifischen Blöcke verstreut sind, haben wir also bessere Kontrolle über unser Programm.

(Listing 3)

Aufgrund des Object C Syntax sehen wir Gemeinsamkeiten und Abweichungen zwischen den klassenspezifischen Blöcken sofort und können uns weitere Methoden zur Programmverbesserung überlegen und Fehler besser er kennen. Das macht unser Programm sicherer, kompakter und erzeugt mehr wiederverwendbare Methoden und Klassen, wodurch die Produktivität der Entwicklung steigt.

Laden von Adreßdaten "ADR-LOAD.M"

Die Methode "DoLoad" ist nun das genaue Gegenstück zu "DoSave". Weil hier aber Objekte erzeugt werden und unser Programm in der hier verwendeten Ausbaustufe zu jeder Zeit nur jeweils eine Adreßverwaltungsdatei bearbeiten kann, löscht "DoLoad" die aktuellen Anwenderdaten von Globals vor dem Laden der neuen Daten. Hier wäre natürlich die Ausgabe einer entsprechenden Warnung nicht verkehrt.

(Listing 4)

Das war es auch schon für diese Ausgabe. Alle interessierten Programmierer können sich nach wie vor Informationen und Programmpakete direkt von folgender Internet-Homepage herunterladen: "http://ourworld.compuserve.com/homepages/CPR_ObjectC".


Andreas Guthke
Aus: ST-Computer 04 / 1998, Seite 38

Links

Copyright-Bestimmungen: siehe Über diese Seite