exponenta event banner

Роль классов в 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.

Классы

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

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

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

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

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

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

  • Положительное целое число - целое число

  • Положительное целое число - положительное число

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

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

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

Объекты

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

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

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

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

Ссылки

[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] Фриман, Э., Элизабет Фриман, Кэти Сьерра, Берт Бейтс, руководитель первого дизайна. Себастополь, Калифорния 2004.

Связанные темы