4 Car vb Car Public Class Car Public
객체 지향 프로그래밍 4. ‘Car. vb’ 파일을 클릭하여 연다. 그리고 다음의 코드를 Car 클래스 안에 작성한다. Public Class Car '자동차 속도 필드 멤버 Public speed As Integer '자동차 기어단계 필드 멤버 Public Gear. Level As Integer '자동차 마력 필드 멤버 Public Horse. Power As Integer '읽기전용 speed 속성 설정 : speed값을 반환 Read. Only Property Speed. Pro() As Integer Get Return speed End Get End Property '읽기전용 기어단계 속성 설정 : Gear. Level값을 반환 Read. Only Property Gear. Level. Pro() As Integer Get Return Gear. Level End Get End Property 2020 -11 -06 8
객체 지향 프로그래밍 '속도 계산 메소드 서브함수 , Accelerate 속도 = speed * Gear. Level Sub Accelerate(By. Val i. Accelerate As Integer) Select Case i. Accelerate 'speed 계산 Case 1 speed = 10 * i. Accelerate Gear. Level = 1 Case 2 speed = 10 * i. Accelerate Gear. Level = 2 Case 3 speed = 15 * i. Accelerate Gear. Level = 3 Case 4 speed = 20 * i. Accelerate Gear. Level = 4 Case 5 speed = 20 * i. Accelerate Gear. Level = 5 Case Else speed = 0 Gear. Level = 0 End Select End Sub End Class 2020 -11 -06 9
객체 지향 프로그래밍 9. [실행] 버튼을 더블 클릭하여 btn. Run_Click 이벤트 서브 프로시저를 작 성한다. Public Class Form 1 Private Sub btn. Run_Click(By. Val sender As System. Object, By. Val e As System. Event. Args) Handles btn. Run. Click '새로운 Bus 객체를 생성, Bus는 Bus 클래스 Dim Our. Bus As Bus Our. Bus = New Bus() '버스의 마력, 무게 치환 Our. Bus. Horse. Power = txt. Power. Text Our. Bus. Weight = txt. Weight. Text 'Accelerate 메소드를 이용하여 속도계산 Our. Bus. Accelerate(txt. Gear. Text) '무게당 마력을 출력한다. txt. PW. Text = Our. Bus. Accelerate '버스의 속력을 출력한다. txt. Speed. Text = Our. Bus. speed End Sub 2020 -11 -06 13
객체 지향 프로그래밍 10. [종료] 버튼을 더블 클릭하여 btn. Close_Click 이벤트 서브 프로시저를 작성한다. Private Sub btn. Close_Click(By. Val sender As System. Object, By. Val e As System. Event. Args) Handles btn. Close. Click Application. Exit() End Sub End Class 2020 -11 -06 14
객체 지향 프로그래밍 3. Car 클래스 안에 필드 멤버와 생성자를 추가한다. 메소드를 자식 클래스 에서 재 정의하기 위해 Accelerate 메소드 앞에 Overridable 키워드를 추가 한다. Public Class Car 'Public speed As Integer '자동차 속도 필드 멤버 Public Property Speed As Integer '프로퍼티 프로시저 Speed 속성 설정-스피트값을 반환 Overridable Sub Accelerate(By. Val i. Accelerate As Integer) '속도 계산 메소드 서브 함수 Select Case i. Accelerate 'speed 계산 Case 1 Speed = 10 * i. Accelerate Case 2 Speed = 10 * i. Accelerate Case 3 Speed = 15 * i. Accelerate Case 4 Speed = 20 * i. Accelerate Case 5 Speed = 20 * i. Accelerate Case Else Speed = 0 End Select End Sub End Class 2020 -11 -06 19
객체 지향 프로그래밍 4. Car 클래스로 부터 자식 클래스인 Bus 클래스를 작성한다. 부모 클래스 의 메소드인 Accelerate를 재정의하기 위해 Accelerate 메소드 앞에 Overrides 키워드를 추가한다. Public Class Bus 'Car 클래스로부터 상속 Inherits Car '속도 계산 메소드 서브함수(재정의 메소드) Overrides Sub Accelerate(By. Val i. Accelerate As Integer) Select Case i. Accelerate 'speed 계산 Case 1 Speed = 8 * i. Accelerate Case 2 Speed = 8 * i. Accelerate Case 3 Speed = 12 * i. Accelerate Case 4 Speed = 15 * i. Accelerate Case 5 Speed = 18 * i. Accelerate Case Else Speed = 0 End Select End Sub End Class 2020 -11 -06 20
객체 지향 프로그래밍 7. [오버라이딩 실행] 버튼을 더블 클릭하여 btn. Run_Click 이벤트 서브 프 로시저를 작성한다. Public Class Form 1 Private Sub btn. Run_Click(By. Val sender As System. Object, By. Val e As System. Event. Args) Handles btn. Run. Click '새로운 Bus 객체를 생성 : Bus는 Bus 클래스 Dim Our. Bus As Bus Our. Bus = New Bus() 'Accelerate 메소드를 이용하여 속도계산 Our. Bus. Accelerate(txt. Gear. Text) '버스의 속도(speed속성) 값을 출력한다 txt. Speed. Text = Our. Bus. Speed '기어단계설정 값 확인 If txt. Gear. Text > 5 Or txt. Gear. Text < 0 Then Message. Box. Show("버스의 기어단계설정 값이 잘못되었음!") Return End If End Sub End Class 2020 -11 -06 22
객체 지향 프로그래밍 8. [종료] 버튼을 더블 클릭하여 btn. Close_Click 이벤트 서브 프로시저를 작 성한다. Private Sub btn. Close_Click(By. Val sender As System. Object, By. Val e As System. Event. Args) Handles btn. Close. Click Application. Exit() End Sub End Class 2020 -11 -06 23
객체 지향 프로그래밍 5. 2 객체 지향 프로그래밍 ② 메소드 오버로딩(Overloading) v 메소드 오버로딩은 같은 이름을 가진 메소드에 서로 다른 매개변수의 데이터 형식과 개수를 정의한 것이다. v 같은 이름을 가지지만 데이터의 형식과 개수가 서로 다른 메소드를 정 의함으로서 프로그램 코딩과 이해성을 쉽게 하는 기능이다. v 다음 예는 원의 면적을 계산하는 메소드를 오버로드 하는 방법 Ø Integer, Single, Double 정보에 다른 형식을 할당하는 코드 Overloads Function Radius. Area. Calculate(By. Val radius As Integer) As Integer '반경을 매개변수로 받아서 원주율(radius * radius) 계산 '원의 면적 계산(원주율 * PI) Return radius * Math. PI End Function Overloads Function Radius. Area. Calculate(By. Val radius As Single) As Single Return radius * Math. PI End Function Overloads Function Radius. Area. Calculate(By. Val radius As Double) As Double Return radius * Math. PI End Function 2020 -11 -06 25
객체 지향 프로그래밍 3. Circle 클래스 안에 메소드 함수를 추가한다. Overloads 키워드를 사용 하여 같은 이름인 3개의 메소드를 정의한다. Public Class Circle Overloads Function Radius. Area. Calculate(By. Val radius As Integer) As Integer '반경을 매개변수로 받아서 원주율(radius * radius) 계산 '원의 면적 계산(원주율 * PI) Return radius * Math. PI End Function Overloads Function Radius. Area. Calculate(By. Val radius As Single) As Single '반경을 매개변수로 받아서 원주율(radius * radius) 계산 '원의 면적 계산(원주율 * PI) Return radius * Math. PI End Function Overloads Function Radius. Area. Calculate(By. Val radius As Double) As Double '반경을 매개변수로 받아서 원주율(radius * radius) 계산 '원의 면적 계산(원주율 * PI) Return radius * Math. PI End Function End Class 2020 -11 -06 27
객체 지향 프로그래밍 5. 폼과 각 컨트롤에 대한 속성값을 설정한다. 객체의 종류 객체 명 폼 Form 1 명령 버튼 Button 2 레이블 Label 1 Text : 원 면적 계산 오버로딩 (Name) : btn. Run Text : 오버라이딩 실행 (Name) : btn. Close Text : 종료 Text : 원의 반지름 : 레이블 Label 2 Text : 데이터 형식 : 레이블 Label 3 텍스트 박스 Text. Box 1 텍스트 박스 Text. Box 2 콤보 박스 Combo. Box 1 Text : 원의 면적 : (Name) : txt. Radius Text : (Name) : txt. Result Text : Enable : False (Name) : cb. Type Drop. Down. Style : Drop. Down. List Items : Integer Single Double 2020 -11 -06 속성 및 설정 값 29
객체 지향 프로그래밍 6. [실행] 버튼을 더블 클릭하여 btn. Run_Click 이벤트 서브 프로시저를 작 성한다. Public Class Form 1 Private Sub btn. Run_Click(By. Val sender As System. Object, By. Val e As System. Event. Args) Handles btn. Run. Click '새로운 Circle 객체를 생성 : 'Circle은 Circle 클래스 Dim My. Circle As Circle My. Circle = New Circle() '메소드 오버로딩을 이용하여 원의 면적계산 Select Case cb. Type. Selected. Item Case "Integer" 'Integer 형식을 리턴하는 Radius. Area. Calculate 메소드 호출 txt. Result. Text = My. Circle. Radius. Area. Calculate(Integer. Parse(txt. Radius. Text)) Case "Single" 'Single 형식을 리턴하는 Radius. Area. Calculate 메소드 호출 txt. Result. Text = My. Circle. Radius. Area. Calculate(Single. Parse(txt. Radius. Text)) Case "Double" 'Double 형식을 리턴하는 Radius. Area. Calculate 메소드 호출 txt. Result. Text = My. Circle. Radius. Area. Calculate(Double. Parse(txt. Radius. Text)) End Select End Sub End Class 2020 -11 -06 30
객체 지향 프로그래밍 7. [종료] 버튼을 더블 클릭하여 btn. Close_Click 이벤트 서브 프로시저를 작 성한다. Private Sub btn. Close_Click(By. Val sender As System. Object, By. Val e As System. Event. Args) Handles btn. Close. Click Application. Exit() End Sub 2020 -11 -06 31
객체 지향 프로그래밍 5. 2 객체 지향 프로그래밍 Public Class The. Drived. Class Inherits The. Base. Class Public Overrides Sub Override. Method( ) '메소드 오버라이딩 Message. Box. Show("파생 Override. Method") End Sub End Class Module 1 Sub Main( ) Dim DClass As The. Drived. Class '새로운 DClass 객체를 생성 DClass = New The. Drived. Class() DClass. OTher. Method( ) '메소드 호출 End Sub End Module v My. Class 키워드와 Me 키워드의 차이점 키워드 내 용 My. Class 자식의 클래스에서 정의된 메소드를 호출한다. 부모 클래스에서 정의 하고, 자식 클래스에서 재정의된 클래스는 적용되지 않는다. Me 자식 클래스에서 재정의(Override)된 메소드를 호출한다. 2020 -11 -06 35
객체 지향 프로그래밍 3. Add. Calc 인터페이스로 Add() 메소드를 선언하고, Minus. Calc 인터페이스로 Minus() 메소드를 선언한다. Calculate 클래스 안에 Implements로 다중 상속을 하 고 있으며, 2개의 메소드 함수인 Add(), Minus()를 추가한다. Interface Add. Calc 'Add. Calc 인터페이스로 Add 메소드 선언 Function Add(By. Val x As Integer, By. Val y As Integer) As Integer End Interface Minus. Calc 'Minus. Calc 인터페이스로 Minus 메소드 선언 Function Minus(By. Val x As Integer, By. Val y As Integer) As Integer End Interface Public Class Calculate Implements Add. Calc, Minus. Calc '인터페이스 다중 상속 'Add 메소드 구현 Public Function Add(By. Val x As Integer, By. Val y As Integer) As Integer _ Implements Add. Calc. Add Return x + y End Function ‘Minus 메소드 구현 Public Function Minus(By. Val x As Integer, By. Val y As Integer) As Integer _ Implements Minus. Calc. Minus Return x - y End Function End Class 2020 -11 -06 38
객체 지향 프로그래밍 5. 폼과 각 컨트롤에 대한 속성값을 설정한다. 객체의 종류 객체 명 폼 Form 1 명령 버튼 Button 2 텍스트 박스 Text. Box 1 콤보 박스 Combo. Box 1 텍스트 박스 Text. Box 2 텍스트 박스 Text. Box 3 레이블 Label 1 2020 -11 -06 속성 및 설정 값 Text : 인터페이스 상속 (Name) : btn. Run Text : 실행 (Name) : btn. Close Text : 종료 (Name) : txt. Num 1 Text : (Name) : cb. Type Drop. Down. Style : Drop. Down. List Items : + (Name) : txt. Num 2 Text : (Name) : txt. Result Text : Enable : False Text : = 40
객체 지향 프로그래밍 6. [실행] 버튼을 더블 클릭하여 btn. Run_Click 이벤트 서브 프로시저를 작 성한다. Public Class Form 1 Private Sub btn. Run_Click(By. Val sender As System. Object, By. Val e As System. Event. Args) Handles btn. Run. Click Dim Calc As Calculate '객체 생성 Calc = New Calculate() Dim Acalc As Add. Calc '인터페이스 객체 생성 Acalc = Calc Dim Mcalc As Minus. Calc Mcalc = Calc Select Case cb. Type. Selected. Item ' "+", "-" 계산 선택 Case "+" ‘ "+" 계산 : Add 메소드 호출 txt. Result. Text = Acalc. Add(Integer. Parse(txt. Num 1. Text), Integer. Parse(txt. Num 2. Text)) Case "-" ‘ "-" 계산 : Add 메소드 호출 txt. Result. Text = Mcalc. Minus(Integer. Parse(txt. Num 1. Text), Integer. Parse(txt. Num 2. Text)) End Select End Sub End Class 2020 -11 -06 41
객체 지향 프로그래밍 7. [종료] 버튼을 더블 클릭하여 btn. Close_Click 이벤트 서브 프로시저를 작 성한다. Private Sub btn. Close_Click(By. Val sender As System. Object, By. Val e As System. Event. Args) Handles btn. Close. Click Application. Exit() End Sub 2020 -11 -06 42
객체 지향 프로그래밍 2. Form 1. vb에 다음의 코드를 추가한다. Public Class Form 1 '출력 선택에 사용하는 변수 Public bo As Boolean '대리자 선언을 num. Add, num. Subtract 함수의 유형과 같은 형식으로 정의. Delegate Function Math. Oper(By. Val x As Double, By. Val y As Double) As Double Function num. Add(By. Val x As Double, By. Val y As Double) As Double Return x + y End Function num. Subtract(By. Val x As Double, By. Val y As Double) As Double Return x - y End Function Sub Delegate. Function(By. Val x As Double, By. Val y As Double, By. Val op As Math. Oper) '대리자 객체 선언(op As Math. Oper) Dim cal. Num As Double '대리자를 통해 num. Add, num. Subtract 메서드 호출 cal. Num = op. Invoke(x, y) If bo Then txt. Result. Text += "대리자 연산 Subtract : " + CStr(cal. Num) + vb. Cr. Lf Else txt. Result. Text += "대리자 연산 Add : " + CStr(cal. Num) + vb. Cr. Lf End If bo = True End Sub End Class 2020 -11 -06 46
객체 지향 프로그래밍 5. [대리자 연산] 버튼을 더블 클릭하여 btn. Calc_Click 이벤트 서브 프로시 저를 작성한다. Private Sub btn. Calc_Click(By. Val sender As System. Object, By. Val e As System. Event. Args) Handles btn. Calc. Click 'Double 타입의 인수와 Address. Of 연산자를 이용하여 num. Add 함수를 가르키는 '함수 대리자를 인수로 가지는 대리자를 호출 Delegate. Function(txt. Num 1. Text, txt. Num 2. Text, Address. Of num. Add) 'Double 타입의 인수와 Address. Of 연산자를 이용하여 num. Subtract 함수를 가르키는 '함수 대리자를 인수로 가지는 대리자를 호출 Delegate. Function(txt. Num 1. Text, txt. Num 2. Text, Address. Of num. Subtract) End Sub 2020 -11 -06 49
객체 지향 프로그래밍 5. 2 객체 지향 프로그래밍 v 다음의 예는 콘솔에 값을 쓰는 람다 식이다. Ø 한 줄과 여러 줄로 구성된 Sub 람다 식 구문 Dim writeline 1 = Sub(x) Console. Write. Line(x) Dim writeline 2 = Sub(x) Console. Write. Line(x) End Sub writeline 1("Hello") //“Hello" 출력 writeline 2("World") //“World" 출력 2020 -11 -06 58
- Slides: 58