MATLAB OOP - redefine static method

2 Ansichten (letzte 30 Tage)
Mikhail
Mikhail am 8 Jul. 2013
Hi folks,
Following is an OOP question from a guy who knows nothing about OOP, so excuse me in advance :)
There is a built-in MATLAB class, located in matlabroot/toolbox/coder/connectivity/+coder/+rtiostreamtest/Parameters.m (if your version of MATLAB is earlier than R2012b, you might not find it). This class defines a method called getParameterInstance as Static. I just need to add another case to switch statement in this method. I don't want to modify the shipping MATLAB file, and i heard you can "subclass" those shipping classes.
Following documentation, i created a subclass like this:
classdef Parameters < coder.rtiostreamtest.Parameters
methods (Static)
function instance = getParameterInstance(tag, input)
..my very own version of switch-case..
end
end
end
This subclass is located in +myclass/Parameters.m file in MATLAB path. I then issued "rehash toolbox", just in case.
However, i don't see any effect. I'm not overriding the static method of coder.rtiostreamtest.Parameters class.
What am i doing wrong?
Many thanks!
  3 Kommentare
Mikhail
Mikhail am 8 Jul. 2013
I'm trying to extend existing rtiostreamtest implementation by adding my own connection type. I can do this easily by just adding another case to the switch statement in the getParameterInstance method.
However, i don't want to modify the built-in MATLAB files, hence the question.
After adding another switch case, i'll be calling the rtiostreamtest with my new connection type: rtiostreamtest('shmem','arg1','arg2')
Matt J
Matt J am 8 Jul. 2013
Bearbeitet: Matt J am 8 Jul. 2013
We need to see the code you executed, a description of what result you got, and a description of what you expected to get.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

per isakson
per isakson am 8 Jul. 2013
Bearbeitet: per isakson am 8 Jul. 2013
Do you use a call like this?
myclass.Parameters.getParameterInstance( 'two', 'args' )
  4 Kommentare
per isakson
per isakson am 8 Jul. 2013
Bearbeitet: per isakson am 8 Jul. 2013
I don't have access to the Embedded Coder toolbox.
Had the call in the "rtiostreamtest script" been
Parameters.getParameterInstance( 'two', 'args' )
it would have been possible to put a class named Parameters in the top of the Matlab search path. (Not in a package.)
Yes, you will probably need to modify the Matlab script, which should be avoided:-(.
AFAIK: the term built-in class does not include m-files, i.e. not code written in the Matlab language. However, I cannot find a proper definition in the documentation.
Mikhail
Mikhail am 8 Jul. 2013
Well, the "rtiostreamtest script" has
paramsClass = 'coder.rtiostreamtest.Parameters';
in it, so the path is fully qualified (if that's how it's called).
But as i said earlier, creating the +coder/+rtiostreamtest directory hierarchy higher in MATLAB path with my modified version of Parameters.m did the job.
Oh, sorry if i used built-in term incorrectly. I probably meant shipping.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Software Development Tools finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by