После многх попыток создания унифицированных языков для решения задач моделирования был разработан и опробован объектно-ориентированный подход. Первый язык Simula-67, основанный на данном подходе, был создан в 1967 г, а в 1983 г. появился и язык С++.
Объектно-ориентированный подход позволяет:
- описывать структуру объекта;
- описывать действия с объектами;
- использовать специальные правила наследования объектов;
- передавать сообщения между объектами.
Основной задачей этапов разработки любого программного обеспечения, предшествующих непосредственному программированию, является спецификация предметной области в терминах, удобных для дальнейшего применения в процессе разработки.
Объектно-ориентированный подход в моделировании называют объектно-ориентированным моделированием. Свое развитие он получил при переходе к компьютерному моделированию. В отличие от объектно-ориентированного программирования программные классы с их набором методов заменяются «классами-устройствами» с набором поведений, свойственных данному объекту. Если базовые классы заданы, то моделирование на вычислительной машине ничем не отличается от объектно-ориентированного моделирования. Ситуация изменяется, если разрабатывается модель системы впервые, а структура и поведение системы подлежат анализу. Объектно-ориентированный подход предлагает строгую последовательность операций, знакомую разработчикам программных приложений.
Язык Unified Modeling Language (UML) является унифицированным языком моделирования, в котором воплощены принципы объектно-ориентированного подхода. Рассмотрим назначение и основные компоненты UML [4, 21, 22].
UML относится к языкам визуального моделирования и реализует объектно-ориентированный подход к разработке сложных систем следующими средствами:
- программная система представляется в виде множества самостоятельных сущностей, взаимодействующих друг с другом, реализующих свое собственное поведение и осуществляющей хранение информации, необходимой ддя ее функционирования, причем, с каждой сущностью связано понятие класса и объекта;
- класс ‑ это группа сущностей (объектов), обладающих сходными свойствами, а именно, данными и поведением, причем, отдельного представителя некоторого класса называют объектом класса или просто объектом;
- каждый объект защищен системой правил, не позволяющих окружающим объектам произвольно менять его данные или влиять на его поведение, причем правила определяют способ взаимодействия с окружением (интерфейс) и скрывают детали реализации;
- под поведением объекта в UML понимаются любые правила взаимодействия объекта с внешним миром и с данными самого объекта;
- процесс разделения сущностей на классы и построение общей классификации осуществляются с помощью механизма наследования и полиморфизма;
- наследование ‑ это отношение, определяющее уровень иерархии конкретного класса в графе классов, и показывающее, что потомки конкретного класса являются разновидностью класса-родителя, причем, механизм наследования реализуется с помощью копирования всех атрибутов предка (наследования) и их частичного переопределения, как данных, так и поведения (методы);
- для удобства иерархического представления больших систем классы можно объединять в группы (пакеты) или использовать модульный подход при проектировании;
- полиморфизм связан с переопределением поведения объектов, для описания полиморфизма вводятся понятия операции и метода.
У каждого класса есть операции, которые определяют его поведение. Операции наследуются потомками, но каждый потомок класса может предоставить свой метод реализации любой унаследованной операции, отличный от соответствующего метода предка.
С операцией связано качественное описание поведения объекта, а с методом - его конкретная реализация. Таким образом, можно наследуя операции, придавать им нужные свойства, присущие объектам класса-потомка.