
- •Тема 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.
Лекція № 9 Тема 9. Шаблони проектування stl (Standard Template Library) План лекції
1.Шаблони проектування (designpatterns).
2.Класифікація шаблонів проектування (creational, structural, behavior, concurrencypatterns).
3.Можливості застосування шаблонів проектування.
4.Реалізація окремих шаблонів проектування на мові C++: абстрактна фабрика(abstractfactory), одинак (singleton), адаптер (adapter).
Зміст лекції
Огляд стандартної бібліотеки шаблонів
Перелічимо основні можливості стандартної бібліотеки С++, які з'явилися в ній з розвитком самої мови С++: потоки, числові методи (наприклад, операції з комплексними числами, множення масиву на константу та інші нескладні методи), рядки (класи для роботи з текстовою інформацією), множини, контейнери, алгоритми й об' єкти - функції, ітератори та інше.
Стандартна бібліотека шаблонів STL [14-21, 30] - частина стандартної бібліотеки C++ SCL, що забезпечує загальноцільові стандартні класи й функції, які реалізують найбільш популярні й широко використовувані алгоритми й структури даних.
Бібліотека STL розроблена співробітником Hewllet - Packard Олександром Степановим. STL будується на основі шаблонів класів, і тому вхідні в неї алгоритми й структури застосовні майже до всіх типів даних. Ядро бібліотеки утворюють три складові: контейнери, алгоритми й ітератори.
9.1. Шаблони проектування (designpatterns).
Шаблони проектування програмного забезпечення(англ. software design patterns) - ефективні способи вирішення завдань проектування програмного забезпечення. Шаблон не є закінченим зразком, який можна безпосередньо транслювати в програмний код.
Об' єктно - орієнтований шаблон найчастіше є зразком вирішення проблеми і відображає відношення між класами та об' єктами, без вказівки на ті, як буде зрештою реалізоване це відношення.
9.2. Класифікація шаблонів проектування stl (creational, structural, behavior, concurrencypatterns).
9.3. Можливості застосування шаблонів проектування stl.
9.4. Реалізація окремих шаблонів проектування на мові C++: абстрактна фабрика(abstractfactory), одинак (singleton), адаптер (adapter).
Уявімо, що ви прийшли в іграшковий магазин (відіграючи роль діда Мороза ) і хочете накупити іграшок дітям (і не обов'язково своїм). Мартуся любити плюшеві іграшки, вона часто із ними лягає у ліжко спати. А Дмитрик страшний розбишака, ламає усе на світі, рові м' які іграшки і, зазвичай, віддає перевагу гратися із твердими, дерев'яними іграшками. Двоє дітей хочуть ведмедика і котика і ще купу інших тваринок. На щастя, магазин має широкий асортимент забавок і вам вдалося удосталь закупитися. У один мішок ви накидали дерев'яних іграшок, а в інший плюшевих.
Таким чином, коли ви підійшли до Мартусі, яка любити м' які іграшки, ви витягали із свого мішка спочатку плюшевого ведмедя, а далі плюшевого котика і так далі. Аналогічно ви підійшли до Дмитрика і подарували йому дерев'яного ведмедика і котика, і собаку, і слона, і бегетота.. і крокодила..
Абстрактна фабрика надає простий інтерфейс для створення об' єктів, які належать до того чи іншого сімейства.
У нашому прикладі сімейством є набір іграшок -тварин, які по- сімейному реалізують базові класи ведмедика (Bear), кота (Cat), і інші. Тобто повний звіринець певної реалізації, дерев' яної або плюшевої, і буде сімейством. Конкретною фабрикою є мішок. Одна із конкретних фабрик повертає дерев' яні іграшки, а інша повертає плюшеві. Тому якщо одна дитина просити котика, то їй повернути реалізацію котика у відповідності до інстанційованого мішка із іграшками.
Я сподіваюся, що приклад із аналогіями не видався заплутаним. А якщо усе ж таки видався, пропоную подивитися трохи коду. Абстрактна фабрика визначає інтерфейс, що повертає об' єкти кота або ведмедя (базові класи). Конкретні реалізації фабрики повертають конкретні реалізації іграшок потрібного сімейства.
Абстрактна Фабрика є дуже широковикористовуваним дизайн патерном. Дуже яскравим прикладом буде ADO.NET DbProviderFactory, яка є абстракною фабрикою, що визначає інтерфейси для отримання DbCommand, DbConnection, DbParameter і так далі. Конкретна фабрика SqlClientFactory поверне відповідно SqlCommand, SqlConnection і так далі. Що дозволяє працювати із різними джерелами даних. Дякую за ті, що дочитали про цей дизайн патерн саме із моєї книги та із моїм прикладом.
Уявімо, що нам потрібна глобальна логувальна система в програмі, також нам треба логувати наші повідомлення в якийсь один- єдиний файл, причому нумеруючи повідомлення послідовно, незалежно від того, з якого закут програми вилетіла помилка. Як можна це зробити?
Синглтон забезпечує існування єдиного екземпляру класу та єдиного доступу до нього.
Клас, зображений нижче, демонструє просту реалізацію дизайн патерну Одинак (ця назва, чесно кажучи, звучить дещо "дико". Думаю, що може буде краще його називати Синглтон. Як вважаєте?)
Чіткі ознаки Одинака - приватний конструктор та доступ до єдиного, внутрішньо створеного екземпляру, здійснюваний через статичний метод.
Отже, мі збираємося почати роботові програми із методу DoHardWork і хочемо залогувати факт того, що вона почалася, всякі інші події та факт того, що робота закінчилася.
Як бачимо метод використовує деякий клас HardProcessor. Що саме він наспраді робить, нас не дуже переймає, проте мі б хотіли, щоб було залоговано в місцях, коли екземпляр класу створився та коли виконувалися якісь підрахунки.
Література
Катаев М.Ю. Объектно-ориентированное программирование: Учебное пособие. - Томск: Томский межвузовский центр дистанционного образования, 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 с. : ил. — Парал, тит. англ.
.
1 Тут і далі ми переводимо слово statement як інструкція, а слово operator — як оператор.
2 Тут і далі коли йдеться про типи ми переводимо слово conversion як перетворення, а слово cast — як приведення.
3 Еліпсис — пропущена, але така, що мається на увазі конструкція.