How to make switch case in between different classes in matlab?

5 次查看(过去 30 天)
Hi guys,
I have a small question regarding switch case. Iam doing my project using Matlab OOP. Is it possible to make switch case using classes? for example
clMatcore is my super class and clSteel clNano and clIron are my subclasses. I created all the classes and functions for them. Is it possible to make a switch case between them. I was a bit confused in this. Could someone help me out if possible with a small example.
Thankyou
  2 个评论
Steven Lord
Steven Lord 2020-7-8
It's not clear to me what your goal is in using a "switch case using classes". Can you describe (in words not code) what your goal is in selecting between steel, nano, and iron? What problem are you trying to solve?
kanuri venkata mohana
Hi Steven, Thank you for your reply. Here my goal is , i have different materials for my core which are made up of steel, nano, iron. I need to choose my material according to my usage. So i created each class for each material. Now i have to make them in a way, that i can use them according to my design of transformer.
Thankyou..

请先登录,再进行评论。

回答(1 个)

Steven Lord
Steven Lord 2020-7-9
Something like:
switch material
case "steel"
x = clSteel;
case "iron"
x = clIron;
otherwise
error("I don't know how to make a transformer core out of " + material)
end
  5 个评论
Steven Lord
Steven Lord 2020-7-23
Inheritance doesn't seem to be the right approach for some of the classes in your hierarchy.
If I were to plug in a clmaterialcore into a function that expects a clCore, should that function work? If not, clmaterialcore should not be a subclass of clCore.
If I were to plug in a clCore into a function that expects a clmaterialcore, should that function work? If not, clCore should not be a subclass of clmaterialcore.
To me, a mental model where a clCore has a clmaterialcore as one of its properties seems more natural.
classdef clCore
properties
composition % what the core is made of
end
end
Use as:
s = clSteel;
% Build a core.
C = clCore(whateverInputsAreNeededToBuildAclCore);
% Make the core out of steel.
% You probably want to specify this in the constructor call.
C.composition = s;
% Have the core ask its material about the material's conductivity.
C.composition.conductivity
kanuri venkata mohana
Thankyou for your reply Steven i will check with this idea again. I could make switch case with classes as you suggested but, clmaterialcore as input to clCore is not being possible according to my classes. SO i made clmaterialcore as parent class. It worked but it is in reverse order of my Tree diagram.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Construct and Work with Object Arrays 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by