Q&A

  • private, protected, public
델파이 소스를 들여다보다가 궁금한점이 있어서 질문합니다..

일반적으로 변수를 설정할때 private, protected, public 의 용도를 아주 조금 알고 쓰기는 하지만.. 여지껏 이렇다하게 큰 프로그램을 만들어본 적이 없는 저로서는 protected의 접근방법이 궁금합니다.

private 영역에 선언된 멤버들과 같이 접근권한이 제한되어 있지만 클래스가 선언된 유닛의 외부에서 이 지시어로 선언된 구성요소들은 그 클래스의 자손 클래스 영역 안에서는 사용이 가능하도록 되어 있다.. 정도로 알고 있거든요.



그런데 db 소스를 보다가 시험삼아 TDataSet의 protected 에 선언되어 있는 GetRecNo라는 함수를 한번 써 봤더니..

undeclared identifier라는 에러가 생깁니다.

물론.. 상단에는 db를 참조시켰구요..

Edit1.Text := IntToStr(DM.Query1.GetRecNo); 라구요..

물론 protected에 선언되어 있기때문에 이렇게 간단히 접근되리라고 생각하지 않습니다.



protected 에 선언되어 있는 메소드에는 어떻게 접근해야 할까요?

그리고..

소스의 왼쪽에 보면 노란도형, 연두색 도형이 있는데 이건 무슨 차이를 말하는 걸까요???



아.. 아는건 없고 모르는것 투성이라서.. 맨날 헤매고 있는 지영이..

아시는분.. 해답 좀 주셔요..

토요일이군요.. 좋은 주말되시구요.

1  COMMENTS
  • Profile
    전철호 1999.04.25 01:10
    강지영 wrote:

    > 델파이 소스를 들여다보다가 궁금한점이 있어서 질문합니다..

    > 일반적으로 변수를 설정할때 private, protected, public 의 용도를 아주 조금 알고 쓰기는 하지만.. 여지껏 이렇다하게 큰 프로그램을 만들어본 적이 없는 저로서는 protected의 접근방법이 궁금합니다.

    > private 영역에 선언된 멤버들과 같이 접근권한이 제한되어 있지만 클래스가 선언된 유닛의 외부에서 이 지시어로 선언된 구성요소들은 그 클래스의 자손 클래스 영역 안에서는 사용이 가능하도록 되어 있다.. 정도로 알고 있거든요.

    >

    > 그런데 db 소스를 보다가 시험삼아 TDataSet의 protected 에 선언되어 있는 GetRecNo라는 함수를 한번 써 봤더니..

    > undeclared identifier라는 에러가 생깁니다.

    > 물론.. 상단에는 db를 참조시켰구요..

    > Edit1.Text := IntToStr(DM.Query1.GetRecNo); 라구요..

    > 물론 protected에 선언되어 있기때문에 이렇게 간단히 접근되리라고 생각하지 않습니다.

    >

    > protected 에 선언되어 있는 메소드에는 어떻게 접근해야 할까요?

    > 그리고..

    > 소스의 왼쪽에 보면 노란도형, 연두색 도형이 있는데 이건 무슨 차이를 말하는 걸까요???

    >

    > 아.. 아는건 없고 모르는것 투성이라서.. 맨날 헤매고 있는 지영이..

    > 아시는분.. 해답 좀 주셔요..

    > 토요일이군요.. 좋은 주말되시구요.





    안녕하세요..

    전철호입니다.



    Protected로 선언된 변수와 메소드를 다른 Unit에서 이용하시려면

    해당 클래스를 상속을 받아서 사용 해야 합니다.

    델파이 에서는 private, public, published, protected로 변수나, 함수,

    메소드를 선언할 수 있는데

    private는 해당 유니트에서만 사용이 가능하고

    public, published는 모든 유니트에서 사용 가능하고,

    protected는 해당 유닛과 상속받은 클래스를 가지고 있는 유닛에서만

    사용 가능합니다.



    예를 들어서 TDataSet에 GetRecNo라는 메소드가 protected로

    되어 있다면

    TDataSet에서 상속을 받아서 사용해야 합니다.

    예제)

    DD : TDataSet 이라고 선언이 되어 있다면

    DD.GetRecno를 사용을 하시려면

    다음과 같이 코딩을 하시면 됩니다.



    type

    TAClass = class(TDataSet);

    ....

    ...

    TAClass(DD).GetRecno;



    그리고 도움말에서 연두색,파란색 같은 도형은 해당 클래스에서

    변수,함수,메소드 참조가 가능한지 여부와, 읽고/쓰기 가 가능한

    property인지를 나타내기 위해 사용한 것입니다.

    예를 들어 연두색 사각형은 클래스선언이 public으로 선언되었다는

    것이고

    파란색 화살표는 property가 읽기속성이라는 것이므로

    그값에 할당을 하면 안된 다는 것입니다.

    즉 일기속성은 클래스에서

    property Active : Boolean read GetActive;

    처럼 선언되어서 쓰기를 못합니다.



    더 자세한 내용은 제 홈페이지 팁란에 있으니 참고하시고

    그래도 궁금한 점이 있으시면 다시 물러 보시기 바랍니다.







    • 박성훈
    • 1999.07.07 04:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김상영
      1999.07.07 13:41
      박성훈 께서 말씀하시기를... > 출력시 폰트의 크기를 키우고 싶은데 어떤 방법을 써야 하나요. 어떤 출...
    • 박성훈
      1999.07.07 17:45
      시리얼 방식입니다. 컴포트에 식당에서 쓰는 주방용 프린터가 연결되어 있는데 여기에 주문한 메뉴명과 ...
    • 박재윤
    • 1999.07.07 04:37
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 강지영
      1999.04.26 01:12
      팁란에서 본건데요.. dbgrid에 콤보박스를 올리려면.. if (gdFocused in state) then ...
    • 이현신
      1999.07.07 18:43
      박재윤 께서 말씀하시기를... > 델파이에 관한 이야기는 아닙니다만, 프로그래밍에 관한 내용이므로 이곳...
    • 이정욱
      1999.04.26 01:47
      DBGrid의 Align이 문제인것 같네요. alClient나 다른 것이 설정되어 있으면 당연히 위치가 바뀌어 버립니...
    • 김도완
    • 1999.07.07 03:49
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 전형식
      1999.04.25 09:52
      안녕하세요.. 델파이를 사랑하는 개발자 입니다. 이번에 보이스관련 프로그래밍을 하고 있는데 보이스카...
    • 권경부
      1999.07.07 09:19
      리스트 박스안에 배경화면을 넣으려고 하시는것같군요. CoolControl이라는 컴포넌트 모음이 있습니다. ...
    • 구창민
      1999.04.25 21:51
      전형식 wrote: > 안녕하세요.. > 델파이를 사랑하는 개발자 입니다. > 이번에 보이스관련 프로그래밍을 ...
    • 고혜정
    • 1999.04.25 12:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신호성
      1999.04.27 04:11
      고혜정 wrote: > 안녕하세요.. 오래간 만에 들어와보니 달라 졌군요. > 스토오드 프로시저 컴포넌트를 ...
    • 이현신
    • 1999.07.07 03:21
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 글쎄요
      1999.07.07 18:51
      procedure TForm1.Button1Click(Sender: TObject); var sr, gr, ur : Extended; _MyGetFreeSystemRe...
    • 이현신
      1999.07.07 19:43
      글쎄요 께서 말씀하시기를... > procedure TForm1.Button1Click(Sender: TObject); > var > sr, gr, u...
    • 글쎄요
      1999.07.08 02:31
      음... 글쎄요. os가 어떤 건지 Win98이라면 있어야 하는 디 만약 NT라면 리소스구하는 것은 포기하셔야 합...
    • 전형식
    • 1999.04.25 09:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.25 21:51
      전형식 wrote: > 안녕하세요.. > 델파이를 사랑하는 개발자 입니다. > 이번에 보이스관련 프로그래밍을 ...
    • 권경부
      1999.07.07 09:25
      먼저 생성시킨 버튼들의 Tag에 번호를 매겨 두세요. 10개라면 1부터 10까지.. 그 다음은 10개짜리 Boolean...
    • 박상현
    • 1999.04.24 23:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.25 08:02
      리스트에 없는 인덱스를 가리켰기 때문에 난 에러 입니다. 예를들면 리스트에 들어있는 아이템의 갯수가 3...
    • 류성호
    • 1999.07.07 03:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김상영
      1999.07.07 13:30
      류성호 께서 말씀하시기를... > > BDE에 SQL Link을 통해서 MS-SQL 7.0에 접근하는 프로그램을 > 개발...
    • 한태진
      1999.04.25 04:23
      WhiteDragon wrote: > 제가 변환할려는 것은 도스용 dbf화일을 델파이 파라독스 화일인 db로 전환할려고 ...
    • 강지영
    • 1999.04.25 00:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.04.25 01:10
      강지영 wrote: > 델파이 소스를 들여다보다가 궁금한점이 있어서 질문합니다.. > 일반적으로 변수를 설정...
    • jack
    • 1999.07.07 02:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김상영
      1999.07.07 13:36
      jack 께서 말씀하시기를... > 고객마스타 테이블에 고객의 생일이 저장되어 있습니다. > 형식은 yyyy-mm...
    • 강지영
    • 1999.04.25 00:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.04.25 01:10
      강지영 wrote: > 델파이 소스를 들여다보다가 궁금한점이 있어서 질문합니다.. > 일반적으로 변수를 설정...
    • 이태성
    • 1999.07.07 02:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      1999.07.08 02:32
      이태성 께서 말씀하시기를... > 안녕하세요 ......... > > 프로그램에 락 거는 방법을 알고 싶어요 ......
    • 권경부
      1999.07.07 09:26
      미국 터보파워사의 OnGuard라는 컴포넌트가 있습니다. 상용컴포넌트이지만 제가 지금까지 봐온 세어웨어 ...
    • 이의준
    • 1999.07.07 02:06
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박상현
      1999.04.24 23:06
      델파이 에러 메세지중의 List Index Out Of bounds(2)에 관하여 알려주시기 바랍니다
    • 이정욱
      1999.04.25 08:02
      리스트에 없는 인덱스를 가리켰기 때문에 난 에러 입니다. 예를들면 리스트에 들어있는 아이템의 갯수가 3...
    • 초보자
    • 1999.04.24 02:28
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 왕초
      1999.07.07 02:03
      ini화일에서 각각의 Section을 읽어 오려고 합니다... ini화일내용: [section1] alias=laib host=sun ...
    • chaser
      1999.04.24 03:24
      초보자 wrote: > 윈도우의 탐색기 처럼 한 폼에서 여러개의 부분으로 구분된 폼을 만들고 싶습니다. 어떻...
    • 저기요...
      1999.07.07 22:05
      왕초 께서 말씀하시기를... > ini화일에서 각각의 Section을 읽어 오려고 합니다... > ini화일내용: > [...
    • 초보자
      1999.04.24 21:53
      답변에 감사드립니다 한가지 더 질문올립니다. 화면을 양쪽으로 분할하는것은 이제 알았습니다. 그러면 ...
    • 한태진
      1999.04.25 04:23
      WhiteDragon wrote: > 제가 변환할려는 것은 도스용 dbf화일을 델파이 파라독스 화일인 db로 전환할려고 ...
    • 문창완
    • 1999.07.07 01:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 손창근
      1999.07.07 05:15
      문창완 께서 말씀하시기를... > form.close and form.destroy and form.free > 각각의 차이점을 알고 싶...