Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
c#_theoretical_2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
750.08 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД

«УЖГОРОДСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ»

МАТЕМАТИЧНИЙ ФАКУЛЬТЕТ

Матеріали лекцій

з дисципліни «Програмування»

для студентів ІІ курсу спеціальності «Прикладна математика»

Модуль 3

Організація об’єктно-орієнтованих програм у мові С# та організація даних із використанням класів BCL.

Ужгород-2012

Програма модуля

Тема

Кількість годин

1

Колекції

Організація абстрактних структур даних (простір імен System.Collections). Деякі інтерфейси неузагальнених колекцій (ICollection, IList, IDictionary). Деякі класи неузагальнених колекцій (Stack, Queue, ArrayList, Hashtable). Узагальнені колекції.

2

2

Файловий ввід-вивід

Організація файлового вводу-виводу (простір імен System.IO, клас Stream). Байтовий ввід-вивід у файл (клас FileStream). Двійковий ввід-вивід у файл (класи BinaryReader та BinaryWriter). Символьний ввід-вивід у файл (класи StreamReader та StreamWriter). Організація роботи із файлами даних стандарту XML (простір імен System.Xml, класи XMLElement та XMLDocument, класи XMLTextReader та XMLTextWriter).

3

3

Делегати та події

Клас delegate. Делегати в якості параметрів. Анонімні методи та узагальнені делегати System.Action, System.Func. Організація об’єктно-орієнтованих програм (комбіновані делегати та шаблон «спостерігач», визначення та реалізація подій).

4

Тема 1 Колекції Структури даних

Структура даних − програмна одиниця, яка дозволяє зберігати та обробляти множину (сукупність) однотипних або логічно-зв’язаних даних. Структура даних є програмною реалізацією деякої абстрактної структури даних. Найбільш поширені абстрактні структури даних − масив, список, стек, черга, бінарне дерево, хеш-таблиця, множина. Більшість із цих абстрактних структур даних передбачає динамічну зміну свого розміру − при необхідності у структуру даних можна додати новий елемент або видалити існуючий. Відповідні структури даних називають динамічними структурами даних.

Будь-яка програма призначена для обробки даних. Для різних задач необхідні різні способи збереження та обробки даних, а тому вибір структур даних повинен передувати створенню алгоритмів та ґрунтуватися на вимогах до функціональності та швидкодії програми. Вибір тієї чи іншої структури залежить від того, що потрібно робити з даними у програмі. Наприклад при необхідності часто вставляти та видаляти елементи із середини послідовності варто використовувати список, а не масив. Якщо ж включення елементів здійснюється здебільшого на початок послідовності − використовується стек. Тому вивчення та грамотне застосування структур даних є необхідними умовами створення ефективних програм.

Саме тому у бібліотеках більшості сучасних об’єктно-орієнтованих мов програмування присутні стандартні класи, які реалізують основні абстрактні структури даних. У мові C# такі класи називаються колекціями або контейнерами. Використання колекцій дозволяє скоротити строки розробки програм та підвищити їх надійність.

У бібліотеці .NET визначено багато стандартних класів, які реалізують більшість згаданих абстрактних структур даних. Основні простори імен, в яких реалізовані ці класи, − System.Collections, System.Collections.Specialized та System.Collections.Generic.

Неузагальнені колекції

У просторі імен System.Collections визначено неузагальнені колекції, які є структурами даних загального призначення − дозволяють маніпулювати сукупністю різнотипних об’єктів. Також у просторі імен System.Collections визначено ряд інтерфейсів (зокрема, тут визначені у же відомі нам інтерфейси IComparable, IComparer та IEnumerable, а також похідні від них інтерфейси) неузагальнених колекцій. Розгляд неузагальнених колекцій варто розпочати саме з деяких із цих інтерфейсів, оскільки вони визначають функціональні можливості, які є спільними для всіх класів неузагальнених колекцій.

Деякі інтерфейси неузагальнених колекцій

Інтерфейс ICollection. На цьому інтерфейсі побудовані всі неузагальнені колекції. У ньому оголошено основні методи та властивості для всіх неузагальнених колекцій. Він також є похідним від інтерфейсу IEnumerable (Що це нам дає?). Серед чотирьох членів, які визначені у інтерфейсі IСollection, відмітимо наступні:

Елемент інтерфейсу ICollection

Призначення

int Count { get; }

Повертає фактичну кількість елементів, які зберігаються в колекції на даний момент. Якщо значення властивості Count дорівнює нулю, то колекція вважається порожньою.

void CopyTo(Array array, int index);

Копіює вміст колекції в масив array, починаючи із вказаного індекса index. Таким чином метод СоруTо() забезпечує у С# приведення колекції до стандартного масиву.

Інтерфейс IList. В інтерфейсі IList оголошується така поведінка неузагальненої колекції, яка дозволяє здійснювати доступ до її елементів за індексом (індексація елементів починається з нуля). Цей інтерфейс є похідним від інтерфейсів ICollection та IEnumerable. Крім методів, визначених у цих інтерфейсах, в інтерфейсі IList визначається ряд власних методів.

Елемент інтерфейсу IList

Призначення

object this[int index] { get; set; }

Цей індексатор служить для доступу до значення елемента колекції. Але його не можна використовувати для додавання в колекцію нового елемента.

int Add(object value);

Додає об’єкт value у колекцію. Повертає позицію (індекс), у яку цей об’єкт було додано та -1 − у випадку, якщо елемент не було додано у колекцію.

void Clear();

Видаляє всі елементи із колекції.

bool Contains(object value);

Повертає логічне значення true, якщо колекція містить об’єкт value, та логічне значення false − інакше.

int IndexOf(object value);

Повертає індекс об’єкта value, якщо цей об’єкт міститься у колекції та повертає -1 − інакше.

void Insert(int index, object value);

Вставляє у колекцію об’єкт value за індексом index. При цьому всі елементи, з цього індексу index і далі, зміщуються вперед.

void Remove(object value);

Видаляє перше входження об’єкта value у колекції. Елементи, що перебували до цього за вилученим елементом, зміщуються назад на одну позицію.

void RemoveAt(int index);

Видаляє із колекції об’єкт, розташований на позиції, що задається індексом index. Елементи, що перебували до цього за вилученим елементом, зміщуються назад на одну позицію.

Інтерфейс IDictionary. В інтерфейсі IDictionary визначається така поведінка неузагальненої колекції, яка дозволяє здійснювати доступ до її елементів за ключем. У колекції, що реалізує інтерфейс IDictionary, кожен елемент є парою “ключ-значення”. Як тільки подібна пара буде збережена, доступитися до неї можна за допомогою ключа. Інтерфейс IDictionary є похідним від інтерфейсів ICollection та IEnumerable.

Елемент інтерфейсу IDictionary

Призначення

object this[object key] { get; set; }

Цей індексатор служить для доступу до значення елемента колекції за ключем.

void Add(object key, object value)

Додає у колекцію пару “ключ-значення”, що задаються параметрами key і value. Може генерувати помилку часу виконання класу System.ArgumentException.

void Clear();

Видаляє всі пари “ключ-значення” із колекції.

bool Contains(object key);

Повертає логічне значення true, якщо колекція містить об’єкт key у якості ключа, а якщо ні, то − логічне значення false.

void Remove(object key);

Видаляє з колекції елемент, ключ якого рівний значенню параметра key.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]