ТГУ СУиР — Лабораторная работа — Бизнес-логика
Целью данной работы является реализация простого проекта в IDE
Visual Studio 2013 на языке C#.
1.1 Integrated development environment
Когда программирование только зарождалось и им еще занималась
не программисты, а научные работники, не было никаких средств для эффективного написания кода, программы писались в примитивных текстовых редакторах и компилировались из командной строки. Такой подход не
вызывает сложностей при написании небольших программ. При разработке крупных программных проектов он становится затруднительным. Поэтому со временем стали появляться специализированные среды разработки, позволяющие по возможности автоматизировать часть задач и упростить написание кода, такие среды называются IDE.
IDE (Integrated development environment, интегрированная среда разработки) — система программных средств, используемая программистами
для разработки программного обеспечения. В базовом виде IDE включают
в себя текстовый редактор, компилятор, средства автоматизации сборки,
отладчик. Однако современные IDE включают в себя большое количество
дополнительных инструментов, позволяющих значительно облегчить процесс написания кода, например:
1. Подсветка синтаксиса.
2. Статические анализаторы, которые проверяют ошибки в программе прямо во время написания (а не на этапе компиляции).
3. Инструменты для эффективного рефакторинга.
4. Фреймворки для генерации и написания модульных тестов и др.
Существует множество различных IDE, которые поддерживают как
несколько языков (Microsoft Visual Studio, IntelliJ IDEA, NetBeans), так и
всего один (PyCharm, Delphi). Одной из лучших IDE для разработки приложений для Windows является Microsoft Visual Studio. Кроме того, что
Microsoft Visual Studio позволяет эффективно разрабатывать на популярных языках (С++, С#, VB.NET), значительным преимуществом является
возможность ее расширения различными плагинами, начиная от продвинутой подсветки синтаксиса и интеграции систем контроля версий до подключения дополнительных языков программирования. На сайте Microsoft
можно скачать бесплатную версию Visual Studio Express 2013, которая понадобится для выполнения лабораторных работ.
1.2 Знакомство с Microsoft Visual Studio
После установки и запуска Microsoft Visual Studio Express 2013 (далее MSVS) запустится стартовое окно программы. Для того чтобы создать
проект, необходимо нажать Create Project на стартовой странице либо выбрать FILE->Create->Project, после чего появится окно создания проекта.
В лабораторных работах будут использоваться 3 вида проектов:
1. Class library — библиотека классов — проект такого типа компилируется в файл формата *.dll. Используется для описания бизнеслогики приложения.
2. Console application — консольное приложение — компилируется
в *.exe. Позволяет создать приложение с которым можно взаимодействовать через консоль.
3. Windows forms application — оконное приложение — компилируется в *.exe. Позволяет создавать оконные приложения для Windows, используя технологию WinForms.
После создания проекта MSVS создает Solution (Решение), в котором
находится созданный проект. Решение содержит элементы, необходимые
для создания приложения. Решение может включать один или несколько
проектов, а также файлы и метаданные, необходимые для определения ре-
шения в целом. Решение необходимо для того, чтобы хранить все проекты,
которые относятся к одному приложению, а также для отслеживания их
взаимодействий. MSVS хранит определение решения в двух файлах: *.sln
и *.suo. Файл решения (*.sln) содержит метаданные, которые определяют
решение, в том числе:
1. Проекты, связанные с решением.
2. Элементы, которые не связаны с определенным проектом (текстовые файлы, картинки и т. д.).
3. Конфигурации сборки, определяющие, какие конфигурации проекта применяются в каждом типе сборки.
Для добавления файлов в проект необходимо вызвать контекстное
меню решения (нажать правой кнопкой на корневом узле в Обозревателе
решения (Solution Explorer)), после чего выбрать пункт Добавить (Add).
Таким образом, в решение можно добавить новые проекты или различные
файлы (Create element…).
Project (Проект) MSVS служит контейнером для файлов с исходным
кодом, подключенным библиотекам и файлам. Управление проектом также осуществляется через контекстное меню, которое можно вызвать через
Обозреватель решения. Через контекстное меню можно добавлять файлы с
исходным кодом в проект (Add->Create element…).
Важно!!! После установки MSVS файлы с расширением *.cs ассоциируются с ней. То есть такие файлы будут открываться в MSVS. Следует понимать, что открытые таким образом файлы не добавляются в проект
или решение и они не могут быть скомпилированы. Чтобы добавить существующий файл в проект, необходимо вызвать контекстное меню проекта
и в пункте Добавить выбрать существующий проект (Add->Exiting
element…).
Часто один проект должен использовать некоторые типы данных,
определенные в другом проекте. Для этого необходимо в основной проект
добавить ссылку на зависимый проект. Для этого необходимо вызвать контекстное меню элемента References основного проекта и выбрать пункт
Добавить ссылку (Add Reference…). После этого появится окно, изображенное на рис. 1.1. Зависимость можно добавить как на проекты, находящиеся в том же решении (для этого надо выбрать пункт Решение), так и на
существующие сборки, входящие в .NET Framework, или дополнительно
установленные библиотеки (пункт Сборки). После выбора необходимой
библиотеки необходимо установить флаг слева от названия в положение
«используется» и нажать ОК. После этого можно использовать типы данных, определенные в выбранной библиотеке в вашем проекте.

1.3 Первое приложение на C#
Во всех учебниках по программированию в качестве первой программы всегда используется «Hello, World». Единственная функция этой
программы — выводить в консоль строку «Hello, World!».
В первую очередь необходимо создать новое консольное приложение. Назовем его «HelloWorld». После создания MSVS сгенерирует Решение HelloWorld и проект HelloWorld. Будет сгенерирован единственный
файл с кодом Program.cs. Ниже следует его содержимое.
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
}
}
}
Рассмотрим листинг подробнее. На первой строке находится объявление пространства имен, название которого по умолчанию совпадает с
именем проекта.
Затем идет объявление класса Program. Ввиду того, что С# — полностью объектно-ориентированный язык, в нем не может быть функций, которые не принадлежат какому-либо классу, в данном случае класс Program
необходим для определения метода Main. Класс Program является обычным классам, и с ним можно делать все то же, что и с другими, созданными пользователем, классами. Например, его можно переименовать.
Далее идет объявление функции Main. Любое консольное приложение должно содержать метод Main. Метод Main — точка входа в программу, начало ее выполнения. В случае отсутствия этого метода будет ошибка
при компиляции, потому что компилятор не будет знать, где начинается
ваша программа. Соответственно, этот метод нельзя переименовывать и
перегружать.
11
Вообще существует несколько вариантов сигнатуры этого метода:
static void Main(string[] args)
static int Main(string[] args)
static void Main()
static int Main()
Эти функции будут отличаться типом возвращаемого значения и наличием входных параметров. Рассмотрим подробнее: в первом случае из
программы не возвращается никаких значений (void) и программа принимает на вход параметры. Строка string[] args содержит в себе список параметров, которые пользователь может передать в программу при вызове из
командной строки. Во втором случае программа возвращает в консоль целое число, обычно это делается, чтобы после окончания выполнения программы пользователь мог узнать, корректно она завершилась или нет, если
корректно, то возвращается 0, в противном случае 1 либо код произошедшей ошибки. В третьем и четвёртом случаях отсутствуют входные аргументы программы. Читатель, знающий С++, может провести прямую аналогию с функцией Main.
Теперь необходимо добавить в функцию Main код, который будет
выводить необходимую строку. Сделать это можно следующим образом:
System.Console.Write(«Hello, World!»);
или
System.Console.WriteLine(«Hello, World!»);
Отличия этих двух способов в том, что в первом случае каретка останется на той же строке, а во втором передвинется на следующую строчку. То есть если у нас будет несколько вызовов System.Console.Write подряд, то аргументы функции будут выводиться на одной строке, а если будет несколько вызовов System.Console.WriteLine, каждый аргумент будет
выводиться на новой строчке.
12
Для того чтобы запустить приложение, необходимо либо на верхней
панели нажать кнопку Запуск (Start), либо через главное меню — Отладка
(Debug)-> Начать отладку (Start debugging), также можно нажать клавишу F5.
При первом запуске скорее всего вы увидите, как мелькнет окно консоли и тут же пропадет. Это не ошибка, просто программа очень быстро
выполнилась и закрылась. Чтобы посмотреть результаты выполнения, необходимо остановить выполнение программы. Для этого, например, можно
заставить программу ждать, пока не будет нажата какая-нибудь клавиша
клавиатуры. Для этого необходимо в конец программы добавить строку:
System.Console.Read();
Если запустить программу теперь, то на экране появится окно консоли с текстом “Hello, World!”. Чтобы окно пропало, надо нажать произвольную клавишу.
В итоге ваша программа должна выглядеть следующим образом:
namespace HelloWorld
{
class Program
{
static void Main()
{
System.Console.WriteLine(«Hello, World!»);
System.Console.Read();
}
}
}
1.4 Ввод/вывод на языке С#
В общем случае, когда говорят о программах, будь то консольное
приложение или оконное, подразумевается, что пользователю необходимо
с ней взаимодействовать. Программа должна сообщить пользователю о
процессе или результатах выполнения, а также работать с данными, кото-
рые пользователь ей подает. Поэтому в данной части речь пойдет о операторах ввода и вывода на C#.
Для получения данных с клавиатуры можно использовать следующий метод:
string str = Console.ReadLine();
Как видно, этот метод возвращает строку и не существует его перегрузок или других методов, чтобы считывать целочисленные, символьные
и другие типы переменных. Соответственно, для того чтобы ввести с клавиатуры, необходимо получить строковое значение, а затем сконвертировать его в необходимый нам тип данных. Для этого можно использовать
класс Convert. В нем определено множество статических методов конвертирования строк в иные типы данных. Далее следуют примеры использования класса Convert.
int intValue = Convert.ToInt32(Console.ReadLine());
double doubleValue = Convert.ToDouble(Console.ReadLine());
bool boolValue = Convert.ToBoolean(Console.ReadLine());
long longValue = Convert.ToInt64(Console.ReadLine());
При этом надо следить, чтобы типы вводимых значений совпадали с
типами указанных переменных, потому что в противном случае возникнет
исключение. Например, если ввести строку 123.456 и попытаться сконвертировать в целочисленное значение, то сгенерируется исключение.
Для более корректной работы программы, если программа ожидает от
пользователя какое-то определенное значение, то лучше ему об этом сказать.
Необходимо придерживаться правила: перед тем как считывать что-либо с
консоли, необходимо сообщить пользователю, что именно он должен ввести:
смысл вводимой информации, тип данных, максимальное и минимальное допустимые значения и т. п. Примером таких запросов могут служить:
«Введите имя пользователя (не больше 20 знаков)»
«Введите возраст, целочисленное значение, от 1 до 100»
«Введите пол, 0 — мужской, 1 — женский»
Для вывода текста на экран можно использовать команды, про которые говорилось в предыдущей главе: Console.Write или Console.WriteLine.
Далее идут примеры использования этих команд.
Console.WriteLine(s);// переменная
Console.WriteLine(55.3);// константа
Console.WriteLine(y*3+7);// выражение
Console.Write(z);// переменная
Console.Write(-5.3);// константа
Console.Write(i*3+7/j);// выражение
Очень часто в процессе работы необходимо выводить осмысленные
предложения с результатами выполнения программы. Например, «Через
насос X было перекачано Y литров воды, температура насоса Z градусов»,
где в различные моменты выполнения программы X, Y, Z могут быть различными значениями. Конечно, можно использовать следующий подход:
Console.WriteLine(«Через насос » + X + «, было перекачано » + Y +
« литров воды, температура насоса » + Z + « градусов»);
Однако такой подход слишком громоздкий, и с ним возникает масса
трудностей, например при необходимости добавить дополнительные данные, даже читать такую запись достаточно затруднительно. Поэтому принято использовать подход с использованием форматной строки. Сама
строка формата содержит большую часть отображаемого текста, но всякий
раз, когда в нее должно быть вставлено значение переменной, в фигурных
скобках указывается индекс. В фигурные скобки может быть включена и
другая информация, относящаяся к формату данного элемента, например
та, что описана ниже:
• Количество символов, которое займет представление элемента,
снабженное префиксом-запятой. Отрицательное число указывает,
что элемент должен быть выровнен по левой границе, а положительное — по правой. Если элемент на самом деле занимает
больше символов, чем ему отведено форматом, он отображается
полностью.
• Спецификатор формата предваряется двоеточием. Это указывает,
каким образом необходимо отформатировать элемент. Например,
можно указать, должно ли число быть форматировано как денежное значение либо его следует отобразить в научной нотации, в
степенном виде, либо шестнадцатиричном.
Console.WriteLine(«Через насос {0} было перекачано {1} литров воды,
температура насоса {2} градусов», X, Y, Z);
1.5 Задание на лабораторную работу
1. Создайте проект на языке C# в среде Microsoft Visual Studio. Назовите его в соответствии с вашим вариантом задания, в качестве исходного
проекта выберите проект динамической библиотеки (*.dll). Назовите его
либо согласно вашему варианту, либо просто Model. Данный проект будет
содержать в себе бизнес-логику приложения, т. е. ключевые структуры
данных и способы их взаимодействия.
2. Создайте сущность-интерфейс согласно вашему варианту. Опишите ключевые свойства и методы интерфейса. Не забудьте о правильном
именовании типов данных согласно RSDN. Подумайте, какие свойства и
методы будут являться общими (будут в интерфейсе), а какие должны
быть реализованы в конкретных классах.
3. Создайте 2 или более класса, реализующих данный интерфейс.
Классы обязательно должны иметь различные реализации методов интерфейса. При этом дочерние классы не должны иметь никаких ссылок друг на
друга, так же как и интерфейс не должен ничего знать о дочерних классах.
4. Реализуйте проверку правильности передаваемых свойствам данных (валидацию свойств) с помощью механизма обработки исключений —
если на вход приходят некорректные данные, выходящие за допустимые
пределы, свойство должно сгенерировать исключение соответствующего
типа с описанием ошибки. Например, если свойству Возраст пытаются
присвоить отрицательное значение, необходимо сгенерировать экземпляр
исключения IncorrectArgumentException. Внимательно продумайте все возможные некорректные варианты входных данных, в том числе ссылки на
null. В случае если механизмы валидации у всех свойств одинаковы, измените архитектуру: вместо реализации интерфейса используйте наследование от абстрактного класса, в котором будут реализованы механизмы валидации.
5. Добавьте в решение еще один проект, на этот раз консольное приложение, и назовите его «ConsoleLoader». В этом проекте будет проводиться первичное тестирование бизнес-логики приложения.
ПРИМЕЧАНИЕ: данный проект является временным и впоследствии
будет заменён на проект графического интерфейса Windows (WinForms
Application). Однако если вы уже можете продемонстрировать работу бизнес-логики на оконном пользовательском интерфейсе, можете сразу создать необходимый проект.
6. Продемонстрируйте корректную работу бизнес-логики. Создайте
переменную-ссылку на интерфейс и присваивайте в нее экземпляры реализуемых классов. Продемонстрируйте разную реализацию интерфейсных
свойств и методов. Для этого необходимо реализовать ввод с клавиатуры
значений, которыми будут инициализированы поля классов-наследников.
1.6 Выбор варианта лабораторной работы
Выбор варианта лабораторных работ осуществляется по общим правилам с использованием следующей формулы:
V = (N × K) div 100,
где V — искомый номер варианта,
17
N — общее количество вариантов,
div — целочисленное деление,
при V = 0 выбирается максимальный вариант,
K — код варианта.
Студент имеет возможность выбрать собственный вариант, не представленный в нижеследующем списке.
1.7 Варианты заданий
1. Геометрические фигуры с различными реализациями расчета
площади фигуры: круг, прямоугольник, треугольник.
2. Трехмерные фигуры с различными реализациями расчета объема:
шар, пирамида, параллелепипед.
3. Работники фирмы с различными способами начисления зарплаты:
почасовая оплата, оплата по окладу и ставке.
4. Транспортные средства с различными реализациями расчета затраченного топлива: машина, машина-гибрид, вертолет.
5. Система скидок с различными реализациями расчета скидок: процентная, по сертификату.
6. Система библиотечных карточек для разных изданий: книга, журнал, сборник, диссертация. Каждое издание характеризуется различным
набором полей, перегружаемый метод возвращает информацию об издании в виде строки, оформленной по ГОСТу [3].
7. Различные пассивные элементы электрических схем: резистор,
конденсатор, индуктивность. Перегружаемый метод — расчет комплексного сопротивления элемента.
8. Расчет координаты для различных видов движения: равномерное,
равноускоренное, колебательное.
9. Расчет затраченных калорий в зависимости от вида упражнений:
бег (интенсивность, расстояние), плавание (стиль, расстояние), жим штанги (вес, количество повторений).
1.8 Рекомендуемая литература
1. Г. Шилдт. С# 4.0 Полное руководство / Г. Шилдт. — М. : Вильямс,
2011.
2. Microsoft Developer Network (MSDN) [Электронный ресурс]. —
URL: msdn.microsoft.com/ru-RU/ (дата обращения: 21.12.2014).
3. Библиографическое описание. Государственный УНПК [Электронный ресурс]. — URL: http://www.ostu.ru/libraries/bibl_opisanie.php (дата
обращения 18.01.2015).
или напишите нам прямо сейчас:
Здравствуйте. Скажите пожалуйста, планирую поступать в магистратуру на факультет Психологии « Психология личности»в РГГУ скажите пожалуйста, есть ли у вас, ответы на вступительные экзамены? так как, планирую, сделать акцент на бюджет. Спасибо.
Арсений, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Дистанционная помощь в защите ВКР
Анастасия, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте. Нужна срочно практическая часть вкр, третья глава. Скину похожие работы, на которые можно ориентироваться
Александр, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
вкр по теме: экологический туризм России : анализ состояния, проблемы и перспективы
Людмила, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте вы защищаете ВКР?
Ольга, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать магистерскую ВКР на тему «Совершенствование логистических бизнес-процессов на примере торговой компании». Не менее 100 страниц.
Миша, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте нужна работа Вкр
Лена, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать ВКР 3 раздела Тема строительство строительство жилого дома с применением каркасно-монолитных технологий Антиплагиат от 75% ПЗ и чертежи
Владимир, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.