Объектно-ориентированное программирование (ООП) в MATLAB
Объектно-ориентированное программирование (ООП) в MATLAB похоже на многие традиционные языки программирования, такие как Java, Python и т. д., за исключением синтаксиса. Важной особенностью ООП является то, что они позволяют объединять данные и связанные с ними действия (методы/функции) в объекты. По сравнению с другими языками, такими как C++, Java и т. д., объектно-ориентированное программирование будет намного быстрее в MATLAB, что позволит вам решать сложные вычислительные приложения. В ООП есть определенные функции, которые можно использовать для решения сложных задач, обеспечения безопасности данных и т. д.
Функции ООП , поддерживаемые MATLAB:
- Объект
- Учебный класс
- Полиморфизм
- Наследование
- Абстракция
- Инкапсуляция
Теперь давайте рассмотрим несколько примеров, чтобы лучше понять приведенные выше концепции.
Учебный класс
Класс — это шаблон/чертеж, определяемый пользователем, с помощью которого создаются объекты. Он состоит из набора атрибутов и методов, которые используются для объектных сущностей. Конструктор — это метод/функция, определенная с тем же именем, что и у класса, и она инициализирует классы определенными значениями, переданными через вызывающую функцию (т.е. конструктор). Определение конструктора необязательно, как и во многих других языках. Синтаксис MATLAB весьма своеобразен по сравнению с другими традиционными языками программирования.
Syntax:
classdef (attributes) className
. . . . .
end
Parameters:
classdef -> keyword used to define classes
attributes -> Arguments/Values used to modify the behaviour of class
Пример:
Matlab
% MATLAB program to illustrate Classes classdef adder % Attributes of a class are defined % in properties block properties value end % Function/Methods of class are defined % in methods block methods function res = addVal(obj) res = obj.value+obj.value; end end end |
Сохраните приведенный выше код как файл adder.m и получите доступ к нему с помощью команд из командной строки/другого файла Matlab. Давайте получим доступ к приведенному выше коду, дав некоторые команды из другого файла Matlab, и посмотрим на вывод, чтобы лучше понять его.
Matlab
% MATLAB program to access the % user defined classes % Initiating the Class temp=testing(); % Assign values to the class attributes temp.value=5; % Calling methods inside the class addVal(temp) |
Сохраните приведенный выше код как testing.m. После выполнения вышеуказанного файла вы получите следующий вывод.
Объект
Объект — это логическая сущность, которая взаимодействует с определяемым пользователем классом, вызывая методы/функции. Мы можем создать столько объектов, сколько вы хотите. Каждый объект будет иметь две характеристики, т. е. состояние и поведение. Эти характеристики меняются с каждым объектом в зависимости от ситуации. Например, собака — это объект/личность. Это верность , сон , прогулка и т. д., поведение, а размер , окрас , порода и т. д. относятся к государству.
Наследование
Само название предполагает, что наследование — это не что иное, как наследование/приобретение всех свойств, таких как атрибуты, методы и т. д. родительского/базового класса. Класс, производный от базового класса, называется подклассом/ дочерним классом и наследует все свойства родительского класса. Суперкласс — это класс, который наследуется подклассом. Важность наследования заключается в возможности повторного использования кода, такого как использование атрибутов, методов и т. д. родительского класса. Давайте углубимся в пример, чтобы лучше понять концепцию наследования.
Syntax:
classdef subClassName < SuperClass
. . . . . . .
end
Супер класс:
Matlab
% MATLAB program to illustrate Super class % and inheritance. classdef Animal methods function eat(self) disp( "I am Eating" ); end function sleep(self) disp( "I am Sleeping" ); end end end |
Сохраните приведенный выше код как Animal.m , и это наш суперкласс. Давайте теперь посмотрим на подкласс.
Matlab
% MATLAB program to illustrate % sub class and inheritance classdef Lion < Animal methods function roar(self) disp( "Roaring" ); end end end |
Сохраните приведенный выше код как Lion.m , и это наш подкласс. Теперь давайте получим доступ к родительскому классу, используя объект подкласса, и посмотрим на результат.
Выход:
Полиморфизм
Механизм определения функции именем уже существующей функции известен как полиморфизм. Просто мы называем это переопределением. MATLAB не поддерживает перегрузку функции. Полиморфные функции выполняют разные операции с одним и тем же именем на основе переданных аргументов и определяемой пользователем логики.
Суперкласс:
Matlab
% An example of polymorphism in MATLAB classdef superClass methods function testing(self) disp( "This is superClass" ); end end end |
Сохраните приведенный выше код как superClass.m и давайте также посмотрим код производного класса.
Производный класс:
Matlab
% An example of polymorphism in MATLAB classdef derivedClass < superClass methods % Overriding the superClass method function testing(self) disp( "This is derivedClass" ); end end end |
Сохраните приведенный выше код как производный класс.m и давайте посмотрим на результат.
Выход:
Абстракция
Абстрактный класс отображает функциональность, выполняемую группой классов. Он скрывает важные или ненужные данные и показывает только основные компоненты. Например, можно просматривать мобильный телефон, но не его внутренние компоненты. Все методы и атрибуты, которые используются подклассами, объявлены в абстрактном классе. Конкретный подкласс является производным от абстрактного класса для использования его свойств. Аннотация не может быть создана. Его можно только передать по наследству. Все методы, объявленные в абстрактном классе, должны быть переопределены/переопределены в подклассе.
Syntax:
classdef (Abstract) className:
. . . . .
end
Пример:
Matlab
% An example of abstract class in MATLAB classdef (Abstract) superClass % Declaring abstract properties properties (Abstract) value1 end % Declaring abstract methods methods (Abstract) checking(obj) end end |
Сохраните приведенный выше код как superClass.m и давайте посмотрим код базового класса.
Matlab
% An example of abstract base class in MATLAB classdef derivedClass < superClass % Redefining abstract properties properties value1 = 0; end % Redefining abstract methods methods function checking(self) disp( "This is abstract method of superClass and redefined in the derivedClass" ); fprintf( "The initial of the property "value1" is %d" ,self.value1); end end end |
Сохраните приведенный выше код как производный класс.m , выполните код и наблюдайте за выводом, дав пару команд.
Выход:
Инкапсуляция
Предпосылка: документация MATLAB по классам значений и дескрипторов.
Инкапсуляция — это механизм объединения данных и кода в один класс/модуль. Он обеспечивает безопасность данных, запрещая ограничение для других классов. Доступ к данным класса или их изменение можно получить только с помощью методов получения и установки . Нам нужно наследовать класс дескриптора для реализации инкапсуляции в MATLAB, поскольку он не возвращает повторяющиеся и измененные объекты, а также обрабатывает ошибки.
МАТЛАБ –
Сохраните приведенный выше код как superClass.m и давайте посмотрим на результат, дав пару команд.
Выход:
Примечание:
- В MATLAB переменные класса называются свойствами.
- В MATLAB классы и методы определяются в отдельных файлах.
- Мы должны сохранить файлы классов и файлы методов с соответствующими именами.