На языке 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.
Класс является определением, которое задает определенные характеристики, которые совместно используют все экземпляры класса. Эти характеристики определяются свойствами, методами и событиями, которые задают класс и значения атрибутов, которые изменяют поведение каждого из этих компонентов класса. Определения классов описывают, как объекты класса создаются и уничтожаются, какие данные объекты содержат, и как можно управлять этим данные.
Это иногда целесообразно задавать новый класс с точки зрения существующих классов. Этот подход позволяет вам снова использовать проекты и методы в новом классе, который представляет подобную сущность. Вы выполняете это повторное использование путем создания подкласса. Подкласс задает объекты, которые являются подмножеством тех объектов, заданных суперклассом. Подкласс более конкретен, чем его суперкласс и может добавить новые свойства, методы и события к тем компонентам, наследованным от суперкласса.
Математические наборы могут помочь проиллюстрировать отношения среди классов. В следующей схеме набор Положительных Целых чисел является подмножеством набора Целых чисел и подмножеством Положительных сторон. Все три набора являются подмножествами Реалов, который является подмножеством Всех Чисел.
Определение Положительных Целых чисел требует дополнительной спецификации, что члены набора больше, чем нуль. Положительные Целые числа комбинируют определения и от Целых чисел и от Положительных сторон. Получившееся подмножество более конкретно, и поэтому более узко заданное, чем надмножества, но все еще совместно использует все характеристики, которые задают надмножества.
“” Отношение, хороший способ определить, уместно ли задать конкретное подмножество с точки зрения существующих надмножеств. Например, каждый из следующих операторов имеет смыслы:
Положительным Целым числом является Целое число
Положительным Целым числом является Положительное число
Если “” отношение, содержит, то вероятно, что можно задать новый класс от класса или классов, которые представляют некоторый более общий случай.
Классы обычно организуются в taxonomies, чтобы способствовать повторному использованию кода. Например, если бы вы задаете класс, чтобы реализовать интерфейс к последовательному порту компьютера, это, вероятно, было бы подобно классу, разработанному, чтобы реализовать интерфейс к параллельному порту. К коду повторного использования вы могли задать суперкласс, который содержит все, что характерно для двух типов портов, и затем выведите подклассы от суперкласса, в котором вы реализуете только, что уникально для каждого определенного порта. Затем подклассы наследовали бы всю общую функциональность от суперкласса.
Класс похож на шаблон для создания определенного экземпляра класса. Этот экземпляр или объект содержат фактические данные для конкретной сущности, которая представлена классом. Например, экземпляр класса банковского счета является объектом, который представляет определенный банковский счет с фактическим номером счета и фактическим балансом. Этот объект встроил в него способность выполнить операции, заданные классом, такие как создание депозитов к и вывода из баланса счета.
Объекты не являются просто пассивными контейнерами данных. Объекты активно управляют данными, содержавшими, позволяя только определенным операциям выполняться путем сокрытия данных, который не должен быть общедоступным, и препятствуя тому, чтобы внешние клиенты неправильно использовали данные путем выполнения операций, для которых не был разработан объект. Объекты даже управляют тем, что происходит, когда они уничтожаются.
Важный аспект объектов - то, что можно записать программное обеспечение, которое получает доступ к информации, хранившей в объекте через его свойства и методы, ничего не зная о том, как та информация хранится, или даже сохранено ли это или вычисляется, когда запрошено. Объект изолирует код, который получает доступ к объекту от внутренней реализации методов и свойств. Можно задать классы, которые скрывают и данные и операции из любых методов, которые не являются частью класса. Можно затем реализовать любой интерфейс, наиболее подходит для надлежащего использования.
[1] Shalloway, , J. R. Тротт, шаблоны разработки объяснили новый взгляд на объектно-ориентированный дизайн.. Бостон, MA: Аддисон-Уэсли 2002.
[2] Гамма, руль E., R., Р. Джонсон, Дж. Влиссайдс, элементы шаблонов разработки допускающего повторное использование объектно-ориентированного программного обеспечения. Бостон, MA: Аддисон-Уэсли 1995.
[3] Фримен, E., Элизабет Фримен, горная цепь Кэти, Берт Бэйтс, возглавляет первые шаблоны разработки. Севастополь, CA 2004.