๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Back-end ๋ฐ๋ธŒ์ฝ”์Šค/week 01 - 02 TIL (java, DB)

[TIL] 221021 - Java ์‹ค์Šต ํ”„๋กœ์ ํŠธ : ์ˆซ์ž์•ผ๊ตฌ ๊ฒŒ์ž„

by young-ji 2022. 10. 21.

ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์œ„ํ•œ JAVA - Java ์‹ค์Šต ํ”„๋กœ์ ํŠธ : ์ˆซ์ž์•ผ๊ตฌ ๊ฒŒ์ž„ 

 

1. Dependency :

์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

  • gradle : Build Tool์˜ ์—ญํ• 
    • ๋นŒ๋“œํ•œ๋‹ค / ์‹คํ–‰ํ•œ๋‹ค.
    • ์™ธ๋ถ€์— ์˜์กด์„ฑ์ด ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์„ค์น˜
  1. build tool ์„ค์ • ํŒŒ์ผ์ธ build.gradle ํŒŒ์ผ ์—ด์–ด์„œ dependencies ํ™•์ธ ๊ฐ€๋Šฅ
  2. https://search.maven.org/ ์—์„œ ์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
    • javafaker ๊ฒ€์ƒ‰ → Gradle Snippets๋ฅผ ๋ณต์‚ฌ → build.gradle ํŒŒ์ผ dependencies์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. → Gradle refresh
    • javafaker : ๊ฐ€์งœ ๋ฐ์ดํ„ฐ๋ฅผ ๋žœ๋ค์œผ๋กœ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ๋ฐ๋ชจ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๋‚ผ๋•Œ ์‚ฌ์šฉ๋œ๊ณค ํ•œ๋‹ค.
     

javafaker ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ dependecies ์ถ”๊ฐ€

public static void main(String[] args) {
        System.out.println("Hello world!");
        Faker faker = new Faker();

        Integer[] nums = Stream.generate(()-> faker.number().randomDigit())
                .distinct() // ์ค‘๋ณต๋˜์ง€์•Š๊ฒŒ
                .limit(5) // ์ตœ๋Œ€ 5๊ฐœ
                .toArray(Integer[] :: new); // ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ

        System.out.println(Arrays.toString(nums));
}

 

 

  • lombok : java ํ”„๋กœ์ ํŠธ๋ฅผ ํ• ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜. ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ( IntelliJ “lombok” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋”ฐ๋กœ ์„ค์น˜ํ•ด์•ผํ•จ. )
import lombok.*;

@AllArgsConstructor // ์ž๋™์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ๋‹ด๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑํ•ด์คŒ
@NoArgsConstructor // ๊ธฐ๋ณธ์ƒ์„ฑ์ž ์ƒ์„ฑ
@ToString // ์ž๋™์œผ๋กœ toString์„ ์ƒ์„ฑ
@EqualsAndHashCode // ์ž๋™์œผ๋กœ equal ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑ
@Getter // ์ž๋™์œผ๋กœ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ get ํ•จ์ˆ˜ ์ƒ์„ฑ
@Setter // ์ž๋™์œผ๋กœ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ set ํ•จ์ˆ˜ ์ƒ์„ฑ
public class User {
    private int age;
    private String name;
}

@Data // ์œ„์˜ ๊ธฐ๋ณธ ์–ด๋…ธํ…Œ์ด์…˜์ด ๋‹ค ์ ์šฉ๋จ
public class User {
    private int age;
    private String name;
}

 

 

2. ํ”„๋กœ์ ํŠธ ์„ค๊ณ„

์ˆซ์ž์•ผ๊ตฌ ๊ฒŒ์ž„ ์„ค๊ณ„

1๏ธโƒฃ ์š”๊ตฌ์‚ฌํ•ญ ํŒŒ์•…ํ•˜๊ธฐ

  • ๊ฒŒ์ž„์˜ ๋ฃฐ์„ ์ดํ•ด
  • ๋™์ž‘ํ™˜๊ฒฝ, ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„
    1. 3์ž๋ฆฌ ์ˆซ์ž ์‚ฌ์šฉ
    2. ์ค‘๋ณต ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    3. 1~9๋ฅผ ์‚ฌ์šฉ
    4. Console์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ์ ํŠธ

2๏ธโƒฃ ์ผ์„ ๊ฐ์ฒด๋กœ ๋‚˜๋ˆ„๊ธฐ/๊ฐ์ฒด๋ฅผ ์—ฐ๊ด€ ์ง“๊ธฐ

3๏ธโƒฃ ํ•ต์‹ฌ๋กœ์ง ์„ค๊ณ„ํ•˜๊ธฐ

  • Flow Chart

 

3. ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„ : ์—”์ง„ ๋ ˆ์ด์–ด

  • BaseBall class ์ด NumberGenerator, Input, Output์— ๋Œ€ํ•ด ์˜์กดํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ๊ฒƒ์˜ ์ถ”์ƒ์ฒด์—๋งŒ ์˜์กดํ•˜๊ณ  ์žˆ์–ด ๊ฒฐํ•จ๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค.(์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์˜์กด์„ฑ ์ฃผ์ž…)
  • NumberGenerator๋ฅผ ๊ฒŒ์ž„ engin๋‚ด์—์„œ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•˜์˜€์œผ๋‚˜ ํ•ต์‹ฌ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์ด ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(javafaker)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€์•Š์•„ ์™ธ๋ถ€ dependency๊ฐ€ ์—†๋„๋ก interface๋กœ ๊ตฌํ˜„ → interface๋กœ ๋งŒ๋“ค๊ณ  ํ˜ธ์ŠคํŠธ ์ชฝ์—์„œ ์ „๋‹ฌ๋ฐ›์•„ ๊ตฌํ˜„์ฒด๋ฅผ ์ž‘์„ฑ

 

4. ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„ : ์–ดํ”Œ๋ ˆ์ผ€์ด์…˜ ๋ ˆ์ด์–ด


 

์†Œ์Šค ์ฝ”๋“œ : GitHub - youngjijang/prgrms-be-devcourse: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ๋ฐฑ์—”๋“œ ์‹ค์Šต repo

 

GitHub - youngjijang/prgrms-be-devcourse: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ๋ฐฑ์—”๋“œ ์‹ค์Šต repo

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ๋ฐฑ์—”๋“œ ์‹ค์Šต repo. Contribute to youngjijang/prgrms-be-devcourse development by creating an account on GitHub.

github.com

 

๋Œ“๊ธ€