메소드


메소드는 클래스와 연관된 프로시저나 함수입니다. 메소드를 호출하려면 메소드가 작동하는 객체(클래스 메소드의 경우에는 클래스)를 지정해야 합니다. 예를 들어 SomeObject.Free 호출은 SomeObject 객체의 Free 메소드를 호출합니다.


메소드 선언과 구현


클래스 선언 내에서 메소드는 프로시저나 함수의 헤더로 나타나며, forward 선언처럼 동작합 니다. 각메소드는 클래스 선언 이후의 같은 모듈 내에서 정의적 선언으로 구현되어야 합니다. 예를 들어, TMyClass의 선언이 DoSomething이라는 메소드를 포함한다고 가정해 봅시다. 


Object_6_1.png


DoSomething의 선언 정의는 모듈 뒷 부분에 나타나야 합니다.


Object_6_2.png


클래스 선언은 유닛의 인터페이스나 임플먼테이션 섹션 중 어디에나 있을 수 있지만, 클래스 메소드의 정의적 선언은 임플먼테이션 섹션에 있어야 합니다.


정의적 선언의 헤더에서 메소드 이름은 항상 해당 메소드가 속한 클래스 이름으로 한정되어 야 합니다. 헤더는 클래스 선언에 있는 헤더의 파라미터 목록을 반복할 수 있으며, 그런 경우 파라미터의 순서, 타입 및 이름이 정확하게 일치해야 합니다. 메소드가 함수인 경우에는 리 턴값의 타입도 반드시 일치해야 합니다.


메소드 선언은 다른 함수나 프로시저에는 사용되지 않는 특수한 지시어를 포함할 수 있습니 다. 지시어는 정의적 선언이 아닌 클래스 선언에만 나타나야 하며, 다음과 같은 순서가 되어 야 합니다.


Object_6_3.png


여기서 binding은 virtual, dynamic 또는 override이고, calling convention은 register, pascal, cdecl, stdcall 또는 safecall이며, warning은 platform, deprecated 또는 library입니다.


■ inherited


예약어 inherited는 다형적(polymorphic) 동작을 구현하는 데 특수한 역할을 수행합니다. inherited는 메소드 정의문에 나타나며, 뒤에 식별자가 따라오거나 따라오지 않을 수 있습니다. inherited 다음에 메소드 멤버의 이름이 나오면, 이것은 일반적인 메소드 호출 또는 속성이 나 필드의 참조를 나타내는데, 한 가지 다른 점은 이 메소드를 찾을 때, 메소드가 속한 클래 스의 바로 위 조상 클래스부터 찾기 시작한다는 점입니다. 예를 들면,


Object_6_4.png


이것은 메소드의 정의에 나타나며, 상속된 Create를 호출합니다.


inherited 다음에 식별자가 따라오지 않으면, 이것은 자신을 포함하는 메소드와 같은 이름을 가지는 상속된 메소드를 나타내거나, 메시지 핸들러인 경우 동일 메시지에 대해 상속된 메시 지 핸들러를 나타냅니다. 이러한 경우, inherited에는 명시적인 파라미터가 없지만, 해당 메 소드에 전달된 파라미터와 같은 파라미터를 상속된 메소드로 전달합니다. 예를 들면,


Object_6_5.png


이 문법은 생성자의 구현에서 자주 나타납니다. 상속된 생성자를 자손에게 전달한 파라미터 와 같은 파라미터와 함께 호출합니다.



참조링크

http://tech.devgear.co.kr/devgearbook

델파이 프로그래밍 언어 - 엠바카데로 저 | 박지훈 역 (2009년)

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14387
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21064
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17933
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
503 [발표자료] RAD Studio XE8 출시 세미나 관리자 2015.05.01 609
502 [업데이트][핫픽스][XE8] iOS 플랫폼의 SQLite 라이브러리 누락 패치 file Humphery 2015.04.30 854
501 [XE8] 번거로운 수작업을 줄여 핵심기능 개발에 집중할 수 있는 개발 생산성 향상도구 Humphery 2015.04.28 894
500 [XE8] TAppAnalytics 컴포넌트로 앱의 사용량 수집, 분석해 사용성을 이해할 수 있습니다. file Humphery 2015.04.27 798
499 델파이에서 MSOffice 엑셀과 워드 연동 참고자료. [1] Humphery 2015.04.27 3748
498 이 달의 기술자료 - 2015년 05월 file 험프리 2015.04.24 5483
497 [델파이7 이후 새로운 기능][XE2~] 프로젝트 매니저에서 타겟플랫폼을 64-bit Windows로 선택 해 64비트 애플리케이션을 개발할 수 있습니다. file Humphery 2015.04.23 4719
496 [델파이7 이후 새로운 기능] 추가되고 개선된 VCL 컴포넌트 Humphery 2015.04.22 3560
495 [델파이7 이후 새로운 기능] 코딩 생산성을 높여주는 코드에디터 기능들 Humphery 2015.04.21 2681
494 XE8로 구현한 멀티플랫폼 클립보드 공유앱 런칭 file c2design 2015.04.19 1184
493 Thalmic Labs의 MYO Armband Delphi SDK Beta7입니다. 쭈니아빠 2015.04.18 1131
492 [XE8] 오프라인에서 도움말을 볼 수 있습니다.(CHM 형식) Humphery 2015.04.17 923
491 [XE8] 대화형 지도 컴포넌트로 구글맵과 애플 맵킷 한번에 사용하기 Humphery 2015.04.17 1647
490 [XE8] 멀티-디바이스 미리보기: 다양한 디바이스 화면을 미리보며 최적화된 화면 개발하기 Humphery 2015.04.17 1128
489 XE8 새로운 기능외의 개선사항 Humphery 2015.04.16 920
488 [XE8] 버전 컨트롤 시스템 IDE 통합(Mercurial 지원) [1] Humphery 2015.04.15 1373
487 [XE8] 근거리 위치기반 서비스를 개발할 수 있는 비콘(Beacon) 연동하기 [1] Humphery 2015.04.15 3930
486 [업데이트][XE7] iOS 8.1.3/8.2 서명과 프로비저닝 프로파일 지원 핫픽스(베타) Humphery 2015.04.14 1047
485 파이어몽키에서 외부 라이브러리 연동하기(jar, so, a) [3] Humphery 2015.04.14 3535
484 [따라하기] reFind 도구를 이용해 BDE 프로젝트를 FireDAC으로 마이그레이션 따라하기 [9] Humphery 2015.04.14 4125