Class definition: is it necessary to define properties as struct?
6 ビュー (過去 30 日間)
古いコメントを表示
Hi all,
I'm new to OOP in MATLAB. When defining properties in a class, shall I define them as constants or as a struct? For example, explicitly:
classdef myClass < handle
properties
a
b
c
end
methods
function obj = myClass(a, b, c)
obj.a = a;
obj.b = b;
obj.c = c
end
end
or as struct
classdef myClass < handle
properties
prop
end
methods
function obj = myClass(a, b, c)
obj.prop.a = a;
obj.prop.b = b;
obj.prop.c = c;
end
end
The first way allows me to define attributes, such as private, public, etc. But if there are lots of properties, this way is too long.
The second way I will only be able to define attributes for the entire 'prop', I cannot only define prop.a as private but prop.b and prop.c as public, but the second way seems very neat.
What do you usually do and why?
Thank you!
0 件のコメント
採用された回答
Adam
2017 年 3 月 13 日
編集済み: Adam
2017 年 3 月 13 日
The whole point of a class is that it is an extended and far better version of a struct (apart from performance-wise). Properties of a class are analagous to fields of a struct. Think of your class as a replacement for the struct, not something to combine with it.
With good OOP design you should never have a single class that has so many properties you have trouble typing them out anyway.
I have never yet used a struct inside a class as it defeats the purpose. The properties of a class are visible, the fields of a struct could be anything.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Class File Organization についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!