프로그래머나 프로그래밍 마니아들에게 VB의 클래스 기술은 대규모 소프트웨어 개발 과정에서 모듈(Moudle), 컨트롤(Activeocx), 링크 라이브러리(Activedll), 클래스(Classmoudle) 등을 익히는데 어려운 점이다. 체계적이고 효율적인 소프트웨어 엔지니어링을 구성하며, 클래스 기술은 제어 및 링크 라이브러리 기술의 기초이므로 클래스의 이론과 프로그래밍 방법을 익히는 것은 매우 의미가 있습니다.
(1) 클래스의 기본 정의 및 적용 개요 ;
클래스는 메서드, 속성 및 데이터 멤버를 포함하는 고급 코드 모듈입니다. 이는 모듈 범위 내에 있을 뿐만 아니라 그래픽 인터페이스가 없는 Activeocx이기도 합니다. 프로그래머는 이를 컨트롤처럼 사용할 수 없습니다. 클래스를 상속받을 수 없다는 점은 주목할 가치가 있습니다.
클래스를 사용하면 하나 또는 여러 특정 객체에 대한 복잡한 작업을 효율적으로 완료할 수 있습니다. 객체의 작업은 클래스의 메서드이고 객체의 속성은 클래스의 속성 프로세스입니다. 상대적으로 말하면 프로그래밍의 대상이 사물의 그룹인 경우 표준 모듈을 사용하는 것이 매우 적합합니다. 다음 두 가지 경우에는 코드 처리에 클래스를 사용해야 합니다.
(1) 유사한 속성을 가진 객체를 다수 생성합니다.
(2) 코드 캡슐화를 개선합니다.
클래스를 생성하는 방법은 매우 간단합니다. 코드 작성 시 "프로젝트" 메뉴에서 "클래스 모듈 추가" 항목을 선택하면 빈 클래스를 추가할 수 있습니다.
클래스 파일은 일반적으로 .cls 확장자로 저장됩니다.
(2) 클래스 메소드 구현 ;
클래스의 메소드는 동적 링크 라이브러리의 인터페이스 기능과 유사하며 다른 양식 코드에서 지정된 유형 매개변수를 승인하고 이를 클래스에 전달할 수 있습니다. 일반적으로 클래스 메서드는 반환 값이 있는지 여부를 지정할 수 있습니다. 이는 일반적으로 수업 중 공개 절차입니다. 비밀번호 상자에서 문자가 아닌 입력을 거부하게 만드는 다음 코드 예제를 고려하세요.
(1) cls와 유사한 코드;
OptionExplicit' 변수 확인
PRivateWithEventsmytxtAsTextBox
'이 클래스의 메소드는 텍스트 비밀번호 상자를 허용하고 제어합니다.
DimisNUMAs부울
'클래스의 모듈 수준 변수
PublicSubAttach(itTEXTAsTextBox)
'mytxt에 외부 변수를 허용합니다.
Setmytxt=itTEXT
EndSub
PrivateSubmytxt_KeyUp(KeyCodeAsInteger,ShiftAsInteger)
isNUM=(키코드>=65)그리고(키코드<=90)
'비밀번호 상자에 입력된 키보드가 영문인지 테스트
IfisNUM=FalseThen
삑 하는 소리
mytxt.Text=
'입력된 내용이 영문자가 아닌 경우 벨이 울리고 비밀번호 상자의 내용이 삭제됩니다.
MsgBox 잘못된 문자 입력입니다!
종료
디버그.Printmytxt.Text
'출력 비밀번호 상자 내용 디버그
EndSub
'수업 종료 코드
(2) 클래스 참조 ;
작성된 클래스는 두 가지 형식으로 참조할 수 있습니다. 첫 번째 방법은 Private(공개 또는 희미한) myCLS(지정된 클래스 이름) AsNewcls(작성된 클래스 이름)입니다. 먼저 양식 코드에서 모듈 수준 선언(DimmyCLSAscls)을 만든 다음 특정 코드 프로세스에서 특정 정의(Setmycls=Newcls)를 만듭니다. 이 두 가지 방법은 코드의 효율성과 단순성에 차이가 있을 수 있지만, 작성자의 프로그래밍 실무에서는 특별한 느낌은 없습니다. 하지만 저는 작성하기가 더 편리하기 때문에 첫 번째 방법을 선호합니다. 또한 코드 마지막에는 SetmyCLS=Nothing을 사용하여 클래스의 리소스 점유를 취소하는 것도 매우 좋은 프로그래밍 습관입니다.
form1 양식(양식에는 비밀번호 상자 컨트롤 text1, passworldchar=*이 있음)에 다음 코드를 추가합니다.
OptionExplicit
PrivatemyCLSAsNewcls
'CLS 인용
PrivateSubForm_Load()
myCLS.AttachText1
'스타트업 수업'
EndSub
'코드 끝에서 리소스를 해제하는 것을 잊지 마세요.
PrivateSubForm_Unload(CancelAsInteger)
SetmyCLS=아무것도 없음
끝
EndSub
이 문서의 코드는 클래스 메서드의 코드 작성 프로세스와 호출 방법을 보여줍니다(비록 클래스의 이벤트와 매우 유사하지만). 그 효과는 비밀번호 상자에 문자가 아닌 값을 입력하면 시스템이 링과 비밀번호 상자는 원본 데이터가 삭제됩니다. - 비밀번호는 어느 정도 보호됩니다.
클래스 메소드는 공용 함수나 프로시저와 유사하게 매개변수를 필요로 하지 않으며 클래스에서 가장 널리 사용됩니다. 다음 기사에서는 포괄적인 프로그래밍을 위해 클래스의 속성, 이벤트 및 메서드를 사용하는 방법에 대해 설명하겠습니다.
클래스 이론, 클래스 생성, 클래스 메소드의 프로그래밍 실습에 대해 논의했습니다. 실제로 클래스가 소프트웨어 엔지니어링에서 널리 사용될 수 있는 주된 이유는 프로그래밍에 필요한 많은 속성을 매우 편리하게 캡슐화할 수 있기 때문입니다. 프로그래머는 컨트롤(ocx) 및 링크 라이브러리(dll)의 설계 및 디버깅의 복잡성을 어느 정도 극복할 수 있을 뿐만 아니라 프로그램 코드의 단순성과 효율성도 향상됩니다. 이 기사에서는 메서드를 포함한 전체 클래스 프로그래밍에 대해 설명합니다. , 속성 및 기본 이벤트.
(1) 클래스 속성의 특성 및 정의
표준 컨트롤의 속성과 유사하게 클래스 속성을 사용하면 사용자는 지정된 데이터 범위 내에서 값을 할당할 수 있으며 이러한 값은 클래스 내 코드의 다양한 부분에서 공유됩니다. 속성을 획득하고 전송하려면 PropertyLet 및 PropertyGet 문을 통한 프로그래밍이 필요합니다. 물론 먼저 클래스의 전역 또는 모듈 수준에서 해당 변수를 정의해야 합니다.
(2) 사건의 속성과 기본 정의
양식의 이벤트와 유사하게 클래스에는 두 가지 기본 이벤트인 Class_Initialize(클래스가 로드될 때 트리거됨) 및 Class_Terminate(클래스가 언로드될 때 트리거됨)가 있으며 둘 다 비공개입니다. 실제로 클래스의 메서드와 속성을 완료하는 것을 기억하는 한 이 두 이벤트를 완전히 무시할 수 있습니다.
클래스는 매개 변수 선언에 WithEvents 키워드가 필요하고 이벤트에 명명된 매개 변수나 선택적 매개 변수가 있을 수 없으며 반환 값이 없다는 점을 제외하면 메서드의 프로그래밍 형식과 유사한 자체 이벤트를 정의할 수도 있습니다.
실제로 잘 구조화된 메서드와 속성은 복잡하게 구조화된 클래스의 이벤트를 완전히 대체할 수 있습니다.
(3) 클래스 메소드, 이벤트 및 속성의 프로그래밍 예;
이 프로그램의 목적은 클래스를 통해 양식의 텍스트 상자 내용에 대한 모든 대문자, 소문자 및 역순 정렬을 제어하는 것입니다.
코드 작성 및 호출을 용이하게 하기 위해 수업에서 열거형 프로그래밍 방법을 참조했습니다.
다음 코드는 Class1 클래스에 있습니다.
OptionExplicit
PrivateWithEventsmyTXTAsTextBox
'메서드 매개변수 인터페이스
PublicEnumsTYLE
Lcaseit' 소문자 속성
Lbigit의 대문자 속성
Nlogoit' 역정렬 속성
EndEnum
'속성의 자동 할당을 구현하는 데 사용되는 사용자 정의 열거형
PrivatemvarBiaozhiAssTYLE
'열거 상수 연결 구현
PublicFunctiondONE()AsString'
'DONE 메소드는
'양식 텍스트 상자에서 해당 문자 변환 작업을 수행합니다.
'그리고 변환된 문자열을 반환합니다.
IfmvarBiaozhi=NlogoitThen
dONE=StrReverse(myTXT)
'역순 정렬
ElseIfmvarBiaozhi=LcaseitThen
dONE=LCase(myTXT)
'강제 소문자 변환
또 다른
dONE=UCase(myTXT)
'강제 대문자 변환
종료
EndFunction
'DONE 메소드가 종료됩니다
PublicPropertyLetBiaozhi(ByValvDataAssTYLE)
'속성에 할당된 값을 가져옵니다.
mvarBiaozhi=vData
EndProperty
PublicPropertyGetBiaozhi()AssTYLE
'속성값을 클래스로 전송
SetBiaozhi=mvarBiaozhi
EndProperty
PublicSubAttach(itTEXTAsTextBox)
'접속 클래스 방식
SetmyTXT=itTEXT
EndSub
PrivateSubClass_Initialize()
'이 이벤트는 클래스가 로드될 때 활성화됩니다.
MsgBox 안녕하세요! 이 프로그램은 클래스 메소드, 속성 및 이벤트를 사용하여 프로그래밍하는 기술을 보여줍니다!
EndSub
PrivateSubClass_Terminate()
'이 이벤트는 클래스가 언로드될 때 활성화됩니다.
MsgBox 안녕하세요! Class_Terminate에서 객체가 취소된 후 코드를 입력하는 것을 잊지 마세요!
EndSub
'수업 코드가 다 끝났어.
(4) 양식 코드의 참조 프로그래밍;
텍스트 컨트롤 TEXT1, 드롭다운 목록 컨트롤 COMBO1 및 명령 단추 COMMAND1(CAPTION=변환 시작)을 추가하여 FORM1을 형성하고 세 컨트롤을 적절한 위치로 조정합니다.
DimmyTAsNewClass1
'클래스 참조
PrivateSubForm_Load()
콤보1.클리어
Combo1.AddItem 문자열 대문자 변환
Combo1.AddItem 문자열 소문자 변환
Combo1.AddItem 문자열 역정렬
Combo1.ListIndex=0
'목록 상자에 속성 옵션 추가
EndSub
PrivateSubCommand1_Click()
'명령 버튼을 누르면 클래스를 활성화합니다.
myT.AttachText1
'메서드 매개변수 연결
SelectCaseCombo1.ListIndex
사례0
myT.Biaozhi=Lbigit
사례 1
myT.Biaozhi=Lcaseit
사례2
myT.Biaozhi=Nlogoit
선택 종료
'목록 상자의 선택 사항에 따라 클래스의 Biaozhi 속성에 값을 할당합니다.
'프로그래밍 환경에서는 위의 속성 값이 자동으로 추가됩니다.
Text1.Text=myT.dONE
'정렬 후 문자열을 반환
EndSub
PrivateSubForm_Unload(CancelAsInteger)
SetmyT=아무것도 없음
끝
'좋은 프로그래밍 습관
EndSub
우리 코드는 너무 간결해 마치 컨트롤을 사용하는 것 같은 느낌이 듭니다. 이 컨트롤은 마음대로 호출할 수 있을 뿐만 아니라 VB의 자동 프롬프트 기능을 편리하게 사용할 수도 있습니다.
(5) 수업 프로그래밍 기술 요약;
엄밀히 말하면, 클래스는 VB 프로그래밍에서 매우 유용한 기술이며, 배우고 익히는 것도 어렵습니다. 그러나 소규모 소프트웨어 개발에서는 소프트웨어를 개선하기 위해 클래스가 광범위하고 효과적으로 사용됩니다. 효율성과 코드 명확성을 위해 더 많은 클래스 모듈, 컨트롤 및 연결 라이브러리를 사용하지 말고 표준 모듈로 교체해야 합니다.
이 기사의 코드 예제는 비교적 간단하지만 모듈 프로그래밍 기술의 모든 측면을 다루고 있으며, 초보자가 이를 통해 배우고 프로그래머가 함께 토론할 수 있기를 바랍니다. 아무리 복잡한 고층빌딩이라도 모두 평범한 벽돌로 만들어졌다는 사실을 믿어야 합니다. 마찬가지로, 소프트웨어 프로젝트가 아무리 복잡해도 프로그래밍 애호가와 프로그래머로 구성된다는 점만 다릅니다. 분석가는 동일한 프로그램 명령문으로 구성된 프로그램이 다르다는 것입니다. ->