На диаграмме Классы объектов 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.