- •Тема 1. Обєктно - орієнтовне програмування 4
- •Тема 2. Основні концепції парадигми програмування 14
- •Тема 7. Універсальна мова моделювання (Unified Modelling Language або uml) 88
- •Тема 8. Бібліотека стандартних шаблонів stl (Standard Template Library) 91
- •Тема 9. Шаблони проектування stl (Standard Template Library) 104
- •Лекція № 1 Тема 1. Обєктно - орієнтовне програмування План лекції
- •Зміст лекції Вступ.
- •1.1. Поняття те визначення ооп.
- •1.2. Об' єктно - орієнтована методологія (оом).
- •1.3. Об' єктно - орієнтовані мови програмування.
- •1.4. Системи і середовища програмування топ.
- •Лекція № 2 Тема 2. Основні концепції парадигми програмування План лекції
- •Зміст лекції
- •2.1. Парадигми програмування: об' єктно - орієнтована парадигма.
- •2.2. Основні концепції топ.
- •2.3. Моделювання. Об' єктна декомпозиція.
- •2.4. Ідеї топ. Топ принцип - поліморфізм.
- •2.5. Інкапсуляція. Наслідування.
- •2.6. Об' єктний рефакторинг.
- •2.7. Системи і середовища програм.
- •Лекція № 3
- •План лекції
- •Зміст лекції
- •3.1. Абстракції даних
- •3.4. Типи, що перераховують
- •3.5. Вирази
- •3.6. Інструкції
- •Лекція № 4
- •План лекції
- •Зміст лекції
- •4.2. Структура програми, функція main без параметрів.
- •4.3. Основні типи даних.
- •4.4. Константи, змінні, вирази та пріоритет операцій.
- •4.5. Базові конструкції структурного програмування - галуження, цикл, передача управління.
- •4.6. Загальні та бітові логічні операції.
- •4.7. Тернарний опертор.
- •4.8. Вказівники і посилання; масиви.
- •Лекція № 5
- •План лекції
- •Зміст лекції
- •5.1. Користувацькі типи - typedef, enum, struct, union. Функції.
- •5.2. Передача параметрів та повернення значень з функцій.
- •5.3. Рекурсія, перевантаження функцій, функція main з параметрами.
- •5.4. Глобальні і локальні визначення, простори імен та їх використання.
- •5.5. Директиви препроцесора.
- •5.6. Стандартний ввід/вивід - бібліотека stdio.H.
- •5.7. Основи потокового введенню/виводу - бібліотека iostream.H.
- •Лекція № 6
- •План лекції
- •Зміст лекції
- •6.2. Екземпляри класів або об' єкти.
- •6.3. Поля (атрибути) та методи.
- •6.4. Специфікатори доступу (private, protected, public).
- •6.5. Вказівник this.
- •6.6. Перевантаження методів.
- •6.7. Конструктори і деструктори класів.
- •6.8. Перевантаження конструкторів.
- •6.9. Конструктори копіювання та перетворення.
- •6.10. Закон Деметри
- •Лекція № 7 Тема 7. Універсальна мова моделювання (Unified Modelling Language або uml) План лекції
- •2.Основні поняття та принципи.
- •3.Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).
- •4.Uml: діаграми класів. Uml: діаграми взаємодії. Uml: діаграми послідовності. Зміст лекції
- •7.1. Сфера застосування.
- •7.2. Основні поняття та принципи.
- •7.3. Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).
- •7.4. Uml: діаграми класів. Uml: діаграми взаємодії. Uml: діаграми послідовності.
- •Лекція № 8 Тема 8. Бібліотека стандартних шаблонів stl (Standard Template Library)
- •План лекції
- •Зміст лекції
- •8.1. Бібліотека стандартних шаблонів - stl (призначення, основні можливості, сфера застосування).
- •8.2. Стандартні потоки і потокові класи.
- •8.3. Стрічки (основні операції та функції; переваги порівняно із c - стрічками).
- •8.4. Поняття про контейнери, ітератори, функціональні об' єкти та алгоритми stl.
- •Лекція № 9 Тема 9. Шаблони проектування stl (Standard Template Library) План лекції
- •1.Шаблони проектування (designpatterns).
- •Зміст лекції
- •9.1. Шаблони проектування (designpatterns).
- •9.2. Класифікація шаблонів проектування stl (creational, structural, behavior, concurrencypatterns).
- •9.3. Можливості застосування шаблонів проектування stl.
6.10. Закон Деметри
Закон Деметри (англ. Law of Demeter, LoD) - правило дизайну при розробленні програмного забезпечення, зокрема об' єктно - орієнтованих програм. Узагальнено, Закон Деметри є специфічним випадком слабкої зв' язності. Правило було винайдено у Північносхідному Університеті (Бостон, Масачусетс, США) наприкінці 1987 та може бути сформульованим одним з наступних способів:
Кожен модуль має володіти обмеженним знанням про інші модулі: тільки про модулі, які мають "близьке" відношення до даного модуля.
Кожен модуль має розмовляти тільки зі своїми друзями, не розмовляти з незнайомцями.
Звертатись тільки до безпосередніх друзів
Фундаментальною ідеєю є ті, що об' єкт має мати якнайменше уявлення про структуру та властивості чого завгодно (включаючи власні підкомпоненти). Назва походити з проекту "Деметра", що використовував ідеї аспекто- орієнтованого та адаптивного програмування. Проект було названо на честь Деметри, грецької богині землеробства, щоб підкреслити переваги філософії програмування "знизу-нагору".
У контексті об' єктно - орієнтованого програмування, Закон Деметри більш точно називати "Закон Деметри для функцій\методів". У цьому разі, об' єкт А може використовувати сервіс (викликати метод) об' єкта B, та об' єкт А не може "через" об' єкт В отримати доступ до іншого об' єкта, З, та використовувати його сервіси. Якби це було можливо, це означало б, що об' єкт А явно потребує більшого знання про внутрішню структуру об' єкта В. Замість цього, інтерфейс В має бути змінено, якщо необхідно, таким чином, щоб напряму оброблювати запити об' єкта А, передаючи їх відповідним підкомпонетам. Як альтернатива, А може мати пряме посилання на об' єкт З та викликати методи безпосередньо з нього. Якщо слідувати закону, тільки об' єкт В знає свою внутрішню структуру.
Більш формально, Закон Деметри для функцій вимагає, що метод М об' єкта Про має викликати методи тільки наступних типів об' єктів :
власне самого Про
параметрів М
будь-яких об' єктів, створених у межах М
прямих компонентних об' єктів Про
глобальних змінних, доступних О, у межах М
Практично, об' єкт - клієнт має уникати викликів методів об' єктів, внутрішніх членів, повернених методом об' єкта - сервісу. Для багатьох сучасних об' єктно - орієнтованих мов програмування, що використовують крапку, як кваліфікатор члена класу, закон може бути перефразовано як "Використовуйте лише одну крапку". Таким чином, код a.b.Method() порушує Закон Деметри, а код a.Method() є коректним.
Переваги та недоліки
Перевагами Закону Деметри є ті, що розроблене програмне забезпечення є меньш складним під година підтримки та більші можливості повторного використання коду. Так як об' єкти є менш залежними від внутрішньої структури інших об' єктів, контейнери об' єктів можуть бути змінені без модифікації викликаючих об' єктів (клієнтів).
Недоліком Закону Деметри є ті, що іноді потребує створення великої кількості малих методів - адаптерів (делегатів), для передачі викликів методу до внутрішніх компонентів. Більше того, інтерфейс класу може статі перевантаженим, так як вміщує методи внутрішніх класів, що порушує принцип високої зв' язності. Та це також може бути сигналом поганого об' єктно - орієнтованого дизайну.
Багатоярусна архітектура може розглядатися, як приклад імплементації Закону Деметри у програмній системі. У такій архітектурі код шкірного з ярусів може викликати тільки код свого ярусу та код з нижчого ярусу. Виклик "через ярус" є порушенням багатоярусної архітектури.
Література
Катаев М.Ю. Объектно-ориентированное программирование: Учебное пособие. - Томск: Томский межвузовский центр дистанционного образования, 2000. - 145 с.
Кент Рейсдорф и Кен Хендерсон BORLAND C++BUILDER. ОСВОЙ САМОСТОЯТЕЛЬНО
Лафоре Р. Обьектно–ориентированное программирование в С++. 4-е изд.: – СПб: Питер, 2004 – 902 с.
Львов М.С., Співаковський О.В. Вступ до об’єктно-орієнтоване програмування. Навчальний посібник. - Херсон: ХГПУ, 2000.- 238 с.:іл.
М.С. Львов. О.В. СпіваковськийВступ до об’єктно-орієнтоване програмування. Навчальний посібник. - Херсон: ХГПУ, 2000.- 238 с.:іл.
Шилдт Герберт. Искусство программирования на С++. Санкт-Питербург, 2005.-496 с., ил.
Шилдт, Герберт. C++: руководство для начинающих, 2-е издание. : Пер. с англ. — М. : Издатель- ский дом "Вильяме", 2005. — 672 с. : ил. — Парал. тит. англ.
Эккель Брюс. Философия С++. Введение в стандартный С++ (2-е издание). - СПб: Питер, 2004 – 573 с.
Эккель Брюс. Философия С++. Практическое программирование (2-е издание). - СПб: Питер, 2004 – 610 с., ил.
Юркова Т. А., Ушаков Д. М., Паскаль для школьников. — СПб.: Питер, 2010. — 256 с.: ил.
Visual Studio 2010 и введение в .NET 4.0 и для профессионалов. Макки, Алекс : Пер. с англ. — М. : ООО И. Д. Вильямс". 2010. — 416 с. : ил. — Парал, тит. англ.
