Иерархии классов - Концепции

Классификация

Организация классов в иерархии упрощает повторное использование кода и повторное использование решений проблем проектирования, которые были уже решены. Можно думать об иерархиях классов как о наборах — надмножества (называемый superclasses или base classes), и подмножества (называемый subclasses или derived classes). Например, следующее изображение показывает, как вы могли представлять базу данных сотрудника с классами.

Корнем иерархии является Employees класс. Это содержит данные и операции, которые применяются к группе всех сотрудников. Содержавшийся в группе сотрудников подмножества, члены которых, в то время как все еще сотрудники, являются также членами наборов, которые более в частности задают тип сотрудника. Подклассы как TestEngineer примеры этих подмножеств.

Разработка абстракции

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

При разработке классов абстракция содержит только те элементы, которые необходимы. Например, цвет волос сотрудника и размер обуви, конечно, характеризуют сотрудника, но вероятно не относятся к проекту этого класса сотрудника. Их область продаж относится только к некоторому сотруднику, таким образом, эта характеристика принадлежит подкласса.

Дизайн иерархий классов

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

  • Постарайтесь не копировать код, который характерен для всех классов.

  • Добавьте или измените подклассы в любое время, не изменяя суперкласс или влияя на другие подклассы.

  • Если суперкласс изменяется (например, всем сотрудникам присваивают номер), то подкласс автоматически получает эти изменения.

Супер и поведение подкласса

Объекты подкласса ведут себя как объекты суперкласса, потому что они - специализации суперкласса. Этот факт упрощает разработку связанных классов, которые ведут себя точно так же, но реализованы по-другому.

Объект подкласса “является” объектом суперкласса

Можно обычно описывать отношение между объектом подкласса и объектом его суперкласса с оператором как:

Подкласс является суперклассом. Например: Инженер является Сотрудником.

Это отношение подразумевает, что объекты, принадлежащие подклассу, имеют те же свойства, методы и события как суперкласс. Разделите объекты на подклассы, также имеют любые новые возможности, заданные подклассом. Протестируйте это отношение с isa функция.

Обработка Объектов подкласса как Объекты Суперкласса

Можно передать объект подкласса методу суперкласса, но можно получить доступ только к тем свойствам, которые задает суперкласс. Это поведение позволяет вам изменить подклассы, не влияя на суперкласс.

Две точки о супер и поведении подкласса, чтобы иметь в виду:

  • Методы, заданные в суперклассе, могут работать с объектами подкласса.

  • Методы, заданные в подклассе, не могут работать с объектами суперкласса.

Поэтому можно обработать Engineer возразите как любой другой Employees объект, но Employee объект не может передать для Engineer объект.

Ограничения, чтобы возразить замене

MATLAB® определяет класс основанного на объектах на его самом определенном классе. Поэтому Engineer объект имеет class Engineer, в то время как это - также Employees объект, как использование isa функция показывает.

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

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

Смотрите matlab.mixin.Heterogeneous для получения информации об определении неоднородных иерархий классов.

См. Преобразователи объектов для получения информации об определении методов конвертера.

Реализация и интерфейсное наследование

Классы MATLAB поддерживают и наследование реализованных методов от суперкласса и наследование интерфейсов, заданных абстрактными методами в суперклассе.

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

Интерфейсное наследование полезно в этих случаях:

  • Вы хотите, чтобы группа классов обеспечила общий интерфейс.

  • Подклассы создают специализированные реализации методов и свойств.

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

Подклассы должны обеспечить свою собственную реализацию абстрактных членов суперкласса. Чтобы создать интерфейс, задайте методы и свойства как краткий обзор с помощью их Abstract атрибут. См. Абстрактные классы и Члены класса для получения дополнительной информации и пример.

Похожие темы