Общие принципы дизайна в объектно-ориентированном проектировании Задание: Разработка и использование объектов платформы. Net. Framew - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Общие принципы дизайна в объектно-ориентированном проектировании... 1 102.86kb.
Описание работы по lsd 1 103.43kb.
E. 10. O. Возможности labview в модель-ориентированном проектировании... 1 166.85kb.
О проектировании и строительстве экспериментальных объектов 1 229.78kb.
29 июня, пятница 1: 00 «Все дело в Страсти». Флористический показ... 1 55.62kb.
Типовые проектные процедуры. Схема процесса в проектировании 1 208.66kb.
Использование конструкторов технологической платформы 1С: Предприятие 8 1 34.56kb.
Лабораторная работа №4: Наследование в объектно-ориентированном программировании 1 96.11kb.
Компилятор pl/IL 1 300.85kb.
Web-дизайн и разработка сайтов 1 153.74kb.
Задание А27. Химическое производство. Понятие о металлургии: общие... 2 381.98kb.
Рассказы объединены именем сына и называются «Денискиными» 1 27.74kb.
Направления изучения представлений о справедливости 1 202.17kb.

Общие принципы дизайна в объектно-ориентированном проектировании Задание: Разработка - страница №1/1

Общие принципы дизайна в объектно-ориентированном проектировании

Задание: Разработка и использование объектов платформы .NET. FRAMEWORK

Для заданной прикладной области реализовать класс математической абстракции. Описать его с помощью встроенной документации XML. Поместить данный класс в библиотеку для повторного использования.

Модернизировать сервис вычислений из лабораторной работы №1.

Сервис вычислений должен получать данные для вычисления по заданной формуле и отправлять результат клиенту. Сервис вычислений должен вычислять значения по четырем предопределенным формулам:





LineVector, Vector, Complex

Matrix




Замечание. Аргумент d является скалярным целым числом.



Варианты классов математических абстракций

Матрица double – Matrix.

Вектор линейного пространства double – LineVector.

Вектор double – Vector.

Комплекс double – Complex.

Методические указания


Последовательность шагов при выполнении лабораторной работы

Создать три проекта в одном решении. Проект, который будет содержать класс математической абстракции должен быть – Class Library.

Общая библиотека должна содержать разрабатываемый класс. Этот класс будет использоваться двумя приложениями клиентом и сервером.

Включить генерацию документации для общей библиотеки.

В проектах клиента и сервера добавить ссылку на проект общей библиотеки.

Реализовать класс прикладной области, включая документацию.

Получить ключ для подписи библиотеки и подписать общую сборку.

Включить статический анализатор кода и исправить ошибки.

Сгенерировать документацию, используя один из генераторов документации NDoc или Sandcastle.

Реализовать клиентское приложение для ввода данных, отправки их по сети сервису вычислений и печати полученного результата.

Реализовать сервис вычислений для четырех формул.

Информация к выполнению лабораторной работы

Сериализация представляет собой процесс преобразования состояния объекта в форму, пригодную для передачи или сохранения. Процесс обратный по отношению к сериализации называется десериализацией, в результате которой поток преобразуется в объект. Двумя наиболее важными причинами использования сериализации являются необходимость сохранения состояния объекта на носителе для воссоздания точной копии объекта в дальнейшем, а также возможность отправки объекта по значению из одного домена приложения в другой.

Пример: Пусть необходимо вычислить значение суммы элементов массива деленной на число К.

Массив заполним случайными значениями:


int n = 100; //Количество элементов в массиве.

double[] array = new double[n]; //Объявление массива.

Random random = new Random(); //Создание объекта генератора случайных чисел.

for (int i = 0; i < n; i++) //Цикл для всех элементов.

{

array[i] = 1000 * random.NextDouble(); //Заполнение элементов массива.



}
Передачу данных можно было бы организовать так:
BinaryWriter writer = new BinaryWriter(networkStream);

writer.Write(1); //Начало передачи данных.

writer.Write(n); //Передача количества элементов в массиве.

for (int i = 0; i < n; i++)

{

writer.Write(array[i]); //Передача элементов массива.



}

writer.Write(k); //Передача значения к.


Другим способом передачи большого пакета данных является создание класса (например, с именем Data) и передача класса по сети. Такой класс должен быть доступен в двух приложениях: и в Client, и в Server. Поэтому его необходимо разместить в отдельной библиотеке dll, к которой будут обращаться указанные приложения.

Так как расчет должен осуществляться по заданным формулам с разными аргументами, то необходимо использовать четыре разных класса. В файле ShareData.cs, прилагаемом к лабораторной работе, содержатся классы, необходимые для передачи аргументов и кода операции. Предлагается рассмотреть эти классы самостоятельно.

Общий класс, который отвечает за передачу всех возможных данных, называется Data. Он содержит только код операции. Остальные классы содержат поля для хранения данных для каждой операции. Эти классы объединены в иерархию таким образом, чтобы свести к минимуму повторное объявление передаваемых аргументов. Например, первая и вторая формула отличается тем, что во вторую формулу передается дополнительный аргумент d, поэтому класс TwoData наследует поля a, b и c от класса OneData (см. диаграмму рис. 1).
classdiagram1

Рис. 1








Тот, кто постоянно задается вопросом: «А это в хорошем вкусе?» — наверняка обладает плохим вкусом. Джо Ортон
ещё >>