- •Предисловие
- •1 Среда визуального программирования visual studio.Net
- •1.1 Введение в объектно - ориентированное программирование
- •1.2 Понятие о событийном управлении Windows
- •1.3 Основные окна среды Visual Studio.Net
- •1.4 Основные структурные элементы разработки проекта c#
- •1.5 Пример первой учебной программы
- •2.1 Технология визуального проектирования форм
- •1.6 Вопросы для самопроверки
- •2 Элементы управления
- •2.2 Элементы управления панели Toolbox
- •2.3 Пример использования элементов управления
- •2.4 Вопросы для самопроверки
- •3 Графический интерфейс языка c#
- •3.1 Пространство имен System.Drawing
- •3.2 Класс Graphics
- •3.3 Пример программной реализации
- •3.4 Вопросы для самопроверки
- •4 Использование меню в приложении
- •4.1 Меню программы
- •4.2 Создание инструментальной панели приложения
- •4.3.Вопросы для самопроверки
- •5 Использование диалоговых меню
- •5.1 Обработчики событий для работы с матрицей
- •5.2 Обработчик событий для открытия файла
- •5.3 Обработчик событий для записи в файл
- •5.4 Обработчик событий для работы с текстом
- •5.5 Вопросы для самопроверки
- •6 Многооконные приложения
- •6.1 Создание «кнопочной» главной формы
- •6.2 Добавление новых форм приложения
- •6.3 Обработчики событий главной формы
- •6.4 Табличная форма представления и редактирования значений
- •6.5 Графическая форма представления прямоугольников
- •6.6 Вопросы для самопроверки
- •7. Понятие класса
- •7.1 Понятие класса
- •7.2 Состав класса
- •7.3 Методы класса
- •7.4 Структура объекта
- •7.5 Пример учебной программы
- •7.6 Доступ к полям
- •7.7 Вопросы для самопроверки
- •1 Понятие класса?
- •8 Элементы классов
- •8.1 Конструкторы
- •8.2 Деструкторы
- •8.3 Свойства
- •8.4 Параметр по ссылке this
- •8.5 События класса
- •8.6 Перегрузка операций класса
- •8.7 Вопросы для самопроверки
- •9 Принципы ооп
- •9.1 Понятие инкапсуляции
- •9.2 Понятие наследования
- •9.3 Вопросы для самопроверки
- •10 Принцип полиморфизма
- •10.1 Понятие полиморфизма
- •10.2 Пример статического наследования методов
- •10.3 Пример динамического наследования методов
- •10.4 Вопросы для самопроверки
- •11 Использование интерфейсов
- •11.1 Понятие интерфейса
- •11.2 Синтаксис интерфейса
- •11.3 Использование стандартного интерфейса iEnumerable
- •11.4 Вопросы для самопроверки
- •12 Композиция и коллекция классов
- •12.1 Понятие композиции и коллекции класса
- •12.2 Пример использования композиции и коллекции класса
- •12.3 Некоторые коллекции Framework
- •12.4 Коллекция ArrayList
- •12.5 Вопросы для самопроверки
- •13 Делегаты
- •13.1 Понятие делегата
- •13.2 Описание делегата
- •13.3 Пример использования делегата
- •13.4 Совместимость делегатов
- •13.5 Методы базовых классов делегатов
- •13.6 Вопросы для самопроверки
- •14 События
- •14.1 Понятие события
- •14.2 Некоторые часто используемые события среды Visual Studio.Net
- •14.3 Пример использования стандартных событий классов
- •14.4 Нестандартные события классов
- •14.5 Вопросы для самопроверки
- •Приложение а Ответы на вопросы для самопроверки
- •1 Понятие класса?
- •Предметный указатель
- •Список литературы
11.4 Вопросы для самопроверки
1 Понятие интерфейса?
2 В чем отличие наследования интерфейсного класса от обычного наследования?
3 В чем отличие интерфейсного класса от обычного класса?
4 Почему в интерфейсных класса возможно появление конфликтов в названиях имен?
5 Как можно решать конфликт имен при множественном наследовании?
6 В чем суть склеивания методов?
7 В чем суть переименования методов?
8 В чем преимущество интерфейсов?
9 Какой тип могут иметь интерфейсы?
10 Какое служебное слово используется при объявлении интерфейса?
12 Композиция и коллекция классов
12.1 Понятие композиции и коллекции класса
Если некоторый класс, в своих полях данных, использует объекты другого класса, то такое объединение классов называется композицией.
Композиция классов это один из способов повторного использования ранее написанных фрагментов программ. Например, класс «аптека» можно рассматривать как композицию класса «лекарство» – массив различных объектов одного класса «лекарство». Примером композиции является объединение объектов «автомобиль» в классе «гараж» и т.д.
Эти примеры показывают, что композиции классов соответствует множество отношений из реальной жизни.
Объединение однотипных объектов в одной структуре данных называется коллекцией.
Коллекция должна обеспечивать многие функции обработки объектов - сохранять и удалять объекты, предоставлять операции доступа по обновлению и добавлению объектов и т.д.
Обычно коллекция представлена отдельным классом.
Класс, описывающий всю коллекцию, называется классом коллекции.
В приведенных примерах композиции классов второй класс часто выступает в роли коллекции объектов первого класса. Например, класс «гараж» представляет собой коллекцию объектов класса «автомобиль». Класс «аптека» – коллекцию объектов класса «лекарство».
Все классы коллекций условно можно разделить на линейные и нелинейные коллекции.
Линейные коллекции образуют следующие классы коллекций:
– с индексированным доступом, например, различные словари и справочники (телефонный справочник, в котором поиск выполняется по буквам фамилии абонента);
– с прямым доступом, например, массивы. Многие «списки» представлены динамическими массивами;
– с последовательным доступом, например, стеки, очереди, списки.
Нелинейные коллекции включают следующие классы коллекций:
– иерархические, например, различные древовидные структуры. Иерархические системы классификации - УДК или организация поисковых массивов документов в некоторых поисковых системах;
– групповые, например, различные наборы, сетевые структуры, графы.
Еще раз отметим, что композиция классов является мощным инструментом программирования при использовании ранее разработанных классов или даже фрагментов программ.
В среде программирования C# существует множество различных классов, предназначенных для коллекционирования однотипных объектов других классов, например, различные списки, стеки, очереди, словари, деревья и многие другие коллекции.
12.2 Пример использования композиции и коллекции класса
Из всего разнообразия классов коллекций рассмотрим самую простую коллекцию классов – стек.
Задача 12.1 Пусть элементом стека является объект класса КНИГА. Предполагается, что книги складываются «стопкой» и брать и добавлять книги можно только сверху.
Для простоты будем считать, что все данные класса открыты и ограничены только автором книги, ее названием и ценой. Из методов класса используем только конструктор с заданием параметров.
Для организации коллекции в виде списочной структуры используем стандартную структуру Stack.
Исходный код программы:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public class Kniga
{
public string Naz;
public string Avtor;
public int Ctoimoct;
public Kniga(string sa, string sb, int sc)
{
Avtor = sa; Naz = sb; Ctoimoct = sc;
}
};
public Stack<Kniga> vstek = new Stack<Kniga>();
public string ss = "";
private void button1_Click(object sender, EventArgs e)
{
string a, b;
a = textBox1.Text;
b = textBox2.Text;
c = Convert.ToInt32(textBox3.Text);
Kniga Tom = new Kniga(a, b, c);
vstek.Push(Tom);
}
private void button2_Click(object sender, EventArgs e)
{
Kniga Tom = new Kniga("", "", 0);
foreach (Kniga T in vstek )
{
ss = T.Avtor + " " + T.Naz + " " +
Convert.ToString(T.Ctoimoct) + " \n";
textBox4.AppendText(ss);
}
}
}
}
Работа программы изображена на рисунке 12.1
Рисунок 12.1 – Работа программы
Необходимо отметить, что в языке C# имеется несколько классов, реализующих коллекцию объектов, например, массива, стеки и очереди и т.д. Считается, что только массивы являются конструкцией языка C#, а остальные коллекции – это просто классы платформы .NET (точнее ее библиотеки Framework). Поэтому, имеет смысл, ознакомится с составом коллекций этой библиотеки.
