내가 전에 쓴 것 :
프로그램을 작성하는 사람이라면 누구나 구현하고 싶은 기능을 점진적으로 개발하다 보면 첫날 작성한 내용이 다음 날에는 잊어버리게 되는 경우가 많다는 사실을 알고 있을 것입니다. 상세한 프로그램 개발 노트가 제공됩니다. 이는 파일과 기능이 복잡한 ASP 시스템 개발에서 특히 그렇습니다. 웹 사이트의 일부 기능을 수정하려고 할 때 어디서부터 시작해야 할지, 무엇을 수정해야 할지 전혀 알 수 없습니다. 이때 객체지향 프로그래밍 언어를 배웠다면 자연스럽게 코드 함수를 모듈로 구현하는 방법을 떠올릴 것입니다. ASP는 본질적으로 객체지향 프로그래밍이 아니지만 VBSCRPIT6.0에서는 클래스를 사용할 수 있습니다. 코드 캡슐화를 실현하고 모듈 언어를 구현합니다.
우선 여기서는 객체지향이 매우 구체적이고 실질적인 모델이며 어떤 사람들은 객체를 보면 겁을 먹을 수 없다는 것을 설명하기 위해 매우 공식적인 개념을 여기에 적고 싶습니다.
객체는 보고, 느끼고, 듣고, 만지고, 맛보고, 냄새를 맡을 수 있는 것입니다. 여기서는 객체를 다음과 같이 정의합니다. 객체는 일련의 식별 가능한 속성과 동작으로 식별되는 독립적인 개체입니다.
객체 지향 프로그래밍(oop) 프로그래밍에서는 다음 두 가지 용어가 사용됩니다.
클래스: 객체의 템플릿이며 객체의 특성을 정의합니다.
인스턴스: 이것은 상호 작용할 수 있는 실제 개체입니다.
속성, 메서드 및 이벤트
OOP에서 다음 용어는 객체의 특성을 설명합니다.
속성: 객체의 속성을 설명하는 순위입니다.
방법(Method): 객체가 무엇을 할 수 있는지 또는 무엇을 기대하는지 설명하는 동사입니다.
이벤트: 작업에 대한 응답으로 개체가 수행하는 작업을 설명합니다.
객체는 객체지향 프로그래밍의 일부이며 프로그래밍 시 객체지향 설계에는 매우 큰 장점이 있습니다. 많은 사람들이 이것이 복잡한 주제라고 생각하지만 실제로는 매우 간단하며 다음과 같은 간단한 용어로 설명할 수 있습니다. 추상화, 캡슐화, 다형성 및 상속.
추상화: 이는 클래스의 내부 작동 방식인 복잡성을 숨기는 방법이므로 사용자는 클래스가 어떻게 작동하는지 알 필요가 없습니다. TV를 시청하려면 TV가 어떻게 작동하는지 알 필요가 없습니다. TV를 켜고 채널을 검색하기만 하면 됩니다. 문자열 예제에는 켜기/끄기 스위치가 있습니다. 삭제할 수 있는 트림 메소드 문자열 끝에 있는 공백의 경우 이 작업을 어떻게 수행하는지 알 필요가 없으며 이 기능이 있다는 것만 알면 됩니다.
캡슐화: 각 객체에는 작업을 수행하는 데 필요한 모든 정보가 포함되어 있습니다. 이 객체를 캡슐화라고 부르므로 해당 객체는 작업을 완료하기 위해 다른 객체에 의존하지 않습니다. TOupper() 메서드에서는 문자열이 다른 객체로부터 정보를 얻을 필요가 없습니다. 모든 문자는 대문자로 변환됩니다.
다형성: 이 용어는 서로 다른 객체가 동일한 작업을 수행할 수 있지만 자체 구현 코드를 통해 이름은 동일하지만 기본 구현 코드가 다르다는 것을 나타내는 데 사용됩니다.
상속: 클래스가 서로 관련되고 특성을 공유하는 방식을 정의합니다. 상속이 작동하는 방식은 하위 클래스가 상위 클래스의 모든 특성을 상속하는 클래스와 하위 클래스를 정의하는 것입니다. 일관성을 가지며 새 클래스를 생성하기로 결정한 경우 상위 클래스의 모든 특성을 정의하지 않고도 코드를 공유할 수 있습니다.
ASP의 클래스를 사용하여 모듈화 달성
몇 가지 간단한 예를 들어 설명하겠습니다. 여기서 강조하는 것은 아이디어입니다. ASP 웹 사이트를 개발할 때 클래스(기본 클래스)를 사용하여 확장할 수 있다면 이는 매우 필요합니다(또한 매우 어렵습니다).
먼저 간단한 예를 선택해 보겠습니다.
우리는 클래식 포럼 사용자의 정보를 표시하려고 합니다. 사용자의 일부 정보가 표시될 수 있습니다. 우리는 사용자를 객체로 간주합니다. ID 및 성별, 포인트, 권한, 구현 방법은 이 정보를 표시하는 것입니다. 다음과 같이 작성하십시오.
클래스 블루아이디어
비공개 bname,bpoint,bsex,blevel
'............
수업 종료
여기서는 먼저 blueidea라는 클래스를 선언하고 그 뒤에 blueidea 클래스의 속성을 저장하는 일부 개인 변수를 선언합니다. 이는 코드 외부에서 액세스할 수 없습니다. 이는 데이터 보호를 위해 속성 문을 사용하는 것입니다. 개인 변수에 간접적으로 지불합니다.
'------------------------------------------------ - ---------------
속성 getname 가져오기
getname=b이름
끝 속성
속성 Let getname(nameid)
bname=이름ID
이름ID= 다음인 경우
bname=등록된 사용자가 없습니다
종료 조건
끝 속성
'------------------------------------------------ - -----------------
속성 가져오기 getsex
getex=bsex
끝 속성
속성하자 getsex(sex)
bsex=killint(섹스,0,0)
bsex=0이면
bsex=남성
또 다른
bsex=여성
다음과 같은 경우 종료
끝 속성
'------------------------------------------------ - -----------------
속성 getpoint 가져오기
getpoint=b포인트
끝 속성
속성 Let getpoint(point)
bpoint=killint(포인트,0,0)
끝 속성
'------------------------------------------------ - -----------------
여기에는 데이터의 유효성을 확인하는 killint 함수가 있습니다. 그 프로토타입은 다음과 같습니다.
개인 함수 killint(i,killstr,killsub)
IsNumeric(i)이 아닌 경우
i=killstr
ElseIf i<=0 Then
나=killsub
다음과 같은 경우 종료
killint=Int(왼쪽(i,5))
기능 종료
이 기능의 기능은 매우 명확하며 더 이상 복잡하지 않습니다.
포인트를 통해 사용자 레벨을 판단해야 하므로 여기에 비공개 함수가 정의되어 있습니다.
개인 함수 getlevel()
bpoint=killint(bpoint,0,0)
bpoint<500이면
blevel=주니어 멤버
ElseIf bpoint>=500 그리고 bpoint<=100 그러면
blevel=프리미엄 회원
또 다른
blevel=얼티메이트 멤버
종료 조건
Getlevel=레벨
기능 종료
사용자 정보를 다시 보내려면 정보를 표시하는 공개 함수를 정의해야 합니다.
공개 함수 showuser()
response.write(<h5>다음은 <font color=red>&bname&</font>의 정보를 보여줍니다:</h5>)
response.write(<h5>성별:<font color=red>&bsex&</font></h5>)
response.write(<h5>포인트:<font color=red>&bpoint&</font></h5>)
getlevel
response.write(<h5>레벨:<font color=red>&b레벨&</font></h5>)
기능 종료
수업 종료
이 클래스를 사용할 때는 다음과 같이 사용하세요. (여기서 양식 처리를 작성했습니다.)
blueideauser=new blueidea로 설정
blueideauser.getname=트림(요청(ID))
blueideauser.getsex=요청(섹스)
blueideauser.getpoint=요청(포인트)
blueideauser.showuser
효과를 보려면 여기를 참조하십시오: http://www.5do8.com/net/aspclass/class.asp
데이터베이스 정보 읽기를 제어하는 클래스:
참조 소스 코드
'이름: ado_5do8
'기능: 데이터베이스의 다양한 작업 읽기
'원천마을 http://www.5do8.com http://www.Blueidea.com-5do8
'창작: 5do8
'연락처:[email protected]
'업데이트: 2005년 11월 13일
'인증 : 블루아이디얼 홈페이지 포인트 3,000점 초과, 겐윤빌리지 등록이용자 전원
'클래스 인터페이스: ado_5do8.ConnectString=데이터베이스에 대한 절대 경로
'ado_5do8.rs_top 호출 횟수, 테이블 이름
클래스 ado_5do8
개인 conn,sqlstr,rs,iid,itable,session
'sqlstr: 데이터베이스 주소, 절대 경로, 프라이빗
'conn: 데이터베이스 연결을 엽니다. 비공개
'------------------------------------------------ - -----------------
rem은 원하지 않는 숫자를 제거합니다.
전용 함수 lit_in(r1,r2)
IsNumeric(r1) 및 IsNumeric(r2)인 경우
어두워
r1>r2이면
밝기=r2
또 다른
밝기=r1
종료 조건
또 다른
밝기=0
다음과 같은 경우 종료
lit_in=dimrr
기능 종료
'------------------------------------------------ - ---------------
개인 함수 killint(i,killstr,killsub)
IsNumeric(i)이 아닌 경우
i=killstr
ElseIf i<=0 Then
나=killsub
다음과 같은 경우 종료
killint=Int(왼쪽(i,5))
기능 종료
'------------------------------------------------ - ---------
개인 서브 startconn()
오류 발생 시 다음 재개
conn=server.CreateObject(adodb.connection) 설정
strconn=공급자=Microsoft.Jet.OLEDB.4.0;데이터 원본= & Server.MapPath(sqlstr)
conn.open strconn
오류가 발생한 경우
오류가 발생했습니다.지우기
SetConn=아무것도 없음
mess=오류가 발생하여 데이터베이스에 연결할 수 없습니다
응답.쓰기(메스)
응답.끝
또 다른
mess=데이터베이스 연결에 성공적으로 연결되었습니다......<br/>
응답.쓰기(메스)
종료 조건
서브 끝
'------------------------------------------------ - --------------
비공개 하위 closeconn()
연결 닫기
conn=아무것도 설정하지 않음
response.write(<strong style='color:red'>연결 연결 닫기</strong>...<hr/>)
하위 종료
'------------------------------------------------ - ---------------
개인 서브 클로저()
RS.닫기
rs=아무것도 설정하지 않음
response.write(<strong style='color:#085420'>데이터베이스 RS 닫기</strong>.....<br/>)
서브 끝
'------------------------------------------------ - ---------------
재산 소유권을 얻으세요
havese=세션
끝 속성
자산 보유(귀하의 세션)
isession=당신의 세션
귀하의 세션= 다음인 경우
isession=노데프
종료 조건
끝 속성
'------------------------------------------------ - ---------------
공개 함수 makesession(arraydata)
IsArray(arraydata)인 경우
makear=배열데이터
또 다른
makear=배열(0,0,0,0)
종료 조건
isession= 다음인 경우
isession=노데프
다음과 같은 경우 종료
세션(session)=메이커
기능 종료
'------------------------------------------------ - ---------------
개인 함수 getsession()
thisget=세션(세션)
IsArray(thisget)가 아닌 경우
thisget=배열(0,0,0,0)
종료 조건
Getsession=thisget
기능 종료
'------------------------------------------------ - ---------------
속성 GetConnectString
ConnectString = sqlstr
끝 속성
속성 Let ConnectString(str)
sqlstr = 문자열
끝 속성
'------------------------------------------------ - ---------------
속성 getid 받기
getid = iid
끝 속성
속성 Let getid(id)
iid = 아이디
끝 속성
'------------------------------------------------ - ---------------
속성 가져오기 가능
gettable = itable
끝 속성
속성 Let gettable(테이블)
테이블 = 테이블
끝 속성
'------------------------------------------------ - ---------------
'------------------------------------------------ - -----------------
공용 함수 readarraysession(iStart,ipageno,irowid)
rowid=killint(irowid,0,0)
start=killint(istart,0,0)
pageno=killint(ipageno,5,5)
데이터=getsession
iRows = UBound(데이터, 2)
iCols = UBound(데이터, 1)
response.write(<h5> 획득한 총 개수:)
response.write(<b> &iRows+1&</b> 메시지</h5><hr/><ul style='width:100%;'>)
rowid = 0이면
iRows > (ipageno + iStart)인 경우
iStop = ipageno + iStart - 1
또 다른
iStop = iRows
종료 조건
iRowLoop의 경우 = iStop 시작
Response.Write (<li style='padding:4px 0;'><a href=?k=read&rowid=&irowloop+1&>&data(1, iRowLoop) & </a><span style='padding:4px 0 4px 10px; background-color:#ccc; '>느리므로 클릭하지 않는 것이 좋습니다--><a href=?k=list&id=&data(0,irowloop)&>업데이트</a></span></li>)
다음
응답.쓰기 </ul><div style='top:20px;Background-color:#ccc;color:#020;font-weight:bold;bordr-top:2px solid #008;padding:10px 0;color: #b00'>목록(<a href=default.asp>일반 모드로 돌아가기</a>):
시작 > 0이면
Response.Write <A HREF=?k=read&Start= & iStart-ipageno &&pageno= & ipageno & >이전</A>
종료하면
iStop < iRows이면
응답.쓰기 <A HREF=?k=read&Start= & iStart+ipageno &&pageno= & ipageno & >다음</A>
endIf
응답.쓰기</div>
또 다른
rowid=litter_in(rowid-1,iRows)
response.write(<div style='width:85%'><h4 style='text-align:center'><a href=?k=read&pageno=&pageno&&start=&start&>반환 목록</a></h4></h2><hr/><h5>&server.htmlencode(data(1,rowid))&</h5><p >&server.htmlencode(data(2,rowid))&<h5>+------&server.htmlencode(data(3,rowid))&)
응답.쓰기(<div>)
다음과 같은 경우 종료
기능 종료
'------------------------------------------------ - ---------------
공용 함수 list_ids()
sql3=select * from &itable& 여기서 id=&iid&
시작콘()
rs=conn.execute(sql3)를 설정합니다.
rs.eof 및 rs.bof인 경우
데이터=배열(0,0,0,0)
또 다른
데이터=Rs.GetRows()
종료 조건
클로저
닫기
response.write(UBound(데이터)&:)
response.write(server.htmlencode(data(2,0)))
기능 종료
'------------------------------------------------ - ---------------
공용 함수 rs_top(num,table,whe)
시작콘()
sql=&table&에서 상위 &num& * 선택
sql2=&table& &whe&에서 szd_count로 count(*)를 선택합니다.
rs=conn.execute(sql2)를 설정합니다.
szd_count=rs(szd_count)
클로저
rs = Conn.Execute(sql) 설정
희미한 데이터
Rs.Eof이면
데이터=데이터 없음
또 다른
데이터=Rs.GetRows()
다음과 같은 경우 종료
클로저
닫기콘()
통화로 세션(데이터) 생성
기능 종료
'++++++++++++++++++++++++++++++++++++++++++++++++++++ + +++++++++
수업 종료
사용시:
희미한 행동
작업=요청(k)
작업=보기인 경우 다음
통화 보기new
ElseIf 작업=목록 Then
통화목록()
ElseIf 작업=읽기 Then
읽기() 호출
또 다른
콜프()
다음과 같은 경우 종료
서브프()
%>
<양식 스타일=border-top:2px solid #008;border-bottom:2px solid #008;margin:auto; background-color:#eee;padding:20px 5px;color:#008;font-weight:bold;>
<label>표시되는 총 정보량:<input name=n type=text maxlength=4 size=10 />페이지당 페이지 수:<input name=pagesize type=text maxlength=4 size=10 value=5/> <입력 이름 =arrstart 유형=숨겨진 값=0></label>
<h5 style=border-top:1px solid #000;padding:5px 0> 작업:<input name=k type=submit value=view /></h5>
</form> <%하위 끝%>
<%하위 보기새로 만들기()
f_num=killint(요청(n),1,1)
페이지 크기=killint(요청(페이지노),5,5)
arrstart=killint(요청(시작),0,0)
rowid=killint(요청(rowid),0,0)
cs=new ado_5do8 설정
cs.ConnectString=data/a.mdb
cs.havese=시
cs.rs_top f_num,site_szd,
cs.readarraysession arrstart,pagesize,rowid
하위 종료
하위 목록()
response.write(<h5><a href=default.asp>기본 모드로 돌아가기</a></h5>)
response.write 아래에 특정 정보가 표시됩니다:<hr/>
id=요청(ID)
id=killint(id,1,1)
listid=new ado_5do8 설정
listid.ConnectString=data/a.mdb
listid.getid=id
listid.gettable=site_szd
목록ID.list_ids()
서브 끝
하위 읽기()
response.write<div style='ground-color:#ccc;padding:20px 0;color:080;font-weight:bold;border-bottom:2px solid #008'>페이지 분석이 완료되었습니다. <a href=default.asp>일반 모드로 돌아가기</a>매개변수: 시작, 시작 요소, 페이지당 항목 수</div>를 선택하세요.
페이지 크기=killint(요청(페이지노),5,5)
arrstart=killint(요청(시작),0,0)
rowid=killint(요청(rowid),0,0)
cs=new ado_5do8 설정
cs.havese=시
cs.readarraysession arrstart,pagesize,rowid
하위 종료
함수 killint(i,killstr,killsub)
IsNumeric(i)이 아닌 경우
i=killstr
ElseIf i<=0 Then
나=killsub
다음과 같은 경우 종료
killint=Int(왼쪽(i,5))
기능 종료
%>