ASP에는 아쉽게도 상속이 되질 않는다. ASP.NET에 가면 지원된다고 들은것같기도 하지만 오리지날  ASP에는 지원되지 않는다. 이점도 유의 하시고.. 

ASP 클래스의 시작 

CLASS TESTCLASS 
  ..... 
END CLASS


일단 시작은 저렇게 시작하고 마친다. 보통의 SUB 나 FUNCTION이랑 비슷하다. 

그리고 클래스의 시작과 마침에 자동으로 실행되는 함수를 넣어야 하는데 아래와 같다 

Private Sub Class_Initialize() 
... 클래스 생성될때 자동으로 실행 
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


이게 기본 세트라고 할수 있다. 이 이후에는 클래스에 함수들을 하나씩 추가시키면 된다. 그러면 알흠다운 클래스가 만들어지게 되겠다. 

그러면 만들어 놓은 클래스를 다른 페이지에서 불러서 사용하는 방법을 보겠다. 

먼저 저 클래스를 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


이렇게 생성해서 사용해도 클래스안의 같은 이름의 변수나 함수들이 독립적으로 행동할수 있다는것이다. 그리고 그냥 인클루드로 함수들을 나열해서 인클루드 할때보다 정리가 쉽고 다른 사이트에 적용하기도 좋다 

클래스가 왜 좋은지 사용하기 좋은지에 대한건 구글이나 네이버에 찾아봐주시고~ 

일단 생성된 클래스의 함수를 실행해 보겠다. 

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


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)


머 이렇게 배열변수를 바로 넘겨서 사용할수도 있다. 


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")


보낼때나 받을때나 SET 을 붙여주는게 포.인.트 


대충 이정도로 강좌 아닌 소개를 마칠까 한다. 먼가 중요한 무언가를 빼먹은것같은 기분은 머지?? 


대충 찾은 클래스 소개 페이지들 
http://blog.naver.com/yanione?Redirect=Log&logNo=70016736125 
http://www.daniweb.com/tutorials/tutorial19997.html (아쉽게도 영어)

+ Recent posts