오늘의 포스팅은 코틀린 프로젝트의 전체적인 구조에 대해 알아보겠습니다
실제 코딩을 할때는 '프로젝트 project' 라는 개념으로 코딩을 하게 되는데요
<프로젝트 Project>
: 코틀린으로 어플리케이션을 짤 때 관련한 모든 내용을 담는 '큰 틀'
프로젝트는 모듈, 패키지, 클래스를 포함합니다
<모듈 module>
하나의 프로젝트는 여러개의 모듈로 이루어질 수 있습니다
이 모듈은 직접 만들 수도 있고,
필요한 기능을 이미 구현해둔 '라이브러리 모듈'을 가져와 붙일 수도 있기 때문에
굉장히 편리한 기능 단위입니다
그리고 이 모듈 안에는 다수의 파일과 폴더가 들어있습니다
여기에는 코틀린 코드파일 (.kt) 뿐만 아니라 모듈과 관련된 설정 및 리소스 파일 등도 포함 될 수 있습니다
이렇게 프로젝트, 모듈, 폴더 및 파일이 실제 파일 시스템에 기반한 물리적인 구조를 담당한다고 하면
논리적인 구조로는 '패키지 package' 라는 것이 있습니다
<패키지 package>
패키지는 개발시에 소스 코드의 '소속'을 지정하기 위한 논리적 단위입니다
코드를 작성할 때는 코드 내에서 사용하는 이름이 용도에 따라 서로 충돌하지 않도록 서로 다른 패키지 이름을 짓는 것이 좋은데요
일반적으로 패키지의 이름을 지을 때는
개발한 회사가 가진 도메인을 youtube.com
거꾸로 배열하고 com.youtube
그 뒤에 프로젝트 명을 붙인 후 com.youtube.wlrma
그 아래에 기능별로 세분화하는 com.youtube.wlrma.base / com.youtube.wlrma.android
방식으로 짓습니다
그럼 코드 파일들을 어떻게 패키지로 묶을 수 있을까요?
코드 파일을 패키지에 넣는 방법은 코드 파일의 맨 윗줄에 'package'를 적고 패키지 이름을 써 주면 됩니다
ex) package com.youtube.wlrma
패키지를 명시하지 않으면 자동으로 'default' 패키지로 묶이게 됩니다!
코틀린은 자바와 달리 폴더 구조와 패키지 명을 일치시키지 않아도 됩니다
단순히 파일 상단에 패키지만 명시해주면 컴파일러가 알아서 처리하게 됩니다
그런데 같은 패키지 내에서는 변수, 함수, 클래스를 공유할 수 있는데요
(서로 이름만 부르면 사용 가능합니다)
패키지가 다르면 그냥 쓸 수는 없고 'import' 라는 작업을 해주어야 사용이 가능합니다
패키지 선언 바로 아래에 'import'를 쓰고 사용할 외부 패키지 이름을 써주면
다른 패키지의 변수나 함수, 클래스 등을 그대로 사용할 수 있습니다
ex) import com.youtube.wlrma.base
이때 이름이 중복되는 요소가 있다면 패키지 이름을 포함한 풀네임을 명시해주어야 합니다!
그리고 코틀린은 클래스명과 파일명이 일치하지 않아도 되며
하나의 파일에 '여러개의 클래스'를 넣어도 알아서 컴파일이 가능합니다
이는 파일이나 폴더를 기준으로 구분하지 않고 파일 내에 있는 package 키워드를 기준으로 구분하기 때문입니다
그렇지만 같은 패키지 내에서 모든 클래스의 이름은 유일해야 합니다
그렇다면 패키지는 왜 만들어야 할까요?
방금 위에서 이야기 한 것과 비슷한 이야기인데요
만약 여러명의 프로그래머가 함께 하나의 프로젝트를 진행하다가 우연히 같은 이름의 파일(클래스)를 만들었을 경우
당연히 오류가 발생하겠죠?
그렇지만 각자의 패키지 안에서 기능을 구현한다면 클래스 이름이 같아도 오류가 발생하지 않을 것입니다!
코틀린 프로젝트의 구조를 안다면 더 유용하게 프로젝트를 진행할 수 있겠죠?
<코틀린 프로젝트의 구조> 포스팅은 여기서 마치도록 하겠습니다
*위 글은 유튜브 테크과학! DeMo님의 강좌를 참고하여 작성하였습니다
'Kotlin' 카테고리의 다른 글
[Kotlin] 고차함수와 람다함수 (0) | 2023.07.25 |
---|---|
[Kotlin] 변수, 함수, 클래스의 접근범위와 접근제한자 (0) | 2023.07.24 |
[Kotlin] 10. 오버라이딩과 추상화 (0) | 2023.07.20 |
[Kotlin] 09. 클래스의 상속 (0) | 2023.07.19 |
[Kotlin] 08. 클래스의 생성자 (0) | 2023.07.18 |