PROGRAMMING WORKSHOP

.Net FrameWork,VB.Net |DataTable,DataGridView,LINQ

Class 라는 것에 대하여 좀 살펴보자

Inherits 라는 키워드로 이미 만들어진 크래스를 상속받아서...

콘트롤중에는 UserControl이라는 유용한 콘트롤이 있다
앞페이지에서
Window Form을 크래스모듈로 만들면서 Inherits라는 키워드를 사용하여
상속을 받았다는둥...뭔소린지 모를소리를 했다고 생각할수 있는 초보분들을 위하여
Inherits라는 키워드를 간단하게 이해하고 가도록 해보자
상속을 받는다고 하는 것은 개체지향프로그래밍에서
3가지 요소중(encapsulation,inheritance,polymorphism) 하나이다
3가지는, encapsulation,inheritance,polymorphism 라고하는 것
그중 중요한 것 Inheritance(상속)를 보자..
실은 상속이라는 개념을 충분히 이해하면 나머지도 이해하게 된다
예를 들어서 Button이라는 것을 보자
Button을 생성할때
Dim oBtn As =New Button
으로 Button개체를 만들어사용한다
New Button()이라고 할때 Button이라는 설계도,즉 Class를 사용하여
눈에 보이는 개체(an Instance Of Class),사용할수 있는 개체를 만들었다
즉 설계도가 있다는 것이다
아래와 같이 하면

Public Class myButton
Inherts Button
...
End Class

이라고 하면 myButton이라는 이름의 사용자정의 크래스를 하나 만드는데..
이미 설계도가 준비된 Button크래스를 그대로 myButton이라는 사용자정의 크래스에서
내가 원하는 기능을 추가하여 새로운 Button개체을 사용하겠다는 이야기다
즉 Button이라는 크래스의 내용을 모두 상속받아서
마치 내가 주인 같이 사용하겠다는 이야기다

그래서 요렇게 하나 만들어 보자

Public Class myButton
    Inherits Button
    Sub New()
        Me.BackColor = Color.Red
        Me.ForeColor = Color.White
    End Sub
	
    Protected Overrides Sub OnClick(e As System.EventArgs)
        MyBase.OnClick(e)
        MsgBox(Me.Text)
    End Sub

End Class

위의 내용은 New 프로시져에서 즉 myClass를 아래와 같이 사용한다고 호출할때
Dim oBtn As New myButton
이라고 하면 위의 크래스에서 Button을 그대로 사용하면서
버튼의 BackColor와 ForeColor가 다르게 칠해진 버튼이 만들어 지는 것이다
본래버튼 개체의 BackColor와 ForeColor와는 다르게 생성하게 만들겠다는 것
myButton이라는 크래스에서 남의 물건(Button)받아다가
색깔만 다시 칠해서 팔아먹는 셈이 된다
거저 먹는 셈이다
개체, Class를 활용하는 이유는 바로 이미 만든 것을 왜 또 만드느라고 골빠지게
코딩을 할필요가 없지 않냐는 재사용(Reuse)의 개념이 있는 것이다

위의 파랑색...OverRides라는 키워드가 메소드앞에 붙어 있다
이것은 Button개체가 갖고 있는 모든 구성원을 재정의하여 사용할수 있다는 것을 의미한다
Button개체를 Inherits (상속)하는 사용자정의 크래스내에서
아래와 같이 OverRides라는 키워드를 치면 본래의 Button크래스가 갖고 있는
모든 구성원목록이 나타난다
이것은 Button크래스가 갖고 있는 구성원(메소드,속성,이벤트)들을
재정의 하여 사용하면 된다는 의미다



재정의를 별도로 하지 않는다면 본래 Button크래스의 기본설정이 그대로 상속되는것이고
재정의 된 내용만 myClass라는 크래스에서 만들어 사용할때 구현되는 것이다
참 편리한 것이 Inherits이고 꼭 알아야 .NetFrameWork를 맘껏 사용하게 된다

아래와 같이 간단하게 Button개체가 아닌 Button개체를 상속받아서
조금 색상을 바꿔서 표현하게 버튼을 만들어서 공급한 내용이 된다



***[LOG-IN]***

UserControl이라는 콘트롤크래스를 상속 받아서...

콘트롤중에는 UserControl이라는 유용한 콘트롤이 있다
이것은 다른 콘트롤을 다양하게 조합하여 자신의 새로운 콘트롤로 만들어
사용할수 있게 해주는 편리한 콘트롤이다
그림과 같이 UserControl에 여러개의 버튼을 조합하여 하나의 콘트롤로 생성해보자



이미 만들어진 개체 설계도(Class)를 상속받아서
자기가 추가 하고 싶은 내용을 추가하여 사용하면 코딩이 훨씬 속도가 생길것이다
UserControl을 상속받은 새로운 크래스이름을 myUserControl이라고 한후
아래와 같이 호출하여 폼에 3개를 그린것

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        Dim iLeft As Integer = 6
        Dim iTop As Integer = 6

        For iX As Integer = 1 To 3
            Dim oMyUserControlButton As New myUserControlButton(6, 6, 20, Choose(iX, Color.Red, Color.Blue, Color.Yellow))
            oMyUserControlButton.Location = New Point(iLeft, iTop)
            Me.Controls.Add(oMyUserControlButton)
            iLeft = oMyUserControlButton.Left + oMyUserControlButton.Width + 6
        Next

        Me.AutoSize = True
        CType(sender, Button).Dispose()
    End Sub

어떤 크래스를 상속받으면 해당 크래스의 아이콘으로
크래스화일의 아이콘으로 바뀌는 것을 볼수 있다



***[LOG-IN]***