Разработка программных систем на основе объектного подхода. Учебно-методическое пособие к выполнению практических работ
.pdf● Объект подкласса, который также копирует его свойства и добавляет
свои.
Каждый дочерний элемент наследует методы и атрибуты, прописанные в родительском. Он может использовать их все, отбросить часть или добавить новые. При этом заново прописывать эти атрибуты и методы не нужно.
Например, в каталоге товаров:
1.У класса «Карточка товара» есть атрибуты тип товара, название, цена, производитель, а также методы «Вывести карточку» и «Обновить цену».
2.Подкласс «Смартфон» берёт все атрибуты и методы, записывает в атрибут «тип товара» слово «смартфон плюс добавляет свои атрибуты — «Количество сим-карт» и «Ёмкость аккумулятора».
3.Объект «Смартфон Xiaomi 11» заполняет все атрибуты своими значениями и может использовать методы класса «Карточка товара».
4. Полиморфизм Один и тот же метод может работать по-разному в зависимости от объекта,
где он вызван, и данных, которые ему передали. Например, метод «Удалить» при вызове в корзине удалит товар только из корзины, а при вызове в карточке товара
— удалит саму карточку из каталога.
То же самое с объектами. Можно использовать их публичные методы и атрибуты в других функциях и быть уверенным, что всё сработает нормально.
Этот принцип ООП, как и другие, обеспечивает отсутствие ошибок при использовании объектов.
5. Основы UML
Унифицированный язык моделирования (UML) – это семейство графических нотаций, в основе которого лежит единая метамодель. Он помогает в описании и проектировании программных систем, в особенности систем, построенных с использованием объектно-ориентированных (ОО) технологий. Это определение в чем-то упрощенное. В действительности разные люди могут видеть в UML разные вещи. Это является следствием как собственной истории развития языка, так и различных точек зрения специалистов на то, что делает процесс разработки программного обеспечения эффективным.
- 11 -
Графические языки моделирования уже продолжительное время широко используются в программной индустрии. Основная причина их появления состоит в том, что языки программирования не обеспечивают нужный уровень абстракции, способный облегчить процесс проектирования. Несмотря на то что графические языки моделирования существуют уже достаточно давно, в среде разработчиков программного обеспечения очень много спорят об их роли. Эти споры оказывают непосредственное влияние на восприятие разработчиками самого языка UML. UML представляет собой относительно открытый стандарт, находящийся под управлением группы OMG (Object Management Group – группа управления объектами), открытого консорциума компаний. Группа OMG была сформирована для создания стандартов, поддерживающих межсистемное взаимодействие, в частности взаимодействие объектно-ориентированных систем. Возможно, группа
OMG более известна по стандартам CORBA (Common Object Request Broker
Architecture – общая архитектура посредников запросов к объектам).
Основу роли UML в разработке программного обеспечения составляют разнообразные способы использования языка, те различия, которые были перенесены из других языков графического моделирования. Эти отличия вызывают долгие и трудные дискуссии о том, как следует применять UML. Существует три режима использования UML разработчиками: режим эскиза, режим проектирования и режим языка программирования. Безусловно, самый главный из трех, – это режим использования UML для эскизирования. В этом режиме разработчики используют UML для обмена информацией о различных аспектах системы. В режиме проектирования можно использовать эскизы при прямой и обратной разработке. При прямой разработке (forward'engineering) диаграммы рисуются до написания кода, а при обратной разработке (re' verse'engineering) диаграммы строятся на основании исходного кода, чтобы лучше понять его.
6. Разработка компьютерных моделей реальных и концептуальных систем Концептуальное моделирование – это процесс создания абстрактных
представлений о реальном мире или предметной области. Концептуальная модель – набор понятий, связей и ограничений, которые помогают описать и выяснить сущность и структуру. Она служит основой для дальнейшего
- 12 -
проектирования и реализации информационных систем Основная цель концептуального моделирования состоит в том, чтобы
создать ясное и формализованное представление предметной области. Это позволяет участникам проекта (заказчику, аналитикам, разработчикам и другим заинтересованным сторонам) иметь общее понимание организации и вида данных, операций.
Рассмотрим основные шаги моделирования.
1.Идентификация, где требуется определить, что нужно сделать. Это может быть бизнес-процесс, организация, система или любой другой объект.
2.Сбор информации, где необходимо сделать подготовку – проведение интервью, изучение документации, наблюдение за рабочими процессами и другие исследовательские методы. Цель состоит в том, чтобы получить полное понимание особенностей и требований.
3.Определение, где определяются основные понятия, которые будут представляться. Для системы управления проектами – проекты, задачи, ресурсы.
4.Определение связей, где для проекта может назначаться несколько задач, а задача может быть связана с определенными ресурсами. Это помогает создать более полное представление о взаимодействии между различными элементами.
5.Формализация и документирование, где требуется четко формализовать концепт с помощью специальных нотаций и языков (ER-диаграммы или UMLдиаграммы классов). Также важно документировать, чтобы другие участники проекта могли узнать ее содержание и цели.
Концептуальное моделирование широко применяется в различных областях, где важно иметь ясное представление о структуре и взаимосвязях данных, некоторыми из которых являются:
1.Информационные системы (помогает при проектировании баз данных, разработке информационных систем и определении требований к программному обеспечению);
2.Бизнес-процессы (позволяет оптимизировать рабочие процессы, выявлять узкие места и улучшать эффективность организации);
3.Научные исследования (помогает описывать сложные исследования и выявлять взаимосвязи между различными переменными);
-13 -
4. Инженерное проектирование (используется для проектирования сложных проектов, таких как авиационные или энергетические).
Определённые языки подходят для использования объектноориентированного программирования больше, так как предоставляют удобные инструменты для работы с классами и объектами:
●Java;
●Go;
●Python;
●C++;
●JavaScript;
●C#;
●PHP;
●Ruby;
●Scala;
●Kotlin;
●Swift;
●Dart.
- 14 -
3 . З а д а н и я д л я в ы п ол н е н и я п р а к т и ч е с к и х р а б от
3 . 1 . З а д а н и я д л я п р а к т и ч ес к о й р а б от ы № 1
Требуется выполнить следующие задания:
•Создать учетные записи Microsoft Live ID, MS Docs, DreamSpark (Студент +
Разработчик - Скриншоты для отчета);
•Установить Visual Studio Community (Скриншоты для отчета);
•Пройти тест по тематике C#/Visual Studio в Microsoft Virtual Academy
(Скриншоты для отчета)
Примечание.
Полезные ссылки:
https://www.visualstudio.com/ru/ - интегрированная среда разработки Microsoft Visual Studio Community (бесплатная версия для студентов);
https://docs.microsoft.com/ru-ru/learn/ - Microsoft Docs – большой набор бесплатных курсов по разработке программного обеспечения, системному администрированию и т.д.
SQL Server Downloads | Microsoft – Сайт MS SQL Server. Бесплатные версии
Developer или Express потребуются для выполнения курсовой работыSystem.Data.SqlClient – является поставщиком данных платформы .NET
для SQL Server.
Справочники: https://msdn.microsoft.com/ru-ru/library/618ayhy6(v=vs.90).aspx https://msdn.microsoft.com/ru-ru/library/dd264733(v=vs.110).aspx
Для привязки учетной записи DreamSpark: https://blogs.msdn.microsoft.com/rustudents/2013/09/18/dreamspark-1/
Компоненты для выполнения практических работ представлены на рис. 3.1.
- 15 -
Рис. 3.1. Окно компонентов Visio Studio Community 2017.
Для создания проекта «Приложение Windows Forms(.NET Framework Visual C#) использовать действия, представленные на рис. 3.2 и 3.3.
Рис. 3.2. Окно создания нового проекта Microsoft Visio Studio.
- 16 -
Рис. 3.3. Окно настройки нового проекта Microsoft Visio Studio.
Типы данных С#, используемых в работе, представлены в табл. 3.1.
|
|
|
|
Таблица 3.1 |
|
|
|
|
|
|
|
Краткое имя |
.Класс .NET |
Тип |
Размер |
Диапазон (бит) |
|
|
|
|
|
|
|
byte |
Byte |
Целое число без знака |
8 |
От 0 до 255 |
|
|
|
|
|
|
|
sbyte |
SByte |
Целое число со знаком |
8 |
От -128 до 127 |
|
|
|
|
|
|
|
int |
Int32 |
Целое число со знаком |
32 |
От -2 147 483 648 до |
|
2 147 483 647 |
|||||
|
|
|
|
||
|
|
|
|
|
|
uint |
UInt32 |
Целое число без знака |
32 |
От 0 до 4 294 967 295 |
|
|
|
|
|
|
|
short |
Int16 |
Целое число со знаком |
16 |
От -32 768 до 32 767 |
|
|
|
|
|
|
|
ushort |
UInt16 |
Целое число без знака |
16 |
От 0 до 65 535 |
|
|
|
|
|
|
|
long |
Int64 |
Целое число со знаком |
64 |
От -922 337 203 685 477 508 |
|
до 922 337 203 685 477 507 |
|||||
|
|
|
|
||
|
|
|
|
|
|
ulong |
UInt64 |
Целое число без знака |
64 |
От 0 до |
|
18 446 744 073 709 551 615 |
|||||
|
|
|
|
||
|
|
|
|
|
|
float |
Single |
Число одинарной точности |
32 |
От -3,402 823e38 до |
|
с плавающей запятой |
3,402 823e38 |
||||
|
|
|
|||
|
|
|
|
|
- 17 -
|
|
|
|
Продолжение таблицы 3.1 |
|
|
|
|
|
|
|
Краткое имя |
.Класс .NET |
Тип |
Размер |
Диапазон (бит) |
|
|
|
|
|
|
|
double |
Double |
Число двойной точности с |
64 |
От -1,797 693 134 862 32e308 |
|
плавающей запятой |
до 1,797 693 134 862 32e308 |
||||
|
|
|
|||
|
|
|
|
|
|
char |
Char |
Одиночный знак Юникода |
16 |
Знаки Юникода в тексте |
|
|
|
|
|
|
|
bool |
Boolean |
Логический тип |
8 |
true или false |
|
|
|
|
|
|
|
object |
Object |
Базовый тип для всех |
|
|
|
остальных типов |
|
|
|||
|
|
|
|
||
|
|
|
|
|
|
string |
String |
Последовательность |
|
|
|
знаков |
|
|
|||
|
|
|
|
||
|
|
|
|
|
|
|
|
Точный дробный или |
|
|
|
|
|
целочисленный, который |
|
От ±1,0 Ч 10e−28 до |
|
decimal |
Decimal |
может представлять |
128 |
||
±7,9 Ч 10e28 |
|||||
|
|
десятичные числа с 29 |
|
||
|
|
|
|
||
|
|
значащими цифрами. |
|
|
|
|
|
|
|
|
Преобразования типов С# могут быть неявные (см. табл. 3.2) и явные (см.
табл. 3.3).
Таблица 3.2
|
Неявные преобразования типов С# |
|
|
Исходный тип |
Конечный тип |
|
|
Byte |
short, ushort, int, uint, long, ulong, float, double или decimal |
|
|
Sbyte |
short, int, long, float, double или decimal |
|
|
Int |
long, float, double или decimal |
|
|
Uint |
long, ulong, float, double или decimal |
|
|
Short |
int, long, float, double или decimal |
|
|
Ushort |
int, uint, long, ulong, float, double или decimal |
|
|
Long |
float, double или decimal |
|
|
Ulong |
float, double или decimal |
|
|
Float |
double |
|
|
Char |
ushort, int, uint, long, ulong, float, double или decimal |
|
|
Преобразования из int, uint или long в float и из long в double могут сопровождаться потерей точности, но не потерей величин.
Не поддерживается неявное преобразование в тип char.
- 18 -
Неявные преобразования между типами с плавающей запятой и типом decimal отсутствуют.
Выражение константы int можно преобразовать в sbyte, byte, short, ushort, uint или ulong при условии, что значение выражения константы находится в диапазоне типа назначения.
Таблица 3.3
|
Явные преобразования типов С# |
|
|
Исходный тип |
Конечный тип |
|
|
Byte |
sbyte или char |
|
|
Sbyte |
byte, ushort, uint, ulong или char |
|
|
Int |
sbyte, byte, short, ushort, uint, ulong или char |
|
|
Uint |
sbyte, byte, short, ushort, int или char |
|
|
Short |
sbyte, byte, ushort, uint, ulong или char |
|
|
Ushort |
sbyte, byte, short или char |
|
|
Long |
sbyte, byte, short, ushort, int, uint, ulong или char |
|
|
Ulong |
sbyte, byte, short, ushort, int, uint, long или char |
|
|
Float |
sbyte, byte, short, ushort, int, uint, long, ulong, char или decimal |
|
|
Double |
sbyte, byte, short, ushort, int, uint, long, ulong, char, float или decimal |
|
|
Char |
sbyte, byte или short |
|
|
Decimal |
sbyte, byte, short, ushort, int, uint, long, ulong, char, float или double |
|
|
Кособенностям явных преобразований относят:
•явное числовое преобразование может привести к потере точности или вызвать исключения;
•во время преобразования значения decimal в целочисленный тип оно округляется в сторону нуля до ближайшего целого значения. Если полученное целое значение выходит за допустимые пределы значений конечного типа, возникает исключение OverflowException;
•во время преобразования значения double или float в целочисленный тип оно усекается. Если полученное целое значение выходит за допустимые пределы конечного значения, результат зависит от контекста проверки
переполнения. В контексте с проверкой возникает исключение
- 19 -
OverflowException, а в контексте без проверки результатом является неуказанное значение конечного типа;
•при преобразовании double в float, значение double округляется до ближайшего значения float. Если значение double слишком мало или слишком велико для конечного типа, результатом является нуль или бесконечность;
•при преобразовании float или double в decimal исходное значение преобразуется в представление decimal и округляется до ближайшего числа после 28-го десятичного знака, если это необходимо. В зависимости от исходного значения может быть получен один из следующих результатов:
•если исходное значение слишком мало для представления в качестве decimal, результатом является нуль;
•если исходное значение не является числом, равно бесконечности или слишком велико для представления в качестве decimal, возникает исключение OverflowException;
•при преобразовании decimal в float или double, значение decimal округляется до ближайшего значения double или float.
Примеры функций явных преобразований: int i1 = 1;
label1.Text= Convert.ToString(i1) – преобразование целочисленного значения
встроку.
label4.Text = ‘Сумма' + Convert.ToString(Convert.ToInt16(textBox1.Text) +
Convert.ToInt16(textBox2.Text)) – преобразование строки в целочисленное
значение, а затем преобразование их суммы в строку. Convert.ToТребуемыйТипДанных – в общем виде.
Примечание.
Для самостоятельного изучения и разработки:
1.Типы значений и ссылочные типы: отличия, особенности и примеры применения. Подготовить сообщение.
2.Нотация CamelCase. Подготовить сообщение.
3. Стандартные элементы управления. Краткое описание элементов и
- 20 -
