본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 21] 패키지

프로그래밍에서의 근본적인 원칙
Dry(Don't Repeat Yourself)를 지키기 위한 패키지

 

프로그램을 짜다보면 자주 이용하는 코드가 생기는데 우리는 동일한 코드를 동일하게 작성하는 것이 아닌 클래스, 함수로 만들어 반복적으로 사용할 수 있도록 코드를 작성한다. 이렇게 하나로 만들어두면 반복적으로 작성함으로서 발생하는 코드를 줄이고 이로 이해 발생할 수 있는 오타로부터의 오류를 해결할 수 있는데, 코들린에서 패키지로 이를 만들어서 관리할 수 있다.

 


 

[ import ]

 

패키지를 배우기 이전 우리는 import 키워드를 사용하여 다른 파일에서 정의되는 코드를 재사용 할 수 있었는데,

코틀린에서 import를 사용하는 방식은 아래와 같다.

 

import packagename.ClassName
import packagename.functionName
import packagename.propertyName

 

- 클래스, 함수, 프로퍼티 이름을 지정하여 import를 사용

 


 

 

[ 패키지 ]

 

패키지(package)

- 연관 있는 코드를 모아둔 것

- 동일한 파일명(클래스명)을 사용하고자 하면 패키지를 이용

즉, 다른 파일에 정의된 이름과의 충돌을 방지하기 위해main()이 아닌 함수, 클래스 등을 정의하는 모든 파일에 package 문을 사용

 

import kotlin.math.PI as circleRatio // PI 대신 circleRatio 이름 사용
import kotlin.math.cos as cosine // cos 대신 cosine 이름 사용

fun main(){
	print(circleRatio) // 출력 결과 : 3.141592...
    print(cosine(circleRatio) // 출력 결과 : -1.0
    print(cosine(2*circleRatio) // 출력 결과 : 1.0
}

 

- as 키워드를 사용해 임폴트를 하며 이름 변경 가능

- 서드파티 라이브러리에 있는 같은 이름의 클래스나 함수를 임포트해 사용하고 싶은 경우 as 키워드를 이용해 이름 변경 후 사용 가능

 

 

import kotlin.math.*

fun main(){
	print(e.roundToInt()) // 출력 결과 : 3
    print(e.toInt()) // 출력 결과 : 2
}

 

- 패키지 내의 모든 내용을 임폴트 할 경우 * 사용

- toInt() : Double의 소수점 이하를 그냥 버림

- roundToInt() : Double을 가장 가까운 Int로 반올림

 


 

[ 패지키 만들기 ]

 

1) package 키워드를 사용해 패키지 만들기

2) package문은 파일에서 주석이 아닌 코드의 가장 앞부분에 위치

3) package 뒤에는 만들 패키지 이름(관례적으로 소문자만 사용)이 옴

 

package tythagorean
import kotlin.math.sqrt

class  RightTriangle(val a:Double, val b:Double){
    fun hypotenuse() = sqrt(a*a + b*b)
    fun area() = a*b/2
}

 

import pythagorean.RightTriangle

fun main(){
    val rt = RightTriangle(3.0, 4.0)
    println(rt.hypotenuse())
    println(rt.area())
}

 

- 위에서 만든 pythagorean 패키지의 RightTriangle 클래스를 import 하여 사용 가능

 

 


 

[ 오늘의 학습 소감 ]

 

패키지가 나오면서 이제 본격적으로 코틀린의 폴더 구조, 파일 명 등 구체적으로 이해해야 하는 시간이 온 것 같다. 오늘은 지금까지 블로깅 시에만 코드를 짜봤다면 실제로 IDE에서 패키지를 만들고 파일을 생성하여 코드를 작성 후 실행해 보았는데 아직은 구조가 이해가 가지 않는 부분(어색한걸까?)이 존재하기에 앞으로는 IDE를 통해 코틀린 실행해보는 시간을 가져야겠다는 생각이 들었다. 계속 하다보면 익숙해지고 나도 잘 작성할 수 있는 날이 올 것이라는 믿음으로...!