Здавалка
Главная | Обратная связь

Пример использования композиции и коллекции класса



Понятие композиции и коллекции класса

 

Если некоторый класс, в своих полях данных, использует объекты другого класса, то такое объединение классов называется композицией.

Композиция классов это один из способов повторного использования ранее написанных фрагментов программ. Например, класс «аптека» можно рассматривать как композицию класса «лекарство» – массив различных объектов одного класса «лекарство». Примером композиции является объединение объектов «автомобиль» в классе «гараж» и т.д.

Эти примеры показывают, что композиции классов соответствует множество отношений из реальной жизни.

Объединение однотипных объектов в одной структуре данных называется коллекцией.

Коллекция должна обеспечивать многие функции обработки объектов - сохранять и удалять объекты, предоставлять операции доступа по обновлению и добавлению объектов и т.д.

Обычно коллекция представлена отдельным классом.

Класс, описывающий всю коллекцию, называется классом коллекции.

В приведенных примерах композиции классов второй класс часто выступает в роли коллекции объектов первого класса. Например, класс «гараж» представляет собой коллекцию объектов класса «автомобиль». Класс «аптека» – коллекцию объектов класса «лекарство».

Все классы коллекций условно можно разделить на линейные и нелинейные коллекции.

Линейные коллекции образуют следующие:

– с индексированным доступом, например, различные словари и справочники (телефонный справочник, в котором поиск выполняется по буквам фамилии абонента);

– с прямым доступом, например, массивы. Многие «списки» представлены динамическими массивами;

– с последовательным доступом, например, стеки, очереди, списки.

Нелинейные коллекции включают следующие:

– иерархические, например, различные древовидные структуры. Иерархические системы классификации - УДК или организация поисковых массивов документов в некоторых поисковых системах;

– групповые, например, различные наборы, сетевые структуры, графы.

Еще раз отметим, что композиция классов является мощным инструментом программирования при использовании ранее разработанных классов или даже фрагментов программ.

В среде программирования C# существует множество различных классов, предназначенных для коллекционирования однотипных объектов других классов, например, различные списки, стеки, очереди, словари, деревья и многие другие коллекции.

Пример использования композиции и коллекции класса

 

Из всего разнообразия классов коллекций рассмотрим самую простую коллекцию классов – стек.

Задача 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 – Работа программы

 

Необходимо отметить, что в языке C# имеется несколько классов, реализующих коллекцию объектов, например, массива, стеки и очереди и т.д. Считается, что только массивы являются конструкцией языка C#, а остальные коллекции – это просто классы платформы .NET (точнее ее библиотеки Framework). Поэтому, имеет смысл, ознакомится с составом коллекций этой библиотеки.

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.