csbc-edu.github.io

Об'єктно-орієнтоване програмування

2020-2021 н. р.

Викладач: Станіслав Віталійович Марченко


Курс викладається 2 семестри:


Дата Слайди Домашня робота Матеріали
      Огляд курсу;
Інструкція з оформлення звіту
Репозиторій з лекційними проектами
04.09. Тема 01. Вступ до об’єктно-орієнтованого програмування
Базові концепції об’єктно-орієнтованого програмування;
Огляд платфоми .NET;
Структура програми мовою C#;
Система типів мови програмування C#;
Практична робота 01. Знайомство з платформою .NET
Книга "Объектно-ориентированное мышление" (Вайсфельд, 2014)
Winderton про ООП
16.09. Тема 02. Знайомство з базовим синтаксисом мови програмування C#
Управляючі інструкції мови програмування C#;
Математичні обчислення за допомогою класу Math
Робота з масивами
Програмні засоби для роботи з текстом (чорновик)
Практична робота 02. Знайомство з базовим синтаксисом мови програмування C#
29.09. Тема 03. Фундаментальні принципи ООП. Інкапсуляція
Базова робота з класами;
Інкапсуляція та приховування даних у мові C#;
Практики cтворення класів та об'єктів
Практична робота 03. Фундаментальні принципи ООП. Інкапсуляція Дизайн и эволюция свойств в C#
06.10. Тема 04. Фундаментальні принципи ООП. Взаємодія класів
Види зв'язків між класами
Наслідування на прикладі структурованої обробки винятків (чорновик)
Поліморфізм та його різновиди
Перетворення типів та поліморфізм підтипів (чорновик)
Фундаментальні принципи ООП. Взаємодія класів
20.10. Тема 05. Фундаментальні принципи ООП. Абстрагування даних та параметричний поліморфізм
Абстрактні класи;
Інтерфейси;
Вбудовані інтерфейси .NET;
Делегати та анонімні типи;
Параметричний поліморфізм. Узагальнені типи даних
Практична робота 05. Абстрагування даних та параметричний поліморфізм
03.11. Тема 06. Принципи побудови якісного об’єктно-орієнтованого коду
Додатковий погляд на інкапсуляцію;
Філософія об’єктно-орієнтованого проєктування програмного забезпечення;
SOLID-принципи розробки об’єктно-орієнтованого коду
ІНДЗ-6. Принципи побудови якісного об’єктно-орієнтованого коду
Чому SOLID — важлива складова мислення програміста;
Рефакторинг - запахи кода
Фінальний проєкт з лекції
Забытая история ООП
Відеоуроки "Making Your C# Code More Object-oriented, 2016"
10.11. Тема 07. Колекції в мові програмування C#
Огляд АРІ колекцій
Стандартні структури даних на платформі .NET;
Практична робота 06. Колекції в мові програмування C# (+ІНДЗ 7-10) System.Collections in .NET Core 3;
Еволюція АРІ колекцій у .NET Framework;
Сравнение коллекций в .NET;
Доступні тільки для читання та спостережувані колекції (планується в наступному навчальному році)
17.11. Тема 08. Технологія LINQ та організація доступу до даних
Огляд технології LINQ;
Фільтрування, впорядкування та проєктування даних;
З’єднання, групування та агрегування даних
Практична робота 07. Технологія LINQ та організація доступу до даних The 6 best practices for writing LINQ extension methods
На наступний навчальний рік планується розгляд LINQ to XML
Принципы работы IQueryable и LINQ-провайдеров данных
Репозиторій до курсу
24.11. Тема 09. Основи модульного тестування об’єктно-орієнтованого коду
Принципи написання модульних тестів;
Практична робота 08. Основи модульного тестування об’єктно-орієнтованого коду Unit Testing Best Practices;
Курси Pluralsight;
01.12. Тема 10. Файловий ввід-вивід у мові програмування C#
Файловий ввід-вивід;
Потоки вводу-виводу;
Серіалізація об'єктів
Практична робота 09. Файловий ввід-вивід у мові програмування C#
II семестр
15.02. Тема 11. Асинхронне виконання коду
Загальні відомості про конкурентне виконання коду;
Асинхронні операції на базі синтаксису async-await;
Бібліотека TPL (Task Parallelism Library)
Практична робота 10. Асинхронне виконання коду C# Async/Await/Task Explained (Deep Dive);
Репозиторій до книги Concurrency in C# Cookbook;
ValueTask<TResult> — почему, зачем и как?;
C# Async Antipatterns;
ConfigureAwait: часто задаваемые вопросы;
Асинхронность в C#. Разрушение легенд;
Youtube-плейліст з мережевого програмування мовою C# (англ)
01.03. Тема 12. Паралельне виконання коду
Паралельна обробка даних;
Паралельна обробка даних за допомогою Parallel LINQ;
Бібліотека TPL Dataflow (чорновик)
Практична робота 11. Паралельне виконання коду
15.03. Тема 13. Додаткові питання конкурентного виконання коду
Потоки: синхронізація та планування;
Конкурентні колекції даних;
Асинхронні потоки;
Практична робота 12. Додаткові питання конкурентного виконання коду Открытая лекция «weak memory models»
Основи реактивного програмування (плануться в 2022 році)
09.04. Тема 14. Конструювання графічного інтерфейсу користувача на базі технології Windows Forms
Огляд форм Windows​ (чорновик);
Панелі інструментів, меню та події (чорновик)​​;
Технологія прив'язування даних (чорновик)​​
Практична робота 13. Конструювання графічного інтерфейсу користувача на базі технології Windows Forms Контейнеры в Windows Forms;
Элементы управления;
Меню и панели инструментов
23.04. Тема 15. Основи роботи з технологією Entity Framework
Огляд технології Entity Framework. Робота з існуючою базою даних​​;
Підхід Entity Framework: Code First​​
Практична робота 14. Основи роботи з технологією Entity Framework Entity Framework Core/Windows Forms tips and tricks;
Руководство по Entity Framework Core (metanit)
07.05. Тема 16. Створення реляційної моделі даних та доступ до даних з бази
Робота з контекстом бази даних (-);
Формування та впровадження реляційної моделі даних (-)​​;
Базові CRUD-операції за допомогою технології LINQ (-)​​;
Fluent API та розширений доступ до даних (-);
Сортування та фільтрація даних з бази (-);
Складені запити та LINQ (-)
Практична робота 15. Створення реляційної моделі даних та доступ до даних з бази