Объектно ориентированное описание системы - Объектно-ориентированное программирование (ООП)

Эта статья — продолжение серии статей об ООП. В этой заметке будут описаны классы. Это довольно сложная тема, рассмотрение которой подразумевает что Вы знакомы с понятием объекта в объектно-ориентированном программировании. В любой системе функционирует множество объектов. Например, в банковской системе имеется множество объектов-счетов и объектов-клиентов.

Однотипные объекты объединяются в классы. Все объекты одного и того же класса обладают одинаковым интерфейсом и реализуют этот интерфейс одним и тем же способом. Два объекта одного класса в ООП могут отличаться только текущим состоянием, причем всегда теоретически возможно так изменить состояние одного объекта, чтобы он стал равным другому объекту.

Важно, что реагируют они на это сообщение одинаково, то есть реализация метода у всех объектов одного класса одинакова. Индивидуальные объекты называются экземплярами класса , а класс в ООП — это шаблон по которому строятся объекты. Таким образом, наша банковская система состоит из экземпляров трех классов: Названия классов в ООП пишутся с большой буквы, а названия объектов — с маленькой.

Представленная ниже графическая схема классов соответствует обозначениям, принятым в Унифицированном языке моделирования UML. В реальности же, счета могут быть различными. Срочный вклад отличается от расчетного и от вклада до востребования. У них имеются разные характеристики, и они по-разному реализуют одни и теже операции. Поэтому для их описания нужны разные классы. Интерфейс — это внешняя часть класса. Интерфейс определяет, как объекты данного класса могут взаимодействовать с другими объектами этого или других классов.

Однако, если у двух объектов совпадают интерфейсы это еще не значит что они принадлежат к одному и тому же классу. Кроме совпадения интерфейсов необходимо, чтобы и их реализация и поведение были одинаковыми. Тип — это область определения некой величины, то есть множество ее возможных значений и набор применимых операций.

Тип может задаваться классом. Важнейшим свойством классов в ООП и их принципиальным отличием от абстрактных типов данных встроенных в язык программирования является наследование. Наследование — это отношение между классами, при котором один класс разделяет структуру или поведение одного или нескольких других классов.

Механизм наследования классов в ООП позволяет выделить общие части разных классов. В приведенном выше примере, были выделены разные типы счетов в банковской системе. Однако они имеют много общего. Графически это изображается в виде иерархии. Наследование классов в ООП может быть многоуровневым. Пример такой многоуровневой структуры классов-счетов представлен ниже. Иерархию классов в ООП можно построить по-разному.

Фактически иерархия классов является классификатором объектов. Как видно из рисунка, представленного выше, разница между рублевым и валютным счетом настолько существенна, что они выделены в разные классы. Разные виды Депозитов также представлены разными классами. Важно отметить, что в ООП существует особый тип классов — абстрактные классы.

Абстрактные классы — это классы для которых не существует экземпляров, они лишь описывают общие характеристики классов-потомков. Зато он используется для реализации общего интерфейса для классов-потомков. Конкретные классы — это классы экземпляры которых могут существовать или существуют в системе в отличии от абстрактных классов. Механизм абстрактных классов в ООП является чрезвычайно мощным понятием, которое широко используется.

Назначением абстрактных классов в ООП является определение общих, наиболее характерных методов и атрибутов наследуемых из них классов.

Чаще всего абстрактные классы используются для задания общего интерфейса иерархии конкретных классов, хотя и атрибуты, и реализация каких-либо методов могут присутствовать в абстрактных классах.

Рассмотренные до сих пор примеры показывали как класс в ООП может унаследовать методы и атрибуты одного базового класса. Такое наследование носит название одинарного или простого наследования. Наряду с ним существует и множественное наследование , при котором у одного класса имеется несколько базовых. Множественное наследование в ООП позволяет объединять характеристики различных классов в одном. Мы рассмотрели иерархию классов для представления счетов в банковской системе, которая отображает функциональные характеристики счетов — возможности пожить или снять деньги со счета.

С другой стороны, при реализации этой банковской системы многие объекты, в том числе и счета, должны храниться в базе данных. Полиморфизм — это возможность взаимодействия с объектом, не зная, к какому конкретному классу он относится. Например, посылая сообщение любому счету мы используем полиморфизм всех счетов. В данном случае полиморфизм является ограниченным. В большинстве случаев используется именно ограниченный полиморфизм.

Тем не менее, иногда любой объект системы может обработать некоторое сообщение. Например, в языке Java у всех объектов имеется метод toString , приводящий значение объекта к строковому виду, соответственно любому объекту независимо от его класса можно послать сообщение toString.

Объектно-ориентированные системы. Объектно-ориентированное программирование

При использовании полиморфизма в ООП используется знание интерфейса объекта, однако поведение конкретного объекта в ответ на полученное сообщение может быть различно в зависимости от конкретного класса этого объекта. Соответственно посылающий сообщение объект точно не знает, что произойдет при вызове метода.

Спасибо большое за такой отличный материал. Наконец-то нашла простое изложение, очень помогло. Очень хорошо и понятно всё изложено. Перед этим освоил статью про Объект. Большое спасибо за такое классное изложение, я действительно понял что такое объект, метод и класс, а так же тонкости классов что описаны в этой статье. По возможности буду рекомендовать Ваши статьи в качестве учебного пособия для двух знакомых преподавателей по ооп.

Объектно-ориентированное программирование

Ваш e-mail не будет опубликован. Комментарий var edInserted; if! Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования. Классы в ООП Объектно-ориентированном программировании 4 комментария. Классы в учебной банковской системе. Разделение счетов на разные классы. Схема многоуровневого наследования классов. Упрощенная иерархия валютных и рублевых счетов. Классы в ООП Объектно-ориентированном программировании: Только не хватает ссылки на следующую статью.

Добавить комментарий Отменить ответ Ваш e-mail не будет опубликован. Сайт работает на WordPress.