русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Операція та їх синтаксис


Дата додавання: 2014-10-07; переглядів: 1067.


У третій зверху секції прямокутника записуються операції або методи класу. Операція (operation) являє собою деякий сервіс, що надає кожний екземпляр класу на певну вимогу. Сукупність операцій характеризує функціональний аспект поводження класу. Запис операцій класу в мові UML також стандартизована й підкоряється певним синтаксичним правилам. При цьому кожній операції класу відповідає окремий рядок, що складається із квантора видимості операції, ім'я операції, вираження типу повертається операцією значення й, можливо, рядок-властивість даної операції:

<квантор видимості><ім'я операції>(список параметрів):

<вираження типу значення, що повертається,>{ рядок-властивість}

Квантор видимості, як і у випадку атрибутів класу, може приймати одне із трьох можливих значень і, відповідно, відображається за допомогою спеціального символу. Символ "+" позначає операцію з областю видимості типу загальнодоступний (public). Символ "#" позначає операцію з областю видимості типу захищений (protected). І, нарешті, символ "-" використовується для позначення операції з областю видимості типу закритий (private).

Квантор видимості для операції може бути опущений. У цьому випадку його відсутність просто означає, що видимість операції не вказується. Замість умовних графічних позначень також можна записувати відповідне ключове слово: public, protected, private.

Стосовно до конкретних мов програмування можуть бути визначені додаткові квантори видимості. У цьому випадку подібні доповнення є розширенням базової нотації й вимагають відповідних пояснень у формі тексту природною мовою або у вигляді рядка-властивості.

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

Список параметрів є переліком розділених коми формальних параметрів, кожний з яких може бути представлений у наступному виді:

<вид параметра><ім'я параметра>:<вираження типу>=<значення параметра за замовчуванням>.

Тут вид параметра - є одне із ключових слів in, out або inout зі значенням in за замовчуванням, у випадку якщо вид параметра не вказується. Ім'я параметра є ідентифікатор відповідного формального параметра. Вираження типу є залежною від конкретної мови програмування специфікацією типу значення, що повертається, для відповідного формального параметра. Нарешті, значення за замовчуванням у загальному випадку являє собою вираження для значення формального параметра, синтаксис якого залежить від конкретної мови програмування й підкоряється прийнятим у ньому обмеженням.

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

Рядок-Властивість служить для вказівки значень властивостей, які можуть бути застосовані до даного елемента. Рядок-Властивість не є обов'язкової, вона може бути выдсутня, якщо ніякі властивості не специфіковані.

Операція з областю дії на весь клас показується підкресленням ім'я й рядка вираження типу. За замовчуванням під областю операції розуміється об'єкт класу. У цьому випадку ім'я й рядок вираження типу операції не підкреслюються.

Операція, що не може змінювати стан системи й, відповідно, не має ніякого побічного ефекту, позначається рядком-властивістю "{запит}" ("{query}"). У противному випадку операція може змінювати стан системи, хоча немає ніяких гарантій, що вона буде це робити.

Для підвищення продуктивності системи одні операції можуть виконуватися паралельно або одночасно, а інші - тільки послідовно. У цьому випадку для вказівки паралельності виконання операції використовується рядок-властивість виду "{concurrency = ім'я}", де ім'я може приймати одне з наступних значень: послідовна (sequential), паралельна (concurrent), охоронювана (guarded). При цьому дотримуються наступної семантики для даних значень:

  • послідовна (sequential) - для даної операції необхідно забезпечити її єдине виконання в системі, одночасне виконання інших операцій може привести до помилок або порушень цілісності об'єктів класу.
  • паралельна (concurrent) - дана операція в силу своїх особливостей може виконуватися паралельно з іншими операціями в системі, при цьому паралельність повинна підтримуватися на рівні реалізації моделі.
  • охоронювана (guarded) - всі звертання до даної операції повинні бути строго впорядковані в часі з метою збереження цілісності об'єктів даного класу, при цьому можуть бути вжиті додаткові заходи по контролі виняткових ситуацій на етапі її виконання.

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

Поява сигнатури операції на самому верхньому рівні повідомляє цю операцію на весь клас, при цьому дана операція успадковується всіма нащадками даного класу. Якщо в деякому класі операція не виконується (тобто деякий метод не застосовується), то така операція може бути позначена як абстрактна "{abstract}". Інший спосіб показати абстрактний характер операції - записати її сигнатуру курсивом. Підлегла поява запису даної операції без властивості {абстрактна} указує на той факт, що відповідний клас-нащадок може виконувати дану операцію в якості свого "методу.

Якщо для деякої операції необхідно додатково вказати особливості її реалізації (наприклад, алгоритм), то це може бути зроблене у формі примітки, записаного у вигляді тексту, що приєднується до запису операції у відповідній секції класу. Якщо об'єкти класу приймають і реагують на деякий сигнал, то запис даної операції позначається ключовим словом "сигнал" ("signal"). Це позначення рівнозначно позначенню деякої операції. Реакція об'єкта на прийом сигналу може бути показана у вигляді деякого автомата. Крім інших випадків ця нотація може бути використана, щоб показати реакцію об'єктів класу на помилкові ситуації або виключення, які можуть моделюватися як сигнали або повідомлення.

Поводження операції може бути зазначене додатково у формі приєднаного до операції примітки. У цьому випадку текст примітки полягає в дужки, якщо він являє собою формальну специфікацію на деякій мові програмування й відповідає елементу "семантичне обмеження мови UML". У противному випадку текст примітки є простим описом природною мовою й позначається прямокутником з "загнутим" верхнім правим куточком (див. главу 4).

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

Як приклади запису операцій можна привести наступні позначення окремих операцій:

  • +створити() - може позначати абстрактну операцію по створенню окремого об'єкта класу, що є загальнодоступною й не містить формальних параметрів. Ця операція не повертає ніякого значення після свого виконання.
  • +намалювати(форма: Багатокутник = прямокутник, колір_заливання: Color = (ПРО, ПРО, 255)) - може позначати операцію по зображенню на екрані монітора прямокутної області синього кольору, якщо не вказуються інші значення як аргументи даної операції.
  • запросити_рахунок_клієнта(номер_рахунку:1п1е§ег):Сиггепсу - позначає операцію по встановленню наявності засобів на поточному рахунку клієнта банку. При цьому аргументом даної операції є номер рахунку клієнта, що записується у вигляді цілого числа (наприклад, "123456"). Результатом виконання цієї операції є деяке число, записане в прийнятому грошовому форматі (наприклад, $1,500.00).
  • видати_повідомлення():{"Помилка розподілу на нуль"} - зміст даної операції не вимагає пояснення, оскільки втримується в рядку-властивості операції. Дане повідомлення може з'явитися на екрані монітора у випадку спроби розподілу деякого числа на нуль, що неприпустимо.

 

Лекція №8

Тема: Статичні діаграми. Відношення між класами. Діаграми класів.

Мета: Навчитися створювати діаграми класів, виконувати об’єктно-орієнтовне проектування програмних продуктів.

Перелік питань, що розглядаються на лекції:

1. Відношення між класами

2. Відношення залежності

3. Відношення асоціації

4. Відношення узагальнення

5. Відношення реалізації

 


<== попередня лекція | наступна лекція ==>
Атрибути класу та їх синтаксис | Відносини між класами


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн