Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

24.5.3. Визначення атрибутів

Багато іменників, яким відмовлено в реєстрації як кандидати в класи, будуть потенційними кандидатами в атрибути (компонентні дані) класів. Наприклад, у класу "Мешканці" будуть такі атрибути: ім'я мешканця, номер кімнати. У класу "Витрати": отримувач, місяць, день, сума, бюджетна категорія. Більшість атрибутів можуть бути визначені таким шляхом.

24.5.4. Перехід від дієслів до повідомлень

Тепер подивимося, що нам дають варіанти використання для з'ясування того, якими повідомленнями обмінюватимуться класи. Оскільки повідомлення – це, по суті справи, є викликом методу в об'єкті, то визначення повідомлень зводиться до визначення методів класу, що приймає те або інше повідомлення. Як і у випадку з іменниками, далеко не кожне дієслово стає кандидатом у повідомлення. Деякі з них, замість прийому даних від користувачів, зв'язуються з такими операціями, як виведення інформації на екран, або з якими-небудь ще діями.

Як приклад розглянемо опис варіанту використання функції "Вивести перелік мешканців". Курсивом виділені дієслова:

Програма виводить на екран перелік мешканців, кожен рядок переліку складається з двох полів: номер кімнати і ім'я мешканця.

Під словом "програма" ми насправді маємо на увазі вікно інтерфейсу користувача, отже, слово "виводить" означає, що об'єкт "Вікно інтерфейсу користувача" посилає повідомлення об'єкту "Перелік мешканців" (тобто викликає його метод). У повідомленні має міститься вказівка вивести самого себе на екран. Нескладно здогадатися, що метод може називатися, наприклад, display().

Дієслово "складається" не відноситься ні до якого повідомлення. Він просто приблизно визначає склад рядка об'єкта "Перелік мешканців".

Розглянемо складніший приклад: варіант використання "Додати нового мешканця":

У вікні має відобразитися повідомлення, у якому програма просить користувача ввести ім'я мешканця і номер кімнати. Ця інформація повинна заноситися в таблицю. Перелік автоматично сортується за номерами кімнат.

Дієслово "складається" в даному випадку означатиме наступне. Екран інтерфейсу користувача повинен послати повідомлення класу "Екран введення мешканців", наказуючи йому вивести себе і отримати дані від користувача. Це повідомлення може бути викликом методу класу з іменем, наприклад getTenant().

Дієслова "просить" і "ввести" відносяться до взаємодії класу "Екран введення мешканців" з користувачем. Вони не стають повідомленнями в об'єктному сенсі. Попросту getTenant() виводить запрошення і записує відповіді користувача (ім'я мешканця і номер кімнати).

Дієслово "заноситися" означає, що об'єкт класу "Екран введення мешканців" посилає повідомлення об'єкту класу "Перелік мешканців". Можливо, як аргумент використовується новий об'єкт класу "Мешканці". Об'єкт "Перелік мешканців" може потім вставити цей новий об'єкт у свій перелік. Ця функція може мати ім'я типу insertTenant().

Дієслово "сортується" – це не ніяке повідомлення і взагалі не вид взаємодії об'єктів. Це просто опис переліку мешканців.

На рис. 24.6 показано варіант використання "Додати нового мешканця" і його зв'язку з описаними вище повідомленнями.

Коли ми почнемо писати код програми, то виявимо, що деякі дії залишилися поза нашим розглядом у цьому варіанті використання, але потрібні програмі. Наприклад, ніде не йдеться про створення об'єкта "Мешканець". Проте, напевно, зрозуміло, що "Перелік мешканців" містить об'єкти типу "Мешканець", а останні повинні бути створені до їх внесення в перелік. Отже, системний інженер вирішує, що метод getTenant() класу "Екран введення мешканців" – це відповідне місце для створення об'єкта "Мешканець", що вставляється в перелік мешканців.

Всі інші варіанти використання повинні бути проаналізовані аналогічним чином, щоб можна було створити основу для зв'язування класів. Зверніть увагу, що ми все ще використовуємо імена класів, що збігаються із словами або словосполученнями варіантів використання. Коли ми почнемо писати код програми, нам, зазвичай, доведеться перейменувати їх у що-небудь прийнятніше (імена повинні складатися з одного слова).

Рис. 24.6. Дієслова варіанту використання "Додати нового мешканця"