- •Тема 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.
1.4. Системи і середовища програмування топ.
Об' єктно - орієнтоване програмування - це методологія програмування, яка базується на поданні програми у вигляді сукупності об' єктів, кожний із яких є реалізацією певного класу, а класи утворюють ієрархію на принципах успадкування.
У цьому визначенні можна вирізнити три частини.
1. ТОП використовує як елементи конструкції об' єктів, а не алгоритми.
2. Кожний об' єкт є реалізацією певного класу.
3. Класи організовані ієрархічно.
Лише в разі додержання всіх перелічених щойно вимог програма буде об' єктно - оріентованою.
Переваги об' єктного підходу
1. Об' єктний підхід дозволяє повною мірою використовувати виражальні можливості об' єктних та об' єктно - орієнтованих мов програмування:
С++ => використання ієрархії класів у процесі проектування.
2. Використання об' єктного підходу відчутно підвищує якість розробки в цілому та її фрагментів
3. Об' єктний підхід забезпечує побудову систем на основі стабільних проміжних описів, що значно спрощує процес внесення змін.
4. Об' єктний підхід зменшує ризик у розробці складних систем, насамперед завдяки тому, що процес інтеграції розтягується в часі життєвого циклу системи.
5. Об' єктний підхід зорієнтований на людське сприйняття світу.
1.5. Коротка характеристика по С++.
Структура програми. Правила Правої Руки.
Написання хороших програм вимагає розуму, смаку і терпіння.
[1] Колі ви програмуєте, ви створюєте конкретне представлення ідей вашого рішення деякої задачі. Нехай структура відбиває ці ідеї настільки явно, наскільки це можливо:
[a] Якщо ви вважайте "це" окремим поняттям, зробіть його класом.
[b] Якщо ви вважайте "це" окремим об' єктом, зробіть його об' єктом деякого класу.
[c] Якщо два класи мають загальними щось істотне, зробіть його базовим класом. Майже усі класи у вашій програмі матимуть щось загальне; заведіть (майже) універсальний базовий клас, і розробіть його найретельніше.
[2] Колі ви визначаєте клас, який не реалізує деякий математичний об' єкт, на зразок матриці або комплексного числа, або тип низького рівня, на зразок пов'язаного списку, то:
[a] Не використайте глобальні дані.
[b] Не використайте глобальні функції (не членуй).
[c] Не використайте відкриті дані -члени.
[d] Не використайте друзів, окрім як щоб уникнути [a], [b] чи [c].
[e] Не звертайтеся до даних- членів або інших об' єктів безпосередньо.
[f] Не поміщайте в клас "полі типу"; використайте віртуальні функції.
[g] Не використайте inline -функции, окрім як засіб істотної оптимізації.
Передусім, давайте напишемо програму, що виводить рядок видачі :
# #include
main()
{
cout << "Hello, world\n";
}
Рядок #include повідомляє компілятору, щоб він включивши стандартні можливості потоку введення і виводу, що знаходяться у файлі stream.h. Без цих описів вираження cout << "Hello, world" не мало б сенсу. Операція << ("поміститив") пише свій перший аргумент, в іншому випадку, рядок "Hello, world" в стандартний потік виведення cout.
Рядок - це послідовність символів, поміщена в подвійні лапки.
Інша частина програми
main()
{ .. } визначає функцію, названу main.
Кожна програма повинна містити функцію з ім 'ям main, і робота програми розпочинається з виконання цієї функції.
Звідки з'явилися вихідний потік cout і код, що реалізовує операцію виводу << Команда компіляції в C++ зазвичай називається CC.
Припустимо, що програма з "Hello, world" зберігається у файлі з ім 'ям hello.c, тоді ви можете її скомпілювати і запустити приблизно так ($ - системне запрошення) :
$ $ CC hello.c
$ $ a.out
Hello, world
$
a.out - це ім 'я виконуваного результату компіляції, що приймається за змовчуванням. Якщо ви хочете назвати свою програму, ви можете зробити це за допомогою опції - o:
$ $ CC hello.c - o hello
$ $ hello
Hello, world
$
Введення
Наступна (досить багатослівна) програма пропонує вам ввести число дюймів. Після того, як ви це зробите, вона надрукує відповідне число сантиметрів.
# #include
main()
{
int inch = 0; // inch - дюйм
cout << "inches";
cin >> inch;
cout << inch;
cout << " in = ";
cout << inch*2.54;
cout << " cm\n";
}
Перший рядок функції main() описує цілую змінну inch. Її значення прочитується за допомогою операції >> ("узяти з") над стандартним потоком введення cin. Після її запуску ваш термінал може виглядати приблизно так:
$ $ a.out
inches=12
12 in = 30.48 cm
$
У даному прикладі на кожну команду виводу доводитися один оператор; це занадто довго. Операцію виводу << можна застосовувати до її власного результату, так що останні чотири команди виводу можна було записати одним оператором:
cout << inch << " in = " << inch*2.54 << " cm\n";
Насправді, приведені вище програми написані на C++, "розширеному" операціями введення-виводу за допомогою використання бібліотек і включення файлів за допомогою #include.
Коментарі
Часто буває корисно вставляти в програму текст, який призначається в якості коментаря тільки для того, що читає програму людина, і ігнорується компілятором в програмі. У C++ це можна зробити одним з двох способів.
Символи /* починають коментар, що закінчується символами */. Уся ця послідовність символів еквівалентна символу пропуску (наприклад, символу пропуску). Це найкорисніше для багаторядкових коментарів і вилучення частин програми при редагуванні, проте слід пам'ятати, що коментарі /* */ не можуть бути вкладеними.
Символи // починають коментар, який закінчується у кінці рядка, на якому смороді з'явилися. Знову, уся послідовність символів еквівалентна пропуску. Цей спосіб найбільш корисний для коротких коментарів. Символи // можна використати для того, щоб закоментувати символи /* або */, а символами /* можна закоментувати //.
Типи і Опису
Кожне ім 'я і кожне вираження має тип, що визначає операції, які можуть над ними робитися. Наприклад, опис
int inch; визначає, що inch має тип int, тобто, inch є цілою змінною.
Опис - це оператор, який вводити ім 'я в програмі. Опис задає тип цього імені. Тип визначає правильне використання імені або вираження. Для цілих визначені такі операції, як +, -, * і /.
Після того, як включень файл stream.h, об' єкт типу int може також бути іншим операндом <<, коли перший операнд ostream.
Тип об' єкту визначає не лише ті, які операції можуть до нього застосовуватися, але і сенс цих операцій. Наприклад, оператор cout << inch << " in = " << inch*2.54 << " cm\n";
правильно обробляє чотири вхідні значення по- різному. Рядки друкуються буквально, тоді як ціле inch і значення з плаваючою точкою inch*2.54 перетворяться з їх внутрішнього представлення у відповідне для людського ока символьне представлення.
Основні типи
Основні типи, що найбільш безпосередньо відповідають засобам апаратного забезпечення, такі:
char short int long float double
Перші чотири типи (char short int long) використовуються для представлення цілих, останні два (int long) - для представлення чисел з плаваючою точкою.
Змінна типу char має розмір, природний для зберігання символу на машині (зазвичай, байт), а змінна типу int має розмір, що відповідає цілій арифметиці на машині (зазвичай, слово). Діапазон цілих чисел, які можуть бути представлені типом, залежить від його розміру.
Література
Катаев М.Ю. Объектно-ориентированное программирование: Учебное пособие. - Томск: Томский межвузовский центр дистанционного образования, 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 с. : ил. — Парал, тит. англ.
