多くのプログラミング言語、例えば、 C#では、引数の型をクラスコンストラクタに渡すことができます。抽象スーパークラス用のMatlab OOP型チェック
何かのように:ここ
MyConstructor(IDependencyClass)
、 'IDependencyClassは' インタフェースです。これにより、依存関係注入とコンポーネントの疎結合を使用できます。
:(私の知る限り)MATLABはまた、OOPをサポートしており、それは強く型付けされていない場合でも、またそれは、このようなクラスのインターフェイスとしてのコンセプトを提供しない、私は単純に、私は以下のバリエーションのいずれかを使用することができるだろうと思いました
classdef (Abstract) AbsClass
...
end
次に、AbClassへの依存性が存在することになる任意のクラスでは、私はそうのような私有財産を作成し、次のいずれか
properties (Access = private)
% The DataModule type is restricted AbsClass.
DataModule Core.Modularity.AbsBase
end
このプロパティは、建設に設定することができます。
Abstract classes cannot be instantiated.
Class 'Core.Modularity.AbsClass' defines abstract methods and/or properties
:
奇妙なisa(input argument, 'Core.Modularity.AbsBase')
は、MATLABはエラーを投げ、ボールをプレーしたくない:
また、私のようなものを使用して、コンストラクタでのチェックを行うことができます
私にとって、それはちょっと変です...明らかに、Matlabの型チェックメカニズムは、明らかに不可能な抽象クラスのインスタンスを作成したいと考えています。
しかし、中程度から高い複雑さの適切なアプリケーションを設計したい場合、これは大きな欠点です。
私には何が欠けていますか?
EDIT
むしろ愚かな、しかしそれは、ISA()」アプローチが作業を行いますが、のクラスを制限することをまだ少し奇妙ですが、私は確かに "
を省略していることが判明プロパティのアプローチは動作しません:
https://www.mathworks.com/help/matlab/matlab_oop/restrict-class-of-properties.html
(https://en.wikipedia.org/wiki/Interface-based_programming)。私は私の消費するクラスに注入するものは、必要な機能を提供するので、私は理想的には特定の依存関係を期待する消費クラスを設計することを保証する必要があります。 – Kris
ところで、特定の基本型私がしたいこと... – Kris
@Krisそれでは、私が言いましたように 'isa'を使ってください。 – Suever