matlab 설명서에서 도움말을 찾거나 인터페이스를 만들기 위해 matlab 상속 및 클래스 생성자를 사용하는 것에 관한 이전 질문이 있습니다. 패키지 안에 깔끔하게 정리하십시오. 대신 다음과 같이 내 코드를 통해 드래그의슈퍼 및 하위 클래스 생성자와의 인터페이스
나는 그것을 축소 할 수 있습니다 :
슈퍼 클래스 Super
몇 서브 클래스 Sub1 Sub2
있다 +MyPkg
패키지를 ... 내 프로퍼티와 메소드의 대부분은 슈퍼에서 정의되도록 Sub1
및 Sub2
은 정말로 단순한 루틴을 위해 생성자를 사용하거나 Super에서 오버로드 된 몇 가지 메소드를 사용합니다. 내가 따로 관련 인수에서 슈퍼와 관련된 인수를 유지하려는이 경우
a = MyPkg.Super(args).Sub1(args)
b = MyPkg.Super(args).Sub1(args).Sub1Method
을 :
는 어떻게 나는 다음과 같은 통화를 사용할 수있는 인터페이스를 지원하는 classdefs 및 생성자를 작성 가야합니까 가독성과 조직을위한 Sub1.
질문을 환영합니다.
편집 :
아래의 허용 대답 일부 브라우징을 고려한 후에 나는 위의 인터페이스가 내 데이터 분석 응용 프로그램에 더 적절한 방법에 대한, OO의 정신에 정말로하고 결론에 도달 접근법은 객체 또는 객체 속성의 셀 배열을 채우는 생성자가있는 핸들 클래스로 구성됩니다. 클래스는 핸들 클래스이므로 원하는 메서드를 생성하기 위해 메서드를 사용할 수 있습니다. 즉,
% in +MyPkg\
classdef Super < handle
properties
outputArray
end
methods
function self = Super(args)
self.outputArray=load_values(args);
end
function out = do_analysis(self,params)
% do some analysis
end
end
end
다음은 그런 다음이 사용하기 : 다른 사람이 이러한 문제, 당신이 할 수있는 귀하의 질문에 대하여
답변 해 주셔서 감사합니다. 마지막 문장에서 무슨 뜻인지 더 설명해 주시겠습니까? –
예. 컴포지션은 하나의 객체가 다른 객체를 "포함"하도록합니다. Class1은 Class2의 속성에 있고 Class2는 Class1을 "블랙 박스"로 사용합니다. 이것은 종종 클래스를 "장식"하는 데 사용됩니다. 즉, 클래스 위에 다른 인터페이스를 배치하는 데 사용됩니다. 여기서 큰 토론이 있습니다 : http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance 여기 : http : //lostechies.com/chadmyers/2010/02/13/composition-versus-inheritance/ – Marc
자주 사용하는 궁극적 인 결정자는 런타임에 한 클래스를 다른 클래스로 대체해야하는지 스스로에게 묻습니다. GUI의 좋은 예 : 간단한 GUI는'Window' 부모와'Modal'과'NonModal' 대화 상자의 두 가지 하위 유형을 가질 수 있습니다. 스크린 상에 그림을 그릴 때 윈도우의 목록을 유지해야하며 그것이 어떤 유형인지 상관하지 않을 것이라고 상상할 수 있습니다. 상속을 사용하여 코드 및 기능을 공유하는 경우 구성을 선호해야합니다. – Marc