На диаграмме Классы объектов Fictional_Characters, Friend_Table и Enemy_Table показаны классы и объекты, создаваемые в примерах из этого раздела.
Fictional_Characters | |||||
Story_Star (char) | Birthday (char) | Age (short) | Friends_of (link) | Enemies_of (link) | Do_This (method) |
Золушка | Однажды | 19 | Золушка | Золушка | echo Наряжается |
Белоснежка | Однажды | 18 | Белоснежка | Белоснежка | echo Наряжается |
Friend_Table |
Friend_of (char) | Friend (char) |
Золушка | Волшебница |
Золушка | Мышь |
Белоснежка | Ворчун |
Белоснежка | Соня |
Золушка | Принц |
Белоснежка | Счастливая |
Enemy_Table | |
Enemy_of (char) | Enemy (char) |
Золушка | Полночь |
Золушка | Мачеха |
Белоснежка | Мачеха |
Ниже приведен пример файла MyObjects.cre, служащего для создания трех классов объектов с помощью команды odmcreate:
* MyObjects.cre * Входной файл утилиты создания классов объектов ODM. * Создает три класса объектов: * Friend_Table * Enemy_Table * Fictional_Characters
class Friend_Table { char Friend_of[20]; char Friend[20]; };
class Enemy_Table { char Enemy_of[20]; char Enemy[20]; };
class Fictional_Characters { char Story_Star[20]; char Birthday[20]; short Age; link Friend_Table Friend_Table Friend_of Friends_of; link Enemy_Table Enemy_Table Enemy_of Enemies_of; method Do_This; };
* Конец входного файла MyObjects.cre для утилиты создания классов ODM. *
Класс объектов Fictional_Characters содержит шесть дескрипторов:
Примечание: Обратите внимание на то, что в определении дважды встречается ссылка на класс объектов.
Для создания файлов классов объектов приведенный выше код должен быть обработан командой odmcreate.
В результате обработки файла MyObjects.cre командой odmcreate создается файл .h со следующими структурами:
* MyObjects.h * Вывод ODM после обработки входного файла MyObjects.cre. * Определяет структуры для трех классов: * Friend_Table * Enemy_Table * Fictional_Characters #include <odmi.h>
struct Friend_Table { long _id; * уникальный ИД объекта в классе * long _reserved; * зарезервированное поле * long _scratch; * дополнительное поле для использования приложением * char Friend_of[20]; char Friend[20]; };
#define Friend_Table_Descs 2 extern struct Class Friend_Table_CLASS[]; #define get_Friend_Table_list(a,b,c,d,e) (struct Friend_Table * )odm_get_list (a,b,c,d,e)
struct Enemy_Table { long _id; long _reserved; long _scratch; char Enemy_of[20]; char Enemy[20]; }; #define Enemy_Table_Descs 2 extern struct Class Enemy_Table_CLASS[]; #define get_Enemy_Table_list(a,b,c,d,e) (struct Enemy_Table * )odm_get_list (a,b,c,d,e)
struct Fictional_Characters { long _id; long _reserved; long _scratch; char Story_Star[20]; char Birthday[20]; short Age; struct Friend_Table *Friends_of; * связь * struct listinfo *Friends_of_info; * связь * char Friends_of_Lvalue[20]; * связь * struct Enemy_Table *Enemies_of; * связь * struct listinfo *Enemies_of_info; * связь * char Enemies_of_Lvalue[20]; * связь * char Do_This[256]; * метод * };
#define Fictional_Characters_Descs 6 extern struct Class Fictional_Characters_CLASS[]; #define get_Fictional_Characters_list(a,b,c,d,e) (struct Fictional_Characters * )odm_get_list (a,b,c,d,e)
* Конец файла MyObjects.h с описанием выходных структур после обработки ODM *
Ниже приведен пример определений, после обработки которых командой odmadd соответствующие объекты будут добавлены в класс, созданный в результате обработки файла MyObjects.cre.
* MyObjects.add * Входной файл утилиты создания объектов ODM. * Добавляет объекты в классы: * Friend_Table * Enemy_Table * Fictional_Characters
Fictional_Characters: Story_Star = "Золушка" # комментарий файла MyObjects.add Birthday = "Однажды" Age = 19 Friends_of = "Золушка" Enemies_of = "Золушка" Do_This = "echo Убирается в доме"
Fictional_Characters: Story_Star = "Белоснежка" Birthday = "Однажды" Age = 18 Friends_of = "Белоснежка" Enemies_of = "Белоснежка" Do_This = "echo Наряжается"
Friend_Table: Friend_of = "Золушка" Friend = "Фея"
Friend_Table: Friend_of = "Золушка" Friend = "мышь"
Friend_Table: Friend_of = "Белоснежка" Friend = "Ворчун"
Friend_Table: Friend_of = "Белоснежка" Friend = "Соня"
Friend_Table: Friend_of = "Золушка" Friend = "Принц"
Friend_Table: Friend_of = "Белоснежка" Friend = "Счастливчик"
Enemy_Table: Enemy_of = "Золушка" Enemy = "полночь"
Enemy_Table: Enemy_of = "Золушка" Enemy = "Злая мачеха"
Enemy_Table: Enemy_of = "Белоснежка" Enemy = "Злая мачеха"
* Конец входного файла MyObjects.add для утилиты добавления объектов ODM. *
Примечание: символы * и # не будут записаны в файл объекта. Они применяются в файле .add для обозначения комментария. Комментарий будет добавлен в файл только в том случае, если он заключен в двойные кавычки (" ").
Глава 17, Администратор объектных данных (ODM).
ODM Error Codes в книге AIX 5L Version 5.1 Technical Reference.
Команды odmcreate, odmadd, odmget.
Функции odm_add_obj, odm_create_class, odm_run_method.