Дополнительные возможности системы Matlab
#$+Объекты и классы. Переопределение операций.
MATLAB позволяет реализовать концепцию объектно-ориентированного программирования. В MATLAB можно создавать и манипулировать объектами, которые скрывают реальные данные за контролируемыми методами работы с ними, допускают переопределение операций и дают возможность наследовать их свойства производным объектам-потомкам. Однако, последний принцип объектно-ориентированного программирования, полиморфизм (возможность вызывать методы классов-потомков через интерфейсы базовых классов), в MATLAB не реализован. Конкретнее, в MATLAB нет ничего подобного механизму виртуальных функций в языке программирования C++.
Все пять основных типов MATLAB (числовые и разреженные массивы, массивы ячеек, структуры и текстовые строки) представляют собой встроенные классы, а переменные- объекты этих классов. Пользователь имеет возможность вводить свои классы, а также переопределять и доопределять методы всех существующих классов.
Для создания нового класса объектов нужно спроектировать структуру MATLAB, которая будет хранить данные, принадлежащие объекту, и определить функции-методы работы с этими объектами. Эти функции определяются в обычных М-файлах, которые должны быть помещены в специальную папку, имя которой начинается с символа '@', а в остальном должно совпадать с именем структуры (класса), причем эта папка должна входить в папку, определенную в пути MATLAB-path. Саму папку-контейнер методов добавлять в путь MATLAB не нужно.
Язык программирования MATLAB не имеет деклараций, в том числе деклараций новых классов и типов. Поэтому любой объект - представитель некоторого класса создается в момент вызова функции-конструктора этого класса. Следовательно, для создания объекта нужно создать хотя бы один метод (конструктор) в упомянутой папке-контейнере его класса.
Все поля структуры, хранящей данные класса являются скрытыми (private), то есть их поля доступны только из методов данного класса, напрямую в выражениях их использовать нельзя.
Рассмотрим пример конструктора, создающего объекты класса "полином". Этот конструктор должен находиться в файле @polynom/polynom.m.
function p = polynom(a)
%POLYNOM Polynomial class constructor.
% p = POLYNOM(v)
if nargin = = 0
p.c = [];
p = class(p, 'polynom');
Дата добавления: 2015-01-18 | Просмотры: 620 | Нарушение авторских прав
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|