본문 바로가기
프로그래밍/자바

자바 문법 - 프로그램 기본구조

by pentode 2018. 4. 8.

자바 문법에 대해 알아 보는 첫번째 글로 자바 프로그램의 기본적인 구조에 대해 알아보겠습니다. 자바는 객체 지향 언어(Object Oriented Programming Language) 입니다. 하지만 Smalltalk과 같은 언어처럼 모든 것이 객체이지는 않습니다. 자바에는 기본 타입(primitive type) 이라는 객체가 아닌 타입이 존재합니다. 일단 지금은 객체지향 언어이지만 객체가 아닌 부분도 있다는것만 알아 두면 되겠습니다.

 

객체 지향 언어에서는 프로그램의 기능을 객체 단위로 만들고, 이 객체들이 상호 작용하여 기능을 수행하도록 되어 있습니다. 현실 세계에서 사람, 책상 등 객체가 상호작용하여 일을 하는 것을 본따서 만들어 졌다고 합니다.

 

프로그램의 객체는 크게 두 가지 부분으로 나뉘는데, 첫 번째가 데이터가 되는 멤버 변수가 있습니다. 이것은 객체를 상태를 나타내는 값을 가지게 됩니다. 두 번째가 객체의 행동을 나타내는 메소드가 있습니다. 객체의 특정 메소드를 호출 하여 다른 객체와 상호 작용을 하거나 자신의 상태를 즉, 멤버 변수가 가지는 값을 바꾸는 작업을 합니다.

 

여기에서는 자바 코드를 작성하고, 실행하는데 이클립스(Eclipse) IDE 를 사용하겠습니다. 이클립스의 설치는 "Eclipse 설치하기"  를 참조해 주세요.

 

 

1. 프로젝트 생성

 

- 메뉴에서 File -> New -> Project.. 를 선택하고, New Project 창에서 Java Project를 선택한다음 Next 버튼을 누릅니다.

 

이클립스 Java Project 생성

 

- New Java Project 창에서 Project nameHelloJava  입력하고, Finish 버튼을 누릅니다. 나머지는 기본값 입니다.

 

프로젝트 설정

 

 

 

2. java 파일을 추가합니다.

 

- 생성된 프로젝트의 src 폴더에 마우스 오른쪽키를 누르고, New -> Class 를 선택합니다.

 

 

Java 파일 추가

 

 

- 위와 같은 정보를 입력하고, Finish를 누릅니다.

  + Pakcage: com.tistory.pentode (자신의 값을 입력하면 됩니다.)

  + public static void main(String[] args) 에 체크를 합니다.

 

3. 소스를 작성하고 실행합니다.

 

- 다음 코드를 입력합니다.

 

package com.tistory.pentode;

import java.util.Date;

public class HelloJava {
	public static void main(String[] args) {
		Date date = new Date();
		System.out.println("Hello World! " + date.toString());
	}
}

 

- HelloJava.java에 마우스 오른쪽 키를 누르고, Run As -> Java Application을 선택하여 실행합니다.

 

예제 실행

 

 

4. 프로그램 분석

 

- package com.tistory.pentode; 부분을 보겠습니다.

 

자바에서 패키지(Package)는 자바 소스파일을 기능별로 분류하는 방법이라고 생각하면 됩니다. 주로 자신이 가진 도메인을 거꾸로 쓰는 방법을 사용합니다. 위와 같이 작성하면 src 폴더 아래에 com 폴더, 그아래에 tisotory 폴더, 그 아래에 pentode 폴더가 생성됩니다.

 

패키지는 분류기능 외에도 중요한 기능이 있습니다. 그것은 클래스명이 충돌하지 않도록 하는 것 입니다. 전 세계의 수 많은 프로그래머들이 자바파일을 만들것인데, 내가 만들 것과 이름이 겹칠 가능성이 많습니다. 남이 만든 라이브러리를 사용을 해야 하는데, 이름이 겹친다면 문제가 발생합니다. 그래서 패키지를 도메인 이름으로 하면 유일성이 보장이 될 수 있습니다.

 

- import java.util.Date; 부분이 입니다.

 

import는 다른 패키지에 있는 클래스를 불러와서 사용하겠다고 표시하는 기능 입니다. 이 문장은 java.util 패키지 내에 있는 Date 클래스를 사용하겠다고 하는 것입니다.

 

 

- 자바 프로그램에서 기본 틀이 되는 부분입니다.

 

public class HelloJava {

}

 

자바에서는 보통 하나의 파일에 하나의 class를 작성합니다. public 이 붙어 있는 클래스일 경우에 반드시 클래스 이름이 파일 이름이 되어야 합니다. class라는 말이 나오는데 이것이 객체를 정의하는 부분이 되겠습니다. 위 코드는 HelloJava 객체의 기능을 정의하고 있는 것입니다. 개념적으로 우리가 소스코드를 작성하는 작업은 컴퓨터 상에서 실행될 객체들의 기능을 정의하는 것이고, 이렇게 만들어진 프로그램이 메모리상에 로드되어 우리가 정의한대로 HelloJava 객체가 만들어 지게 됩니다. 이렇게 만들어진 객체를 인스턴스라고 부릅니다.

 

- 자바프로그램에서 프로그램 실행의 시작점이 되는 부분입니다.

 

이 부분은 항상 똑같은 모양을 가집니다. Java Virtual Machine(자바 가상 기계)은 프로그램이 로드된후 main() 메소드를 찾아서 이부분에서 프로그램을 시작합니다.

 

public static void main(String[] args) {

}

 

 

- 객체의 생성 및 사용

 

Date date = new Date();

 

new 라는 연산자를 사용하여 Date 객체를 만듭니다. 우리가 정의한 HelloJava 객체는

 

HelloJava hello = new HelloJava();

 

이렇게 만들 수 있겠습니다.

 

System.out.println("Hello World! " + date.toString());

 

System.out.println() 은 인자로 주어진 값을 화면에 출력하는 기능을 수행합니다. System 클래스는 java.lang 패키지 내에있는데 이 패키지는 우리가 import 를 하지 않아도 자동으로 import 되어 지기 때문에 바로 사용할 수 있습니다. out 은 System 이 가지고 있는 출력기능을 하는 객체 입니다. System 은 입력를 담당하는 in 객체도 가지고 있습니다. println()은 out 객체가 가진 출력을 기능을 하는 메소드 입니다.

 

객체의 특정 기능을 사용하기 위해서는 객체의 인스턴스에 마침표(.) 연산자를 사용해서 호출 합니다. date.toString() 은 날짜 객의 내용을 문자열로 출력 보여 달라는 뜻입니다.

 

지금까지 이클립스에서 자바 프로젝트를 생성하고 간단한 프로그램을 만들어 실행해 보았습니다.

반응형