The +folder
piece is a MATLAB package folder. If you place Tata.m
in a location like +folder/Tata.m
, it will be known to MATLAB as the class folder.Tata
. If you place it in a folder like someOtherFolder/Tata.m
, or someOtherFolder/@Tata/Tata.m
, it will be known to MATLAB as Tata
.
It can be useful to place a classdef
file in a class directory like @Tata
to allow you to put the definition of some (or all) methods in separate files.
The doc has more details.
EDIT: To attempt to clarify the @
directories: historically, a class Tata
with methods methodOne
and methodTwo
would require the following files:
somePlaceOnThePath/@Tata/Tata.m
somePlaceOnThePath/@Tata/methodOne.m
somePlaceOnThePath/@Tata/methodTwo.m
In the "new" object system, you can still use the layout above without modification. At the other extreme, you can place the entire implementation of Tata
in a single classdef
block in:
somePlaceOnThePath/Tata.m
If you have some large methods, or want to split up the implementation of the class Tata
into several files to make parallel development simpler, you can take use a classdef like this:
%# somePlaceOnThePath/@Tata/Tata.m:
classdef Tata
methods
result = methodTwo(obj, arg)
function methodOne(obj)
disp('hello from methodOne');
end
end
end
And also
%# somePlaceOnThePath/@Tata/methodTwo.m:
function result = methodTwo(obj, arg)
% do stuff with obj and arg
end
Strictly speaking, the advance declaration of methodTwo
in the classdef
is optional because it's using the default access specifiers. If you wanted to have methodTwo
be a private method, you could place it in a methods (Access = private)
block.