- •Парадигми програмування
- •8.080401: Інформаційні управляючі системи та технології
- •Тема 1. Парадигма імперативного програмування Лекція 1. Огляд парадигм програмування
- •1.1 Базові поняття і визначення
- •1.2 Класифікація парадигм програмування
- •Парадигми
- •Объектно-ориентированные возможности
- •Функциональные возможности
- •1.3 Огляд парадигми імперативного програмування
- •1.4 Програмування, кероване подіями
- •1.5 Узгоджене програмування і паралельні обчислення
- •1.6. Підтримка різних парадигм програмування в ms.Net
- •Тема 2. Парадигма об’єктно-орієнтованого програмування Лекція 2. Об'єктно-орієнтоване програмування та його реалізація в c# на платформі ms.Net
- •2.1 Основні принципи об’єктно-орієнтованого програмування
- •2.2 Чисто об'єктно-орієнтовані і гібридні мови програмування
- •2.3. Реалізація принципів ооп в мові c#
- •Тема 3. Програмування за прототипом і сценарне програмування Лекція 3. Програмування за прототипом і сценарне програмування
- •3.1 Програмування за прототипом
- •3.2 Сценарне програмування
- •Тема 4. Парадигма компонентного програмування Лекція 4. Компонентне програмування як розвиток об’єктного
- •4.1 Основні ідеї компонентної розробки
- •4.2 Компонентна об'єктна модель com (Component Object Model).
- •4.3. Технологія ActiveX – основні можливості
- •Лекція 5. Компонентне програмування в .Net
- •5.1 Основні концепції платформи ms.Net
- •5.1.1 Структура fcl
- •5.1.2 Загально мовне середовище виконання – clr – динамічна складова ms.Net Framework
- •5.1.3. Система типів даних в Microsoft .Net
- •Управління типами в cts
- •5.2. Розробка компонентів на платформі .Net
- •5.3. Поняття збірки і маніфесту в .Net
- •1. Створення dll-бібліотеки
- •2. Створення консольного проекту для тестування функції з бібліотеки.
- •3. Підключення проекту бібліотеки до консольного проекту.
- •4. Встановлення стартового проекту.
- •5. Створення Windows-проекту в тому самому рішенні.
- •6. Робимо проект стартовим і запускаємо на виконання. Результат:
- •7. Документування коду
- •Лекція 6. Візуальне програмування
- •6.1. Парадигма візуального програмування
- •1. Підключення до сервера бд
- •2. Створення власної бд і таблиць
- •3. Заповнення таблиці тестовими даними
- •4. Створення Windows-застосунку (форми)
- •5. Зв'язування елементів форми з джерелом даних
- •7. Створення запитів до даних і їх відображення на формі у вигляді таблиці (Grid)
- •Тема 5. Парадигма декларативного програмування Лекція 7. Основи парадигми декларативного програмування
- •7.1 Основи парадигми декларативного програмування
- •7.2 Основи функціонального програмування
- •Основи Лісп
- •7.3 Основи логічного програмування
- •7.4 Основи Пролог
- •Лекція 8. Основи xml
- •8.1. Визначення і структура xml-документа
- •8.2. Створення xml-документа
- •8.2.1. Структура xml-документа
- •8.3. Способи відображення xml-документа
- •8.4. Правила створення коректного xml-документа
- •8.4.1. Визначення коректного документа
- •8.4.2. Складові частини коректно сформованого хмl-документа
- •8.4.3. Додавання елементів в документ
- •8.4.4. Типи вмісту елементу
- •Лекція 9. Робота з xml в .Net
- •9.1. Класи для роботи з xml .Net
- •9.2. Читання і запис потоків даних Xml
- •9.2.1. Використання класу XmlReader
- •9.2.2. Методи читання даних
- •9.2.3. Контроль типів даних при читанні Xml-документа
- •9.3. Створення xml-документа в Visual Studio
- •Лекція 10. Створення xml-документів в .Net
- •10.1. Використання класу XmlWriter - запис потоків даних Xml
- •10.2. Використання dom в .Net
- •10.2.1. Читання xml-документа за допомогою XmlNodeList
- •10.2.2. Вставка елементів (вузлів) в xml- документ
- •10.3. Обробка атрибутів
- •10.3.1. Витягання атрибутів за допомогою XmlReader
- •10.3.2. Вставка атрибутів в документ за допомогою XmlWriter
- •Лекція 11. Елементи функціонального програмування в c#
- •11.1. Елементи функціонального програмування в c#
- •11.2. Делегати
- •11.3. Лямбда-вирази і лямбда-функції
- •Приклади
- •Лекція 12. Мова linq
- •2. Linq: узагальнення і інтерфейси
- •3. Основні операції запиту
- •4. Перетворення даних з linq
- •12.1. Основи мови linq
- •1.1 Джерело даних
- •1.2. Запит
- •1.3. Виконання запиту
- •12.2. Linq: узагальнення і інтерфейси
- •12.2.1. Змінні iEnumerable в запитах linq
- •12.3. Основні операції запиту
- •12.3.1. Визначення джерела даних
- •12.3.2. Фільтрація
- •12.3.3. Впорядкування
- •12.3.4. Угрупування
- •12.3.5. З'єднання
- •12.3.6. Вибір (Проектування)
- •12.4. Перетворення даних з linq
- •12.4.1. З'єднання декількох вхідних послідовностей в одну вихідну
- •12.4.2. Вибір підмножини кожного вихідного елементу
- •12.4.3. Перетворення об'єктів, що знаходяться в пам'яті, в xml
- •12.4.4. Виконання операцій над вихідними елементами
- •12.5. Зв'язки типів в операціях запиту
- •12.5.1. Запити, що не виконують перетворення вихідних даних
- •12.5.2. Запити, що виконують перетворення вихідних даних
- •12.5. 3. Дозвіл компілятору визначати відомості про типа
- •12.6. Синтаксис запиту або синтаксис методу
- •12.6.1. Методи розширення стандартних операторів запитів
- •12.6.2. Лямбда-вирази
- •Тема 7. Парадигма агентно-орієнтованого програмування Лекція 13. Агентно-орієнтоване програмування
- •13.1 Основні поняття агентно-орієнтованої парадигми програмування
- •1. За архітектурою побудови агентів і їх властивостями:
- •За функціональним призначенням:
- •3. За здатністю до мобільності:
- •3Адачні агенти
- •13.2 Мультиагентні інформаційні системи
- •1. Формальна мова опису системи моделей (ментальної, соціальної):
- •2. Інструменти перетворення звичайних програм у відповідні агентні програми.
- •13.3. Приклади практичного застосування агентної парадигми
- •3Асоби пошуку в Інтернет
- •Тема 8. Парадигма теоретичного програмування Лекція 14. Основні парадигми теоретичного програмування
- •Основна література
- •Додаткова література
12.4.4. Виконання операцій над вихідними елементами
Вихідна послідовність може не містити яких-небудь елементів або властивостей елементів з вихідної послідовності. Результатом може бути послідовність значень, що обчислюються з використанням вихідних елементів як вхідні аргументи. При виконанні наступного простого запиту виводиться послідовність рядків, значення яких розраховані на основі вихідної послідовності елементів типа double.
Примітка. Виклик методів у виразах запиту не підтримується, якщо запит буде перенесений в який-небудь інший домен. Наприклад, неможливо викликати звичайний метод C# в LINQ to SQL, оскільки в SQL Server для нього відсутній контекст. Проте, збережувані процедури можна зіставити методам і викликати останні:
class FormatQuery
{
static void Main()
{
// Джерело даних
double[] radii = { 1, 2, 3 };
// Запит
IEnumerable<string> query =
from rad in radii
select String.Format("Area = {0}", (rad * rad) * 3.14);
// Виконання запиту
foreach (string s in query)
Console.WriteLine(s);
Console.WriteLine("Натисніть будь-яку кнопку для виходу!");
Console.ReadKey();
}
}
/* На виході буде отримано:
Area = 3.14
Area = 12.56
Area = 28.26
*/
12.5. Зв'язки типів в операціях запиту
Для ефективного написання запитів слід розуміти, як типи змінних зв'язані один з одним в повній операції запиту. Розуміння цих зв'язків полегшить засвоєння прикладів LINQ і прикладів коду в документації. Більш того, можна буде уявити, що відбувається у фоновому режимі при неявній типізації змінних за допомогою var.
Операції запитів LINQ строго типізуються в джерелі даних, в самому запиті і при виконанні запиту. Тип змінних в запиті має бути сумісний з типом елементів в джерелі даних і з типом змінної ітерації в операторі foreach. Строга типізація гарантує перехоплення помилок під час компіляції, коли їх можна буде виправити перш, ніж з ними зіткнуться користувачі.
12.5.1. Запити, що не виконують перетворення вихідних даних
На рис. 12.4. показана операція запиту LINQ to Objects, що не виконує перетворення даних. Джерело містить послідовність рядків, результат запиту також є послідовністю рядків.
INCLUDEPICTURE
"http://www.intuit.ru/department/internet/mwebtech/10/08_04.gif"
\* MERGEFORMATINET
Рис. 12.4. Операція запиту LINQ to Objects, що не виконує перетворення даних
Зв'язки типів в операціях запиту (LINQ)
Аргумент типу джерела даних визначає тип змінної діапазону.
Тип вибраного об'єкту визначає тип змінної запиту. Тут name є рядком. Отже, змінна запиту є IEnumerable<string>.
Ітерація змінної запиту виконується в операторі foreach. Оскільки змінна запиту є послідовністю рядків, змінна ітерації також є рядком.
12.5.2. Запити, що виконують перетворення вихідних даних
На рис 12.5. показана операція запиту LINQ to SQL, що виконує просте перетворення даних. Як вхідні дані запит отримує послідовність об'єктів Customer і вибирає в результаті лише властивість Name. Оскільки Name є рядком, запит створює послідовність рядків як результат.
INCLUDEPICTURE
"http://www.intuit.ru/department/internet/mwebtech/10/08_05.gif"
\* MERGEFORMATINET
Рис. 12.5. Операція запиту LINQ to Objects, що виконує просте перетворення даних
Зв'язки типів в операціях запиту (LINQ)
Аргумент типу джерела даних визначає тип змінної діапазону.
Оператор select повертає властивість Name замість цілого об'єкту Customer. Оскільки Name є рядком, аргумент типа custNameQuery є string, а не Customer.
Оскільки custNameQuery є послідовністю рядків, змінна ітерації циклу foreach також має бути string.
На рис. 12.6 показано трохи складніше перетворення. Оператор select повертає анонімний тип, що захоплює лише двох членів вихідного об'єкту Customer.
INCLUDEPICTURE
"http://www.intuit.ru/department/internet/mwebtech/10/08_06.gif"
\* MERGEFORMATINET
Рис. 12.6. Операція запиту LINQ to Objects, що виконує складне перетворення даних
Аргумент типу джерела даних завжди є типом змінної діапазону в запиті.
Оскільки оператор select створює анонімний тип, змінна запиту має неявно типізуватися за допомогою var.
Оскільки тип змінної запиту неявний, змінна ітерації в циклі foreach також має бути неявною.
