총 게시물 25건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[1.기본 지식편]

2장 소스 코드 구성

글쓴이 : 카이로 날짜 : 2014-01-12 (일) 21:40 조회 : 8999
글주소 : http://www.androidside.com/430/18
 
  모든 PG 결제연동
결제모듈 임포트, 간편결제, 비트코인, 인앱결제, 결제연동, 결제데이터 분석
www.bootpay.co.kr
  무료온라인게임추천 촉산협객전
풀3D,보스대전,육성,PVP,화끈한이벤트,촉산의 전설이 시작된다!
pcs3.panggame.com
  감동드라마 원작 신조자룡!
드라마 무신조자룡 원작! 다양한 무장, 미인을 획득하여 삼국실화를 즐겨라!
jo.noblegames.kr/
신청하기


2장  소스 코드 구성
2.1  소개
자바의 소스 코드는 패키지(package), 임포트(import), 클래스(class)로 구성된다. 먼저 패키지는 공통된 기능을 가진 클래스들을 묶어서 쉽게 관리하기 위한 것으로 윈도우에서 사용되는 폴더와 비슷한 개념으로 볼 수 있다. 그리고 임포트는 이미 작성되어 있는 클래스를 현재 작성하는 클래스에서 불러들여 사용하기 위한 명령문이다. 마지막으로 클래스는 실제 로직을 작성하기 위한 자바 소스 코드의 몸체로서 소스 코드에서 가장 중요한 부분이다. 

그림 2-1-0 소스 코드 구성 
2-1-0.png
자바 소스 코드는 이 그림처럼 일정한 형식이 있기 때문에 형식을 지키지 않고 작성하면 컴파일시 에러가 발생한다. 그러므로 소스 코드를 작성할 때는 가장 먼저 패키지를 선언하고 그 다음에 임포트를 선언해야 한다. 그리고 이어서 클래스를 정의하면 자바 소스 코드가 완성된다. 이러한 작성 순서는 자바 코드 작성시 반드시 지켜야 하지만 패키지와 임포트는 필요하지 않은 경우에는 생략할 수 있다.

다음 소스 코드는 소스 코드 구성을 지켜 작성한 소스 코드를 보여준다.

코드) 소스 코드 구성
package com.dev.java;

import
java.util.*; 

public classMyTest {
    publicMyTest() {
    }

    
public static voidmain(String[] args) {
    }
}


2.2  패키지(package)
프로그램을 작성하기 위해서는 많은 클래스가 필요하다. 작은 프로그램인 경우에는 몇 개의 클래스로 완성될 수 있지만 대부분의 프로그램들은 많은 클래스들을 필요로 한다. 이러한 많은 클래스들이 하나의 폴더에 저장되어 있을 경우 원하는 클래스를 찾기 위해서 많은 시간을 소비해야 하는 일이 발생할 수 있다. 그렇기 때문에 이러한 문제를 없애고 좀 더 효율적으로 클래스들을 관리하기 위해서는 종류별로 클래스를 구분하는 것이 좋다. 자바에서 이러한 기능을 제공하기 위한 것이 패키지라는 개념이다. 이 개념은 윈도우 환경에서 수많은 파일들을 관리하기 위해 사용하는 폴더와 같은 개념이라고 볼 수 있다.


그림 2-2-1 자바 표준 패키지
 
2-2-1.png

위 그림은 자바 표준 패키지의 구조를 보여준다. java 폴더 아래 io, lang, math 등의 폴더가 있고 각각의 폴더 아래 실제 클래스들이 위치하고 있다. 이러한 구조로 패키지를 작성하기 위해서는 해당 소스 파일에 패키지를 선언해야 한다. 패키지 선언은 위 그림처럼 폴더 순으로 선언하면 된다. 

그림 2-2-2 자바 패키지
2-2-2.png


여러분은 패키지 구조를 직접 확인할 수도 있다. 자바가 설치된 폴더에 보면 자바 API 소스를 모아 놓은 src.zip 파일이 있다. 이 파일을 열면 위와 같이 되어 있는 것을 볼 수 있다.

그리고 이 파일의 java.io 패키지에 있는 Bits.java 파일을 열어보면 다음과 같이 패키지가 선언되어 있는 것을 확인할 수 있다. 또한 이 파일 아래로 보이는 많은 자바 파일들이 모두 java.io 패키지에 속해 있다는 것도 알 수 있다. 

코드) java.io 패키지의 Bits.java 소스 코드

/* @(#)Bits.java    1.4 03/12/19
 *
 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */ 

package java.io; 

class Bits {
}
//  이하 생략


작성한 패키지는 내부에서 사용하거나 외부에 배포할 수 있다. 이때 배포된 패키지명이 이미 다른 조직에서 배포한 패키지명과 동일하다면 이 두 개의 패키지를 동시에 사용할 수 있을까? 자바 프로그램에서는 같은 패키지명을 가진 두 개의 패키지를 구분할 수 없기 때문에 한 개의 패키지는 사용할 수 없다. 그래서 자바에서는 패키지명이 중복되는 일이 발생하지 않도록 도메인 이름을 역순으로 하여 패키지명을 작성하는 것을 권장하고 있다. 예를 들어 자신의 회사의 도메인 이름이 www.kbc.com 이고 작성된 클래스들이 io 를 위한 것이라면 패키지명을 com.kbc.io 로 한다. 물론 이러한 패키지명 작성 규칙을 지키지 않고 패키지를 작성할 수도 있지만 되도록 작성 규칙을 지키는 것이 차후 발생할 수 있는 문제를 미연에 방지하는 길이라는 것을 명심해야 한다.

코드) 패키지(package)
package com.kbc.io;


2.3  임포트(import)
프로그램을 작성하는 경우 자신이 모든 클래스를 만들어 사용하는 것은 매우 불필요한 일이며 현명하지 않은 선택이다. 예를 들어 자바 프로그램을 작성하면서 화면에 출력하기 위해 자주 사용하는 System.out.println() 메소드를 직접 만들어 사용한다고 했을 때 원하는 프로그램을 작성하기 위해서는 너무 많은 시간이 걸리게 된다는 것을 누구나 알 것이다. 그렇기 때문에 우리는 프로그램을 빠르게 작성하기 위해서는 JDK 에서 지원하는 표준 패키지를 사용해야 한다. 어떻게 사용할 수 있을까? 바로 이때 사용하는 것이 임포트이다. 임포트를 사용하면 이미 작성되어 있는 클래스를 이용하여 프로그램을 쉽고 빠르게 작성할 수 있다.

임포트를 사용하는 방법은 패키지를 선언하는 방법과 동일하며 패키지 전체의 클래스를 사용할 필요가 없을 경우에는 특정 클래스만을 지정할 수도 있다. 예를 들어 프로그램에서 파일 작업을 위해 자바 표준 패키지의 FileReader 클래스가 필요하다면 import java.io.FileReader; 라고 선언하고 FileReader 클래스 뿐만 아니라 io 관련 클래스를 모두 사용하고 싶다면 import java.io.*; 라고 선언하면 된다. 

코드) 임포트(import)
import java.io.*;


2.4  클래스(class)
클래스는 객체를 표현하기 위한 설계도로서 자바 프로그램의 가장 핵심적인 부분이다. 우리는 이 클래스에 변수, 생성자, 메소드를 작성하여 프로그램을 원하는 방향으로 동작하도록 할 수 있다. 클래스에 대한 자세한 설명은 차후에 다시 살펴보도록 하고 여기서는 자바 프로그램의 핵심이 클래스라는 것만 알아두도록 하자.

코드) 클래스(class)
public classMyTest {
    publicMyTest() {
    }

    
public static voidmain(String[] args) {
    }
}


2.5  주석(Comments)
주석은 프로그램의 흐름에는 영향을 주지 않으면서 소스 코드의 분석을 용이하게 해주는 문장으로서 자바에서 사용할 수 있는 주석에는 라인(Line) 주석, 블록(Block) 주석, 문서화(Document) 주석이 있다. 이들 주석은 프로그램의 흐름에는 영향을 주지 않는 문장들이기 때문에 필요하지 않다면 반드시 작성할 필요는 없다. 


2.5.1  라인 주석(Line Comment)
라인 주석은 단일 문장을 주석 처리하기 위해 사용하며 보통 변수나 프로그램 로직의 간단한 설명을 위해 사용한다. 라인 주석을 선언하기 위해서는 주석 처리를 위한 문장 앞에 // 를 추가하면 된다. 이렇게 라인 주석을 선언하면 해당 라인의 끝까지 모두 주석처리 되어 프로그램의 흐름에 영향을 줄 수 없게 된다. 다음은 라인 주석의 사용 예를 보여준다.

코드) 라인 주석(Line Comment)
int no = 0; // 임시 변수
//String name = null;


2.5.2  블록 주석(Block Comment)
블록 주석은 여러 라인의 문장을 주석 처리하기 위해 사용하는 주석문이다. 보통 라인 주석으로 처리하기에는 많은 라인을 한번에 주석 처리하기 위해 사용한다. 블록 주석을 선언하기 위해서는 주석 처리하고자 하는 문장들을 로 감싸기만 하면 된다. 블록 주석은 다음과 같이 선언한다.

코드) 블록 주석(Block Comment)
/*
    이 메소드는 테스트를 위해 잠깐 주석 처리함.
    public String getName() {
        return name;
    }
*/


2.5.3  문서화 주석(Documentation Comment)
문서화 주석은 변수, 메소드, 클래스 등에 선언되어 클래스의 역할과 메소드의 기능을 설명하기 위해 사용한다. 문서화 주석은 차후에 도큐먼트 도구(javadoc)를 이용하여 자동으로 자바 API 와 같은 HTML 페이지로 생성할 수 있기 때문에 클래스의 구조를 살펴보는데 매우 유용하게 사용될 수 있다. 문서화 주석은 주석 처리하고자 하는 문장을 로 감싸면 된다. 문서화 주석은 다음과 같이 선언한다.

코드) 클래스 문서화 주석(Class Documentation Comment)

public class UserInfo {
    //...
}


코드) 변수 문서화 주석(Field Documentation Comment)
/ **
 * 사용자 이름
 */   
String name;


코드) 메소드 문서화 주석(Method Documentation Comment) 
/ **
 * 이름과 주민번호를 연결해서 반환한다.
 *
 * @param name 이름
 * @param jumin_id 주민번호
 * @return 이름과 주민번호가 연결된 문자열
 * @see java.lang.String
 */
public String getStr(String name, String jumin_id) {
    returnname + jumin_id;
}

문서화 주석에는 헤더 테그를 제외한 모든 HTML 태그를 사용할 수 있다. 또한 문서화 주석에서 사용할 수 있는 특별한 태그를 제공하고 있는데 이 태그는 @로 시작한다. 이 문서화 주석 태그에는 많은 종류가 있지만 여기서는 가장 자주 사용하는 태그에 대해서만 살펴보도록 하겠다.

2-4-3-1 문서화 주석 태그

키워드

설명

@author

코드 작성자를 설명한다.

사용법) @author name

사용예) @author 개발자

@deprecated

클래스, 메소드, 변수 등 더 이상 사용되지 않는다는 것을 알리기 위해 사용한다.

사용법) @deprecated deprecated-text

사용예) @deprecated 이 메소드는 더 이상 사용되지 않습니다.

@exception

코드가 발생할 수 있는 예외를 설명하기 위해 사용한다.

사용법) @exception class-name description

사용예) @exception IOException 입출력시 예외가 발생하면

{@link}

특정 패키지의 문서로 링크를 걸기 위해 사용한다.

사용법) {@link package.class#member label}

사용예) {@link #getStr(int, int) getStr}

@param

메소드의 매개 변수를 설명하기 위해 사용한다.

사용법) @param parameter-name description

사용예) @param name 이름

@return

메소드로부터 반환되는 값을 설명하기 위해 사용한다.

사용법) @return description

사용예) @return 이름과 주민번호가 연결된 문자열

@see

클래스, 메소드, 변수 등 관련된 정보를 알리기 위해 사용한다.

사용법) @see package.class#member label

사용예) @see String#equals(Object) equals

@throws

@exception 과 동일하다.

사용법) @throws class-name  description

사용예) @throws IOException 입출력시 예외가 발생하면

@version

코드의 버전을 알리기 위해 사용한다.

사용법) @version version-text

사용예) @version 1.0

 

이 글은 무단전제나 무단배포가 금지된 글입니다. 공유하고자 한다면 제목과 링크만 공유하기 바랍니다.


로그인 창이 있는 "정보 수정"에서
서명 이쁘게 등록해보세요 ^^

masami 2015-05-09 (토) 18:19
멋진 설명 감사합니다.
댓글주소
공부좀 2015-06-26 (금) 21:24
대단히 감사 합니다
댓글주소
공부좀 2015-06-28 (일) 00:29
역시 최고의 명강의 였습니다
댓글주소
대학생예비창… 2015-07-01 (수) 10:31
고마워요
댓글주소
조금씩 2015-07-23 (목) 13:18

감사

댓글주소
솔플러 2016-09-30 (금) 13:49
도움이됩니다
댓글주소
알지롤 2016-10-01 (토) 14:50
감사합니다
댓글주소
indist 2016-10-03 (월) 02:58
알것습니다
댓글주소
처음  1  2
이전글  다음글  목록 글쓰기

총 게시물 25건, 최근 0 건 안내 RSS
번호 분류 제목 추천 조회
25 0.소개  0.1 머리말 37 28 8792
24 0.소개  0.2 목차 16 9 6111
23 1.기본 지식편  0장 기본 지식편 27 29 9219
22 1.기본 지식편  1장 객체지향 프로그래밍 33 24 12749
21 2.코드 지식편  1장 0. 변수, 데이터형 20 15 6642
20 2.코드 지식편  1장 1. 가장 빠른 변수는 지역 변수이다. 19 14 6850
19 2.코드 지식편  1장 2. 멤버 변수를 중복 초기화하지 않는다. 17 11 6789
18 2.코드 지식편  1장 3. 멤버 변수의 디폴트 값에 대해 알아야 한다. 17 7 7077
17 2.코드 지식편  1장 4. 블록 내에서 사용할 변수는 지역 변수로 선언해야 한다. 16 12 6013
16 2.코드 지식편  1장 5. 자동 변수를 사용할 때는 항상 초기값을 설정해야 한다. 19 10 6638
15 2.코드 지식편  1장 6. 상수는 되도록 기본 데이터형을 사용해야 한다. 16 10 6332
14 2.코드 지식편  1장 7. 상수는 사용시 주의해야 한다. 20 11 6043
13 2.코드 지식편  1장 8. 변수는 되도록 사용 시점에 선언해야 한다. 15 7 4971
12 2.코드 지식편  1장 9. 객체보다는 기본 데이터형을 사용해야 한다. 13 7 5148
11 1.기본 지식편  1장 객체지향 프로그래밍 체크 포인트 17 9 5592
10 1.기본 지식편  2장 소스 코드 구성 28 15 9000
9 1.기본 지식편  2장 소스 코드 구성 체크 포인트 8 8 5014
8 1.기본 지식편  3장 클래스 구성 22 10 8763
7 1.기본 지식편  3장 클래스 구성 체크 포인트 6 4 4755
6 1.기본 지식편  4장 제한자 11 6 6451
5 1.기본 지식편  4장 제한자 체크 포인트 4 3 4482
4 1.기본 지식편  5장 연산자 11 7 8861
3 1.기본 지식편  5장 연산자 체크 포인트 4 5 5143
2 0.소개  스피드 자바의 오프라인 서적의 평. 11 8 5885
 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기