달력

112024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

'팩키지'에 해당되는 글 1건

  1. 2019.11.10 [코틀린] Module, Package, File :: 리뎁

자바 또는 다른 언어로 개발해본 사람이면 모두 변수, 자료형, 연산자에 대해 알고 있다.

물론 나 역시 알고있다.

그래서 사실 2장은 그냥 Skip 해도 상관 없지만 

블로그의 목적상 작성하고 넘어간다.

우선 자료형을 공부하기 전에 모듈과 패키지의 개념을 짚고 넘어가자

Project , Module , Package, File 

코틀린의 프로젝트(Project)는 모듈(Module), 팩키지(Package), 파일(File) 로 구성되어 있다. 

당연히 모듈이 가장 큰 단위 -> 파일이 가장 작은 단위라고 보면 된다.

 

프로젝트(Project)

프로젝트는 최상위 개념이라고 보면 되겠다. 

예를들어 비용등록 프로그램(A), 고객관리 프로그램(B), 수정요청관리 프로그램(C)을 각각 만든다고 하면 

세개의 프로젝트가 될것이다 (물론 저렇게 할 일은 없다....)

 

모듈(Module) 

모듈은 각각의 프로젝트에 있는 기능(대분류) 단위이다. 

실제 프로젝트시에 보면 모듈을 대분류단위 또는 업무구분 단위로 분리하게 될것이다. 

(구매/영업/생산 ... + 공통영역.. 등등)

예를들어 (A) 프로그램에는 비용등록(A1), 비용코드관리(A2), 거래처관리(A3) .. 등이 모듈이 될것이다. 

 

패키지(Package) 

패키지는 상황에 따라 좀 다르다. 

기능적으로 분류할 수도있고 작업단위로 분류할 수도 있다. 

프로젝트의 성격과 인원 자사의 Framework 등에 따라 조금씩 다르게 정의할 수 있겠다.

또한 배포의 문제도 감안해야 할 것이다. 

단순 SI인지 솔루션 기반으로 진행할 것인지 등도 감안해야 하겠다. 

어쨋든 지금은 모듈의 하위단에 있다는 정도로 이해하자.

한가지 기억할 점은 

코틀린 파일의 맨 위에는 어떤 패키지에 포함 되었는지 명시해야 한다. 

패키지를 명시하지 않으면 default 패키지에 포함된다.

(파일이 위치한 폴더와 관계없다)

 

파일(File) 

음.....그렇다. 이건 파일이다.

코틀린 파일의 확장자는 .kt 인데 파일안에 하나의 클래스만 있는경우 프로젝트창에서 .kt 는 생략된다. 

하나의 파일안에 여러개의 클래스가 있는경우 파일은 단순히 클래스를 묶는 역할만을 하고

프로젝트 창에서 .kt 확장자를 볼수 있다. (여러개의 클래스인 경우 상단에 있는 패키지를 인식한다.)

참고로 코틀린은 자바처럼 파일명과 클래스명이 동일 해야하거나

public 클래스를 하나만 써야 하는 규칙은 없다.

 

팩키지 생성 

IntelliJ 실행 > New 프로젝트(Project) 생성 > 프로젝트 창에서 src 폴더 우클릭 > New > Package 클릭 > 이름짓기 

New 프로젝트 생성을 모른다면 아래 클릭

https://redev.tistory.com/3?category=812832

그러면 src 폴더 밑에 본인이 지어준 팩키지 이름이 보일 것이다.  (나는 com.example.edu 로 했다.)

탐색기를 열어보면 . (점)을 기준으로 폴더가 생긴것을 확인할 수 있다.

 

팩키지 alias 

예를들어 com.example.edu 의 clss1 을 import 하여 사용한다고 가정하면 

import com.example.edu.clss1 라고

현재 코딩중인 파일의 상단에 이렇게 import할 것이다. 

근데 만약 clss1 이 현재 패키지에 이미 존재한다면 충돌이 날것이다. 

그렇기에 edu.clss1 에 alias를 줄수 있다. 

import com.example.edu.clss1  as eduClass1 과 같은 식으로..

alias 개념은 다 알것이니 설명은 생략하고 

실전에서는 저렇게 쓰는일이 많지는 않을것 같다 

뭐 성능적으로 import com.example.* 와 같은식은 퍼포먼스 측면에서 사용하지 말라고 하긴 하는데

import com.* 수준이 아니라면 import com.example.* 는 어느정도 허용이 될것이다. 

그러면 alias를 쓰지 못할테니....그리고 파일명칭을 충돌시키는 Naming Rule 자체를 권장하지 않는다.

하지만 상황봐서 유용할 수 있으니 알아 두어야겠다.

 

 

 

 

Posted by redev
|