References: Do it! 코틀린 프로그래밍

코틀린에서의 모듈, 패키지, 클래스 개념에 대해 알아봅니다.

 

 

1. 프로젝트.

 

최상단 개념입니다. 프로젝트는 모듈, 패키지, 클래스를 포함합니다.

한 프로젝트는 여러 모듈을 가질 수 있습니다.

처음 프로젝트 생성 후 좌측 리스트를 보면 기본적으로 프로젝트 단위로 구성을 볼 수 있습니다.

 

 

2. 모듈

 

프로젝트 바로 아래의 개념입니다. 모듈은 패키지와 클래스를 포함합니다.

한 모듈은 여러 패키지를 가질 수 있습니다.

프로젝트 우클릭 후 New > Module을 클릭해 모듈을 프로젝트 아래에 추가할 수 있습니다.

프로젝트 아래에 모듈이 추가된 것을 확인할 수 있습니다.

보기단위를 패키지로 바꾸면 좀 더 명확하게 구분지어 볼 수 있습니다.

 

 

3. 패키지

 

모듈의 아래 개념입니다.

기본(default)패키지와 사용자가 명명한 패키지가 있습니다.

이름이 별도로 지정되지 않은 파일의 경우 모두 기본 패키지에 속하게 됩니다.

모듈 아래 자동 생성된 src에 우클릭 후 New > Package를 클릭하면 패키지를 만들 수 있습니다.

 

패키지의 이름은 보통 사이트 이름을 뒤집어서 많이 씁니다. 

예를 들어 sub.domain.com인 경우 패키지 이름은 com.domain.sub이런식으로 짓습니다.

그리고 필요에따라 기능별로 뒤에 단어를 추가합니다.

예를 들어 com.domain.sub.do.somthing이런식으로 구분하면 관리가 좀 더 용이해집니다.

 

예시로 다음과 같이 패키지를 생성했습니다.

com.exampple.ktmodule패키지를 생성 후 실제 폴더가 어떻게 생성되었는지 확인해 봅시다.

[.]단위로 구분되어어 src 아래에 com\example\ktmodule폴더 순서로 생성된 것을 확인할 수 있습니다.

 

 

3-1. 기본패키지

 

기본패키지란 코틀린 프로그래밍에서 자주 사용되는 클래스와 함수등을 미리 만들어 둔 것으로 import를 별도로 사용하지 않아도 바로 사용할 수 있는것들 입니다.

 

기본패키지는 kotlin-stdlib-sources.jar에 위치합니다.

IntelliJ에서 String을 정의 한 후 String에 ctrl + B를 누르면 확인할 수 있습니다.

기본패키지는 다음과 같습니다.

kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.io.*
kotlin.ramges.*
kotlin.sequences.*
kotlin.text.*

 

4. 클래스

 

패키지 아래에 위치한 개념이며 실제 코틀린 파일에 정의됩니다.

위에 만든 패키지를 우클릭 해 새 코틀린 파일을 생성합니다.

 

생성한 코틀린 파일엔 다음과 같은 코드가 자동으로 입력된 것을 확인할 수 있습니다.

package com.example.ktmodule

 

이전에 만든 "HelloKotlin.kt" 파일을보면 차이가 있습니다.

fun main() {
    println("Hello kotlin!")
}

package의 유무를 확인할 수 있습니다.

package가 명시적으로 입력되지 않은 모든 파일(클래스)는 기본(default) 패키지에 속하게 됩니다.

실제 코틀린 파일의 위치를 보면 "HelloKotlin.kt"는 패키지 아래에 위치하지 않음을 확인할 수 있습니다.

 

같은 패키지 내에서 모든 클래스의 이름은 유일해야 합니다.

다르게 말하면 패키지가 다르면 같은 이름의 클래스 이름을 사용할 수 있습니다.

 

테스트를 해보겠습니다.

KotlinModule에 기본패키지에 코틀린 파일을 하나 추가합니다.

그 후 두 코틀린 파일에 다음과 같이 클래스를 정의해 봅시다.

class person(val name: String, val age: Int)

 

별 문제 없이 정의가 됩니다. 이제 package com.example.ktmodule를 주석처리 해 봅시다.

오류가 발생한 것을 확인할 수 있습니다.

 

"KotlinModuleClass.kt"파일의 Person 클래스를 KotlinModuleClass로 변경해 봅시다.

package com.example.ktmodule
class KotlinModuleClass(val name: String, val age: Int)

파일명과 클래스명이 같으면 해당 파일의 확장자가 숨김처리 됩니다.

Person 클래스를 갖고있는 DefaultKotlinClass는 .kt 확장자가 그대로 남아있음을 확인할 수 있습니다.

반응형

+ Recent posts