Файл: Анализ и оценка средств реализации объектно-ориентированного подхода к проектированию экономической информационной системы».pdf
Добавлен: 02.04.2023
Просмотров: 324
Скачиваний: 1
Полиморфизм реализуется путём введения в язык правил, согласно которым переменной типа «класс» может быть присвоен объект любого класса-потомка её класса.
3.2 Подходы к проектированию программ в целом
ООП ориентировано на разработку крупных программных комплексов, разрабатываемых командойпрограммистов (возможно, достаточно большой). Проектирование системы в целом, создание отдельныхкомпонент и их объединение в конечный продукт при этом часто выполняется разными людьми, и нет ниодного специалиста, который знал бы о проекте всё.
Объектно-ориентированное проектирование основывается на описании структуры и поведенияпроектируемой системы, то есть, фактически, в ответе на два основных вопроса:
Из каких частей состоит система.
В чём состоит ответственность каждой из частей.
Выделение частей производится таким образом, чтобы каждая имела минимальный по объёму и точноопределённый набор выполняемых функций (обязанностей), и при этом взаимодействовала с другимичастями как можно меньше.
Дальнейшее уточнение приводит к выделению более мелких фрагментов описания. По мере детализацииописания и определения ответственности выявляются данные, которые необходимо хранить, наличиеблизких по поведению агентов, которые становятся кандидатами на реализацию в виде классов с общимипредками. После выделения компонентов и определения интерфейсов между ними реализация каждогокомпонента может проводиться практически независимо от остальных (разумеется, при соблюдениисоответствующей технологической дисциплины).
Большое значение имеет правильное построение иерархии классов. Одна из известных проблем большихсистем, построенных по ООП-технологии — так называемая проблема хрупкости базового класса. Онасостоит в том, что на поздних этапах разработки, когда иерархия классов построена и на её основеразработано большое количество кода, оказывается трудно или даже невозможно внести какие-либоизменения в код базовых классов иерархии (от которых порождены все или многие работающие в системеклассы). Даже если вносимые изменения не затронут интерфейс базового класса, изменение его поведенияможет непредсказуемым образом отразиться на классах-потомках. В случае крупной системы разработчикбазового класса не просто не в состоянии предугадать последствия изменений, он даже не знает о том, какименно базовый класс используется и от каких особенностей его поведения зависит корректность работыклассов-потомков.
3.3Объектно-ориентированные языки
Основная статья: Объектно-ориентированный язык программирования
Многие современные языки специально созданы для облегчения объектно-ориентированногопрограммирования. Однако следует отметить, что можно применять техники ООП и для необъектно-ориентированного языка и наоборот, применение объектно-ориентированного языка вовсе не означает, чтокод автоматически становится объектно-ориентированным.
Современный объектно-ориентированный язык предлагает, как правило, следующий обязательный наборсинтаксических средств:
Объявление классов с полями (данными членами класса) и методами (функциями членами класса).
Механизм расширения класса (наследования) порождение нового класса от существующего савтоматическим включением всех особенностей реализации класса-предка в состав класса-потомка.
Большинство ООП-языков поддерживают только единичное наследование.
Средства защиты внутренней структуры классов от несанкционированного использования извне. Обычноэто модификаторы доступа к полям и методам, типа public, private, обычно также protected, иногданекоторые другие.
Полиморфные переменные и параметры функций (методов), позволяющие присваивать одной и той жепеременной экземпляры различных классов.
Полиморфное поведение экземпляров классов за счёт использования виртуальных методов.
В некоторыхООП-языках все методы классов являются виртуальными.
Видимо, минимальным традиционным объектно-ориентированным языком можно считать язык Оберон, который не содержит никаких других объектных средств, кроме вышеперечисленных (в исходном Оберонедаже нет отдельного ключевого слова для объявления класса, а также отсутствуют явно описываемыеметоды, их заменяют поля процедурного типа). Но большинство языков добавляют к указанномуминимальному набору те или иные дополнительные средства. В их числе:
Конструкторы, деструкторы, финализаторы.
Свойства (аксессоры).
Индексаторы.
Интерфейсы — как альтернатива множественному наследованию.
Переопределение операторов для классов.
Часть языков (иногда называемых «чисто объектными») целиком построена вокруг объектных средств вних любые данные (возможно, за небольшим числом исключений в виде встроенных скалярных типовданных) являются объектами, любой код методом какого-либо класса и невозможно написать программу, в которой не использовались бы объекты. Примеры подобных языков Java или Ruby. Другие языки (иногдаиспользуется термин «гибридные») включают ООП-подсистему в исходно процедурный язык. В нихсуществует возможность программировать, не обращаясь к объектным средствам. Классические примеры— C++ и Delphi Pascal.