블로그 이미지
LanSaid

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Recent Post

Recent Comment

Recent Trackback

Archive

2014. 3. 25. 20:39 Study/Delphi
구성자체는 타 언어와 별반 차이가 없는 것 같다.

"단순히 바라보았을때 객체 = 데이터 + 기능 도 만족 할 수있고(반드시 그런 것은 아니지만) 어떠한 대상을 모델링하는데 있어서 필요한 기능은 다 있는 모양이다."
라고 생각을 해보고 있다....? 


일단 용어를 좀 알아볼 필요가 있겠는데...

알고 있는 지식이 짧은 관계로 뒤죽박죽 될 것같다.  어찌되었건 내가 이해하기 위한 것이니...



* 클래스의 형식 선언  : 말그대로 틀을 선언하는 것

type

 T클래스명 = class(상속받을 무모 클래스명)      // 상속 받을 것이 없을 경우 () 생략가능. 다만 컴파일 시 TObject가 자동으로 붙는듯 
 Fields 선언(내용을 담을 수 있는 변수 공간)
 Properties 선언(Field 와는 별개로 데이터를 읽고 쓰는 제어권을 제공하는 기능이 합쳐진 것. 엄연히 다른 개념이므로 주의할 것!!)
 Methods 선언(function: 반환값 있음. procedure:반환값 없음)

end; 



* 클래스 선언과 사용
델파이는 c++과는 달리
var
 tPerson : TPerson;

라고 선언해도 tPerson 을 바로 사용할 수 없다.

즉, 선언과 동시에 실체화 되어 인스턴스가 되는 방법을 사용할 수 없는 것이다.
그러므로 아래처럼 변수의 선언과 인스턴스 생성을 별도로 해주어야 한다.

var
 Person: TPerson;  // 클래스 인스턴스를 담을 변수 선언
begin
 tPerson := TPerson.Create;          // 클래스 인스턴스를 생성하면서 변수에 주소를 링크.  Create() 는 TObject의 constructor로 모든 클래스가 상속 받음.
// 이 시점부터 tPerson 이라는 변수는 메모리에 실체화 되어 사용할 수 있게 된다. 

 tPerson.Name := ‘LanSaid’;      // tPerson 변수의 Name이라는 Field에 데이터를 삽입
 
 tPerson.Free;   // tPerson가 링크하고 있는 메모리 주소에 있는 객체를 릴리즈. 호출 후에는 해당 변수에 링크된 인스턴스가 없으므로 엑세스 시 뻑남. Create() 와 세트 되는 것.
 
end;








 
posted by LanSaid