
- •Тема 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.
4.8. Вказівники і посилання; масиви.
Початкуючі програмісти, як правило, працюють тільки із звичайними змінними. Для таких змінних пам'ять виділяється автоматичний при запуску програми або функції, в якій смороді оголошені, і віддаляється також автоматичний при завершенні програми або функції. Доступ до них організовується досить просто - по імені:
imemorycell_contents+= 10;
Інший спосіб діставання доступу до значення змінної полягає у використанні іншої змінної, яка містить її адресі. Припустимо, є змінна типу intс ім 'ям imemorycell_contents і змінна pimemory_cell_address, що є покажчиком на неї. Як ви вже знаєте, в C/C++ є оператор узяття адреси &, яка повертає адресі свого операнда. Тому вам буде неважко розібратися в синтаксисі привласнення однієї змінної адреси іншої змінної :
pimemorycell_address = &imemorycell_contents;
Змінні, які зберігають адреси інших змінних, називаються покажчиками. На малий. 9.1 схемний свідчень взаємозв 'язок між змінною і покажчиком на неї. Змінна imemorycell_contents представлена в пам' яті комп'ютера осередком з адресою 7751. Після виконання показаного вище рядка програми адреси цієї змінної буде присвоєна покажчику pimemorycell_address.
Звернення до змінної, чия адреси зберігається в іншій змінній, здійснюється шляхом приміщення перед покажчиком оператора *: *pimemorycell_address. Такий запис означає, що буде вироблений непрямий доступ до елементу пам' яті через ім 'я покажчика, що містить адресі осередку. Наприклад, якщо виконати дві показані нижче рядки, то змінна imemorycell_contentsпримет значення 20:
pimemorycell_address = &imemorycell_contents;
****pimemorycell_address = 20; :
З урахуванням того, що покажчик pimemorycell_address зберігає адресі змінної imemorycell_contents, обидва наступні рядки приведуть до одного і тому ж результату: привласненню змінної imemorycell_contents значення 20.
imemorycell_contents = 20;
****pimemorycell_address = 20;
Оголошення покажчиків
У мовах C/C++ усі змінні мають бути заздалегідь оголошені. Оголошення покажчика pimemorycell_address виглядає таким чином:
int *pimemorycell_address;
Символ * говорити про ті, що створюється покажчик. Цей покажчик адресуватиме змінну типу int. Слід підкреслити, що в C/C++ покажчики можуть зберігати адреси тільки змінних конкретного типу. Якщо робиться спроба присвоїти покажчику одного типу адресі
змінній іншого типу, виникне помилка або під година компіляції, або в годину
виконання програми.
Розглянемо приклад:
int *pi
float real_value = 98.26;
pi = &real_value;
У даному випадку змінна pi оголошена як покажчик типу int. Але в третьому рядку робиться спроба присвоїти цьому покажчику адресі змінної real_value, що має тип float.
У результаті компілятор видасть попередження виду "несумісні операнди в операції привласнення", а програма, що використовує покажчик pi, працюватиме неправильно.
Використання покажчиків
У наступному фрагменті програми за допомогою покажчиків виробляється обмін значень між змінними iresult_a і iresult_b :
int iresialt_a = 15, iresult_b = 37, itemporary;
int *piresult; piresult = &iresult_a; itemporary = *piresult;
****piresult = iresult_b;
iresult_b = itemporary;
Перший рядок містить традиційні оголошення змінних. При цьому в пам' яті комп'ютера резервуються три комірки для зберігання цілочисельних значень, шкірному осередку привласнюється ім 'я, і дві з них ініціалізувалися початковими значеннями. Припустимо, що змінна iresult_a зберігає свої значення в осередку з адресою 5328, змінна iresult_b пов'язана з осередком 7916, a itemporary - з осередком 2385 (малий. 9.2).
У іншому рядку програми створюється покажчик piresult. При цьому також відбувається резервування іменованого елементу пам' яті (скажімо, з адресою 1920). Оскільки ініціалізація не виробляється, то в даний момент покажчик містить порожнє значення. Якщо спробувати застосувати до нього оператор *, то компілятор не повідомить про помилку, але і не поверне ніякої адреси.
Покажчики на масиви
Як вже говорилося, покажчики і масиви логічно пов' язані один з одним. Згадаєте з попередньої глави, що ім 'я масиву є константою, що містить адресі першого елементу масиву. У зв'язку з цим значення імені масиву не може бути змінене оператором привласнення або яким-небудь іншим оператором. Наприклад, нижче створюється масив типу floatс ім 'ям ftemperatures :
####define IMAXREADINGS 20
float ftemperatures[IMAXREADINGS]; float *pftemp;
У наступному рядку оголошеному вище покажчику pftemp привласнюється адреси першого елементу масиву :
pftemp = ftemperatures;
Цей же вираз можна записати таким чином:
pftemp = &ftemperatures[0];
Проте, навіть якщо покажчик описів для зберігання адреси змінних типу float, усе одне наступні вирази недопустимі:
ftemperatures = pftemp;
&&&&ftemperatures[0]= pftemp;
Ці вирази нездійснимі, оскільки в них робиться спроба змінити константу ftemperatures і еквівалентне нею вираження &ftemperatures[0], що так само безглуздо, як і рядок
10 = pftemp;
Література
Катаев М.Ю. Объектно-ориентированное программирование: Учебное пособие. - Томск: Томский межвузовский центр дистанционного образования, 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 с. : ил. — Парал, тит. англ.