зглянуто в Главі 6).
Транзитивність ієрархічних відносин
Ставлення підкласу транзитивно:
Якщо В - це підклас А, а С - підклас В, то С - підклас А.
Наприклад, ми можемо визначити клас Вино, а потім визначити клас Біле вино як підклас класу Вино. Потім ми визначаємо клас Chardonnay як підклас класу Біле Вино. Транзитивність відносини підкласу означає, що клас Chardonnay також є підкласом класу Вино. Іноді ми розрізняємо прямі і непрямі підкласи. Прямий підклас - найближчий підклас класу: в ієрархії між класом і його прямим подклассом немає інших класів. Тобто, між класом і його прямим надкласса в ієрархії немає інших класів. У нашому прикладі Chardonnay - це прямий підклас класу Белое вино і не прямий підклас класу Вино.
Розвиток ієрархії класів
Підтримання послідовної ієрархії класів може викликати складності у міру того, як розвиваються предметні області. Наприклад, багато років всі вина Zinfandel були червоними. Тому ми визначаємо клас вин Zinfandel як підклас класу Червоне вино. Тим не менш, виробники вин іноді почали вичавлювати виноград і відразу видаляти цветообразующие речовини з винограду, змінюючи таким чином колір одержуваного вина. Так ми отримуємо В«біле ZinfandelВ» рожевого кольору. Тепер нам потрібно розбити клас Zinfandel на 2 класи zinfandel - Біле zinfandel і Червоне zinfandel - І класифікувати їх як підкласи класів Рожеве вино і Червоне вино відповідно.
Класи і їх імена
Важливо розрізняти клас і його ім'я:
Класи представляють поняття предметної області, а не слова, які позначають ці поняття. p> Ім'я класу може змінитися, якщо ми виберемо іншу термінологію, але сам термін представляє об'єктивну реальність світу. Наприклад, ми можемо створити клас Shrimps, а потім перейменувати його в Prawns - клас представляє все те ж поняття. Вина, які підходили до страв з shrimp, повинні підходити до страв з prawn [4] . p> Насправді треба весь час дотримуватися правило:
Синоніми одного і того ж поняття не представляють різні класи. p> Синоніми - лише різні імена поняття або терміна. Отже, у нас не повинно бути класу з ім'ям Shrimp і одночасно з цим класу з ім'ям Prawn, а також класу з ім'ям Crevette [5] . Переважно буде мати один клас з ім'ям Shrimp або Prawn. Багато системи дозволяють асоціювати з класом список синонімів, перекладів або імен подання. Якщо система не дозволяє здійснювати такі асоціації, то синоніми завжди можна перерахувати до документації до класу.
Уникнення циклів класів
Нам слід уникати циклів в ієрархії класів. Ми говоримо, що в ієрархії є цикл, коли у деякого класу А є підклас У і в той же час В - це надкласс А. Створення такого циклу в ієрархії рівнозначний оголошенню того, що класи А і В еквівалентні: всі примірники А - це екземпляри В, а всі примірники В також є екземплярами А. Дійсно, оскільки В - підклас А, то всі примірники В повинні бути екземплярами класу А. О...