Файл: Основные понятия объектно-ориентированного программирования».pdf
Добавлен: 03.04.2023
Просмотров: 318
Скачиваний: 2
1.4. Качество программ и методы его контроля
Качество программного обеспечения определяется в стандарте ISO 9126 как вся совокупность его характеристик, относящихся к возможности удовлетворять высказанные или подразумеваемые потребности всех заинтересованных лиц.
Основными характеристиками и атрибутам качественных программных продуктов (Рисунок 13) согласно ISO 9126: 2001 являются[14] [19] :
- Функциональность (functionality) – данная характеристика отвечает за количество функций, которая должна выполнять программа, чтобы удовлетворить все потребности пользователей, также данная характеристика является основой для проведения функционального тестирования.
Рисунок 13– Характеристики качества ПО
- Надежность (reliability)- данная характеристика отвечает за поддержку работоспособности программы в определенных условиях, также важно задавать уровень надежности.
Удобство использования (usability) данная характеристика отвечает за характеристику, которую легко оценивают пользователи и могут сравнить с другими аналогичными программами. [8]У каждого атрибута существует набор метрик, позволяющих его оценить
-
- Контролировать качество - возможно с помощью процесса верификации и валидации(Рисунок 14)[15] [19].
- Верификация – это возможность проверить, что программное обеспечение было разработано в соответствии с требованиями, или что результаты следующего этапа развития, разработаны в установленных пределах, которые определены на предыдущих стадиях[13];
Рисунок 14 – Методы контроля качества программ
-
- Валидация — проверяет, что продукт правилен, т.е. он удовлетворяет потребностям заказчиков, т.е. разработан табличный редактор, а не калькулятор.
Эффективность верификации и валидации, зависит от полноты и корректности формулировки требований к программному продукту.
Выводы по главе 1
Парадигма объектно-ориентированного программирования появилась не на пустом месте, а явилась продолжением развития структурного и процедурного программирования. На текущий момент развития программирования объектно-ориентированная парадигма является основной для создания современных программ.
Создание любых программ в любой предметной области проходит определенные этапы, которые включают анализ проблемы, проектирование, разработку и тестирование программного кода.
При создании программ на объектно-ориентированном языке необходимо стремиться к написанию качественного кода, т.е. обладающего следующими характеристиками: функциональность, надежность, удобство использования и производительность.
2. ОСНОВНЫЕ ПОНЯТИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
2.1. Классы и объекты
Класс - это программный элемент, который описывает абстрактный тип данных и его частичную или полную реализацию. Наряду с концепцией «объект», класс является ключевым понятием в ООП. Суть различия между классами и других абстрактных типов данных заключается в том, что при указании типа данных класс одновременно определяет интерфейс и реализацию для всех его экземпляров, а вызов метода конструктора является обязательным.
На практике объектно-ориентированное программирование сводится к созданию ряда классов (Рисунок 15), включая интерфейс и реализацию, и их последующее использование[16] [9].
Рисунок 15 – Описание класса
Графическое представление ряда классов и отношений между ними называется диаграммой классов[17] [12] (Рисунок 16).
Рисунок 16 – Диаграмма классов
Идея классов исходила из работ по основам знаний, связанным с исследованиями в области искусственного интеллекта. Человеческие классификации в зоологии, ботанике, химии, машинных частях несут основную идею о том, что любая вещь всегда может быть представлена как частный случай более общей концепции. Конкретное яблоко обычно представляет собой яблоко, яблоко вообще, и любое яблоко вообще является плодом.
У класса определены две роли[18] [1]:
- модуль. Модульная конструкция - основное свойство программных систем. Модульная конструкция - главное средство борьбы со сложностью системы.
- тип данных- определяет реализацию абстракции данных, характеристика проблемной области, сущностей реального мира.
Проектирование системы сводится к поиску абстракций данных, которые подходят для выполнения конкретной задачи. Каждая из этих абстракций должна быть реализована как класс.
Общий синтаксис описания класса представляет в следующем виде:
[атрибуты][модификаторы]class имя_класса[:список_родителей]
{тело_класса}
Модификаторы класса могут быть :
- abstract, sealed, необходимы для наследования,
- private и protected - необходимы для вложенных классов.
- public – доступны для всех.
В теле класса могут быть объявлены:
- конструкторы и деструкторы;
- методы;
- константы;
- поля;
- события;
- классы (структуры, делегаты, интерфейсы, перечисления).
Под объектом в ООП - представляется отдельно реализуемая часть предметной области. Программа, состоит из объектов, взаимодействующих через передачу сообщений.
Объект характеризуется характеристиками конкретных значений из списка всех возможных свойств данного объекта. Каждый объект, получив сообщение, обязан «реагировать» на них определенным образом, выполнив определенные действия для сообщения[19] [1].
Объекты отображаются на диаграмме объектов (Рисунок 17)
Рисунок 17 – Диаграмма объектов
Объекты, которые имеют аналогичное поведение и состояние, образуют класс. Индивидуальность - это свойство объекта, которое отличает его от всех других объектов в группе.
Возможные операции над объектами[20] [13](Рисунок 18) :
- создание – первоначальное объеявление объета;
- модификация – изменение объекта;
- Уничтожение – удаление из памяти объекта;
- выбор - определения состояния объекта;
- Итерация - способность касаться содержимого объекта по частям в определенной последовательности.
Рисунок 18 - - Типы операций над объектом
2.2. Наследование и полиморфизм
Основные средства разработки классов
Наследование. (Рисунок 19) Базовый класс, часто называют родителем, а производный - потомком. Механизм наследования обеспечивает классу-потомку возможность использования полей и методов одного или нескольких родительских классов.
Рисунок 19- Иерархия классов при различных видах наследования
Простой полиморфизм [21][13] (Рисунок 20). Создавая иерархии классов можно обнаружить, что некоторые характеристики объектов, сохраняя название, изменяются, по сути. Полиморфизм называют простым, а методы, имеющие одинаковое название - статически полиморфными методами. Объединение полиморфных методов с одним именем для иерархии классов образует единый полиморфный метод иерархии.
Рисунок 20 - Полиморфизм
2.3. События
Каждый объект является экземпляром класса. Класс определяет свойства и поведение его экземпляров. Методы класса определяют поведение объектов, свойств, их состояние. Все объекты имеют одинаковые методы и, следовательно, ведут себя одинаково.
Одним из самых известных способов задания поведения класса является наследование. Второй способ задания поведения класса - это механизм событий. Классы, помимо свойств и методов, могут иметь события.
Событие - это особое состояние, в котором может быть объект класса. Кнопка может быть нажата - событие Click, документ может быть закрыт - событие Close и т. Д.
Интерфейс и многие другие программные объекты имеют стандартный набор предопределенных событий. Класс, в котором есть событие будет содержать следующие пункты[22] [15]
- объявленное событие в классе;
- зажигания события в соответствующее время, передача обработчику, необходимых аргументов. (Ignite или switch event означает некоторый механизм, который позволяет объекту уведомлять класс о том, что произошло событие.);
- анализ события.
Одно и то же сообщение может быть получено и обработано( Рисунок 21).Обработчик события - это обычная процедура с аргументами. Сообщение, посылаемое при зажигании события, является аналогом вызова процедуры. Объявление события синтаксически задает сигнатуру процедуры.
Причины возникновения события могут быть разными. Одно и то же событие будет зажигаться в разных методах класса в тот момент, когда возникнет одна из причин появления события. Поскольку действия по включению могут повторяться, полезно в состав методов класса добавить защищенную процедуру, включающую событие. Даже если событие зажигается только в одной точке, написание такой процедуры считается признаком хорошего стиля. Этой процедуре обычно дается имя, начинающееся со слова On, после которого
Рисунок 21- Взаимодействие объектов. Посылка и получение сообщения о событии
Выводы по главе 2
Основу объектно-ориентированного программирования составляют понятия класс и объект. Класс - это программный элемент, который описывает абстрактный тип данных и его частичную или полную реализацию. На практике объектно-ориентированное программирование сводится к созданию ряда классов, включая интерфейс и реализацию, и их последующее использование.
Под объектом в ООП - представляется отдельно реализуемая часть предметной области. Объекты, которые имеют аналогичное поведение и состояние, образуют класс.
Основные средства разработки классов:
- Наследование.
- Простой полиморфизм
- механизм событий.
3. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Популярность языков программирования по данным сайта[23] [18] в 2016 году была следующая: (Рисунок 22)
Рисунок 22 - Популярность языков программирования в 2016
Рассмотрим тройку популярных языков программирования.
3.1. Популярные объектно-ориентированные языки программирования
1. Java
Java (дата официального релиза 23 мая 1995 года) является сильно типизированным объектно-ориентированным языком программирования, разработанный компанией Sun Microsystems. Приложения, разработанные на языке высокого уровня Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре, с помощью виртуальной Java-машины.
Первоначально язык назывался Oak («Дуб») и был разработан Джеймсом Гослингом для программирования бытовых электронных устройств. Впоследствии он был переименован в Java и стал использоваться для написания клиентских приложений и серверного программного обеспечения. Названный в честь бренда кофе Java, который, в свою очередь, получил название острова с таким же названием (Java - Ява), поэтому официальный логотип этого языка показывает чашку горячего кофе (Рисунок 23).
Рисунок 23 – Логотип Java
Особенности языка[24] [6]:
- Программы на Java транслируются в байт-код Java, выполняемый виртуальной машиной Java (JVM).
- полная независимость байт-кода от операционной системы и оборудования,
- гибкая система безопасности.
Недостатки языка
- снижение производительности.
Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, нашли выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.
2. C#[25][17]
C# (Рисунок 24) —объектно-ориентированный язык, предназначенный для разработки разнообразных безопасных и мощных приложений, выполняемых в среде .NET Framework.