нових понять. Насамперед, це – інкапсуляція даних, тобто логічне пов'язування даних з конкретною операцією. Інкапсуляція даних означає, що дані є не глобальними – доступними всій програмі, а локальними – доступними тільки для малої її частини. Під інкапсуляцією слід розуміти також і захист даних. Для цього в структурі class використовується специфікатор розділу private, який містить дані і методи, доступні тільки для самого класу. Якщо дані і методи містяться в розділі public, то вони доступні за межами класу. Розділ protected містить дані і методи, доступні з класу і будь-якого його похідного класу. Наявність останніх дозволяє вести мову про ієрархію класів, де є класи – батьки – шаблони для створення класів – нащадків. Об'єкти, які отримані з опису класу, називають екземплярами цього класу.Другим важливим поняттям є наслідування. Новий, або похідний клас може бути визначений на основі вже наявного, або базового. При цьому новий клас зберігає всі властивості старого: дані об'єкта базового класу включаються в дані об'єкта похідного, а методи базового класу можуть бути викликані для об'єкта похідного класу, причому вони будуть виконуватися над даними включеного в нього об'єкта базового класу. Інакше кажучи, новий клас успадковує як дані старого класу, так і методи їхньої обробки. Якщо об'єкт успадковує свої властивості від одного батька, то говорять про одинарне наслідування. Якщо ж об'єкт успадковує атрибути від декількох базових класів, то говорять про множинне наслідування. Простий приклад наслідування – визначення структури, окремий член якої є раніше визначеною структурою.Третім важливим поняттям є поліморфізм. Він ґрунтується на можливості включення в дані об'єкта інформації про методи їхньої обробки (у вигляді вказівників на функції). Принципово важливо, що такий об'єкт стає "самодостатнім". Будучи доступним у деякому місці програми, навіть при відсутності повної інформації про його тип, вона завжди може коректно викликати властиві йому методи. Поліморфною називається функція, яка незалежно визначена в кожнім із групи похідних класів і, яка має в них загальне ім'я. Поліморфна функція володіє тією властивістю, що при відсутності повної інформації про те, об'єкт якого з похідних класів у даний момент обробляється, вона тим не менше коректно викликається в тому вигляді, до якого вона була визначена для даного конкретного класу. Практичний зміст поліморфізму полягає в тім, що він дозволяє посилати загальне повідомлення про збір даних будь-якому класу, причому і батьківський клас, і класи-нащадки дадуть відповідь на повідомлення відповідним чином, оскільки похідні класи містять додаткову інформацію. Програміст може зробити регулярним процес обробки несумісних об'єктів різних типів при наявності в них такого поліморфного методу.
Поліморфний метод у Сі++ називається віртуальною функцією, що дозволяє одержувати відповіді на повідомлення, адресовані об'єктам, точний вигляд яких невідомий. Така можливість є результатом пізнього пов'язування. При пізньому пов'язуванні адреси визначаються динамічно під час виконання програми, а не статично під час компіляції, як у традиційних компілюючих мовах, в яких застосовується раннє пов'язування. Сам процес пов'язування полягає в заміні віртуальних функцій на адреси пам'яті.
Віртуальні функції визначаються в батьківському класі, а в похідних класах відбувається їхнє доозначення, і для них створюються нові реалізації. При роботі з віртуальними функціями повідомлення передаються як вказівники, що вказують на об'єкт замість прямої передачі об'єкту. Віртуальні функції використовують таблицю для адресної інформації, що ініціалізується при виконанні за допомогою конструктора.
Rational Unified Process (RUP).
Огляд засобів UML, що використовуються у RUP.
Мова об’єктних обмежень (Object Constraint Language).
RUP – процес, що орієнтується на варіанти використання. RUP – процес, що орієнтується на архітектуру.
Статична структура RUP (діяльності, артефакти).
Робітники, дисципліни, додаткові елементи. Послідовний та ітеративний процес розробки.
Динамічна структура RUP (фази, цикл розробки).
Основные этапы развития UML
Отдельные языки объектно-ориентированного моделирования стали появляться в период между серединой 1970-х и концом 1980-х годов, когда различные исследователи и программисты предлагали свои подходы к ООАП. В период между 1989—1994 гг. общее число наиболее известных языков моделирования возросло с 10 до более чем 50. Многие пользователи испытывали серьезные затруднения при выборе языка ООАП, поскольку ни один из них не удовлетворял всем требованиям, предъявляемым к построению моделей сложных систем. Принятие отдельных методик и графических нотаций в качестве стандартов (IDEF0, IDEF1X) не смогло изменить сложившуюся ситуацию непримиримой конкуренции между ними в начале 90-х годов, которая тоже получила название "войны методов".
К середине 1990-х некоторые из методов были существенно улучшены и приобрели самостоятельное значение при решении различных задач ООАП. Наиболее известными в этот период становятся:
Метод Гради Буча (Grady Booch), получивший условное название Booch или Booch'91, Booch Lite (позже — Booch'93).
Метод Джеймса Румбаха (James Rumbaugh), получивший название Object Modeling Technique - ОМТ (позже - ОМТ-2).
Метод Айвара Джекобсона (Ivar Jacobson), получивший название Object-Oriented Software Engineering — OOSE.
Каждый из этих методов был ориентирован на поддержку отдельных этапов ООАП. Например, метод OOSE содержал средства представления вариантов использования, которые имеют существенное значение на этапе анализа требований в процессе проектирования бизнес-приложений. Метод ОМТ-2 наиболее подходил для анализа процессов обработки данных в информационных системах. Метод Booch'93 нашел наибольшее применение на этапах проектирования и разработки различных программных систем.
История развития языка UML берет начало с октября 1994 года, когда Гради Буч и Джеймс Румбах из Rational Software Corporation начали работу по унификации методов Booch и ОМТ. Хотя сами по себе эти методы были достаточно популярны, совместная работа была направлена на изучение всех известных объектно-ориентированных методов