Professional Documents
Culture Documents
Lec 07 CPLX Oop 06
Lec 07 CPLX Oop 06
7.3.1 Абстрагування
Абстракція — спрощений опис системи, при якому одні властивості та деталі
виділяються, а інші відсікаються. Доброю є така абстракція, яка підкреслює деталі, які є
важливими для розгляду та використання, і ігнорує ті, які на даний момент несуттєві.
Абстрагування виділяє істотні характеристики деякого об'єкта, що відрізняють
його від всіх інших видів об'єктів і, таким чином, чітко визначає його межі з точки зору
спостерігача.
Протокол відображає всі можливі способи, якими об'єкт може діяти або піддаватися
впливу.
7.3.2 Інкапсуляція
Інкапсуляція найчастіше реалізується за допомогою приховування інформації,
тобто маскуванням всіх внутрішніх деталей, які не впливають на зовнішню поведінку.
Зазвичай приховується і внутрішня структура об'єкта, і реалізація його методів.
Інкапсуляція, таким чином, визначає чіткі межі між різними абстракціями.
7.3.3 Модульність
Поділ програми на модулі деякою мірою дозволяє зменшити її складність. Однак,
набагато важливішим є той факт, що всередині модульної програми створюється множина
добре визначених і документованих інтерфейсів. Ці інтерфейси дуже важливі для
вичерпного розуміння програми в цілому.
Модульність — це властивість системи, яка була розкладена на внутрішньо
зв'язані, але слабо пов'язані між собою частини.
Таким чином, на практиці, модульність — це поділ програми на фрагменти, які
компілюються окремо, але можуть встановлювати зв'язки з іншими модулями. Або
інакше: зв'язки між модулями — це їхні уявлення один про одного.
Для мов C/C++ традиційним є розміщення інтерфейсної частини модулів в окремі
файли з розширенням .h (так звані заголовкові файли). Реалізація, тобто текст модуля,
зберігається в файлах з розширенням .с або .срр. Зв'язок між файлами встановлюється
директивою макропроцесора #include. Такий підхід будується виключно за домовленістю і
не є суворою вимогою самої мови.
Слід пам'ятати, що безсистемний розподіл програми на модулі набагато гірший,
ніж відсутність модульності взагалі. Необхідно знаходити баланс між двома
протилежними тенденціями: прагненням приховати інформацію і необхідністю
забезпечення видимості тих чи інших абстракцій в декількох модулях.
7.3.4 Ієрархія
Ієрархія дозволяє досягти значного спрощення в розумінні складних завдань — за
рахунок утворення ієрархічної структури з абстракцій.
Ієрархія — це впорядкування абстракцій, розташування їх за рівнями.
7.4.1 Типізація
Типізація — це спосіб захиститися від використання об'єктів одного класу замість
іншого, або керувати таким використанням. Тип — точна характеристика властивостей,
включаючи структуру і поведінку, що відноситься до деякої сукупності об'єктів. Ідея
узгодження типів займає в понятті типізації центральне місце.
7.4.2 Паралелізм
Паралелізм — це властивість, що відрізняє активні об'єкти від пасивних. Є
завдання, в яких автоматичні системи повинні обробляти багато подій одночасно. В інших
випадках потреба в обчислювальної потужності перевищує ресурси одного процесора. У
будь-який з таких ситуацій природно використовувати кілька комп'ютерів або процесорів
для вирішення завдання або задіяти механізм багатозадачності на багатопроцесорному
комп'ютері.
Процес (потік управління) — це фундаментальна одиниця дії в системі. Кожна
програма має, щонайменше, один потік управління, паралельна система має багато таких
потоків: одні виконуються короткий час, а інші — протягом всього сеансу роботи
системи.
7.4.3 Зберігання
Зберігання — здатність об'єкта існувати в часі, переживаючи процес що його
породив, і (або) в просторі, з переміщенням зі свого первісного адресного простору в
інше. Будь-програмний об'єкт існує в пам'яті і живе в часі. Є безперервна множина
тривалості існування об'єктів: частка об'єктів присутня лише під час обчислення виразу,
але є і такі, як бази даних, які існують незалежно від програми.
7
Висновки