IMCAT.DEV
로그인 가입
Scala 입문 도구

Scala 기본 모듈 시스템

Scala 기본 모듈 시스템 — 초급

기본 모듈 시스템

1. 도입 (왜 배워야 하는가)

Scala의 모듈 시스템은 코드의 재사용성과 조직화를 높이는 중요한 요소입니다. 실무에서는 대규모 애플리케이션을 개발할 때 다양한 모듈을 효과적으로 관리해야 하며, 이를 통해 코드의 유지보수성을 높이고 팀원 간의 협업을 원활히 할 수 있습니다. 모듈 시스템을 이해하지 못하면, 코드가 복잡해지고 중복이 발생하며, 의존성 관리가 어려워져 결국 프로젝트의 품질이 저하될 수 있습니다.

2. 핵심 개념 설명

Scala의 모듈 시스템은 크게 패키지와 오브젝트로 나눌 수 있습니다.

2.1 패키지

패키지는 관련된 클래스와 오브젝트를 그룹화하는 방법으로, 마치 서류를 폴더로 정리하는 것과 같습니다. 패키지를 사용하면 코드의 구조를 명확히 하고, 이름 충돌을 방지할 수 있습니다.

용어설명
패키지클래스와 오브젝트의 집합
네임스페이스패키지를 통해 이름 충돌을 방지하는 공간

2.2 오브젝트

오브젝트는 싱글턴 인스턴스를 제공하는 Scala의 독특한 개념입니다. 마치 집에 하나만 있는 냉장고처럼, 오브젝트는 프로그램 내에서 하나만 존재하며, 전역 상태를 유지할 수 있습니다.

3. 기본 코드 예제

아래는 기본 패키지와 오브젝트를 사용하는 간단한 예제입니다.

package com.example

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("안녕하세요, Scala!")
  }
}

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

안녕하세요, Scala!

코드 동작 설명

  1. package com.example: com.example라는 패키지를 정의합니다.
  2. object HelloWorld: HelloWorld라는 오브젝트를 선언합니다. 이는 싱글턴 인스턴스입니다.
  3. def main(args: Array[String]): Unit: Scala 프로그램의 진입점인 main 메서드를 정의합니다.
  4. println("안녕하세요, Scala!"): 콘솔에 "안녕하세요, Scala!"를 출력합니다.
  5. 4. 실전 활용 예제

    예제 1: 쇼핑몰의 장바구니 구현

    쇼핑몰에서 장바구니를 구현할 때, 제품 정보를 관리하는 패키지를 만들 수 있습니다.

    package com.shop
    
    object Cart {
      var items: List[String] = List()
    
      def addItem(item: String): Unit = {
        items = items :+ item
        println(s"$item 이(가) 장바구니에 추가되었습니다.")
      }
    
      def showItems(): Unit = {
        println("장바구니의 상품: " + items.mkString(", "))
      }
    }

    예제 2: 사용자 인증 시스템

    사용자 인증을 관리하기 위해 별도의 패키지를 생성할 수 있습니다.

    package com.auth
    
    object Auth {
      private var loggedInUsers: Set[String] = Set()
    
      def login(user: String): Unit = {
        loggedInUsers += user
        println(s"$user 가 로그인했습니다.")
      }
    
      def logout(user: String): Unit = {
        loggedInUsers -= user
        println(s"$user 가 로그아웃했습니다.")
      }
    }

    5. 흔한 실수와 주의사항

    실수 1: 패키지 이름 중복

    • 잘못된 코드:
    • package com.shop
      package com.shop  // 패키지 중복
    • 올바른 코드:
    • package com.shop

      패키지를 중복으로 정의하면 컴파일 오류가 발생합니다.

      실수 2: 오브젝트 멤버 접근 오류

    • 잘못된 코드:
    • object Example {
        private val secret = "비밀"
      }
      
      println(Example.secret) // 오류 발생
    • 올바른 코드:
    • object Example {
        private val secret = "비밀"
        def getSecret: String = secret
      }
      
      println(Example.getSecret) // 정상적으로 "비밀" 출력

      private 멤버는 외부에서 접근할 수 없으므로, 접근할 방법을 제공해야 합니다.

      6. 정리

    • Scala의 모듈 시스템은 코드의 재사용성과 조직화에 필수적입니다.
    • 패키지와 오브젝트는 코드 관리의 기본 단위입니다.
    • 실무에서 패키지와 오브젝트를 활용하여 효율적인 코드를 작성할 수 있습니다.
    • 다음에 학습하면 좋은 주제: Scala의 클래스와 상속, Trait 사용법.