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