Відкритий міжнародний університет розвитку людини «УКРАЇНА»
Перемикач режиму перегляду сайту
Збільшений розмір шрифту Великий розмір шрифту Нормальний розмір шрифту
Чорно-білий В сірих відтінках Синьо-голубий
Нормальний режим
+38-067-406-53-92
Приймальна комісія
відділ оргроботи
+38-067-503-64-52
+38-067-328-28-22
Viber відділу обліку
+38-067-500-68-36
Київ, вул. Львівська, 23 office@uu.ua

Дисципліна: Основи об'єктно-орієнтованого програмування

Кількість годин (кредитів ЄКТС): 240 (8)

 

Мета навчальної дисципліни: закріплення у студентів базових знань по об'єктно-орієнтованому програмуванню. Засвоєння основних принципів об'єктного підходу, ознайомлення з історією об’ектно-орієнтованого програмування і його еволюцією на базі існуючих парадигм програмування. Студенти повинні освоїтися з термінологією об'єктно-орієнтованого програмування і навчитися використовувати переваги об'єктно-орієнтованого програмування для комп'ютерного моделювання реальних і концептуальних систем.

 

Результати навчання за навчальною дисципліною:

знати:

- принципи ООП в історичному контексті;

- парадигма ООП;

- об'єктно-орієнтований підхід до створення програм;

- що таке клас;

- що таке об'єкт;

- зв'язок між об'єктами;

- переваги і цілі ООП:

o  природність;

o  надійність;

o  повторне використання;

o  супровід;

o  здібність до розширення;

- інкапсуляція;

- спадкоємство:

o  множинне спадкоємство;

o  абстракції;

- поліморфізм;

- інтерфейси;

- об'єкти на реальному світі;

- використання попередніх технологій в ООП.

 

вміти:

- розбити вихідну програму на взаємозв'язаних логічних модулі відповідно до принципів ООП;

- користуватися середовищем програмування Visual Studio;

- закодувати програму і отримати виконуваний модуль.

 

Зміст дисципліни (тематика):

  1. Об'єктно-орієнтоване програмування в історичному контексті. Попередники об'єктно-орієнтованого програмування, машинні коди, асемблер, процедурні мови, модульне програмування.
  2. Технології програмування. Лінійне програмування, «макаронний стиль», процедури і функції модулі. Недоліки процедурного і модульного програмування.
  3. Парадигма ООП. Розширення модульного підходу. Заховання реалізації. Об'ектно-орієнтований підхід до створення програм, спадкоємство, поліморфізм. Багатократне використання.
  4. Переваги і цілі об'єктно-орієнтованого підходу. Природність, надійність, можливість повторного використання, зручність у супроводі, здатність удосконалюватися, зручність періодичного випуску (видання) нових версій.
  5. Типи в ООП. Необхідність використання різних типів. Достатній набір типів. Призначені для користувача типи. Розподіл пам'яті. Контроль типів компілятором. Клас – це тип.
  6. Клас як вираження парадигми ООП. Призначення класу. Властивості, поведінка. Оголошення класу. Члени класу. Видимість класу. Заховання реалізації. Клас – креслення для об'єкту.
  7. Методи. Реалізація поведінки класу. Процедури і функції. Видимість методів. Інтерфейс класу. Підтримка інкапсуляції. Виклик методу як члена класу. Назва методу, список змінних, тіло методу, повертане значення. Сигнатура методу. Використання повертаного значення. Конструктор і деструкція.
  8. Змінні, параметри, аргументи, повертані значення. Оголошення змінних. Використання методів для забезпечення поведінки класів. Вирішення конкретних завдань за допомогою методів. Головний метод. Допоміжні методи.
  9. Доступ до методів. Основні способи доступу: private, protected, public. Необхідність різних способів доступу.
  10. Об'єкти. Універсальне призначення об'єктів. Реалізація класу. Виконуваний фрагмент програми в пам'яті. Створення і руйнування об'єкту. Конструктори і деструкції. Зв'язок між об'єктами. Поведінка і стан об'єкту. Реальні й абстрактні об'єкти. Об'єкти допомагають розуміти складні речі. Об'єкти реального світу. Атрибути і поведінка об'єктів.
  11. Ініціалізація змінних. Використання конструктора для ініціалізації. Ініціалізація при оголошенні змінної. Осмислене ім'я змінної (неявний коментар). Привласнення значення. Допустимий діапазон значень.
  12. Доступ до змінних. Основні специфікатори доступу: private, protected, public. Необхідність різних способів доступу.
  13. Інкапсуляція. Три базові поняття ООП. Заховання внутрішнього вмісту. Обмеження доступу до змінних. Необхідність інкапсуляції для надійного програмування інтерфейс-класу. Об'єднання атрибутів і методів. Захист. Управління доступом. Повторне використання.
  14. Абстракція. Процес спрощення складного завдання. Абстракція як спосіб виділення загальних принципів поведінки. Захист об'єктів за допомогою абстрактного типа даних. Розподіл відповідальності. Обмеження абстракції.
  15. Спадкоємство. Друге найважливіше поняття. Навіщо використовувати спадкоємство. Надійний спосіб розширення можливостей, скорочення часу написання програм, зручність відладки. Просте спадкоємство. Багатократне спадкоємство. Множинне спадкоємство. Механіка спадкоємства. Перевизначення методів. Рівні доступу. Нові властивості і методи.
  16. Стосунки "Is-As" ("Є") і "Has-As" ("Містить"). Спадкоємство й агрегація. Коли використовувати спадкоємство. Спадкоємство реалізації. Спадкоємство для відмінності. Спадкоємство для заміни типів. Ієрархія спадкоємства. Переваги й обмеження. Рекурсивні методи. Вживання спадкоємства. Руйнування інкапсуляції при спадкоємстві.
  17. Поліморфізм. Різна поведінка одного методу. Поліморфізм включення. Перевизначення методів. Перевантаження методів. Поліморфізм у дії. Скріплення. Поліморфізм часу виконання.
  18. Інтерфейси. Необхідність інтерфейсу. Перетворення до класу інтерфейсу. Інтерфейси і спадкоємство.
  19. Технологія створення застосувань у C#. Компілятор. Компоновка застосувань. Відладчик. Можливості Visual Studio Express.
  20. Реалізація класів у C#. Методи в C#.
  21. Перевантаження методів в C#.
  22. Інкапсуляція в C#. Властивості. Інкапсуляція на основі методів читання і модифікації. Інкапсуляція на основі властивостей класу. Внутрішнє представлення властивостей у С#. Контекст операторів get і set для властивостей. Властивості, доступні лише для читання, і властивості, доступні лише для запису. Статичні властивості.
  23. Підтримка спадкоємства в С#. Просте і багаторівневе спадкоємство. Множинне спадкоємство в C# не підтримується. Вибір відповідного спадкоємства. Інтерфейси – аналог множинного спадкоємства. Управління створенням базових класів за допомогою base. Множинні базові класи. Ключове слово protected. Заборона спадкоємства: ізольовані класи. Модель локалізації/делегування. Вкладені визначення типів.
  24. Підтримка поліморфізму в С#. Ключові слова virtual і override. Ключове слово sealed. Абстрактні класи. Примусовий поліморфізм: абстрактні методи. Можливість приховувати члени.
  25. Абстрактні класи Примусовий поліморфізм – абстрактні методи. Можливість приховувати члени.
  26. Правила приведення типів у С#. Розпізнавання типів. Приведення числових типів.
  27. Парціальні типи С#.
  28. Документування вихідної коди в С# за допомогою XML. Символи форматування в XML-коді. Трансформація XML-кода.
  29. Цикли існування об'єктів. Основні відомості про існування об'єктів. Класи, об'єкти і заслання. Генерація об'єктів. Збірка сміття. Об'єкти з фіналізацією. Об'екти зі звільненням ресурсів.
  30. Інтерфейси і колекції в C#. Визначення інтерфейсів у С#. Реалізація інтерфейсів у С#. Інтерфейси в порівнянні з абстрактними базовими класами. Виклик членів інтерфейсу на рівні об'єкту. Здобуття інтерфейсних заслань: ключове слово as. Здобуття інтерфейсних заслань: ключове слово is. Інтерфейси як параметри. Інтерфейси як повертані значення. Масиви інтерфейсних типів. Явна реалізація інтерфейсу. Вирішення конфліктів імен. Побудова ієрархії інтерфейсів. Інтерфейси з безліччю базових інтерфейсів.
  31. Інтерфейси з простору імен System.Collections. Інтерфейс ICollection. Інтерфейс Dictionary. Інтерфейс IDictionaryEnumerator. Інтерфейс IList.
  32. Класи із простору імен System.Collections. Робота з типом ArrayList. Робота з типом Queue. Робота з типом Stack.
  33. Інтерфейси зворотного виклику.
  34. Визначення делегата в С#. Типа делегата NET. Визначення делегата в С#. Базові класи System.MulticastDelegate і System.Delegate. Простий приклад делегата. Дослідження об'єкта делегата. Реалізація групових викликів. Делегати в ролі параметрів. Аналіз програмної коди делегування. Коваріантність делегатів. Події в C#. Глибинний механізм подій. Прийом подій, що поступають.

 

Види робіт: лекційні заняття, практичні заняття, модульні контрольні роботи, самостійна робота студентів.