- •Парадигми програмування
- •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. Основні парадигми теоретичного програмування
- •Основна література
- •Додаткова література
9.2.3. Контроль типів даних при читанні Xml-документа
Клас XmlReader також дозволяє читати дані із строгим контролем типів. Для цього використовуються методи ReadElementContentAs... ReadElementContentAsDouble(), ReadElementContentAsBoolean() та інші. Далі показано як можна прочитати значення в десятковому форматі і виконати обчислення. У прикладі вибирається значення ціни книги, яке збільшується на 25%.
Створимо ще одну кнопку з написом New Price, а в її обробнику напишемо код:
private void btnNewPrice_Click(object sender, EventArgs e)
{
//Обробник кнопки NewPrice - контроль типів
richTextBox1.Clear();
XmlReader rdr = XmlReader.Create("book2.xml");
while (rdr.Read())
{
if (rdr.NodeType == XmlNodeType.Element)
{
if (rdr.Name == "PRICE")
{
decimal price = rdr.ReadElementContentAsDecimal();
richTextBox1.AppendText("Curent Price = "+ price+ "\r\n");
price += price * (decimal)0.25;
richTextBox1.AppendText("New Price = " + price + "\r\n\r\n");
}
else if (rdr.Name=="TITLE")
richTextBox1.AppendText(rdr.ReadElementContentAsString()+"\r\n");
}
}
rdr.Close();
}
Якщо це значення не може бути перетворене до необхідного типа, збуджується виключення FormatException.
Компілюємо і запускаємо на виконання наш проект.
В результаті отримуємо повідомлення про помилку. Причина – текст елементу має вигляд:
<PRICE>$10.95</PRICE>
Виправимо всі елементи <PRICE> 10.95</PRICE>
а документ збережемо під ім'ям ("book3.xml");
В результаті отримаємо:
9.3. Створення xml-документа в Visual Studio
Для створення XML-файла в середовищі Visual Studio потрібно в меню File вибрати New->File. У вікні створення вибрати Xml-файл.
Відкриється Xml-редактор, в якому можна вводити елементи Xml. Редактор автоматично перевіряє помилки і підставляє закриваючі теги. Створений файл можна зберегти в потрібному місці на диску командою SaveXmlFile.xml As...
Лекція 10. Створення xml-документів в .Net
План
1. Використання класу XmlWriter - запис потоків даних Xml
2. Використання DOM в .Net
2.1. Читання XML-документа за допомогою XmlNodeList
2.2. Вставка елементів (вузлів) в XML- документ
3. Обробка атрибутів
3.1. Витягання атрибутів за допомогою XmlReader
3.2. Вставка атрибутів в документ за допомогою XmlWriter
10.1. Використання класу XmlWriter - запис потоків даних Xml
Таблиця 10.1. Основні класи читання і запису даних XML
XmlReader
|
Абстрактний клас, що виконує читання і забезпечує швидку доставку некерованих даних XML. Клас є однонаправленим синтаксичним аналізатором |
XmlWriter
|
Абстрактний клас, що виконує запис даних у вигляді потоку або файлу |
XmlTextReader
|
Реалізація класу XmlReader. Забезпечує однонаправлений потоковий доступ до даних XML |
XmlTextWtiter
|
Реалізація класу Xml.Writer. Забезпечує швидку однонаправлену генерацію потоків XML |
Для роботи з даними кожен з класів надає необхідні методи.
Клас XmlWriter дозволяє записувати Xml-код в потік даних, файл, в клас StringBuilder, TextWriter та інші об'єкти XmlWriter.
Клас легко конфігурується, що дозволяє визначити потребу в допоміжних установках, таких як відступи, лапки, простори імен і інше. Така конфігурація виконується з використанням об'єкту XmlWriterSettings.
Створимо обробник кнопки WriteXml прикладу попередньої лекції.
При натисненні кнопки WriteXml виконується створення елементів XML-документа і запис його в новий файл "booknew.xml";
private void btmWriteXml_Click(object sender, EventArgs e)
{
// запис у файл
XmlWriterSettings setting = new XmlWriterSettings();
setting.Indent = true;
XmlWriter writer = XmlWriter.Create("booknew.xml", setting);
writer.WriteStartDocument();
//початок створення єлементов
writer.WriteStartElement("Catalog");
writer.WriteStartElement("book");
writer.WriteElementString("title", "Основи інженерії якості програмних систем");
writer.WriteStartElement("author");
writer.WriteElementString("name", "Коротун Т.М.");
writer.WriteElementString("name", "Коваль Г.І.");
writer.WriteEndElement();
writer.WriteElementString("price", "120.00");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
//Очищення потоку
writer.Flush();
writer.Close();
}
В цьому прикладі створюється новий XML-файл booknew.xml, у який записуються дані про нову книгу. Клас XmlWriter перезаписує існуючий вміст файлу новим вмістом. Для вставки нових елементів використовуються методи класу XmlWriter. Для створення об'єкту XmlWriter використовується статичний метод Create(). У прикладі рядок, що представляє ім'я файлу, передається як параметр разом з екземпляром класу XmlWriterSettings.
Клас XmlWriterSettings має властивості, які керують способом створення Xml-докуметів. Наприклад, властивість Indent – булеве значення, яке визначає, чи повинні елементи виводитися з відступом. Властивість IndentChars містить рядок символів, використовуваний для відступу. За умовчанням це рядок з двох символів. Властивість NewLine служить для визначення символу нового рядка.
Основні методи класу XmlWriter
WriteStartDocument()
|
додає оголошення документа. Після цього можна додавати дані. |
WriteEndDocument()
|
визначає кінець документа (вставляє тег кінця) |
WriteStartElement()
|
додає новий елемент |
WriteElementString
|
вставляє рядок, вказуючий ім'я і вміст елементу
|
WriteEndElement
|
визначає кінець елементу (вставляє тег кінця)
|
Окрім цих, існують інші методи, що дозволяють виводити спеціальні розділи і атрибути документа.
В результаті буде створений такий файл:
<?xml version="1.0" encoding="utf-8"?>
<Catalog>
<book>
<title>Основи інженерії якості програмних систем</title>
<author>
<name>Коротун Т.М.</name>
<name>Коваль Г.І.</name>
</author>
<price>120.00</price>
</book>
</Catalog>
Цей файл містить XML-документ, що описує одну книгу. Такий метод придатний для створення нових документів. А що робити, якщо необхідно додати елемент в існуючий XML-документ? Наприклад додати нову книгу в каталог. Для цього потрібно скористатися класами DOM.
