프로그래밍에서의 근본적인 원칙
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를 통해 코틀린 실행해보는 시간을 가져야겠다는 생각이 들었다. 계속 하다보면 익숙해지고 나도 잘 작성할 수 있는 날이 올 것이라는 믿음으로...!
'공부 자료 > 코틀린[Kotlin]' 카테고리의 다른 글
[Atomic 23] 예외 (feat. 예외의 기초) (0) | 2024.01.23 |
---|---|
[Atomic 22] 테스트 (0) | 2024.01.22 |
[Atomic 20] 가시성 제한하기 (feat. 접근 변경자) (0) | 2024.01.19 |
[Atomic 19] 생성자 (0) | 2024.01.18 |
[Atomic 18] 프로퍼티 (val & var) (0) | 2024.01.17 |