๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Today I Learned(TIL)/Java

Java ๊ธฐ๋ณธํŽธ ๊ฐ•์˜_ํŒจํ‚ค์ง€

by carrot0911 2024. 11. 26.

ํŒจํ‚ค์ง€

 

ํŒจํ‚ค์ง€ - ์‹œ์ž‘

๋งค์šฐ ๋งŽ์€ ํด๋ž˜์Šค๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด ๊ด€๋ จ ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋ถ„๋ฅ˜ํ•ด์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์–ด ์ง„๋‹ค.
์ปดํ“จํ„ฐ๋Š” ๋ณดํ†ต ํŒŒ์ผ์„ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•ด ํด๋”, ๋””๋ ‰ํ† ๋ฆฌ๋ผ๋Š” ๊ฐœ๋…์„ ์ œ๊ณตํ•œ๋‹ค. Java๋„ ์ด๋Ÿฐ ๊ฐœ๋…์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํŒจํ‚ค์ง€๋‹ค.

* user
  * User
  * UserManager
  * UserHistory
* product
  * Product
  * ProductCatalog
  * ProductImage
* order
  * Order
  * OrderService
  * OrderHistory
* cart
  * ShoppingCart
  * CartItem
* payment
  * Payment
  * PaymentHistory
* shipping
  * Shipment
  * ShipmentTracker

์—ฌ๊ธฐ์„œ user, product ๋“ฑ์ด ํŒจํ‚ค์ง€์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ํŒจํ‚ค์ง€ ์•ˆ์— ๊ด€๋ จ๋œ Java ํด๋ž˜์Šค๋“ค์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.
ํŒจํ‚ค์ง€(package)๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋ฌผ๊ฑด์„ ์šด์†กํ•˜๊ธฐ ์œ„ํ•œ ํฌ์žฅ ์šฉ๊ธฐ๋‚˜ ๊ทธ ํฌ์žฅ ๋ฌถ์Œ์„ ๋œปํ•œ๋‹ค.

ํŒจํ‚ค์ง€ ์‚ฌ์šฉ

ํŒจํ‚ค์ง€ ์œ„์น˜์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

pack.Data

package pack;

public class Data {
    public Data() {
        System.out.println("ํŒจํ‚ค์ง€ pack Data ์ƒ์„ฑ");
    }
}
  • ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ•ญ์ƒ ์ฝ”๋“œ ์ฒซ ์ค„์— package pack๊ณผ ๊ฐ™์ด ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ์ ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

pack.a.User

package pack.a;

public class User {
    public User () {
        System.out.println("ํŒจํ‚ค์ง€ pack.a ํšŒ์› ์ƒ์„ฑ");
    }
}

 

โœ”๏ธ ์ฐธ๊ณ 

์ƒ์„ฑ์ž์— public์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ ์ด ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด public์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

pack.PackageMain1

package pack;

public class PackageMain1 {

    public static void main(String[] args) {
        Data data = new Data();
        pack.a.User user = new pack.a.User();
    }
}
  • ์‚ฌ์šฉ์ž์™€ ๊ฐ™์€ ์œ„์น˜ : PackageMain1๊ณผ Data๋Š” ๊ฐ™์€ pack์ด๋ผ๋Š” ํŒจํ‚ค์ง€์— ์†Œ์†๋˜์–ด ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ๋ฅผ ์ƒ๋žตํ•ด๋„ ๋œ๋‹ค.
  • ์‚ฌ์šฉ์ž์™€ ๋‹ค๋ฅธ ์œ„์น˜ : PackageMain1๊ณผ User๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋‹ค. ์ด๋ ‡๊ฒŒ ํŒจํ‚ค์ง€๊ฐ€ ๋‹ค๋ฅด๋ฉด pack.a.User์™€ ๊ฐ™์ด ํŒจํ‚ค์ง€ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•ด์„œ ํด๋ž˜์Šค๋ฅผ ์ ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

ํŒจํ‚ค์ง€ - import

import

package pack;

import pack.a.User;

public class PackageMain2 {

    public static void main(String[] args) {
        Data data = new Data();
        User user = new User();
    }
}

์ฝ”๋“œ์—์„œ ์ฒซ ์ค„์—๋Š” package๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋‹ค์Œ ์ค„์—๋Š” import๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
import๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
import๋ฅผ ์‚ฌ์šฉํ•œ ๋•๋ถ„์— ์ฝ”๋“œ์—์„œ๋Š” ํŒจํ‚ค์ง€ ๋ช…์„ ์ƒ๋žตํ•˜๊ณ  ํด๋ž˜์Šค ์ด๋ฆ„๋งŒ ์ ์„ ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ • ํŒจํ‚ค์ง€์— ํฌํ•จ๋œ ๋ชจ๋“  ํด๋ž˜์Šค์— ํฌํ•จํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด import ์‹œ์ ์— *(๋ณ„)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

ํŒจํ‚ค์ง€ ๋ณ„(*) ์‚ฌ์šฉ

package pack;

import pack.a.*;

public class PackageMain2 {

    public static void main(String[] args) {
        Data data = new Data();
        User user = new User();
        User2 user2 = new User2();
    }
}

ํด๋ž˜์Šค ์ด๋ฆ„ ์ค‘๋ณต

ํŒจํ‚ค์ง€ ๋•๋ถ„์— ํด๋ž˜์Šค ์ด๋ฆ„์ด ๊ฐ™์•„๋„ ํŒจํ‚ค์ง€ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๊ฐ™์€ ์ด๋ฆ„์˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

pack.a.User
pack.b.User

๊ฐ™์€ ์ด๋ฆ„์˜ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด import๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ๋Š” ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ import ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•œ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ๋ฌผ๋ก  ๋‘˜ ๋‹ค ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ ์–ด์ค€๋‹ค๋ฉด import๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

ํŒจํ‚ค์ง€ ๊ทœ์น™

ํŒจํ‚ค์ง€ ๊ทœ์น™

  • ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„๊ณผ ์œ„์น˜๋Š” ํด๋”(๋””๋ ‰ํ† ๋ฆฌ) ์œ„์น˜์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. (ํ•„์ˆ˜)
  • ํŒจํ‚ค์ง€ ์ด๋ฆ„์€ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (๊ด€๋ก€)
  • ํŒจํ‚ค์ง€ ์ด๋ฆ„์˜ ์•ž๋ถ€๋ถ„์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ์‚ฌ์˜ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๊ฑฐ๊พธ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด com.company.myapp๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค. (๊ด€๋ก€)
    • ์ด ๋ถ€๋ถ„์€ ํ•„์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ˆ˜๋งŽ์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉด ๊ฐ™์€ ํŒจํ‚ค์ง€์— ๊ฐ™์€ ํด๋ž˜์Šค ์ด๋ฆ„์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๊ฑฐ๊พธ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋‚ด๊ฐ€ ์˜คํ”ˆ์†Œ์Šค๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์™ธ๋ถ€์— ์ œ๊ณตํ•œ๋‹ค๋ฉด ๊ผญ ์ง€ํ‚ค๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    • ๋‚ด๊ฐ€ ๋งŒ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค๋ฅธ ๊ณณ์— ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ , ์ง์ ‘ ๋ฐฐํฌํ•œ๋‹ค๋ฉด ๋ณดํ†ต ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

ํŒจํ‚ค์ง€์™€ ๊ณ„์ธต ๊ตฌ์กฐ

  • a
    • b
    • c

๊ณ„์ธต ๊ตฌ์กฐ์ƒ a ํŒจํ‚ค์ง€ ํ•˜์œ„์— a.b ํŒจํ‚ค์ง€์™€ a.c ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ a ํŒจํ‚ค์ง€์™€ a.b, a.c ํŒจํ‚ค์ง€๋Š” ์„œ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์ด๋‹ค.
๋”ฐ๋ผ์„œ a ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค์—์„œ a.b ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•˜๋ฉด import ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋ฌผ๋ก  ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

์ •๋ฆฌํ•˜๋ฉด ํŒจํ‚ค์ง€๊ฐ€ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋”๋ผ๋„ ๋ชจ๋“  ํŒจํ‚ค์ง€๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์ด๋‹ค.
๋ฌผ๋ก  ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ž˜ ํ™œ์šฉํ•ด์„œ ํŒจํ‚ค์ง€๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
์ฐธ๊ณ ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ๋ณดํ†ต ํฐ ๋ถ„๋ฅ˜์—์„œ ์„ธ์„ธํ•œ ๋ถ„๋ฅ˜๋กœ ์ ์  ๋‚˜๋ˆ ์ง„๋‹ค. ํŒจํ‚ค์ง€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

 

ํŒจํ‚ค์ง€ ํ™œ์šฉ

์‹ค์ œ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋Š” ์•„๋‹ˆ์ง€๋งŒ, ํฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋Œ€๋žต ์ด๋Ÿฐ ์‹์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.
์ฐธ๊ณ ๋กœ ์ด๊ฒƒ์€ ์ •๋‹ต์ด ์•„๋‹ˆ๊ณ  ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ์™€ ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ผ์„œ ๋‹ฌ๋ผ์ง„๋‹ค.

์ „์ฒด ๊ตฌ์กฐ๋„

  • com.helloshop
    • user
      • User
      • UserService
    • product
      • Product
      • ProductService
    • order
      • Order
      • OrderService
      • OrderHistory

ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ์„œ๋กœ ๊ด€๋ จ๋œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ๋ชจ์œผ๊ณ , ๊ด€๋ จ์ด ์ ์€ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.