2012-03-16 4 views
1

저는 matlab에 많은 클래스를 작성해 왔으며 최근에 특정 클래스가 클래스와 함께 잘 작동하지 않는다는 것을 발견했습니다. 내 모든 개체는 예를 들어matlab에서 클래스를 정의하는 올바른 방법

슈퍼 클래스 핸들에서 상속 :

  • finobj을 : 나는 내 개체의 내 기본 오브젝트는 MATLAB 루트의 자식해야합니까 찾을 수없는 이유는 무엇입니까? 어떻게 설정합니까?

  • clear : 환경을 지우고 개체 트리를 다시 설치하면 하위 개체의 속성을 변경 한 경우 경고가 표시됩니다. 아마도 파괴 방법이 필요합니까?

나는 하나가 작업의 일부를 오버로드 할 것으로 예상된다 http://blogs.mathworks.com/videos/2008/07/07/advanced-matlab-class-system-for-oop-in-matlab-introduction/ 것을 여기 볼 수 있지만 확실히 나는 각 개체에 대해 그렇게 할 것으로 예상 아니에요?

내 주요 질문은 현명한 방식으로 동작하도록 코드를 정의해야한다는 것입니다.

+0

분명히 어쩌면 맑은 수업을 시도해보십시오. – learnvst

+0

트리 구조가 있고 모두 지우면 나뭇잎 개체 중 하나를 수정하고 트리를 다시 작성합니다. 개체가 수정되었다는 알림을 받으면 내 자신의 삭제 메서드를 구현해야하는지 여부를 궁금해하고 있습니다. – Carel

+0

가까운 곳에서 모든 일이 이루어집니다. http://www.mathworks.com/help/techdoc/matlab_oop/brzqjky.html – Carel

답변

0

findobj은 사용자 정의 개체가 아닌 그래픽 개체를 처리하기위한 것입니다. 따라서, 그것은 당신의 물건을 찾지 못할 것입니다. (왜 처음에 그것들을 찾고 싶습니까?).

clear은 변수에 영향을 미치므로 clear classes은 클래스 정의에도 영향을줍니다. 이전 버전의 Matlab에서는 clear classes도 모든 중단 점을 지웠다는 점에 유의하십시오.

하위 클래스는 수퍼 클래스 (정적 메서드 포함)에서 모든 것을 상속합니다. 하위 클래스의 특정 기능을 수정하고 싶지 않은 경우에는 아무 것도 오버로드 할 필요가 없습니다.

코드를 현명한 방식으로 동작 시키려면 코드를 잘 디자인해야합니다. 코드를 정확히 디자인하는 방법은 코드가 해결해야하는 문제에 달려 있습니다.

+0

답장을 보내 주셔서 감사합니다. 대부분의 수업에서 기대할 수있는 기본 방법이 있는지 궁금합니다. 나는 항상 내가 갖추어야 할 것을 놓친 것처럼 느껴지는 지점에 이른다. – Carel

+0

@Carel : 그것은 정말로 당신의 수업에 많이 의존한다.그러나 객체 지향 프로그래밍에 대한 좋은 점은 일반적으로 모든 것을 방해하지 않고 클래스를 확장하는 것이 매우 쉽다는 것입니다. 따라서 이동하면서 물건을 추가 할 수 있습니다. 물론 클래스를 지우고 다시로드해야 할 수도 있습니다. 그렇기 때문에 저장 /로드 기능을 구현 한 것입니다 (기본값이 작동하지 않는 경우를 대비하여). – Jonas

+0

매우 사실입니다. 난 항상 뭔가를 놓친 경우 궁금해 시작 지점에 도달, 방법에 의해 당신의 도움을 주셔서 감사합니다 :) – Carel

0

결과적으로 상속받을 수있는 여러 클래스가 있습니다.

  • hgsetget : 원래 질문에서 원했던 기능을 제공합니다.이 것은 더 큰 클래스이고 일반 핸들입니다.
  • handle : Bare Bones Class는 findobj, get 또는 set과 호환되지 않습니다.
  • 동적 소품 : 그것에 대해 너무 많이 모릅니다. 나중에 업데이트하겠습니다.

내가 놓친 것이 있는지 모르겠지만 matlab에서 상속받을 수있는 가능한 클래스의 포괄적 인 목록이 아닌 것으로 보입니다. 프로의 con의 각각을 나타내는 것입니다.

관련 문제