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

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

Организация классов в иерархии упрощает повторное использование кода и повторное использование решений проблем проектирования, которые были уже решены. Можно думать об иерархиях классов как о наборах — надмножества (называемый 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. См. Абстрактные классы для получения дополнительной информации и пример.

Похожие темы