Роль классов в MATLAB

Классы

В MATLAB® язык, каждое значение присваивается классу. Для примера создание переменной с оператором назначения создает переменную соответствующего класса:

a = 7;
b = 'some text';
s.Name = 'Nancy';
s.Age = 64;
whos
whos
  Name      Size            Bytes  Class     Attributes

  a         1x1                 8  double
  b         1x9                18  char
  s         1x1               370  struct 

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

Предопределенные классы

MATLAB задает фундаментальные классы, которые состоят из основных типов, используемых языком. Эти классы включают в себя числовой, logical, char, cell, struct, и указатель на функцию.

Пользовательские классы

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

p1 + p2

а plus операция должна быть способна добавить полиномиальные объекты, потому что полиномиальный класс определяет эту операцию.

Когда вы задаете класс, можно перегрузить специальные функции MATLAB (такие как plus.m для оператора сложения). MATLAB вызывает эти методы, когда пользователи применяют эти операции к объектам вашего класса.

Смотрите Представление Полиномов с Классами для примера, который создает именно такой класс.

Классы MATLAB - Ключевые условия

Классы MATLAB используют следующие слова для описания различных частей определения класса и связанных с ним концепций.

  • Определение класса - Описание общего для каждого образца класса.

  • Свойства - Хранение данных для образцов классов

  • Методы - Специальные функции, которые реализуют операции, которые обычно выполняются только на образцах класса

  • События - Сообщения, заданные классами и транслируемые образцами классов, когда происходит некоторое конкретное действие

  • Атрибуты - Значения, которые изменяют поведение свойств, методов, событий и классов

  • Прослушиватели - Объекты, которые отвечают на определенное событие, выполняя функцию обратного вызова, когда уведомление о событии транслируется

  • Объекты - Образцы классов, которые содержат фактические значения данных, хранящиеся в свойствах объектов

  • Подклассы - Классы, которые получают из других классов и которые наследуют методы, свойства и события из этих классов (подклассы облегчают повторное использование кода, заданного в суперклассе, из которого они получают).

  • Суперклассы - Классы, которые используются как базис для создания более конкретно определенных классов (то есть подклассов).

  • Пакеты - Папки, которые определяют возможности для именования классов и функций

Некоторые основные отношения

В этом разделе рассматриваются некоторые основные концепции, используемые классами MATLAB.

Классы

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

Иерархии классов

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

Математические множества могут помочь проиллюстрировать отношения между классами. В следующей схеме набор Положительных Целых Чисел является подмножеством множества Целых Чисел и подмножеством Положительных Чисел. Все три набора являются подмножествами Reals, что является подмножеством Всех Чисел.

Для определения положительных целых чисел требуется дополнительная спецификация, чтобы представители набора были больше нуля. Положительные целые числа объединяют определения как из Целых, так и из Положительных. Получившееся подмножество является более конкретным и, следовательно, более узко определенным, чем суперсеты, но все еще имеет все характеристики, которые определяют суперсети.

Отношение «является» является хорошим способом определить, целесообразно ли задавать конкретное подмножество с точки зрения существующих суперсетов. Например, каждое из следующих операторов делает чувства:

  • Положительное целое число является целым числом

  • Положительное целое число является Положительным числом

Если отношение «является» удерживается, тогда, вероятно, вы можете задать новый класс из класса или классов, которые представляют более общий случай.

Повторное использование решений

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

Объекты

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

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

Инкапсуляция информации

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

Ссылки

[1] Shalloway, A., J. R. Trott, Design Patterns Объяснение новой перспективы объектно-ориентированного проекта. Бостон, Массачусетс: Эддисон-Уэсли 2002.

[2] Gamma, E., R. Helm, R. Johnson, J. Vlissides, Design Patterns Elements of Reusable Object-Oriented Software. Бостон, Массачусетс: Эддисон-Уэсли 1995.

[3] Freeman, E., Elisabeth Freeman, Kathy Sierra, Bert Bates, Head First Design Patterns. Sebastopol, CA 2004.

Похожие темы