Java 언어에서 많은 것을 빌려온 C# 언어는 Visual Basic과 함수명이나 라이브러리의 클래스명 그리고 이름공간(namespace)을 공유한다. Visual Basic 언어는 본디 객체지향 언어가 아니었던 이전의 (평범한) BASIC 언어에다 객체지향 개념을 입히느라 여러가지 문법을 덧입히고, 또 C/C++/Java 언어 처럼 타입을 엄격히 하기 위해 (변수 선언하는데 쓰는) Dim, Redim을 도입하였다. 그러므로 객체지향 언어의 개념을 배우는데 Visual Basic 언어는 그리 권할 만한 언어는 아니다. 단지 Visual Studio의 기능이 훌륭하여 Visual Studio을 써서 응용 프로그램을 개발하는 과정이 Visual Basic이 너무 쉽고 편하기 때문에 많은 사람들이 Visual Basic을 사용하고 있다.

닷넷(.NET) 응용 프로그램을 개밣하는데는 Visual Basic/Visual C++/Visual C# 등 기타의 방법이 있다. 닷넷은 자바 진영의 자바가상기계(JVM)에 해당하며, 현재 닷넷은 1.0, 1.1, 2.0, 3.0, 3.5 등 여러가지 버전이 있다. 특히 모바일(mobile) 용 닷넷으로는 .NET 3.5 Compact 등이 있다.

프로그래밍 코딩 시에 메소드 이름을 정할 때 Java 언어의 경우 영문 소문자로 시작하는 것이 관습이지만, Visual Basic/C# 언어의 경우에는 영문 대문자로 시작하는 것이 관습이다. (여기서 관습이라고 하는 것은 꼭 지켜야 하는 것은 아니지만 그렇게 습관을 들이면 다른 사람들이 코딩한 소스를 볼 때 이해가 빠르다는 의미이다.)

Java 언어에서 import 구문을 쓰면 다른 클래스를 불러와서 쓸 수 있듯이, C#에서는 using 구문을, Visual Basic 언어에서는 Inports 구문을 통하여 그와 비슷한 일을 한다. Java 언어에는 없지만 Visual Basic/C# 언어에서는 이름 공간(namespace) 개념이 있어서 이를 이용하면 클래스 관리와 타 클래스에 속한 메소드와 속성을 용이하게 불러 쓸 있다.

Java 언어에서

      System.out.println(스트링)
      System.out.print(스트링)

에 해당하는 Visual Basic/C# 언어의 코드는

      System.Console.WriteLine(스트링)
      System.Console.Write(스트링)

이다. 그런데 Visual Basic에서 Imports 구문을 이용한다면

Imports System
................
................
      Console.WriteLine(스트링)
      Console.Write(스트링)

처럼 System. 을 생략하여 쓸 수 있다.



Visual Basic에서  Shared이라는 선언자는 C#/Java 에서 static이라는 선어자와 유사하여, 이 선언자가 붙은 변수나 메소드는 객체 생성 없이 직접 접근/호출항 수 있다. Shared 선언자가 없으면 반드시 생성된 객체를 통해서 접근해야 한다.

Visual Basic의 메소드 정의 구문 양식은 C#/Java 언어의 것과 유사하게 

       [Public/Private 등] [Shared] (Sub|Function) 메소드명(변수명 As 타입) (As 타입)
             block
       End (Sub|Function)

이다.

또 Visual Basic의 for 반복문 양식은 C#/Java 언어의 것과 조금 다르게 

       For 변수명 As 타입 초기값 To 최종값 (Step 값)
             block
       Next

이다.



소스 파일명: ForTest.cs
------------------------------[소스 시작]
Imports System

Namespace MyTestApplication1
    Class ForTest

        ' Shared 메소드로 선언되었으므로 Main 메소드에서 이 메소드를
        ' 객체 생성 없이 직접 호출할 수 있다.
        Shared Sub PrintDan(dan As Integer)
            For i As Integer = 1 To 9
                Console.WriteLine(dan & " x " & i & " = " & (dan*i))
            Next
        End Sub

        ' Java 언어의 main 메소드에 해당하는 Visual Basic의 Main
        Shared Sub Main(ByVal args() As String)
            PrintDan(2)    ' Shared 메소드 PrintDan()을 호출한다.
        End Sub
    End Class
End Namespace

------------------------------[소스 끝]

컴파일> vbc -d ForTest.bas

(참고: 에러 없이 컴파일이 순조롭게 끝나면 현재 디렉토리에 ForTest.exe 라는 실행 파일이 현재 디렉토리에 생길 것이다.)

실행> ForTest
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18



소스 파일명: ForTestObject.bas
------------------------------[소스 시작]
Imports System

Namespace MyTestApplication1

    Class ForTestObject

        ' Shared 메소드가 아니므로 Main 메소드에서 이 메소드를
        ' 직접 ㅎ출하지 못하며, 생성된 객체를 통해서 호출할 수 있다.
        Sub PrintDan(dan As Integer)
            For i As Integer = 1 To 9
                Console.WriteLine(dan & " x " & i & " = " & (dan*i))
            Next
        End Sub

        ' Java 언어의 main 메소드에 해당하는 Visual Basic의 Main
        Shared Sub Main(ByVal args() As String)
         Dim app As ForTestObject = New ForTestObject()
            app.PrintDan(2)    ' (Shared 가 아닌) 인스턴스 메소드 PrintDan()을 호출한다.
        End Sub
    End Class
End Namespace

------------------------------[소스 끝]

컴파일> vbc ForTestObject.bas

(참고: 컴파일이 순조롭게 끝나면 현재 디렉토리에 ForTestObject.exe 라는 실행 파일이 생겨 있을 것이다.)

실행> ForTestObject

(참고: 실행 결과는 ForTest 를 실행한 결과와 같다.)



크리에이티브 커먼즈 라이선스
Creative Commons License

 

Posted by Scripter
,