Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Практический пример организации управления доступомОдним из самых характерных примеров объектно-ориентированного программирования служит класс, реализующий стек — структуру данных, воплощающую магазинный список, действующий по принципу "первым пришел — последним обслужен". Для стека определены две основные операции: поместить данные в стек и извлечь их оттуда. Первая операция помещает значение на вершину стека, а вторая — извлекает значение из вершины стека. Следовательно, операция извлечения является безвозвратной: как только значение извлекается из стека, оно удаляется и уже недоступно в стеке. //Клас для хранения символов в стеке. using System; //класс для хранения символов в стеке. class Stack { //эти члены класса являются закрытыми. char[] stck; //массив, содержащий стек int tos; //индекс вершины стека //Построить пустой класс (конструктор) Stack для реализации стека заданного размера public Stack(int size) { stck = new char[size]; //распределить память для стека tos = 0; } //поместить символы в стек. public void Push(char ch) { if (tos == stck.Length) { Console.WriteLine(" - Стек заполнен."); return; } stck[tos] = ch; tos++; } //извлечь символ из стека. public char Pop() { if (tos == 0) { Console.WriteLine(" - Стек пуст."); return (char)0; } tos--; return stck[tos]; } //возвратить значение true, если стек заполнен. public bool IsFull() { return tos == stck.Length; } //возвратить значиние true, если стек пуст. public bool IsEmpty() { return tos == 0; } //возвратить общую емкость стека. public int Capacity() { return stck.Length; } //возвратить количество обьектов, находящихся в данный момент в стеке. public int GetNum() { return tos; } } class StackDemo { static void Main() { Stack stk1 = new Stack(10); Stack stk2 = new Stack(10); Stack stk3 = new Stack(10); char ch; int i; //поместить ряд символов в стек stk1. Console.WriteLine("Поместить символы A-J в стек stk1."); for (i = 0;!stk1.IsFull(); i++) stk1.Push((char)('A' + i)); if (stk1.IsFull()) Console.WriteLine("Стек stk1 заполнен."); //вывести содержимое стека stk1. Console.Write("Содержимое стека stk1: "); while (!stk1.IsEmpty()) { ch = stk1.Pop(); Console.Write(ch); } Console.WriteLine(); if (stk1.IsEmpty()) Console.WriteLine("Стек stk1 пуст.\n"); //поместить дополнительные символы в стек stk1. Console.WriteLine("Вновь поместить символы A-J в стек stk1."); for (i = 0;!stk1.IsFull(); i++) stk1.Push((char)('A' + i)); //А теперь извлечь элементы из стека stk1 и поместить их в стек stk2. //В итоге элементы сохраняются в стеке stk2 в обратном порядке. Console.WriteLine("А теперь извлечь символы из стека stk1\n" + "и поместить их в стек stk2."); while (!stk1.IsEmpty()) { ch = stk1.Pop(); stk2.Push(ch); } Console.Write("Содержимое стека stk2: "); while (!stk2.IsEmpty()) { ch = stk2.Pop(); Console.Write(ch); } Console.WriteLine("\n"); //Поместить 5 символов в стек. Console.WriteLine("Поместить 5 символов в стек stk3."); for (i = 0; i < 5; i++) stk3.Push((char)('A' + i)); Console.WriteLine("Емкость стека stk3: " + stk3.Capacity()); Console.WriteLine("Количество обьектов в стеке stk3: " + stk3.GetNum()); } }
|