2014-09-26 1 views
1

나는 MATLAB의 컴퓨팅 프로그램 용 GUI에서 작업 해왔다. 그 프로그램은 객체 지향 방식으로 구현되어있다. 그래서 GUIDE에 의해 생성 된 GUI 코드를 클래스에 통합하여 적합성을 유지할 방법을 생각하고 있습니다.MATLAB의 GUIDE와 함께 객체 지향 프로그래밍 (OOP) 2014a

먼저 Stackoverflow를 검색하여 유사한 질문을 찾은 다음 Click이 하나 있습니다.

나는 그 대답에서 언급 한 방법을 시도하고 실패했다. 그래서 누구든지 내게 좀 더 자세한 내용을 줄 수 있었고 정말 도움이 될 것이라고 조언했다.

내 코드가 그렇게 orgnized된다

다음
classdef A < handle 

methods 

    function obj = A(varargin) 

    %some code 
    end 

    function Aplot(obj,varargin) 
    %some code 
    obj.fh = Aview(obj) 
    end 

    function varargout = Aview(varargin) 
    % this is the code generated by GUIDE in a seperate file 

    % associated with AView_OpeningFcn(hObject, eventdata, handles, varargin) 

    % and component(edit, popupmenu,etc) callback functions 

    end 

나는 일반적으로 다음과 같이 윈도우의 모든 구성 요소 (buttion, PopupMenu로)에 대한 오류를 많이 가지고 : 입력

정의되지 않은 함수 'AView' 'char'형식의 인수 @에

오류 (hObject, EVENTDATA) AView ('popupmenu1_CreateFcn', hObject, EVENTDATA, guidata (hObject)

struct2handle

오류를 사용하여 오류 CreateFcn

을 uicontrol 평가하는 동안 어떻게 성공적으로 내가 할 수있는 A 클래스의 객체를 GUI 함수 AView 윈도우에 전달합니다. 객체 A 내부에 데이터 구조가 필요하면

미리 감사드립니다.


기타 의견 : GUIDE에서 생성 한 파일을 클래스 A에 복사하지 않았습니다. GUIDE 생성 파일을 A와 같은 이름의 @A 폴더에 넣으십시오. 이러한 방법으로, 가이드에 의해 생성 된 함수는

참조 클래스의 방법으로 관련됩니다 : 당신은 당신의 클래스 파일로 GUIDE 생성 된 코드를 복사 할 수 없습니다 http://www.mathworks.com/help/matlab/matlab_oop/specifying-methods-and-functions.html#brqy3km-15

+0

잘 모르겠습니다. 안내 기능에서 수업에 코드를 복사 했습니까? – Trogdor

+0

아니요, 이름이 @A 인 폴더를 만들었고이 폴더에 가이드 생성 파일을 넣어두면 GUIDE로 만든 함수가 클래스 A의 메서드로 간주됩니다. reference : search "Separate Files in Methods "mathwork 웹 사이트 – Risheng

답변

0

에서 "별도의 파일에서 방법"검색, Aview을 정적 메서드로 만들고 Aview이라는 모든 콜백을 으로 바꾸지 않는 한

GUIDE 생성 코드를 자체 파일에 남겨 두는 것이 가장 쉽습니다.

1

OO 스타일로 MATLAB GUI를 만드는 것은 매우 가능합니다. 메소드 이름 지정 (예 : View)에서 MVC (모델보기 제어기) 패턴을 시도하는 것처럼 보입니다. 이는 매우 가능합니다.

하지만 그럴려면 GUIDE를 놓을 시간입니다.

GUIDE가 생성 한 코드는 매우 빠르고 단순한 GUI에서는 문제가 없지만 구조가 매우 고풍스럽고 OO 디자인의 여러 원칙에 어긋납니다 (예 : GUI 구성 요소에 대한 모든 핸들이 효과적으로 돌아가고 끊임없이 업데이트되어야하는 커다란 오래된 전역 변수). GUIDE가 생성 한 코드를 OO 애플리케이션에 구조 및 디자인에 많은 비용을들이면서 통합하는 것만 가능합니다.

대신 GUI Layout Toolbox을 살펴보십시오.MathWorks 컨설턴트가 작성한 무료 도구 상자 (공식 MathWorks 제품으로 지원되지는 않음). 여기에는 레이아웃 및 크기 조정과 같은 추가 GUI 기술을위한 기능이 포함되어 있으며 (매우 철저한) 문서에는 OO (MVC) 패턴으로 MATLAB GUI를 구현하는 방법에 대한 훌륭한 예제가 포함되어 있습니다.