ASP 클래스의 시작
CLASS TESTCLASS
.....
END CLASS
.....
END CLASS
일단 시작은 저렇게 시작하고 마친다. 보통의 SUB 나 FUNCTION이랑 비슷하다.
그리고 클래스의 시작과 마침에 자동으로 실행되는 함수를 넣어야 하는데 아래와 같다
Private Sub Class_Initialize()
... 클래스 생성될때 자동으로 실행
END SUB
Private Sub Class_Terminate()
... 클래스 닫힐때 자동으로 실행
END SUB
... 클래스 생성될때 자동으로 실행
END SUB
Private Sub Class_Terminate()
... 클래스 닫힐때 자동으로 실행
END SUB
위는 보통 디비는 항상 열고 닫기 때문에 두 함수에 DB를 열고 닫는것을 넣어두면 편하다.
물론,, 디비접속과 아무관련이 없는 클래스의 경우 넣을 필요는 없다.
여튼 여기까지를 한번에 묶으면 ..
CLASS TESTCLASS
private thisDbCon
Private Sub Class_Initialize()
'디비접속
Set thisDbCon=Server.CreateObject("ADODB.Connection")
StrDBConnect = "Provider=ORAOLEDB.ORACLE;Password=***;User ID=****;Data Source=****;Persist Security Info=True;"
thisDbCon.Open StrDBConnect
END SUB
Private Sub Class_Terminate()
'디비 끊기
thisDbCon.Close
thisDbCon=Noting
END SUB
END CLASS
private thisDbCon
Private Sub Class_Initialize()
'디비접속
Set thisDbCon=Server.CreateObject("ADODB.Connection")
StrDBConnect = "Provider=ORAOLEDB.ORACLE;Password=***;User ID=****;Data Source=****;Persist Security Info=True;"
thisDbCon.Open StrDBConnect
END SUB
Private Sub Class_Terminate()
'디비 끊기
thisDbCon.Close
thisDbCon=Noting
END SUB
END CLASS
이게 기본 세트라고 할수 있다. 이 이후에는 클래스에 함수들을 하나씩 추가시키면 된다. 그러면 알흠다운 클래스가 만들어지게 되겠다.
그러면 만들어 놓은 클래스를 다른 페이지에서 불러서 사용하는 방법을 보겠다.
먼저 저 클래스를 CLASS.TEST.ASP 라는 이름으로 저장한다.
이름에 CALSS가 들어가는건 특별한 이유가 있는게 아니고 그냥 다른 파일들과 구분하기 위한것이니 이름은 원하는데로 해도 상관없다
<!--#include virtual="CLASS.TEST.ASP"-->
먼저 페이지 상단에 위와같이 클래스를 인클루드 시킨다.
SET CLASSTEST=NEW CLASSTEST
그런 다음 위와 같이 클래스를 생성한다.
클래스의 좋은 점은 함수와 달리 클래스를 생성하면 같은 함수들이 독립적으로 작동된다는것이다.
SET CLASS1=NEW CLASSTEST
SET CLASS2=NEW CLASSTEST
SET CLASS3=NEW CLASSTEST
SET CLASS2=NEW CLASSTEST
SET CLASS3=NEW CLASSTEST
이렇게 생성해서 사용해도 클래스안의 같은 이름의 변수나 함수들이 독립적으로 행동할수 있다는것이다. 그리고 그냥 인클루드로 함수들을 나열해서 인클루드 할때보다 정리가 쉽고 다른 사이트에 적용하기도 좋다
클래스가 왜 좋은지 사용하기 좋은지에 대한건 구글이나 네이버에 찾아봐주시고~
일단 생성된 클래스의 함수를 실행해 보겠다.
CLASS TEST
Private Sub Class_Initialize()
END SUB
Private Sub Class_Terminate()
END SUB
'A+B 함수
PUBLIC FUNCTION GETSUM(A,B)
GETSUM=A+B
END FUNCTION
END CLASS
Private Sub Class_Initialize()
END SUB
Private Sub Class_Terminate()
END SUB
'A+B 함수
PUBLIC FUNCTION GETSUM(A,B)
GETSUM=A+B
END FUNCTION
END CLASS
SET T=NEWTEST
RESPONSE.WRITE T.GETSUM(10,20)
위의 간단한 합계 함수이다. 화면에는 30이 뿌려질테고..
저걸 좀더 바꿔보면..
CLASS TEST
Private Sub Class_Initialize()
END SUB
Private Sub Class_Terminate()
END SUB
PUBLIC FUNCTION GETSUM(NUMARR)
DIM I,RESULT
FOR I=0 TO UBOUND(NUMARR)
RESULT=RESULT+NUMARR(I)
NEXT
GETSUM=RESULT
END FUNCTION
END CLASS
SET T=NEWTEST
DIM NUMBERS(4)
NUMBERS(0)=10
NUMBERS(1)=20
NUMBERS(2)=100
NUMBERS(3)=200
RESPONSE.WRITE T.GETSUM(NUMBERS)
Private Sub Class_Initialize()
END SUB
Private Sub Class_Terminate()
END SUB
PUBLIC FUNCTION GETSUM(NUMARR)
DIM I,RESULT
FOR I=0 TO UBOUND(NUMARR)
RESULT=RESULT+NUMARR(I)
NEXT
GETSUM=RESULT
END FUNCTION
END CLASS
SET T=NEWTEST
DIM NUMBERS(4)
NUMBERS(0)=10
NUMBERS(1)=20
NUMBERS(2)=100
NUMBERS(3)=200
RESPONSE.WRITE T.GETSUM(NUMBERS)
머 이렇게 배열변수를 바로 넘겨서 사용할수도 있다.
PUBLIC & PRIVATE
PUBLIC 과 PRIVATE 는 다 알다시피 광역이냐 지역이냐 이다.
클래스 안에 쓰이는 변수들이나 함수앞에 PUBLIC 을 붙이면 클래스 밖에서도 사용가능하다. 위의 함수 GETSUM 도 앞에 PUBLIC 이 붙어 있기 때문에 클래스 밖에서 실행이 가능한것이다.
반대로 PRIVATE가 붙으면 클래스 내부에서만 실행된다. 외부에서 불러낼려치면 호출 오류가 뜰것이다.
이건 변수들도 마찬가지다.
추가 팁(?) 딕셔너리 주고 받기
PHP 에서는 배열 자체가 딕셔너리같은거라 주고 받기 편했는데.. ASP에서 이 방법을 찾는데 꽤나 고생했다. 혹시나 같은 고생하는 분이 있을까 해서 적어 본다
이걸 클래스와 연결해서 보면..
CLASS DICTEST
PUBLIC FUNCTION GETDIC()
Set D=CreateObject("Scripting.Dictionary")
D.add "BANANA", "100"
D.ADD "DDALGI","200"
D.ADD "SO","300"
SET GETDIC = D
END FUNCTION
END CLASS
'사용하기
Set DICTEST=NEW DICTEST
SET DATA=DICTEST.GETDIC
RESPONSE.WRITE DATA("BANANA")
PUBLIC FUNCTION GETDIC()
Set D=CreateObject("Scripting.Dictionary")
D.add "BANANA", "100"
D.ADD "DDALGI","200"
D.ADD "SO","300"
SET GETDIC = D
END FUNCTION
END CLASS
'사용하기
Set DICTEST=NEW DICTEST
SET DATA=DICTEST.GETDIC
RESPONSE.WRITE DATA("BANANA")
보낼때나 받을때나 SET 을 붙여주는게 포.인.트
대충 이정도로 강좌 아닌 소개를 마칠까 한다. 먼가 중요한 무언가를 빼먹은것같은 기분은 머지??
대충 찾은 클래스 소개 페이지들
http://blog.naver.com/yanione?Redirect=Log&logNo=70016736125
http://www.daniweb.com/tutorials/tutorial19997.html (아쉽게도 영어)
'asp' 카테고리의 다른 글
다중셀렉트 값넘기기 (0) | 2009.11.25 |
---|---|
ASP 클래스 사용법 (0) | 2009.11.18 |
ASP DB 액세스 튜닝 사례 및 DBHelper 소개 (0) | 2009.11.18 |
Windows Server-유용하게 이용되는 ServerVariables collection 몇 가지 (0) | 2009.11.17 |
배열과 컬렉션 Array Scripting.Dictionary (0) | 2009.11.17 |