From 53e9c935648c3a363ea88d85025bbcbb4766fb3f Mon Sep 17 00:00:00 2001 From: jongjae0305 Date: Tue, 16 Jun 2026 14:02:11 +0900 Subject: [PATCH 1/2] 26.06.16 --- TIL/sample/2026-06-15.md | 134 ++++++++++ TIL/sample/2026-06-16.md | 241 ++++++++++++++++++ .../com/survivalcoding/day260608/Cleric.java | 10 +- .../com/survivalcoding/day260609/Cleric.java | 16 +- .../java/com/survivalcoding => }/Cleric.java | 2 +- .../EncapsulationExam.java | 2 +- .../com/survivalcoding => }/GameConfig.java | 2 +- .../java/com/survivalcoding => }/Hero.java | 2 +- .../java/com/survivalcoding => }/Inn.java | 2 +- .../java/com/survivalcoding => }/King.java | 2 +- .../java/com/survivalcoding => }/Kinoko.java | 2 +- .../java/com/survivalcoding => }/Main.java | 4 +- .../java/com/survivalcoding => }/Person.java | 2 +- .../java/com/survivalcoding => }/Quiz.java | 2 +- .../java/com/survivalcoding => }/Sword.java | 2 +- .../java/com/survivalcoding => }/Wand.java | 2 +- .../java/com/survivalcoding => }/Wizard.java | 2 +- .../day260615/game/build.gradle | 20 -- .../survivalcoding/day260616/GreatWizard.java | 32 +++ .../com/survivalcoding/day260616/Hero.java | 43 ++++ .../com/survivalcoding/day260616/Main.java | 14 + .../survivalcoding/day260616/PoisonSlime.java | 26 ++ .../com/survivalcoding/day260616/Slime.java | 31 +++ .../survivalcoding/day260616/SuperHero.java | 31 +++ .../com/survivalcoding/day260616/Wizard.java | 38 +++ .../java/com/survivalcoding/MainTest.java | 10 - .../day260608/day260608/ClericTest.java | 1 + .../day260609/day260609/MainTest.java | 2 + .../day260615/game}/ClericTest.java | 6 +- .../day260615/game}/HeroTest.java | 5 +- .../day260615/game}/PersonTest.java | 5 +- .../day260615/game}/WandTest.java | 4 +- .../day260615/game}/WizardTest.java | 4 +- .../day260616/GreatWizardTest.java | 84 ++++++ .../day260616/PoisonSlimeTest.java | 32 +++ settings.gradle | 2 +- 36 files changed, 748 insertions(+), 71 deletions(-) create mode 100644 TIL/sample/2026-06-15.md create mode 100644 TIL/sample/2026-06-16.md rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Cleric.java (95%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/EncapsulationExam.java (81%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/GameConfig.java (88%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Hero.java (97%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Inn.java (65%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/King.java (87%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Kinoko.java (81%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Main.java (91%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Person.java (96%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Quiz.java (94%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Sword.java (57%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Wand.java (94%) rename day01-basic/src/main/java/com/survivalcoding/day260615/game/{src/main/java/com/survivalcoding => }/Wizard.java (96%) delete mode 100644 day01-basic/src/main/java/com/survivalcoding/day260615/game/build.gradle create mode 100644 day01-basic/src/main/java/com/survivalcoding/day260616/GreatWizard.java create mode 100644 day01-basic/src/main/java/com/survivalcoding/day260616/Hero.java create mode 100644 day01-basic/src/main/java/com/survivalcoding/day260616/Main.java create mode 100644 day01-basic/src/main/java/com/survivalcoding/day260616/PoisonSlime.java create mode 100644 day01-basic/src/main/java/com/survivalcoding/day260616/Slime.java create mode 100644 day01-basic/src/main/java/com/survivalcoding/day260616/SuperHero.java create mode 100644 day01-basic/src/main/java/com/survivalcoding/day260616/Wizard.java delete mode 100644 day01-basic/src/test/java/com/survivalcoding/MainTest.java rename day01-basic/src/{main => test}/java/com/survivalcoding/day260608/day260608/ClericTest.java (97%) rename day01-basic/src/{main => test}/java/com/survivalcoding/day260609/day260609/MainTest.java (96%) rename day01-basic/src/{main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding => test/java/com/survivalcoding/day260615/game}/ClericTest.java (90%) rename day01-basic/src/{main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding => test/java/com/survivalcoding/day260615/game}/HeroTest.java (94%) rename day01-basic/src/{main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding => test/java/com/survivalcoding/day260615/game}/PersonTest.java (98%) rename day01-basic/src/{main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding => test/java/com/survivalcoding/day260615/game}/WandTest.java (98%) rename day01-basic/src/{main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding => test/java/com/survivalcoding/day260615/game}/WizardTest.java (99%) create mode 100644 day01-basic/src/test/java/com/survivalcoding/day260616/GreatWizardTest.java create mode 100644 day01-basic/src/test/java/com/survivalcoding/day260616/PoisonSlimeTest.java diff --git a/TIL/sample/2026-06-15.md b/TIL/sample/2026-06-15.md new file mode 100644 index 0000000..fc26fbc --- /dev/null +++ b/TIL/sample/2026-06-15.md @@ -0,0 +1,134 @@ +# 2026-06-15 + +## 오늘 배운 내용 + +### 1. 캡슐화 + +- 캡슐화는 필드를 외부에서 직접 변경하지 못하게 숨기고, 메소드를 통해 안전하게 접근하도록 만드는 것이다. +- 필드는 보통 `private`으로 선언한다. +- 값을 읽을 때는 getter, 값을 변경할 때는 setter를 사용한다. +- setter 안에서 잘못된 값이 들어오지 않도록 검사를 할 수 있다. +- 잘못된 값이 들어오면 `IllegalArgumentException`을 발생시켜 프로그램을 중단할 수 있다. + +```java +public void setName(String name) { + if (name == null || name.length() < 3) { + throw new IllegalArgumentException("이름은 null일 수 없고 3문자 이상이어야 합니다."); + } + this.name = name; +} +``` + +### 2. 객체가 자기 값을 책임진다 + +- `Wand`는 지팡이의 이름과 마력을 스스로 검사한다. +- `Wizard`는 마법사의 이름, HP, MP, 지팡이 장착 여부를 스스로 검사한다. +- `Wizard.setWand()`에서 지팡이 이름이나 마력까지 다시 검사할 필요는 없다. +- 지팡이의 상태는 `Wand`가 책임지고, 마법사의 상태는 `Wizard`가 책임진다. + +```java +public void setWand(Wand wand) { + if (wand == null) { + throw new IllegalArgumentException("마법사의 지팡이는 null일 수 없습니다."); + } + this.wand = wand; +} +``` + +### 3. List, Set, Map + +- `List` + - 순서가 있다. + - 중복을 허용한다. + - 예: 학생 10명의 시험 점수 + +- `Set` + - 순서가 중요하지 않다. + - 중복을 허용하지 않는다. + - 예: 대한민국의 도시 이름 모음 + +- `Map` + - key와 value를 한 쌍으로 저장한다. + - 예: 도시별 인구수, 이름별 나이 + +```java +Map ages = new LinkedHashMap<>(); + +ages.put("홍길동", 20); +ages.put("한석봉", 25); +``` + +## 기억할 것 + +### 캡슐화 + +- 필드는 직접 접근하지 못하게 `private`으로 만든다. +- 외부에서는 getter와 setter를 통해 접근한다. +- setter는 단순히 값을 넣는 역할만 하는 것이 아니라, 값이 올바른지 검사하는 역할도 한다. + +```java +private int mp; + +public void setMp(int mp) { + if (mp < 0) { + throw new IllegalArgumentException("MP는 0 이상이어야 합니다."); + } + this.mp = mp; +} +``` + +### 컬렉션 선택 기준 + + +| 기준 | 컬렉션 | +|--|---| +| `List` | 중복을 허용하고 순서가 필요하면 | +|`Set` | 중복을 막고 싶으면| +|`Map` | 이름과 나이처럼 쌍으로 저장하면| + + +## 실습 코드 + +### Person 리스트 + +```java +List people = new ArrayList<>(); + +people.add(new Person("홍길동")); +people.add(new Person("한석봉")); + +for (Person person : people) { + System.out.println(person.getName()); +} +``` + +### 이름과 나이를 Map에 저장 + +```java +Map ages = new LinkedHashMap<>(); + +ages.put("홍길동", 20); +ages.put("한석봉", 25); + +for (Map.Entry entry : ages.entrySet()) { + System.out.println(entry.getKey() + "의 나이는 " + entry.getValue() + "살"); +} +``` + +## 어려웠던 점 + +- 처음에는 `private`으로 필드를 숨기면 코드가 더 복잡해지는 것처럼 느껴졌다. +- 하지만 setter에서 잘못된 값을 막을 수 있어서 객체의 상태를 안전하게 유지할 수 있다는 점을 알게 되었다. +- `List`, `Set`, `Map`은 이름은 익숙했지만, 어떤 상황에서 무엇을 써야 하는지 구분하는 것이 헷갈렸다. + +## 해결 방법 + +- 값 하나하나를 어디서 검사해야 하는지 생각했다. +- `Wand`의 값은 `Wand`가 검사하고, `Wizard`의 값은 `Wizard`가 검사하도록 나누었다. +- 컬렉션은 저장하려는 데이터의 특징을 먼저 보고 골랐다. + +## 내일 더 공부할 것 + +- 상속 +- 오버라이딩 +- 추상 클래스 \ No newline at end of file diff --git a/TIL/sample/2026-06-16.md b/TIL/sample/2026-06-16.md new file mode 100644 index 0000000..b5087cf --- /dev/null +++ b/TIL/sample/2026-06-16.md @@ -0,0 +1,241 @@ +# 2026-06-16 + +## 오늘 배운 내용 + +### 1. 오버라이딩 + +- 오버라이딩은 부모 클래스가 가진 메서드를 자식 클래스에서 다시 정의하는 것이다. +- 자식 클래스는 부모 클래스의 기능을 그대로 물려받을 수 있지만, 필요하면 자신의 상황에 맞게 메서드 내용을 바꿀 수 있다. +- 오버라이딩을 할 때는 부모 메서드와 이름, 매개변수, 리턴 타입이 같아야 한다. +- 오버라이딩한 메서드 위에는 `@Override`를 붙이는 것이 좋다. +- `@Override`를 붙이면 메서드 이름이나 매개변수를 잘못 작성했을 때 컴파일러가 알려준다. + +```java +class Wizard { + public void heal(Hero hero) { + hero.setHp(hero.getHp() + 20); + } +} + +class GreatWizard extends Wizard { + @Override + public void heal(Hero hero) { + hero.setHp(hero.getHp() + 25); + } +} +``` + +### 2. 부모 메서드 호출 + +- 자식 클래스에서 오버라이딩을 했더라도 부모의 메서드를 호출할 수 있다. +- 이때 `super.메서드명()`을 사용한다. +- 부모의 기본 동작을 먼저 실행하고, 자식 클래스에서 추가 동작을 붙이고 싶을 때 사용한다. + +```java +class Slime { + public void attack(Hero hero) { + hero.setHp(hero.getHp() - 10); + } +} + +class PoisonSlime extends Slime { + @Override + public void attack(Hero hero) { + super.attack(hero); + + int poisonDamage = hero.getHp() / 5; + hero.setHp(hero.getHp() - poisonDamage); + } +} +``` + +### 3. 오버라이딩과 다형성 + +- 부모 타입 변수에 자식 인스턴스를 담을 수 있다. +- 이때 메서드를 호출하면 실제 인스턴스의 오버라이딩된 메서드가 실행된다. +- 이것을 다형성이라고 한다. + +```java +Wizard wizard = new GreatWizard(); + +wizard.heal(hero); // GreatWizard의 heal() 실행 +``` + +## 기억할 것 + +### 오버로딩과 오버라이딩 차이 + +| 구분 | 오버로딩 | 오버라이딩 | +|---|---|---| +| 관계 | 같은 클래스 안에서 사용 | 상속 관계에서 사용 | +| 메서드 이름 | 같아야 함 | 같아야 함 | +| 매개변수 | 달라야 함 | 같아야 함 | +| 리턴 타입 | 상관없지만 리턴 타입만 다르면 안 됨 | 같아야 함 | +| 목적 | 같은 이름으로 여러 기능 제공 | 부모 기능을 자식 방식으로 변경 | + +### `@Override` + +- 오버라이딩한 메서드에는 `@Override`를 붙인다. +- 오타나 매개변수 차이로 오버라이딩이 안 되는 실수를 막을 수 있다. + +```java +@Override +public void attack(Hero hero) { + super.attack(hero); +} +``` + +### `super` + +- `super`는 부모 클래스를 가리킨다. +- `super.attack(hero)`처럼 사용하면 부모 클래스의 메서드를 실행할 수 있다. +- 부모의 기능을 유지하면서 자식 클래스의 기능을 추가할 때 유용하다. + +## 실습 코드 + +### Wizard와 GreatWizard + +```java +package com.survivalcoding.day260616; + +public abstract class Wizard { + private int mp = 100; + + public void heal(Hero hero) { + int recovPoint = 20; + + if (this.mp < 10) { + System.out.println("마나가 부족합니다"); + return; + } + + hero.setHp(hero.getHp() + recovPoint); + setMp(getMp() - 10); + System.out.println("힐을 시전했습니다. 대상 HP : " + hero.getHp()); + } + + public int getMp() { + return mp; + } + + public void setMp(int mp) { + if (mp < 0) { + throw new IllegalArgumentException("마법사의 MP는 0 이상이어야 합니다."); + } + this.mp = mp; + } +} +``` + +```java +package com.survivalcoding.day260616; + +public class GreatWizard extends Wizard { + public GreatWizard() { + setMp(150); + } + + @Override + public void heal(Hero hero) { + int recovPoint = 25; + + if (getMp() < 5) { + System.out.println("마나가 부족합니다"); + return; + } + + hero.setHp(hero.getHp() + recovPoint); + setMp(getMp() - 5); + System.out.println("힐을 시전했습니다. 대상 HP : " + hero.getHp()); + } + + public void superHeal(Hero hero) { + if (getMp() < 50) { + System.out.println("마나가 부족합니다"); + return; + } + + hero.setHp(hero.getMaxHp()); + setMp(getMp() - 50); + System.out.println("슈퍼 힐을 시전했습니다. 대상 HP : " + hero.getHp()); + } +} +``` + +### Slime과 PoisonSlime + +```java +package com.survivalcoding.day260616; + +public class Slime { + private final String suffix = "slime"; + private String name; + private int hp = 40; + + public Slime(String name) { + this.name = name; + } + + public void attack(Hero hero) { + System.out.println("슬라임" + suffix + "이/가 공격했다"); + System.out.println("10의 데미지"); + + hero.setHp(hero.getHp() - 10); + } +} +``` + +```java +package com.survivalcoding.day260616; + +public class PoisonSlime extends Slime { + private int poisonCount = 5; + + public PoisonSlime(String name) { + super(name); + } + + @Override + public void attack(Hero hero) { + super.attack(hero); + + if (this.poisonCount > 0) { + System.out.println("추가로, 독 포자를 살포했다!"); + + int poisonDamage = hero.getHp() / 5; + hero.setHp(hero.getHp() - poisonDamage); + + System.out.println(poisonDamage + "포인트 데미지!"); + + this.poisonCount -= 1; + } + } +} +``` + +## 어려웠던 점 + +- 오버라이딩은 부모 메서드와 이름, 매개변수, 리턴 타입이 같아야 한다는 점이 중요했다. +- 자식 클래스에서 부모 클래스의 필드를 또 만들면 값이 따로 관리될 수 있다는 점이 헷갈렸다. +- 예를 들어 부모에도 `mp`가 있고 자식에도 `mp`가 있으면 `getMp()`와 `this.mp`가 서로 다른 값을 볼 수 있다. + +## 해결 방법 + +- 오버라이딩할 때는 항상 `@Override`를 붙여서 실수를 줄였다. +- 부모의 기능을 먼저 사용해야 하는 경우에는 `super.attack(hero)`처럼 `super`를 사용했다. +- 자식 클래스에서는 부모와 같은 필드를 다시 만들지 않고, 부모의 getter와 setter를 사용하도록 정리했다. + +```java +if (getMp() < 5) { + System.out.println("마나가 부족합니다"); + return; +} + +setMp(getMp() - 5); +``` + +## 내일 더 공부할 것 + +- 추상 클래스 +- 인터페이스 +- 다형성 \ No newline at end of file diff --git a/day01-basic/src/main/java/com/survivalcoding/day260608/Cleric.java b/day01-basic/src/main/java/com/survivalcoding/day260608/Cleric.java index d89be4b..3699e47 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260608/Cleric.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260608/Cleric.java @@ -5,16 +5,16 @@ public class Cleric { final int maxHp = 50; final int maxMp = 10; - int hp = maxHp; - int mp = maxMp; - String name; + public int hp = maxHp; + public int mp = maxMp; + public String name; - void selfAid() { + public void selfAid() { this.mp -= 5; this.hp = maxHp; } - int pray(int sec) { + public int pray(int sec) { Random point = new Random(); int randomPoint = point.nextInt(sec, sec + 2); int realRecovery = randomPoint; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260609/Cleric.java b/day01-basic/src/main/java/com/survivalcoding/day260609/Cleric.java index db124a3..60f8e41 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260609/Cleric.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260609/Cleric.java @@ -3,22 +3,22 @@ import java.util.Random; public class Cleric { - static final int maxHp = 50; - static final int maxMp = 10; - int hp; - int mp; - String name; + public static final int maxHp = 50; + public static final int maxMp = 10; + public int hp; + public int mp; + public String name; - Cleric(String name){ + public Cleric(String name){ this(name, maxHp, maxMp); } - Cleric(String name, int hp){ + public Cleric(String name, int hp){ this(name, hp, maxMp); } - Cleric(String name, int hp, int mp){ + public Cleric(String name, int hp, int mp){ this.name = name; this.hp = hp; this.mp = mp; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Cleric.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Cleric.java similarity index 95% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Cleric.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Cleric.java index ade8150..ab058b6 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Cleric.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Cleric.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; import java.util.Random; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/EncapsulationExam.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/EncapsulationExam.java similarity index 81% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/EncapsulationExam.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/EncapsulationExam.java index de13cf9..24901f8 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/EncapsulationExam.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/EncapsulationExam.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; public class EncapsulationExam { public static void main(String[] args) { diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/GameConfig.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/GameConfig.java similarity index 88% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/GameConfig.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/GameConfig.java index 379b5ff..2a99801 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/GameConfig.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/GameConfig.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; // util 성 클래스 public class GameConfig { diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Hero.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Hero.java similarity index 97% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Hero.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Hero.java index 938d131..17f7016 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Hero.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Hero.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; import java.util.Random; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Inn.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Inn.java similarity index 65% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Inn.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Inn.java index 9f5f90d..d192ff0 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Inn.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Inn.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; public class Inn { void checkIn(Hero hero){ diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/King.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/King.java similarity index 87% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/King.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/King.java index 9367cb2..8a541dd 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/King.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/King.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; public class King { public void callHero(Hero hero){ diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Kinoko.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Kinoko.java similarity index 81% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Kinoko.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Kinoko.java index 71e71d7..2a8f5e3 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Kinoko.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Kinoko.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; public class Kinoko { final int LEVEL = 10; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Main.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Main.java similarity index 91% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Main.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Main.java index 84e0da9..9d3f412 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Main.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Main.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; //TIP To Run code, press or // click the icon in the gutter. @@ -16,4 +16,4 @@ public static void main(String[] args) { int a = 10; long l = 10L; // literal 리터럴 } -} \ No newline at end of file +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Person.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Person.java similarity index 96% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Person.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Person.java index bacfd73..6ae9567 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Person.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Person.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; import java.time.LocalDate; //1. 대한민국의 도시 이름 모음 diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Quiz.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Quiz.java similarity index 94% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Quiz.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Quiz.java index c241763..eb5418b 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Quiz.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Quiz.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; public class Quiz { public static void main(String[] args) { diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Sword.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Sword.java similarity index 57% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Sword.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Sword.java index 01201d4..e8904de 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Sword.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Sword.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; public class Sword { String name; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Wand.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Wand.java similarity index 94% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Wand.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Wand.java index a028950..0cfad44 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Wand.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Wand.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; public class Wand { private String name; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Wizard.java b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Wizard.java similarity index 96% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Wizard.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/game/Wizard.java index 83a9d17..2f64686 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/main/java/com/survivalcoding/Wizard.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/game/Wizard.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; public class Wizard { private double power; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/build.gradle b/day01-basic/src/main/java/com/survivalcoding/day260615/game/build.gradle deleted file mode 100644 index b9a9d5e..0000000 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/build.gradle +++ /dev/null @@ -1,20 +0,0 @@ -plugins { - id 'java' -} - -group = 'com.survivalcoding' -version = '1.0-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - testImplementation platform('org.junit:junit-bom:6.0.0') - testImplementation 'org.junit.jupiter:junit-jupiter' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/day01-basic/src/main/java/com/survivalcoding/day260616/GreatWizard.java b/day01-basic/src/main/java/com/survivalcoding/day260616/GreatWizard.java new file mode 100644 index 0000000..7594114 --- /dev/null +++ b/day01-basic/src/main/java/com/survivalcoding/day260616/GreatWizard.java @@ -0,0 +1,32 @@ +package com.survivalcoding.day260616; + +public class GreatWizard extends Wizard { + public GreatWizard() { + super(150); + } + + @Override + public void heal(Hero hero) { + int recovPoint = 25; + + if (getMp() < 5) { + System.out.println("마나가 부족합니다"); + return; + } + + hero.setHp(hero.getHp() + recovPoint); + setMp(getMp() - 5); + System.out.println("힐을 시전했습니다. 대상 HP : " + hero.getHp()); + } + + public void superHeal(Hero hero) { + if (getMp() < 50) { + System.out.println("마나가 부족합니다"); + return; + } + + hero.setHp(hero.getMaxHp()); + setMp(getMp() - 50); + System.out.println("슈퍼 힐을 시전했습니다. 대상 HP : " + hero.getHp()); + } +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260616/Hero.java b/day01-basic/src/main/java/com/survivalcoding/day260616/Hero.java new file mode 100644 index 0000000..1c0680f --- /dev/null +++ b/day01-basic/src/main/java/com/survivalcoding/day260616/Hero.java @@ -0,0 +1,43 @@ +package com.survivalcoding.day260616; + +public class Hero { + private String name = "김영웅"; + private int hp = 100; + private int maxHP = 150; + + public Hero() { + } + + + public void attack(Slime slime){ + System.out.println(name + "이 공격했다."); + hp -= 10; + } + + public int getHp(){ + return this.hp; + } + + public void setHp(int hp){ + this.hp = hp; + } + + public void run(){ + System.out.println(name + "이 도망쳤다."); + } + + public Hero(String name, int hp){ + this.name = name; + this.hp = hp; + } + + public final void slip(){ + hp -= 5; + System.out.println(name + "는 미끄러졌다!"); + System.out.println("5의 데미지!"); + } + + public int getMaxHp() { + return this.maxHP; + } +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260616/Main.java b/day01-basic/src/main/java/com/survivalcoding/day260616/Main.java new file mode 100644 index 0000000..98a69f3 --- /dev/null +++ b/day01-basic/src/main/java/com/survivalcoding/day260616/Main.java @@ -0,0 +1,14 @@ +package com.survivalcoding.day260616; + +//TIP To Run code, press or +// click the icon in the gutter. +public class Main { + public static void main(String[] args) { + Hero hero = new Hero("홍길동", 100); + hero.run(); + + SuperHero superHero = new SuperHero("한석봉", 50); + superHero.run(); + + } +} \ No newline at end of file diff --git a/day01-basic/src/main/java/com/survivalcoding/day260616/PoisonSlime.java b/day01-basic/src/main/java/com/survivalcoding/day260616/PoisonSlime.java new file mode 100644 index 0000000..941bc95 --- /dev/null +++ b/day01-basic/src/main/java/com/survivalcoding/day260616/PoisonSlime.java @@ -0,0 +1,26 @@ +package com.survivalcoding.day260616; + +public class PoisonSlime extends Slime{ + private int poisonCount = 5; + + public PoisonSlime(String name){ + super(name); + } + + @Override + void attack(Hero hero){ + super.attack(hero); + + if(this.poisonCount > 0){ + System.out.println("추가로, 독 포자를 살포했다!"); + + int poisonDamage = hero.getHp()/5; + + hero.setHp(hero.getHp() - poisonDamage); + + System.out.println(poisonDamage + "포인트 데미지!"); + + this.poisonCount -= 1; + } + } +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260616/Slime.java b/day01-basic/src/main/java/com/survivalcoding/day260616/Slime.java new file mode 100644 index 0000000..527f2f3 --- /dev/null +++ b/day01-basic/src/main/java/com/survivalcoding/day260616/Slime.java @@ -0,0 +1,31 @@ +package com.survivalcoding.day260616; + +public class Slime { + final String suffix = "slime"; + private String name; + private int hp = 40; + + public int getHp(){ + return hp; + } + public void setHp(int hp){ + this.hp = hp; + } + public String getName(){ + return name; + } + public void setName(String name){ + this.name = name; + } + + void attack(Hero hero){ + System.out.println("슬라임" + suffix +"이/가 공격했다"); + System.out.println("10의 데미지"); + + hero.setHp(hero.getHp() - 10); + } + + public Slime(String name){ + this.name = name; + } +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260616/SuperHero.java b/day01-basic/src/main/java/com/survivalcoding/day260616/SuperHero.java new file mode 100644 index 0000000..372af75 --- /dev/null +++ b/day01-basic/src/main/java/com/survivalcoding/day260616/SuperHero.java @@ -0,0 +1,31 @@ +package com.survivalcoding.day260616; + +public class SuperHero extends Hero { + private boolean isFlying; + + public SuperHero(String name, int hp){ + super(name, hp); + } + + public boolean isFlying(){ + return isFlying; + } + + public void setFlying(boolean flying){ + isFlying = flying; + } + + @Override + public void run(){ + System.out.println("멋지게 퇴각했다."); + } + + @Override + public void attack(Slime slime){ + super.attack(slime); + if(isFlying){ + slime.setHp(slime.getHp() - 5); + System.out.println("5포인트의 추가 피해를 입혔따"); + } + } +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260616/Wizard.java b/day01-basic/src/main/java/com/survivalcoding/day260616/Wizard.java new file mode 100644 index 0000000..584750a --- /dev/null +++ b/day01-basic/src/main/java/com/survivalcoding/day260616/Wizard.java @@ -0,0 +1,38 @@ +package com.survivalcoding.day260616; + +public abstract class Wizard { + private int mp = 100; + + public Wizard(int mp) { + setMp(mp); + } + + public int getMp() { + return mp; + } + + public void setMp(int mp) { + if (mp < 0) { + throw new IllegalArgumentException("마법사의 MP은 0이상여야 합니다."); + } + this.mp = mp; + } + + public void heal(Hero hero){ + int recovPoint = 20; + + if(getMp() < 10 ){ + System.out.println("마나가 부족합니다"); + return; + } + else{ + hero.setHp(hero.getHp() + recovPoint); + setMp(getMp() - 10); + System.out.println("힐을 시전했습니다. 대상 HP : " + hero.getHp()); + } + } + + + + +} diff --git a/day01-basic/src/test/java/com/survivalcoding/MainTest.java b/day01-basic/src/test/java/com/survivalcoding/MainTest.java deleted file mode 100644 index 483a59e..0000000 --- a/day01-basic/src/test/java/com/survivalcoding/MainTest.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.survivalcoding; - -import org.junit.jupiter.api.Test; - -public class MainTest { - @Test - void testMain() { - - } -} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260608/day260608/ClericTest.java b/day01-basic/src/test/java/com/survivalcoding/day260608/day260608/ClericTest.java similarity index 97% rename from day01-basic/src/main/java/com/survivalcoding/day260608/day260608/ClericTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260608/day260608/ClericTest.java index 6346f9f..66332af 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260608/day260608/ClericTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260608/day260608/ClericTest.java @@ -1,5 +1,6 @@ package com.survivalcoding.day260608.day260608; +import com.survivalcoding.day260608.Cleric; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260609/day260609/MainTest.java b/day01-basic/src/test/java/com/survivalcoding/day260609/day260609/MainTest.java similarity index 96% rename from day01-basic/src/main/java/com/survivalcoding/day260609/day260609/MainTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260609/day260609/MainTest.java index 4a25da0..99b4c94 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260609/day260609/MainTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260609/day260609/MainTest.java @@ -1,5 +1,7 @@ package com.survivalcoding.day260609.day260609; +import com.survivalcoding.day260609.Cleric; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/ClericTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/game/ClericTest.java similarity index 90% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/ClericTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/game/ClericTest.java index 4820dd0..57fb680 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/ClericTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/game/ClericTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -13,7 +13,7 @@ class ClericTest { void constructor_ValidData_CreatesObject() { Cleric cleric1 = new Cleric("성직자1"); - assertEquals("성직자2", cleric1.name); + assertEquals("성직자1", cleric1.name); assertEquals(Cleric.maxHP, cleric1.hp); assertEquals(Cleric.maxMP, cleric1.mp); } @@ -38,4 +38,4 @@ void selfAid() { cleric.selfAid(); assertNotEquals(cleric.maxHP, cleric.hp); } -} \ No newline at end of file +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/HeroTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/game/HeroTest.java similarity index 94% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/HeroTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/game/HeroTest.java index 9b0473c..02d9052 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/HeroTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/game/HeroTest.java @@ -1,5 +1,4 @@ -package com.survivalcoding; - +package com.survivalcoding.day260615.game; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -34,4 +33,4 @@ void attack() { // then (검증) assertEquals(8, hero.getHp()); // 8 } -} \ No newline at end of file +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/PersonTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/game/PersonTest.java similarity index 98% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/PersonTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/game/PersonTest.java index 98ffaae..6d0cb7b 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/PersonTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/game/PersonTest.java @@ -1,5 +1,4 @@ -package com.survivalcoding; - +package com.survivalcoding.day260615.game; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -113,4 +112,4 @@ void exercise3StoresNameAndAgeInMapAndBuildsMessages() { assertEquals(List.of(FIRST_PERSON_AGE_MESSAGE, SECOND_PERSON_AGE_MESSAGE), messages); } -} \ No newline at end of file +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/WandTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/game/WandTest.java similarity index 98% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/WandTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/game/WandTest.java index c02b822..4604743 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/WandTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/game/WandTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -106,4 +106,4 @@ void setPowerThrowsExceptionWhenPowerIsTooHigh() { () -> wand.setPower(TOO_HIGH_POWER) ); } -} \ No newline at end of file +} diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/WizardTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/game/WizardTest.java similarity index 99% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/WizardTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/game/WizardTest.java index 4c56338..62e6b06 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/src/test/java/com/survivalcoding/WizardTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/game/WizardTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding; +package com.survivalcoding.day260615.game; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -180,4 +180,4 @@ void setMpThrowsExceptionWhenMpIsNegative() { () -> wizard.setMp(NEGATIVE_MP) ); } -} \ No newline at end of file +} diff --git a/day01-basic/src/test/java/com/survivalcoding/day260616/GreatWizardTest.java b/day01-basic/src/test/java/com/survivalcoding/day260616/GreatWizardTest.java new file mode 100644 index 0000000..840c595 --- /dev/null +++ b/day01-basic/src/test/java/com/survivalcoding/day260616/GreatWizardTest.java @@ -0,0 +1,84 @@ +package com.survivalcoding.day260616; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class GreatWizardTest { + private static final int INITIAL_GREAT_WIZARD_MP = 150; + + private static final int HERO_INITIAL_HP = 50; + private static final int HEAL_POINT = 25; + private static final int HEAL_MP_COST = 5; + private static final int EXPECTED_HP_AFTER_HEAL = HERO_INITIAL_HP + HEAL_POINT; + private static final int EXPECTED_MP_AFTER_HEAL = INITIAL_GREAT_WIZARD_MP - HEAL_MP_COST; + + private static final int HERO_DAMAGED_HP = 30; + private static final int SUPER_HEAL_MP_COST = 50; + private static final int EXPECTED_MP_AFTER_SUPER_HEAL = INITIAL_GREAT_WIZARD_MP - SUPER_HEAL_MP_COST; + + private static final int INSUFFICIENT_MP_FOR_HEAL = HEAL_MP_COST - 1; + private static final int INSUFFICIENT_MP_FOR_SUPER_HEAL = SUPER_HEAL_MP_COST - 1; + + private GreatWizard greatWizard; + private Hero hero; + + @BeforeEach + void setUp() { + greatWizard = new GreatWizard(); + hero = new Hero(); + } + + @Test + @DisplayName("오버라이딩된 heal은 용사의 HP를 25 회복하고 MP를 5 소비한다") + void healRecoversHeroHpAndConsumesMp() { + + hero.setHp(HERO_INITIAL_HP); + + greatWizard.heal(hero); + + assertEquals(EXPECTED_HP_AFTER_HEAL, hero.getHp()); + assertEquals(EXPECTED_MP_AFTER_HEAL, greatWizard.getMp()); + } + + @Test + @DisplayName("superHeal은 용사의 HP를 최대 HP까지 회복하고 MP를 50 소비한다") + void superHealRecoversHeroHpToMaxHpAndConsumesMp() { + + hero.setHp(HERO_DAMAGED_HP); + int expectedHeroHp = hero.getMaxHp(); + + greatWizard.superHeal(hero); + + assertEquals(expectedHeroHp, hero.getHp()); + assertEquals(EXPECTED_MP_AFTER_SUPER_HEAL, greatWizard.getMp()); + } + + @Test + @DisplayName("heal은 MP가 부족하면 HP와 MP를 변경하지 않는다") + void healDoesNotChangeHpAndMpWhenMpIsNotEnough() { + + hero.setHp(HERO_INITIAL_HP); + greatWizard.setMp(INSUFFICIENT_MP_FOR_HEAL); + + greatWizard.heal(hero); + + assertEquals(HERO_INITIAL_HP, hero.getHp()); + assertEquals(INSUFFICIENT_MP_FOR_HEAL, greatWizard.getMp()); + } + + @Test + @DisplayName("superHeal은 MP가 부족하면 HP와 MP를 변경하지 않는다") + void superHealDoesNotChangeHpAndMpWhenMpIsNotEnough() { + + hero.setHp(HERO_DAMAGED_HP); + greatWizard.setMp(INSUFFICIENT_MP_FOR_SUPER_HEAL); + + greatWizard.superHeal(hero); + + assertEquals(HERO_DAMAGED_HP, hero.getHp()); + assertEquals(INSUFFICIENT_MP_FOR_SUPER_HEAL, greatWizard.getMp()); + } +} \ No newline at end of file diff --git a/day01-basic/src/test/java/com/survivalcoding/day260616/PoisonSlimeTest.java b/day01-basic/src/test/java/com/survivalcoding/day260616/PoisonSlimeTest.java new file mode 100644 index 0000000..7eec621 --- /dev/null +++ b/day01-basic/src/test/java/com/survivalcoding/day260616/PoisonSlimeTest.java @@ -0,0 +1,32 @@ +package com.survivalcoding.day260616; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class PoisonSlimeTest { + private static final String POISON_SLIME_NAME = "A"; + + private static final int HERO_INITIAL_HP = 100; + private static final int SLIME_ATTACK_DAMAGE = 10; + private static final int POISON_DAMAGE_DIVISOR = 5; + + private static final int HERO_HP_AFTER_NORMAL_ATTACK = HERO_INITIAL_HP - SLIME_ATTACK_DAMAGE; + private static final int EXPECTED_POISON_DAMAGE = HERO_HP_AFTER_NORMAL_ATTACK / POISON_DAMAGE_DIVISOR; + private static final int EXPECTED_HERO_HP_AFTER_POISON_ATTACK = + HERO_HP_AFTER_NORMAL_ATTACK - EXPECTED_POISON_DAMAGE; + + @Test + @DisplayName("PoisonSlime의 attack은 일반 공격 후 독 데미지를 추가로 준다") + void attackDealsNormalDamageAndPoisonDamage() { + PoisonSlime poisonSlime = new PoisonSlime(POISON_SLIME_NAME); + Hero hero = new Hero(); + + hero.setHp(HERO_INITIAL_HP); + + poisonSlime.attack(hero); + + assertEquals(EXPECTED_HERO_HP_AFTER_POISON_ATTACK, hero.getHp()); + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 5e976e9..634a79e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,3 @@ rootProject.name = 'polytech_java2' include 'day01-basic' -include 'game' + From c559db683d4cbc17d11cde74c69ede851693c61d Mon Sep 17 00:00:00 2001 From: jongjae0305 Date: Tue, 16 Jun 2026 14:03:40 +0900 Subject: [PATCH 2/2] =?UTF-8?q?26.06.16=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/survivalcoding/day260615/{game => }/Cleric.java | 2 +- .../survivalcoding/day260615/{game => }/EncapsulationExam.java | 2 +- .../com/survivalcoding/day260615/{game => }/GameConfig.java | 2 +- .../main/java/com/survivalcoding/day260615/{game => }/Hero.java | 2 +- .../main/java/com/survivalcoding/day260615/{game => }/Inn.java | 2 +- .../main/java/com/survivalcoding/day260615/{game => }/King.java | 2 +- .../java/com/survivalcoding/day260615/{game => }/Kinoko.java | 2 +- .../main/java/com/survivalcoding/day260615/{game => }/Main.java | 2 +- .../java/com/survivalcoding/day260615/{game => }/Person.java | 2 +- .../main/java/com/survivalcoding/day260615/{game => }/Quiz.java | 2 +- .../java/com/survivalcoding/day260615/{game => }/Sword.java | 2 +- .../main/java/com/survivalcoding/day260615/{game => }/Wand.java | 2 +- .../java/com/survivalcoding/day260615/{game => }/Wizard.java | 2 +- .../survivalcoding/day260608/{day260608 => }/ClericTest.java | 2 +- .../com/survivalcoding/day260609/{day260609 => }/MainTest.java | 2 +- .../com/survivalcoding/day260615/{game => }/ClericTest.java | 2 +- .../java/com/survivalcoding/day260615/{game => }/HeroTest.java | 2 +- .../com/survivalcoding/day260615/{game => }/PersonTest.java | 2 +- .../java/com/survivalcoding/day260615/{game => }/WandTest.java | 2 +- .../com/survivalcoding/day260615/{game => }/WizardTest.java | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Cleric.java (95%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/EncapsulationExam.java (81%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/GameConfig.java (88%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Hero.java (97%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Inn.java (65%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/King.java (87%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Kinoko.java (81%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Main.java (91%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Person.java (96%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Quiz.java (94%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Sword.java (57%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Wand.java (94%) rename day01-basic/src/main/java/com/survivalcoding/day260615/{game => }/Wizard.java (96%) rename day01-basic/src/test/java/com/survivalcoding/day260608/{day260608 => }/ClericTest.java (97%) rename day01-basic/src/test/java/com/survivalcoding/day260609/{day260609 => }/MainTest.java (96%) rename day01-basic/src/test/java/com/survivalcoding/day260615/{game => }/ClericTest.java (95%) rename day01-basic/src/test/java/com/survivalcoding/day260615/{game => }/HeroTest.java (95%) rename day01-basic/src/test/java/com/survivalcoding/day260615/{game => }/PersonTest.java (98%) rename day01-basic/src/test/java/com/survivalcoding/day260615/{game => }/WandTest.java (98%) rename day01-basic/src/test/java/com/survivalcoding/day260615/{game => }/WizardTest.java (99%) diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Cleric.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Cleric.java similarity index 95% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Cleric.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Cleric.java index ab058b6..34897e0 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Cleric.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Cleric.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; import java.util.Random; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/EncapsulationExam.java b/day01-basic/src/main/java/com/survivalcoding/day260615/EncapsulationExam.java similarity index 81% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/EncapsulationExam.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/EncapsulationExam.java index 24901f8..4840078 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/EncapsulationExam.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/EncapsulationExam.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; public class EncapsulationExam { public static void main(String[] args) { diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/GameConfig.java b/day01-basic/src/main/java/com/survivalcoding/day260615/GameConfig.java similarity index 88% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/GameConfig.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/GameConfig.java index 2a99801..a39c1da 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/GameConfig.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/GameConfig.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; // util 성 클래스 public class GameConfig { diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Hero.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Hero.java similarity index 97% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Hero.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Hero.java index 17f7016..30f674f 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Hero.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Hero.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; import java.util.Random; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Inn.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Inn.java similarity index 65% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Inn.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Inn.java index d192ff0..b213187 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Inn.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Inn.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; public class Inn { void checkIn(Hero hero){ diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/King.java b/day01-basic/src/main/java/com/survivalcoding/day260615/King.java similarity index 87% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/King.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/King.java index 8a541dd..8061e3f 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/King.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/King.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; public class King { public void callHero(Hero hero){ diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Kinoko.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Kinoko.java similarity index 81% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Kinoko.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Kinoko.java index 2a8f5e3..210acb6 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Kinoko.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Kinoko.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; public class Kinoko { final int LEVEL = 10; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Main.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Main.java similarity index 91% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Main.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Main.java index 9d3f412..56b488f 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Main.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Main.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; //TIP To Run code, press or // click the icon in the gutter. diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Person.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Person.java similarity index 96% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Person.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Person.java index 6ae9567..2c95cb2 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Person.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Person.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; import java.time.LocalDate; //1. 대한민국의 도시 이름 모음 diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Quiz.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Quiz.java similarity index 94% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Quiz.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Quiz.java index eb5418b..191ed07 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Quiz.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Quiz.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; public class Quiz { public static void main(String[] args) { diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Sword.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Sword.java similarity index 57% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Sword.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Sword.java index e8904de..6c6deaf 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Sword.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Sword.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; public class Sword { String name; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Wand.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Wand.java similarity index 94% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Wand.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Wand.java index 0cfad44..bf3cbef 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Wand.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Wand.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; public class Wand { private String name; diff --git a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Wizard.java b/day01-basic/src/main/java/com/survivalcoding/day260615/Wizard.java similarity index 96% rename from day01-basic/src/main/java/com/survivalcoding/day260615/game/Wizard.java rename to day01-basic/src/main/java/com/survivalcoding/day260615/Wizard.java index 2f64686..868ac73 100644 --- a/day01-basic/src/main/java/com/survivalcoding/day260615/game/Wizard.java +++ b/day01-basic/src/main/java/com/survivalcoding/day260615/Wizard.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; public class Wizard { private double power; diff --git a/day01-basic/src/test/java/com/survivalcoding/day260608/day260608/ClericTest.java b/day01-basic/src/test/java/com/survivalcoding/day260608/ClericTest.java similarity index 97% rename from day01-basic/src/test/java/com/survivalcoding/day260608/day260608/ClericTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260608/ClericTest.java index 66332af..fcd6a6c 100644 --- a/day01-basic/src/test/java/com/survivalcoding/day260608/day260608/ClericTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260608/ClericTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260608.day260608; +package com.survivalcoding.day260608; import com.survivalcoding.day260608.Cleric; import org.junit.jupiter.api.DisplayName; diff --git a/day01-basic/src/test/java/com/survivalcoding/day260609/day260609/MainTest.java b/day01-basic/src/test/java/com/survivalcoding/day260609/MainTest.java similarity index 96% rename from day01-basic/src/test/java/com/survivalcoding/day260609/day260609/MainTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260609/MainTest.java index 99b4c94..63d760f 100644 --- a/day01-basic/src/test/java/com/survivalcoding/day260609/day260609/MainTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260609/MainTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260609.day260609; +package com.survivalcoding.day260609; import com.survivalcoding.day260609.Cleric; diff --git a/day01-basic/src/test/java/com/survivalcoding/day260615/game/ClericTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/ClericTest.java similarity index 95% rename from day01-basic/src/test/java/com/survivalcoding/day260615/game/ClericTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/ClericTest.java index 57fb680..8ca8e1b 100644 --- a/day01-basic/src/test/java/com/survivalcoding/day260615/game/ClericTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/ClericTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/day01-basic/src/test/java/com/survivalcoding/day260615/game/HeroTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/HeroTest.java similarity index 95% rename from day01-basic/src/test/java/com/survivalcoding/day260615/game/HeroTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/HeroTest.java index 02d9052..e77adab 100644 --- a/day01-basic/src/test/java/com/survivalcoding/day260615/game/HeroTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/HeroTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/day01-basic/src/test/java/com/survivalcoding/day260615/game/PersonTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/PersonTest.java similarity index 98% rename from day01-basic/src/test/java/com/survivalcoding/day260615/game/PersonTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/PersonTest.java index 6d0cb7b..7706922 100644 --- a/day01-basic/src/test/java/com/survivalcoding/day260615/game/PersonTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/PersonTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/day01-basic/src/test/java/com/survivalcoding/day260615/game/WandTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/WandTest.java similarity index 98% rename from day01-basic/src/test/java/com/survivalcoding/day260615/game/WandTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/WandTest.java index 4604743..b344b59 100644 --- a/day01-basic/src/test/java/com/survivalcoding/day260615/game/WandTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/WandTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/day01-basic/src/test/java/com/survivalcoding/day260615/game/WizardTest.java b/day01-basic/src/test/java/com/survivalcoding/day260615/WizardTest.java similarity index 99% rename from day01-basic/src/test/java/com/survivalcoding/day260615/game/WizardTest.java rename to day01-basic/src/test/java/com/survivalcoding/day260615/WizardTest.java index 62e6b06..df86615 100644 --- a/day01-basic/src/test/java/com/survivalcoding/day260615/game/WizardTest.java +++ b/day01-basic/src/test/java/com/survivalcoding/day260615/WizardTest.java @@ -1,4 +1,4 @@ -package com.survivalcoding.day260615.game; +package com.survivalcoding.day260615; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test;