[ java ] in KIDS 글 쓴 이(By): hell (나누구야) 날 짜 (Date): 1997년10월09일(목) 21시36분28초 ROK 제 목(Title): 자바 프로그램의 전체 구조 (4) ------------------------------------------------------------------------------ 뉴스제공시각 : 01/01 00:00 출처 : 마이크로 제목 : [자바프로그래밍] 자바 프로그램의 전체 구조 (4) ----------------------------------------------------------------------------- 변수(variables) 변수는 데이터값을 가지고 있는 기억장소이다. <예제 2>에서는 몇 가지의 변수가 보 이는데, 먼저 PointExample 클래스의 main 메쏘드 내의 origin, aPointOnX, aPointOnY는 지역 변수(local variable)라고 불리는 종류의 변수들이다. 이들은 자신이 선언된 '{', '}'로 둘러싸인 블럭(block) 내에서만 의미가 있다. 즉, 위의 경우에서는 main 메쏘드 내에서만 의미가 있는 것이다. 또 Point 클래스의 moveTo 메쏘드의 인 수인 _x, _y도 일종의 변수이다. 이들은 프로그램에서 보듯이 값이 실제 메쏘드를 호 출할 때 지정된 값으로 대체된다는 점만 제외하고는 지역 변수와 동일하다. 다음으로 <예제 2>에서 Point 클래스에는 x와 y라는 필드가 있다. 이 둘은 정수값을 가지며 이 역시 변수로 취급된다. 하지만 객체가 존재하는 한 항상 값을 보 존하며 존재한다는 점에서 지역 변수와는 틀리다. 필드는 위의 예에서 'new'에 의해 객체가 생성될 때마다 각 객체마다 하나씩 기억장소가 할당된다. main 메쏘드 앞서 소개한 두 개의 예제에서 java 명령어에 그 이름을 명시하는 클래스 안에는 main이라는 이름의 메쏘드가 정의되어 있다. 앞선 예들은 자바로 작성된 프로그램중 에서 특별히 애플리케이션(application)이라고 불리는 종류의 것이다. 이와는 다르게 웹에서 화려한 그래픽을 보여 주는 애플릿(applet)은 넷스케이프나 인터넷 익스플로러 와 같은 웹브라우저에서 실행되는 것으로 애플리케이션과는 작성 방법이 다르다. 애 석하기는 하지만 당분간은 이 애플리케이션을 중심으로 모든 개념에 대한 설명을 진 행해 나가도록 하겠다. 이들 애플리케이션은 java 명령어에 명시해 주는 클래스의 main 메쏘드부 터 실행된다. C나 C++에 익숙한 독자라면 자바가 많은 부분에서 C나 C++를 닮아 있 다는 것에 공감할 것이다. main 메쏘드로부터 프로그램이 시작되려면 반드시 위와 같 은 형태로 메쏘드를 작성해 주어야 한다. jview의 경우는 아니지만 java 명령의 경우 는 반드시 public과 static이라는 변경자(modifier)까지 써 주어야 한다. 앞으로 자세히 설명할 기회를 갖겠지만 main 메쏘드의 인자는 명령행에서 넘어오는 인자를 가지고 있다. 단, C나 C++의 경우와 달리 argv[0]은 명령 자체가 아 닌 첫인자라는 점이다. <예제 3>을 직접 실행해 보기 바란다. <예제 3> DumpCommandLine.java class DumpCommandLine { public static void main(String argv[]) { for (int i = 0; i < argv.length; i++) System.out.println(i + ": " + argv[i]); } } 다음은 <예제 3>을 실행한 결과이다. C:\temp>jview DumpCommandLine Hi Wow Java 0: Hi 1: Wow 2: Java 메쏘드의 호출과 필드의 사용 지금껏 살펴 본 것과 같이 모든 메쏘드나 필드는 클래스 안에 정의되어야 한다. 따라 서 이들이 사용될 때도 반드시 어떤 객체나 클래스와 연관되어 사용될 수밖에 없다. 객체에 연관되어 사용되는 예는 <예제 2>에 이미 보았다. origin에 moveTo를 하는 것과 aPointOnX에 moveTo를 하는 것은 분명히 다르다는 것을 알 수 있다. 앞서 본 것과 같이 객체를 지칭하는 변수에 '.'을 사용하고, 다음에 메쏘드 이름을 명시하면 그 메쏘드를 호출하는 것이다. 그리고 만약 필드 이름을 명시하면 그 필드에 값을 대입 하거나 값을 읽어올 수 있다. 이를테면 위에서 origin의 x값에 직접 -1을 넣고 싶다면 PointExample 클래스의 main 메쏘드에서 다음과 같이 할 수 있다. origin.x = -1; |