Автор работы: Пользователь скрыл имя, 09 Мая 2015 в 17:15, курсовая работа
Темой курсового проекта является моделирование процесса сборки мебели на языке С#. Для реализации поставленной задачи необходимо разработать базовые и производные классы. Также нужно задать для полей и методов классов спецификаторы доступа в зависимости от их использования, построить абстрактные типы данных, сделать перегрузку некоторых методов, задать виртуальные функции, создать обобщённые и необобщённые коллекции, применить исключения, разработать различные конструкторы для объектов.
Данная тема является актуальной на сегодняшний день, так как разработанное приложение поможет организовать процесс работы гостиницы в различных городах.
Введение...............................................................................................................................5 1 Структура и состав классов для построения модели работы гостиницы.
Инкапсуляция. Применение конструкторов на С#......................................................... 7
1.1 Поля и методы основного и вспомогательного классов............................................7
1.2 Реализация классов на С#............................................................................................ 8
1.3 Примеры использования объектов основного класса Otel и вспомогательного класса Nomer......................................................................................................................11
2 Перегрузка оператора +………………………………………………………………. 13
2.1 Перегрузка оператора + для объектов класса Nomer …………………………….13
2.2 Метод типа void с возвратом результата через параметр ref……………………..15
3 Создание производного класса….................................................................................17
3.1 Производный класс. Модификатор доступа protected и его использование..........17
3.2 Реализация производного класса на С#.....................................................................19
4 Абстрактные классы и виртуальные функции ............................................................23
4.1 Разработка виртуальной функции……………………………………………..........23
4.2 Вызов виртуальной функции…………… .................................................................25
4.3 Разработка абстрактного класса и создание абстрактной функции…………...…27
4.4 Создание статического метода для вспомогательного класса……………………32
5 Применение строк и исключений на языке С#............................................................34
5.1 Класс String в С#, основные методы класса…………………..................................34
5.2 Пример использования методов класса String .........................................................36
5.3 Исключения на языке С#............................................................................................34
6 Создание коллекций…………….…….……………………………………………….39
6.1 Реализация необобщённой коллекции......................................................................39
6.2 Реализация обобщённой коллекции..........................................................................42
Заключение.........................................................................................................................45
Список использованных источников ..............................................................................36
Приложение А....................................................................................................................47
Приложение Б ...................................................................................................................51
Приложение В ...................................................................................................................56
Приложение Г ...................................................................................................................61
Приложение Д....................................................................................................................70
Приложение Е ..................................................................................................................
class Element
{
public Exception e1 = new Exception(""); //Первое исключение
public Exception e2 = new Exception(""); //Второе исключение
public double Prizn; //0-вычислено, >0 - исключение
…
// Стоимость элемента, входящего в изделие
public double CostElem()
{
double z; //Переменная, хранящая значение стоимости элемента
z = 0;
try //Блок try
{
if (ves < 0) //Если вес меньше 0
throw e1 = new Exception("ves<0"); //Первое исключение
if (cost <= 0) //Если стоимость меньше либо равна 0
throw e2 = new Exception("cost<=0"); //Второе исключение
Prizn = 0; //Нет исключений
z = ves * cost; //Вычисление стоимости элемента
}
catch (Exception e1) //Перехват первого исключения
{
string s; //Переменная для работы с иключениями
s = e1.Message; //s="ves<0"
Console.WriteLine(s); //Вывод строки
Prizn = 1; //Первое исключение
}
return z; //Возвращает стоимость элемента
}
}
…
static void Main(string[] args)
{
Element a; //Объект типа Элемент
a = new Element(); //Инициализация объекта а
a.Init(-120, 28.9); //Вызов метода объектом а
double k = 0;
string s; //Переменная для работы с исключениями
try //Блок try
{
k = a.CostElem(); //Вычисление стоимости элемента
}
catch (Exception e) //Перехват второго исключения
{
e = a.e2;
s = e.Message; // s="cost<0"
Console.WriteLine(s); //Вывод строки
a.Prizn = 2; //Второе исключение
}
if (a.Prizn == 0) //Если исключений нет - вывод результата
{
Console.WriteLine("\nСтоимость элемента: " +k.ToString()); //Вывод
}
…
Работа программы представлена на рисунке 9:
Рисунок 9 – Демонстрация работы программы
6 Создание коллекций
6.1 Реализация необобщённой коллекции
Коллекция – это набор пронумерованных связанных данных. Элементы удобно объединять в коллекцию, чтобы не писать код для каждого из них, а написать единый блок, управляющий всей коллекцией. Элементы коллекции можно добавлять, удалять и изменять, при этом размерность коллекции изменяется автоматически, поэтому нет необходимости ее переопределять.
Необобщённые коллекции определяются в пространстве имен System.Collections. Они представляют собой структуры данных общего назначения, оперирующие ссылками на объекты. Таким образом, они позволяют манипулировать объектом любого типа, хотя и не типизированным способом. В этом состоит их преимущество и в то же время недостаток. Благодаря тому, что необобщенные коллекции оперируют ссылками на объекты, в них можно хранить разнотипные данные. Это удобно в тех случаях, когда требуется манипулировать совокупностью разнотипных объектов или же когда типы хранящихся в коллекции объектов заранее неизвестны. Но если коллекция предназначается для хранения объекта конкретного типа, то необобщенные коллекции не обеспечивают типовую безопасность.
Вот несколько классов необобщенных коллекций:
ArrayList - определяет динамический массив.
Queue - определяет очередь, или список, действующий по принципу "первым пришел — первым обслужен".
SortedList - определяет отсортированный список пар "ключ-значение".
Stack - определяет стек, действующий по принципу "первым пришел — последним обслужен".
…
namespace NongenericCollections //Необобщённые коллекции
{
…
}
class Program
{
static void Main(string[] args)
{
ArrayList one = new ArrayList();
int a, b;
Random n = new Random();
for (int i = 0; i < 10; i++)
{
a = n.Next(200);
b = n.Next(4);
Nomer d = new Nomer();
d.Init(a, b);
one.Add(d);
}
int sum = 0;
foreach (Nomer k in one)
{
if (k.PrivlekNom() > 50)
{
sum++;
}
}
Console.WriteLine("\
Console.ReadKey();
}
}
}
…
Результат работы программы представлен на рисунке 10:
Рисунок 10 – Демонстрация работы программы
6.2 Реализация обобщённой коллекции
Обобщенные коллекции объявляются в пространстве имен System. Collections. Generic. Как правило, классы обобщенных коллекций являются не более чем обоб-щенными эквивалентами классов необобщенных коллекций, хотя это соответствие не является взаимно однозначным.
Обобщенные коллекции действуют по тому же принципу, что и необобщенные, за исключением того, что обобщенные коллекции типизированы. Это означает, что в обобщенной коллекции можно хранить только те элементы, которые совместимы по типу с ее аргументом. Если требуется коллекция для хранения несвязанных друг с другом разнотипных данных, то для этой цели следует использовать классы необобщенных коллекций. А во всех остальных случаях, когда в коллекции должны храниться объекты только одного типа, выбор рекомендуется останавливать на классах обобщенных коллекций.
Kлассы обобщенных коллекций отличаются от необобщённых своей органи-зацией и функциональными возможностями.
Примеры классов:
LinkedList<T> - сохраняет элементы в двунаправленном списке.
List<T> - создает динамический массив.
Queue<T> - создает очередь.
Stack<T> - создает стек. Обеспечивает такие же функциональные возможности,
как и необобщенный класс Stack.
…
namespace GenericCollections //Обобщённые коллекции
{
…
class Program
{
static void Main(string[] args)
{
List<Nomer> one = new List<Nomer>();
int a, b;
Random n = new Random();
for (int i = 0; i < 10; i++)
{
a = n.Next(200);
b = n.Next(4);
Nomer d = new Nomer();
d.Init(a, b);
one.Add(d);
}
List<double> two = new List<double>(); // коллекция из целых чисел
double m;
foreach (Nomer k in one)
{
m = k.PrivlekNom();
two.Add(m); // заполнение коллекции
}
int sum = 0;
foreach (double k in two)
{
if (k > 50)
{
sum++;
}
}
Console.WriteLine("\
Console.ReadKey();
}
Результат работы программы представлен на рисунке 11:
Рисунок 11 – Демонстрация работы программы
Заключение
В данной
работе представлена модель
Интерфейс
прост в понимании и
Список литературы
1 Албахари, Д. C# Справочник. Полное описание языка//Д. Албахари; Вильямс.-Москва, 2012. – 988 с.
2 Барышев, Д.Д. Высокоуровневые методы информатики и программирования// Д.Д. Барышев; АлтГТУ им. И.И.Ползунова. – Барнаул, Изд-во АлтГТУ, 2010.
3 Васильев, А. C#. Объектно-ориентированное программирование// А. Васильев; Питер. – Санкт-Петербург, 2012. – 320 с.
4 Зиборов, В. Visual C# 2010 на примерах// В. Зиборов; БХВ-Петербург. – Санкт-Петербург, 2011. – 432 с.
5 Культин, Н. Основы программирования в Microsoft Visual C# 2010// Н. Культин; БХВ-Петербург. –Санкт- Петербург, 2011. – 368 с.
6 Потупчик, А.И. Языки и системы программирования. Курсовая работа.// А.И. Потупчик; АлтГТУ им. И.И. Ползунова. – Барнаул, Изд-во АлтГТУ, 2012.
Приложение А
Текст программы (этап №1)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace kursYuli
{
class Nomer
{
private string name;
private double stoimost;
private int ploshad;
public void Display()
{
string s, s1;
s1 = Convert.ToString(stoimost);
s = "\nстоимость: " + s1 + " ";
s1 = Convert.ToString(ploshad);
s = s + "\nплощадь: " + s1 + " ";
s = s + "\nназвание: " + s1 + " ";
Console.WriteLine(s);
}
public Nomer Add(Nomer a, Nomer b)
{
Nomer p;
p = new Nomer();
p.stoimost = a.stoimost + b.stoimost;
p.ploshad = a.ploshad + b.ploshad;
p.name = a.name + b.name;
return p;
}
public double PrivlekNom()
{
return stoimost / ploshad;
}
/*public string gname()
{
return name;
}*/
public void Init(double s, int p, string n)
{
stoimost = s;
ploshad = p;
name = n;
}
public Nomer Add(Nomer b)
{
Nomer p;
p = new Nomer();
p.stoimost = this.stoimost + b.stoimost;
p.ploshad = this.ploshad + b.ploshad;
p.name = this.name + b.name;
return p;
}
public Nomer(double s, int p, string n)
{
stoimost = s;
ploshad = p;
name = n;
}
public Nomer(double s)
{
stoimost = s;
}
public Nomer()
{
stoimost = 123;
ploshad = 12;
name = "номер";
}
class Otel
{
private string name;
private Nomer P1 = new Nomer();
private Nomer P2 = new Nomer();
private Nomer P3 = new Nomer();
private double TZatraty;
public void Display()
{
string s;
s = "Название: " + name;
Console.WriteLine(s);
Console.Write("Первое
P1.Display();
Console.Write("Второе помещение: ");
P2.Display();
Console.Write("Третье помещение: ");
P3.Display();
s = "Текущие затраты: " + Convert.ToString(TZatraty);
Console.WriteLine(s);
}
public string gname()
{
return name;
}
public void Init(string n1, string n2, string n3, double s1, int p1, double s2, int p2, double s3, int p3, double TZ)
{
P1.Init(s1, p1, n1);
P2.Init(s2, p2, n2);
P3.Init(s3, p3, n3);
TZatraty = TZ;
}
public double DpomAg()
{
double x;
x = P1.PrivlekNom();
Информация о работе Структура и состав классов для построения модели работы гостиницы.