- •Парадигми програмування
- •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. Основні парадигми теоретичного програмування
- •Основна література
- •Додаткова література
10.2.2. Вставка елементів (вузлів) в xml- документ
Раніше розглядався приклад XmlTextWriter, який створює новий документ. Обмеження полягало у тому, що він не вставляв вузол в поточний документ. Це можна зробити за допомогою класу XmlDocument.
Створимо в обробнику кнопки Запис код, що Додає в список і файл нову книгу (елемент BOOK).
private void btmSaveXML_Click(object sender, EventArgs e)
{
// змінити дорогу доступу, як потрібний існуючою структурою
doc.Load("book2.xml");
// створити новий елемент 'book'
XmlElement newBook = doc.CreateElement("BOOK");
// створити новий елемент 'title'
XmlElement newTitle = doc.CreateElement("TITLE");
newTitle.InnerText = "Основи інженерії якості ПС";
newBook.AppendChild(newTitle);
// створити новий елемент author
XmlElement newAuthor = doc.CreateElement("AUTHOR");
newAuthor.InnerText = "Коротун Т.";
newBook.AppendChild(newAuthor);
XmlElement newName = doc.CreateElement("AUTHOR");
newAuthor.InnerText = "Коваль Г.";
newBook.AppendChild(newAuthor);
// створити новий елемент Binding
XmlElement newBind = doc.CreateElement("BINDING");
newBind.InnerText = "Академперіодіка";
newBook.AppendChild(newBind);
//
XmlElement newPages = doc.CreateElement("PAGES");
newPages.InnerText = "650";
newBook.AppendChild(newPages);
//
XmlElement newPrice = doc.CreateElement("PRICE");
newPrice.InnerText = "150";
newBook.AppendChild(newPrice);
// додати до поточного документа
doc.DocumentElement.AppendChild(newBook);
// записати doc на диск
XmlTextWriter tr = new XmlTextWriter("booksEdit.xml", null);
tr.Formatting = Formatting.Indented;
doc.WriteContentTo(tr);
tr.Close();
// завантажити listBox1 зі всіма заголовками, включаючи новий
listBox1.Items.Clear();
XmlNodeList nodeLst = doc.GetElementsByTagName("TITLE");
foreach (XmlNode node in nodeLst) listBox1.Items.Add(node.InnerText);
}
При виконанні цього коду буде отримана функціональність попереднього прикладу, але у вікні списку з'явилася одна додаткова книга "Основи інженерії якості ПС". Клацання миші на заголовку цієї книги приведе до виведення такої ж інформації, як і для інших книг.
В цьому прикладі спочатку створюється новий елемент BOOK:
XmlElement newBook = doc.CreateElement("BOOK");
Метод CreateElement має три перенавантажені версії, які дозволяють визначити ім'я елементу, ім'я і простір імен URI, і, нарешті, prefix (префікс), lоcalname (локальне ім'я) і namespace (простір імен).
Потім додаються нові елементи, вкладені в елемент BOOK.
// створити новий елемент 'title'
XmlElement newTitle = doc.CreateElement("TITLE");
newTitle.InnerText = "Основи інженерії якості ПС";
newBook.AppendChild(newTitle);
Тут знову створюється новий об'єкт на основі XmlElement (newTitle). Призначимо властивості InnerText заголовок нової книги і додаємо нащадок до елементу book. Потім це повторюється для решти елементів book.
Нарешті, ми додаємо елемент newBook до вузла doc.DocumentElement. Це той же рівень, що і в усіх інших елементів book. Ми замінили існуючий документ новим, на відміну від XmlWriter, де можна було лише створити новий документ. Останнє, що потрібно зробити, це записати новий документ XML на диск. В даному прикладі ми створюємо новий XmlTextWriter і передаємо його в метод WriteContentTo. Не забудьте викликати метод Close на XmlTextWriter, аби скинути вміст внутрішніх буферів і закрити файл.
Методи WriteContentTo і WriteTo отримують XmlTextWriter як параметр. WriteContentTo зберігає поточний вузол і всіх нащадків в XmlTextWriter, тоді як WriteTo зберігає поточний вузол. Оскільки doc є об'єктом на основі XmlDocument, він представляє весь документ і тому буде збережений. Можна було б також використовувати метод Save. Він завжди зберігатиме весь документ. Save має чотири перенавантажені версії. Можна визначити рядок з ім'ям файлу і шляхом доступу, об'єкт на основі класу Stream, об'єкт на основі класу TextWriter, або об'єкт на основі XmlWriter. Саме це було використано при виконанні прикладу. Додамо новий елемент в кінець списку:
listBox1.Items.Clear();
XmlNodeList nodeLst = doc.GetElementsByTagName("TITLE");
foreach (XmlNode node in nodeLst) listBox1.Items.Add(node.InnerText);
В цьому прикладі вміст елементів формувався просто в обробнику кнопки.
Наступний приклад демонструє створення XML-елементів, вміст яких береться з текстових полів форми при натисненні кнопки Добавить:
Обробник кнопки Добавить:
private void btmAdd_Click(object sender, EventArgs e)
{
// змінити дорогу доступу, як потрібний існуючою структурою
doc.Load("book2.xml");
// створити новий елемент 'book'
XmlElement newBook = doc.CreateElement("BOOK");
// створити новий елемент 'title'
XmlElement newTitle = doc.CreateElement("TITLE");
newTitle.InnerText = txtName.Text;
newBook.AppendChild(newTitle);
// створити новий елемент author
XmlElement newAuthor = doc.CreateElement("AUTHOR");
newAuthor.InnerText = txtAuthor1.Text;
newBook.AppendChild(newAuthor);
if (txtAuthor2.Text.Length != 0)
{
XmlElement newName = doc.CreateElement("AUTHOR");
newAuthor.InnerText = txtAuthor2.Text;
newBook.AppendChild(newAuthor);
}
// створити новий елемент Binding
XmlElement newBind = doc.CreateElement("BINDING");
newBind.InnerText = txtPub.Text;
newBook.AppendChild(newBind);
//
XmlElement newPages = doc.CreateElement("PAGES");
newPages.InnerText = txtPages.Text;
newBook.AppendChild(newPages);
//
XmlElement newPrice = doc.CreateElement("price");
newPrice.InnerText = txtPrice.Text;
newBook.AppendChild(newPrice);
// додати до поточного документа
doc.DocumentElement.AppendChild(newBook);
// записати doc на диск
XmlTextWriter tr = new XmlTextWriter("booksEdit.xml", null);
tr.Formatting = Formatting.Indented;
doc.WriteContentTo(tr);
tr.Close();
// завантажити listBox1 зі всіма заголовками, включаючи новий
listBox1.Items.Clear();
XmlNodeList nodeLst = doc.GetElementsByTagName("TITLE");
foreach (XmlNode node in nodeLst) listBox1.Items.Add(node.InnerText);
}
Якщо потрібно створити документ із самого початку, можна використовувати клас XmlTextWriter. Можна також використовувати XmlDocument. Який з них вибрати? Якщо дані, які бажано помістити в XML, доступні і готові для запису, то підійде клас XmlTextWriter. Проте, якщо необхідно створити документ XML поступово, вставляючи вузли в різні місця, то найбільш прийнятним буде використання XmlDocument.
