- ๊ฐ์ฒด์งํฅ์ ๊ฝ์ ๋ฐ๋ก ์ฌํ์ฉ์ผ ๊ฒ์ด๋ค.
์์์ ๊ฐ์ฒด์งํฅ์ ์ฌํ์ฉ์ฑ์ ๊ทน๋ํ์ํจ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ผ๊ณ ํ ์ ์๋ค.
ํจ์จ์ฑ์ ์ํ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ ์ฌ๊ณ ๋ ฅ์ด ํ์ํ๋ฉฐ ์ด๋ ค์ด ๋ด์ฉ์ด๊ธฐ๋ ํ๋ค.
- ์์(Inheritance)์ด๋ ๋ฌผ๋ ค์ค๋ค๋ ์๋ฏธ๊ฐ ์๋ค.
์ด๋ค ๊ฐ์ฒด๊ฐ ์์ ๋ ๊ทธ ๊ฐ์ฒด์ ๋ณ์์ ๋ฉ์๋๋ฅผ
๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ๋ฌผ๋ ค ๋ฐ์ ์ ์๋ ๊ธฐ๋ฅ์ ๋งํ๋ค.
- ์์์ ํํํ๊ธฐ ์ํด์ extends๋ฅผ ๋ถ์ธ๋ค.
๋ถ๋ชจ ํด๋์ค๋ฅผ ํธ์ถํ๊ธฐ ์ํด์ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ(์ฌ์ ์) ๋์ด์ผ ํ๋ค
ใดsuper()์ ํตํด ์์๊ด๊ณ์ ์๋ ๋ถ๋ชจํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํ ์ ์๋ค.
- ์์ ๊ด๊ณ์์ ์์ ํด๋์ค์ ๋ณ์ ์ฝ์ ์ ๋ฐ๋์ ๋ถ๋ชจํด๋์ค์ ์์ฑ์๊ฐ ํธ์ถ์ด ๋๋ค.
์ ๊ทผ์ง์ ์์ ๋ฐ๋ผ protected์ public์ ์์ ๊ด๊ณ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋
private์ getter/setter์ ์ํ ๊ฐ์ ์ ๊ทผ ์ธ์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค.
- ๋ถ๋ชจ๊ฒ์ ๋ฎ์ด ์ด๊ฒ, ์ฌ์ ์ ๋๋ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋งํ๋ค.
ใด๋ฉ์๋๋ฅผ ์ ์ํ์ฌ ๋ฎ์ด์ฐ๋ ๊ฒ์ด๋ค. ๋ฐํ๊ฐ์ ํ๋ ๊ฐ์์ผ๋ง ํ๋ค.
ใด๋จ, final์ ํด๋์ค๋ ๋ฉ์๋๋ ๋ณ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ํ ์ ์๋ค.
โ
์ค๋ฒ๋ผ์ด๋ฉ์ ๋ชฉ์
1. ๋ถ๋ชจ ํด๋์ค ๋ฉ์๋์ ๊ธฐ๋ฅ ๋ณ๊ฒฝ
2. ๋ถ๋ชจ ํด๋์ค ๋ฉ์๋์ ๊ธฐ๋ฅ ์ถ๊ฐ
showState()๋ ์์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉ๋์๋ค. (๋ฐ๊พผ ๊ฒ์ด๋ค)
์คํผ์ปค์ ๋ณผ๋ฅจ์ ํฌ๊ธฐ๋ฅผ ๋ฒ ์ด์ค์ ๋ณผ๋ฅจ์ ํฌ๊ธฐ๋ก ๋ณ๊ฒฝํ ๊ฒ(์ฌ์ ์) => ์ค๋ฒ๋ผ์ด๋ฉ
- ํด๋์ค B๋ ๋ถ๋ชจ ํด๋์ค A๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ๊ณ
ํด๋์ค C๋ ํด๋์คB๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ๋ค.
ํด๋์ค A B C๋ฅผ ์ถ๋ ฅํ๋ฉด ์ ์ฒด C ํด๋์ค์ ์ถ๋ ฅ๋ฌธ๋ง ๋์จ๋ค.
โ ์ค๋ฒ๋ผ์ด๋ฉ์ผ๋ก ์ธํด A์ B๊ฐ ๋ชจ๋ ๊ฐ๋ ค์ก๊ธฐ ๋๋ฌธ์ด๋ค
- ์ค๋ฒ๋ก๋ฉ์ ๋์ฑํ ์ ์๋ ๋ฌธ๋ฒ์ด๋ค.
- ๋ฉ์๋์ ์ฌ๋ฌ๊ฐ์ง์ ํธ์ถ ํ์์ผ๋ก ๋์ฒดํ ์ ์๋ค.
ใ
public PrintStream printf(String format, Object ...args) { ... }
ใด๋งค๊ฐ๋ณ์์ ๊ฐ์๋ฅผ ๋์ ์ผ๋ก ์ง์ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
ใด๋งค๊ฐ๋ณ์๊ฐ ๋ช๊ฐ๊ฐ ์ฌ์ง ๋ชจ๋ฅด๋ ๋ณ์๋ก ๋๋ค๋ ๋ป์ด๋ค.
ใ ์ฌ์ฉ๋ฒ(๊ท์น):
1. ๊ฐ๋ณ์ธ์๋ฅผ ๋งค๊ฐ๋ณ์ ์ค ์ ์ผ ๋ง์ง๋ง์ ์ฌ์ฉํด์ผ ํ๋ค
ใด๊ฐ๋ณ์ธ์๋ฅผ ์์ ๋๋ฉด ๋ฉ์๋์์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์ฌ ๋
ใด์ด๋๊น์ง๊ฐ ๊ฐ๋ณ์ธ์์ธ์ง ๊ตฌ๋ถ์ ํ ์ ์๊ฒ ๋๋ฏ๋ก ์ค๋ฅ ๋ฐ์
2. ๊ฐ์ ํ์์ ๋งค๊ฐ๋ณ์๊ฐ ์กด์ฌํ๋ ์ค๋ฒ๋ก๋ฉ์์๋ ํผํด์ผ ํ๋ค
ใดํธ์ถํ์ฌ ์ ๋ฌํด์ค๋ ์ด๋ค ๋ฉ์๋๋ก ์ ๋ฌํด์ผํ๋์ง ์ ๋งค๋ชจํธํด์ ธ์ ์ค๋ฅ ๋ฐ์
- ๊ธฐ๋ฅ ๊ตฌํ์ด ์์ด ํธ์ถ๋ฐฉ๋ฒ(์ด๋ฆ)๋ง ํด๋์ค์ ํ์๋ ํด๋์ค์ด๋ค.
ใด๋ฌด์กฐ๊ฑด ์ค๋ฒ๋ผ์ด๋ฉํด์ ์ฌ์ ์ํ์ฌ ์ฌ์ฉํด์ผ๋ง ํ๋ค.- ์ถ์ ํด๋์ค๋ ์ด๋ป๊ฒ ๋์ํด์ผ ํ๋์ง ์ ์ ์์ผ๋ฏ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
์ฆ, new๋ฅผ ์ฌ์ฉ ํ ์ ์๋ค.
- ์์ ๊ด๊ณ๊ฐ ์๋ ํด๋์ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ตฌ์กฐ์ด๋ค.
- ์ธํฐํ์ด์ค์ ํน์ง
- ์ธํฐํ์ด์ค๋ผ๋ฆฌ ์์๋ ๊ฐ๋ฅํ๋ค
- ์ธํฐํ์ด์ค๊ฐ ์ผ๋ฐ ํด๋์ค๋ฅผ ์์ํ ์๋ ์๋ค.
- Java๋ ๋ค์ค์์์ด ์๋ค. ์ธํฐํ์ด์ค๋ ๊ธฐ๋ฅ๋ง ์์ด ๋ค์ค์์์ด ๊ฐ๋ฅํ๋ค.
- ์ธํฐํ์ด์ค๋ก ์ ์ธํ ๋ณ์๋ public static final๋ก ์ ์ธํ๋ค.
- ๊ทธ๋ ๋ค๋ฉด ์ธํฐํ์ด์ค์ ์ถ์ ํด๋์ค์ ์ฐจ์ด๊ฐ ๋ฌด์์ผ๊น?
- ์ถ์ํด๋์ค๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ํตํด ์ฌ์ ์ํ์ฌ ์ฌ์ฉํด์ผ ํ๋ฉฐ ์์๊ณผ ๊ด๋ จ์ด ์๋ค.
- ์ธํฐํ์ด์ค๋ ๋จ์ํ ๊ธฐ๋ฅ๋ง์ ์๋ฏธํ๋ค.
- ์ถ์ํด๋์ค๋ ๋ค์ค์์์ด ๋ถ๊ฐ๋ฅํ์ง๋ง, ์ธํฐํ์ด์ค๋ ๋ค์ค ์์์ด ๊ฐ๋ฅํ๋ค.
- ์ถ์ํด๋์ค๋ ์์ ๊ด๊ณ๋ฅผ ์ญ ํ๊ณ ์ฌ๋ผ๊ฐ์๋ ๊ฐ์ ์กฐ์ํด๋์ค๋ฅผ ์์ํ๋๋ฐ
๊ธฐ๋ฅ๊น์ง ์๋ณํ ๋๊ฐ์ ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ ์ฃผ๋ก ์ฌ์ฉํ๋ค.- ์ธํฐํ์ด์ค๋ ์์ ๊ด๊ณ๋ฅผ ์ญ ํ๊ณ ์ฌ๋ผ๊ฐ์๋ ๋ค๋ฅธ ์กฐ์ํด๋์ค๋ฅผ ์์ํ๋๋ฐ
๊ฐ์ ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ ์ธํฐํ์ด์ค ์ฌ์ฉํ๋ค.- ์ถ์ํด๋์ค๋ IS - A "~์ด๋ค"์์ผ๋ก ํด์๋๋ค.
- ์ธํฐํ์ด์ค๋ HAS - A "~์ ํ ์ ์๋"์์ผ๋ก ํด์๋๋ค.
- ๊ทธ๋ ๋ค๋ฉด ์ธํฐํ์ด์ค์ ์ถ์ ํด๋์ค์ ๊ณตํต์ ์ ๋ฌด์์ผ๊น?
- ์ถ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
- ์ธ์คํด์คํ ํ ์ ์๋ค (new ์์ฑ์ ์ฌ์ฉ X)
- ์ธํฐํ์ด์ค ํน์ ์ถ์ ํด๋์ค๋ฅผ ์์๋ฐ์ ๊ตฌํํ ๊ตฌํ์ฒด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ์ธํฐํ์ด์ค์ ์ถ์ํด๋์ค๋ฅผ ๊ตฌํ, ์์ํ ํด๋์ค๋ ์ถ์ ๋ฉ์๋๋ฅผ ๋ฐ๋์ ๊ตฌํํ์ฌ์ผ ํ๋ค.
- ํ๋์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ์ง ํ์ ์ ๊ฐ์ง ์ ์๋ ๊ฒ์ ์๋ฏธ
- ๋์ผํ ์กฐ์๋ฐฉ๋ฒ์ผ๋ก ๋์์ํค์ง๋ง ๋์๋ฐฉ๋ฒ์ ๋ค๋ฅธ ๊ฒ.
ใดํค๋ณด๋๋ฅผ ๋๋ฅธ๋ค โ ๊ฒฐ๊ณผ๋ ๋ค ๋ค๋ฅด๋ค๋ ๊ฒ๊ณผ ๊ฐ์.- ์๋ฐ์์ ๋ํ์ ์ผ๋ก ์ค๋ฒ๋ก๋ฉ, ์ค๋ฒ๋ผ์ด๋ฉ, ์ ์บ์คํ , ๋ค์ด์บ์คํ ,
์ธํฐํ์ด์ค, ์ถ์๋ฉ์๋, ์ถ์ํด๋์ค๊ฐ ๋ชจ๋ ๋คํ์ฑ์ ํด๋นํ๋ค.
- ๋คํ์ฑ์ ์ฅ์
- ์ ์ง๋ณด์ : ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ํ๋์ ํ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค.
- ์ฌ์ฌ์ฉ์ฑ : ๊ฐ์ฒด์ ์ฌ์ฌ์ฉ์ด ์ฌ์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค.
- ๋์จํ ๊ฒฐํฉ : ํด๋์ค ๊ฐ์ ์์กด์ฑ์ ์ค์ฌ ํ์ฅ์ฑ์ ๋์์ง๊ณ ๊ฒฐํฉ๋๋ ๋ฎ์์ง๋ค.
- ๋คํ์ฑ์ ํ์ฉ
์นดํ์์ ์ปคํผ๋ฅผ ์ฃผ๋ฌธํ๋ ๊ฒ์ ์๋ก Coffee ํด๋์ค์๋ ๊ฐ๊ฒฉ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
Coffee ํด๋์ค๋ฅผ ์์๋ฐ๋ Amercano ํด๋์ค์ CaffeLatte ํด๋์ค๊ฐ ์กด์ฌํ๋ค.
์๋์ 5๋ง ์์ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
class Coffee {
int price;
public Coffee(int price) {
this.price = price;
}
}
class Americano extends Coffee {
public Americano() {
super(4000); // ์์ ๋ฉ์๋ ์์ฑ์ ํธ์ถ
}
// Object ํด๋์ค toString() ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
public String toString() {
return "์๋ฉ๋ฆฌ์นด๋
ธ";
}
}
class CaffeLatte extends Coffee {
public CaffeLatte() {
super(5000);
}
// Object ํด๋์ค toString() ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
public String toString() {
return "์นดํ๋ผ๋ผ";
}
}
class Customer {
int money = 50000;
// ์ปคํผ ๊ตฌ๋งค ๋ฉ์๋(๋คํ์ฑ ํ์ฉ)
void buyCoffee(Coffee coffee) {
if (money < coffee.price) {
System.out.println("์์ก์ด ๋ถ์กฑํฉ๋๋ค.");
return;
}
money -= coffee.price;
System.out.println(coffee + "๋ฅผ ๊ตฌ๋งคํ์์ต๋๋ค.");
}
/* ์๋ฉ๋ฆฌ์นด๋
ธ, ์นดํ๋ผ๋ผ ๊ตฌ๋งค ๋ฉ์๋๋ฅผ ๋ฐ๋ก ๊ตฌํํ์ง ์์๋ ๋จ
(์๋ต๊ฐ๋ฅํ๋ฏ๋ก ์ฃผ์์ฒ๋ฆฌ)
void buyCoffee(Americano americano) {
money -= americano.price;
}
void buyCoffee(CaffeLatte caffeLatte) {
money -= caffeLatte.price;
} */
}
public class PolymorphismEx {
public static void main(String[] args) {
Customer me = new Customer();
me.buyCoffee(new Americano());
me.buyCoffee(new CaffeLatte());
System.out.println("ํ์ฌ ์์ก: " + me.money);
}
}
๊ฐ์ฒด๊ฐ ์ด๋ค ํด๋์ค์ธ์ง, ์ด๋ค ํด๋์ค๋ฅผ ์์๋ฐ์๋์ง ํ์ธํ๋๋ฐ ์ฌ์ฉํ๋ ์ฐ์ฐ์
class A { }
class B extends A { }
public static void main(String[] args) {
A mc1 = new A();
B mc2 = new B();
// mc1๋ณ์๋ A ํด๋์ค์๊ฒ ์์๋ฐ์๋์? true ์ถ๋ ฅ
System.out.println(mc1 instanceof A);
// mc2๋ณ์๋ A ํด๋์ค์๊ฒ ์์๋ฐ์๋์? A๋ฅผ ์์ ๋ฐ์๊ธฐ ๋๋ฌธ(true ์ถ๋ ฅ)
System.out.println(mc2 instanceof A);
// mc1๋ณ์๋ B ํด๋์ค์๊ฒ ์์๋ฐ์๋์? false ์ถ๋ ฅ
System.out.println(mc1 instanceof B);
// mc2๋ณ์๋ B ํด๋์ค์๊ฒ ์์๋ฐ์๋์? true ์ถ๋ ฅ
System.out.println(mc2 instanceof B);
- ์์๊ด๊ณ์ ๋์ฌ์๋ ํด๋์ค์ ์์ฑ์ ์ ์ ๋ฐ ํธ์ถ๋ฐฉ์์ ๊ธฐ๋ณธ์ผ๋ก
๋จ์ ๊ณ ๊ธฐ๋(๋ผ์ง๊ณ ๊ธฐ 180g, ์๊ณ ๊ธฐ 600g, ์๊ณ ๊ธฐ 540g)์ ์ถ๋ ฅํ๋ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์ ์ํ์์ค.- ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ์ ์์๊ด๊ณ์ ์๋ ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ ์ ํ ์์ฑ์์ ํจ๊ป
์ด๋ฆ, ๋์ด, ์ฃผ์, ์ ํ๋ฒํธ๋ฅผ ์ธ์๋ก ์ถ๋ ฅ๋๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค.- ๊ฐ๋ก์ ์ธ๋ก๋ฅผ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ์ ๋ฐ์์
์ ์ฌ๊ฐํ์ ์๋ฏธํ๋ Squareํด๋์ค์ ์ง์ฌ๊ฐํ์ ์๋ฏธํ๋ Rectangleํด๋์ค๋ฅผ ์ ์ํ๊ณ
๋์ ๋ฉด์ ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค.- ๋ถ๊ณ ๊ธฐ๋ฒ๊ฑฐ ๋จํ 4500์, ์์ฌ๋ฃ: ์ ๊ณ ๊ธฐํจํฐ, ์ผ์ฐน, ํผํด, ์ธํธ๊ตฌ๋งค์
์ฝ๋ผ 1000์, ๊ฐ์ํ๊น 1500์ ๊ณ ์ ์ผ๋ก ์ถ๊ฐ
์นํจ๋ฒ๊ฑฐ ๋จํ 4200์, ์์ฌ๋ฃ ๋ญ๊ณ ๊ธฐํจํฐ, ๋ง์๋ค์ฆ, ์์์ถ,
์ธํธ๊ตฌ๋งค์ 500์ ํ ์ธ์ด ๋๋
ํด๋์ค์ ์์ ๊ด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ ฅ๋๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค.- ์ฌ์ฉ์๋ก๋ถํฐ ์ด๋ฆ์ ์ ๋ ฅ๋ฐ์ ์บ๋ฆญํฐ๋ฅผ ์์ฑํ๊ณ ๋ค์ํ ๋ชฌ์คํฐ์ ์ ํฌ๋ฅผ ํผ์ณ
์์ดํ ์ ๋จ์ด๋จ๋ฆฌ๋ ๊ฐ๋จํ RPG ๊ฒ์์ ๋ง๋์์ค.
/*
์์๊ด๊ณ์ ๋์ฌ์๋ ํด๋์ค์ ์์ฑ์ ์ ์ ๋ฐ ํธ์ถ๋ฐฉ์์ ๊ธฐ๋ณธ์ผ๋ก
๋จ์ ๊ณ ๊ธฐ๋(๋ผ์ง๊ณ ๊ธฐ 180g, ์๊ณ ๊ธฐ 600g, ์๊ณ ๊ธฐ 540g)์ ์ถ๋ ฅํ๋ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์ ์ํ์์ค.
*/
class Meat // ๋ถ๋ชจ ํด๋์ค Meat
{
int pig; // intํ pig ๋ณ์
public Meat(int pig) // ์์ฑ์ ์ค๋ฒ๋ผ์ด๋ฉ(๋งค๊ฐ๋ณ์ pig)
{
this.pig=pig; // ์์ ์ ๊ฐ์ฒด ์ ๊ทผ
}
}
class Cow extends Meat // Meat์ ์์๋ Cow ์์ ํด๋์ค
{
int cow; // intํ cow ๋ณ์
public Cow(int pig, int cow)
{
super(pig); // ๋ถ๋ชจ ํด๋์ค๋ก pig๋ฅผ ๋ณด๋
this.cow = cow; // ์์ ์ ๊ฐ์ฒด ์ ๊ทผ
}
}
class Sheep extends Cow
{
int sheep;
public Sheep(int pig, int cow, int sheep)
{
super(pig, cow);
this.sheep = sheep;
}
public void show()
{
System.out.println("๋จ์ ๋ผ์ง๊ณ ๊ธฐ: "+ pig + "g");
System.out.println("๋จ์ ์๊ณ ๊ธฐ: "+ cow + "g");
System.out.println("๋จ์ ์๊ณ ๊ธฐ: "+ sheep + "g");
}
}
public class Put01
{
public static void main(String[] args)
{
Sheep first = new Sheep(180,600,540);
first.show();
}
}
/*
์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ์ ๋ฐ์ ์์๊ด๊ณ์ ์๋ ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ ์ ํ ์์ฑ์์ ํจ๊ป
์ด๋ฆ, ๋์ด, ์ฃผ์, ์ ํ๋ฒํธ๋ฅผ ์ธ์๋ก ์ถ๋ ฅ๋๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค.
*/
import java.util.Scanner;
class Person01
{
public String name;
int age;
public Person01(String name,int age)
{
this.name = name;
this.age = age;
}
public void PersonShow()
{
System.out.println("=====================");
System.out.println("์ด๋ฆ: "+name);
System.out.println("๋์ด: "+age);
}
}
class Person02 extends Person01
{
private String address;
private String number;
public Person02(String name,int age,String address, String number)
{
super(name,age);
this.address = address;
this.number = number;
}
public void show()
{
PersonShow();
System.out.println("์ฃผ์: "+address);
System.out.println("์ ํ๋ฒํธ: "+number);
System.out.println("=====================");
}
}
public class Put02
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("์ด๋ฆ ์
๋ ฅ: ");
String name = scan.nextLine();
System.out.println("์ฃผ์ ์
๋ ฅ: ");
String address = scan.nextLine();
System.out.println("์ ํ๋ฒํธ ์
๋ ฅ: ");
String number = scan.nextLine();
System.out.println("๋์ด ์
๋ ฅ: ");
int age = scan.nextInt();
Person02 info = new Person02(name, age, address, number);
info.show();
}
}
/*
๊ฐ๋ก์ ์ธ๋ก๋ฅผ ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ์ ๋ฐ์์
์ ์ฌ๊ฐํ์ ์๋ฏธํ๋ Squareํด๋์ค์ ์ง์ฌ๊ฐํ์ ์๋ฏธํ๋ Rectangleํด๋์ค๋ฅผ ์ ์ํ๊ณ
๋์ ๋ฉด์ ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค.
*/
class Square // ์ ์ฌ๊ฐํ ๋ถ๋ชจ ํด๋์ค
{
// ๋ฉค๋ฒ ๋ณ์
private int x; // ํ๋ณ ์ ๋ณด ์๋
public Square(int x) // ์์ฑ์
{
this.x=x;
}
public void ShowSquare()
{
System.out.println("์ ์ฌ๊ฐํ์ ๋ฉด์ : "+x*x);
}
}
class Rectangle
{
// ๋ฉค๋ฒ ๋ณ์
private int width; // ๊ฐ๋ก ์ ๋ณด ์๋
private int height; // ์ธ๋ก ์ ๋ณด ์๋
public Rectangle(int width, int height) // ์์ฑ์
{
this.width = width;
this.height = height;
}
public void ShowRectangle()
{
System.out.println("์ง์ฌ๊ฐํ์ ๋ฉด์ : "+width*height);
}
}
public class Put03
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("์ง์ฌ๊ฐํ์ ๊ฐ๋ก: ");
int w = scan.nextInt();
System.out.println("์ง์ฌ๊ฐํ์ ์ธ๋ก: ");
int h = scan.nextInt();
System.out.println("์ ์ฌ๊ฐํ์ ํ ๋ณ: ");
int j = scan.nextInt();
Rectangle rec = new Rectangle(w,h);
rec.ShowRectangle();
Square sqr = new Square(j);
sqr.ShowSquare();
}
}
/*
๋ถ๊ณ ๊ธฐ๋ฒ๊ฑฐ ๋จํ 4500์, ์์ฌ๋ฃ: ์ ๊ณ ๊ธฐํจํฐ, ์ผ์ฐน, ํผํด, ์ธํธ๊ตฌ๋งค์
์ฝ๋ผ 1000์, ๊ฐ์ํ๊น 1500์ ๊ณ ์ ์ผ๋ก ์ถ๊ฐ
์นํจ๋ฒ๊ฑฐ ๋จํ 4200์, ์์ฌ๋ฃ ๋ญ๊ณ ๊ธฐํจํฐ, ๋ง์๋ค์ฆ, ์์์ถ,
์ธํธ๊ตฌ๋งค์ 500์ ํ ์ธ์ด ๋๋
ํด๋์ค์ ์์ ๊ด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ ฅ๋๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค.
*/
//ํ๋ฒ๊ฑฐ๋ฅผ ์ถ์ํ
class Burger
{
/*
* ๋ฉค๋ฒ๋ณ์ : ๋ฒ๊ฑฐ๋ช
, ๊ฐ๊ฒฉ, ํจํฐ, ์์ค, ์ผ์ฑ ์ธ์์์ฑ์ ๋ฉค๋ฒ๋ฉ์๋ :
* ๊ฐ๊ฒฉ๋ฐํ(getter), ํ๋ฒ๊ฑฐ์ ๋ณด์ถ๋ ฅ
*/
private String burgerName; //๋ฒ๊ฑฐ๋ช
์ ๋ณด ์๋
private int price; //๋ฒ๊ฑฐ๋ช
์ ๋ณด ์๋
private String patty; //ํจํฐ ์ ๋ณด ์๋
private String sauce; //์์ค ์ ๋ณด ์๋
private String vegetable; //์ผ์ฑ ์ ๋ณด ์๋
// ์ธ์์์ฑ์
public Burger(String burgerName, int price, String patty, String sauce, String vegetable)
{
super();
this.burgerName = burgerName;
this.price = price;
this.patty = patty;
this.sauce = sauce;
this.vegetable = vegetable;
}
// getter/setter : private์ผ๋ก ๊ฐ์ ์ ๊ทผํ๊ธฐ ์ํด
public String getBurgerName()
{
return burgerName;
}
public void setBurgerName(String burgerName)
{
this.burgerName = burgerName;
}
public int getPrice()
{
return price;
}
public void setPrice(int price)
{
this.price = price;
}
public String getPatty()
{
return patty;
}
public void setPatty(String patty)
{
this.patty = patty;
}
public String getSauce()
{
return sauce;
}
public void setSauce(String sauce)
{
this.sauce = sauce;
}
public String getVegetable()
{
return vegetable;
}
public void setVegetable(String vegetable)
{
this.vegetable = vegetable;
}
// ํ๋ฒ๊ฑฐ ์ ๋ณด ์ถ๋ ฅ
public void showBurger()
{
System.out.println(burgerName);
System.out.println("๊ฐ๊ฒฉ:" + price);
System.out.printf("์์ฌ๋ฃ:%s, %s, %s\n", patty, sauce, vegetable);
}
}
// ํ๋ฒ๊ฑฐ์ ๊ธฐ๋ณธ๊ฐ๊ฒฉ ์ถ์ํ
class HamburgerPrice
{
// ๋ฉค๋ฒ๋ณ์
Burger burger;// ๋ํดํธ(default) ์ ๊ทผ์ง์ ์๋ก ์ค์
final int COKE = 1000; // ์ต์ข
์์์ฒ๋ฆฌ
final int POTATO = 1500; // ์ต์ข
์์์ฒ๋ฆฌ
// ์ธ์์์ฑ์ : ์์๋ ์ด๋ฏธ ์ด๊ธฐํ๋์ด ์์ผ๋ฏ๋ก ํ๋ฒ๊ฑฐ ๊ฐ์ฒด๋ง ์ด๊ธฐํํ๋ค.
public HamburgerPrice(Burger burger)
{
this.burger = burger;
}
// ๊ธฐ๋ณธ๊ฐ๊ฒฉ๊ณ์ฐ : ํ๋ฒ๊ฑฐ + ์ฝ๋ผ + ํ๋ ์นํ๋ผ์ด ๊ฐ๊ฒฉ์ ํฉ
public int price()
{
// ํ๋ฒ๊ฑฐ์ price๋ private ์ด๋ฏ๋ก getter๋ฅผ ํตํด ๊ฐ์ ธ์์ผ ํจ.
int total = burger.getPrice() + COKE + POTATO;
return total;
}
// ํ๋ฒ๊ฑฐ์ ๊ฒฐ์ ๊ธ์ก ์ถ๋ ฅ
public void showPrice()
{
burger.showBurger();// ํ๋ฒ๊ฑฐ์ ์ ๋ณด ์ถ๋ ฅ
System.out.println("์ธํธ๊ฒฐ์ ๊ธ์ก:" + price());
System.out.println("==========================");
}
}
// ํ๋ฒ๊ฑฐ์ ์ธํธ๊ฐ๊ฒฉ (๊ธฐ๋ณธ๊ฐ๊ฒฉ์ ์์)
class SetPrice extends HamburgerPrice
{
// ์ธ์์์ฑ์
public SetPrice(Burger burger)
{
// ๋ถ๋ชจํด๋์ค์ ์ ์๋ ์ธ์์์ฑ์ ํธ์ถ
super(burger);
}
// ์ธํธ๊ฐ๊ฒฉ๊ณ์ฐ(์ค๋ฒ๋ผ์ด๋ฉ) : 500์ ํ ์ธ๋ ๊ฐ๊ฒฉ์ผ๋ก ๊ณ์ฐํจ.
@Override
public int price()
{
// ๋ถ๋ชจ์ ๊ธฐ๋ณธ๊ฐ๊ฒฉ ๊ณ์ฐ์์์ 500์ ์ฐจ๊ฐ
return super.price() - 500;
}
// ํ๋ฒ๊ฑฐ์ ์ธํธ๊ฐ๊ฒฉ์ ์ถ๋ ฅ(์ค๋ฒ๋ผ์ด๋ฉ)
@Override
public void showPrice()
{
// ๋ํดํธ ์ ๊ทผ์ง์ ์๋ ๋์ผ ํจํค์ง์์๋ ์ ๊ทผ์ ํ์ฉํจ.
burger.showBurger();
System.out.println("์ธํธํ ์ธ๊ธ์ก:" + price());
System.out.println("============================");
}
}
public class Put04
{
public static void main(String[] args)
{
// ์น์ฆ๋ฒ๊ฑฐ ๊ฐ์ฒด ์์ฑ
Burger burger1 = new Burger("๋ถ๊ณ ๊ธฐ๋ฒ๊ฑฐ", 4500, "์ ๊ณ ๊ธฐํจํฐ", "์ผ์ฑฑ", "ํผํด");
// ์นํจ๋ฒ๊ฑฐ ๊ฐ์ฒด ์์ฑ
Burger burger2 = new Burger("์นํจ๋ฒ๊ฑฐ", 4200, "๋ญ๊ณ ๊ธฐํจํฐ", "๋ง์๋ค์ฆ", "์์์ถ");
// ์น์ฆ๋ฒ๊ฑฐ๋ฅผ ๊ธฐ๋ณธ๊ฐ๊ฒฉ์ผ๋ก ๊ตฌ๋งค
HamburgerPrice price1 = new HamburgerPrice(burger1);
price1.showPrice(); // 4500์
// ์นํจ๋ฒ๊ฑฐ๋ฅผ ์ธํธ๊ฐ๊ฒฉ์ผ๋ก ๊ตฌ๋งค
HamburgerPrice price2 = new SetPrice(burger2);
price2.showPrice(); // 4200์
}
}
ํต์ฌ์ ์์! ํฐ ๊ทธ๋ฃน์ด ๋ฌด์์ด๋ฉฐ, ๊ทธ ์์ ์ด๋ ํ ์์ ๊ด๊ณ์ ์๋ ํด๋์ค๋ค์ด ์๋์ง๋ฅผ
์ง์ผํ๋ค. ๊ทธ ๋ค์ ๊ทธ ๊ทธ๋ฃน ํด๋์ค๋ง๋ค ์์ ๋ํ
์ผํ ๊ธฐ๋ฅ๋ค์ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
package Main;
import java.util.Scanner;
import Character.*;
import Map.*;
public class GameMain {
public static void main(String[] args) {
// ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ์ ๋ฐ๋๋ค.
Scanner sc = new Scanner(System.in);
// hero ๊ฐ์ฒด๋ฅผ ์์ฑ
Hero hero = new Hero();
// ๋ฉ๋ด
System.out.println("*******RPG GAME*******");
System.out.println("1. ์ ์ฌ");
System.out.println("2. ๋ง๋ฒ์ฌ");
System.out.println("3. ๊ถ์ฌ");
System.out.printf("์ง์
์ ๋ฒํธ๋ฅผ ์
๋ ฅํ์ธ์. : ");
int num = sc.nextInt();
// 1๋ฒ, ์ ์ฌ๋ฅผ ์ ํ์ ์ด๊ธฐํ ์
ํ
if(num == 1) {
System.out.println("์ ์ฌ๊ฐ ์ ํ๋์์ต๋๋ค.");
hero = new Warrior(); // ์บ๋ฆญํฐ๋ ์ ์ฌ
hero.defense = 25; // ๋ฐฉ์ด๋ ฅ
hero.power = 15; // ๊ณต๊ฒฉ๋ ฅ
hero.level = 1; // ๋ ๋ฒจ
hero.hp = 80; // ์ฒด๋ ฅ
hero.mp = 0; // ๋ง๋ ฅ
}
// 2๋ฒ, ๋ง๋ฒ์ฌ๋ฅผ ์ ํ์ ์ด๊ธฐํ ์
ํ
else if(num == 2) {
System.out.println("๋ง๋ฒ์ฌ๊ฐ ์ ํ๋์์ต๋๋ค.");
hero = new Magician();// ์บ๋ฆญํฐ๋ ๋ง๋ฒ์ฌ
hero.defense = 10; // ๋ฐฉ์ด๋ ฅ
hero.power = 18; // ๊ณต๊ฒฉ๋ ฅ
hero.level = 1; // ๋ ๋ฒจ
hero.hp = 60; // ์ฒด๋ ฅ
hero.mp = 60; // ๋ง๋ ฅ
}
// 3๋ฒ, ๊ถ์ฌ๋ฅผ ์ ํ์ ์ด๊ธฐํ ์
ํ
else if(num == 3) {
System.out.println("๊ถ์ฌ๊ฐ ์ ํ๋์์ต๋๋ค.");
hero = new Archer();// ์บ๋ฆญํฐ๋ ๊ถ์ฌ
hero.defense = 5; // ๋ฐฉ์ด๋ ฅ
hero.power = 20; // ๊ณต๊ฒฉ๋ ฅ
hero.level = 1; // ๋ ๋ฒจ
hero.hp = 50; // ์ฒด๋ ฅ
hero.mp = 0; //๋ง๋ ฅ
}
// ์ด๋ฆ์ ์ ํํ ๊ฐ์ ๋ฐ๋๋ค.
System.out.printf("์์
์ ์ด๋ฆ์ ์
๋ ฅํ์ธ์. : ");
hero.name = sc.next();
System.out.println("์ด๋ฆ์ด ์ ์์ ์ผ๋ก ์
๋ ฅ๋์์ต๋๋ค.");
System.out.println("๊ฒ์์ ์
์ฅํ์์ต๋๋ค.");
// ๊ฒ์ ํ์์ ๋๊ฐ์ง ๋ชปํ๋๋ก ๋ฌดํ๋ฃจํ
while(true) {
System.out.println("*********************");
System.out.println("ํ์ฌ "+ hero.name + "์ ์ด๋ฆ : " + hero.name);
System.out.println("ํ์ฌ "+ hero.name + "์ ๋ ๋ฒจ : " + hero.level);
System.out.println("ํ์ฌ "+ hero.name + "์ ํ : " + hero.power);
System.out.println("ํ์ฌ "+ hero.name + "์ ๋ฐฉ์ด๋ ฅ : " + hero.defense);
System.out.println("ํ์ฌ "+ hero.name + "์ HP : " + hero.hp);
System.out.println("ํ์ฌ "+ hero.name + "์ MP : " + hero.mp);
System.out.println("ํ์ฌ "+ hero.name + "์ ๊ฒฝํ์น : " + hero.experience);
System.out.println("ํ์ฌ "+ hero.name + "์ ๋ : " + hero.money + "์");
System.out.println("*********************");
System.out.println("1. ์ฌ๋ฅํฐ");
System.out.println("2. ๋ฌด๊ธฐ ์์ ");
System.out.println("3. ํฌ์
์์ ");
System.out.printf("์
์ฅํ ์ฅ์๋ฅผ ์
๋ ฅํ์ธ์. : ");
num = sc.nextInt();
// ์ฌ๋ฅํฐ ์
์ฅ
if(num == 1) {
// ๋ชฌ์คํฐ ๊ฐ์ฒด ์์ฑ
Monster monster = new Monster();
System.out.println("์ฌ๋ฅํฐ์ ์
์ฅํ์์ต๋๋ค.");
System.out.println("1. ๋๊ตฌ๋ฆฌ");
System.out.println("2. ์ด์พก์ด");
System.out.println("3. ๋ค๊ฐ");
System.out.println("4. ๋ฉง๋ผ์ง");
System.out.printf("์ฌ๋ฅํ ๋ชฌ์คํฐ๋ฅผ ์
๋ ฅํ์ธ์. : ");
num = sc.nextInt();
// ๋๊ตฌ๋ฆฌ ๋ชฌ์คํฐ ์ด๊ธฐํ
if(num == 1) {
monster = new Racoon();
monster.name = "๋๊ตฌ๋ฆฌ";
monster.hp = 100;
monster.mp = 0;
monster.level = 1;
monster.power = 20;
monster.defense = 5;
monster.money = 10;
monster.experience = 10;
System.out.println(monster.name + "๊ณผ ์ ํฌ๋ฅผ ์์ํฉ๋๋ค.");
}
// ์ด์พก์ด ๋ชฌ์คํฐ ์ด๊ธฐํ
if(num == 2) {
monster = new WildCat();
monster.name = "์ด์พก์ด";
monster.hp = 2000;
monster.mp = 0;
monster.level = 5;
monster.power = 100;
monster.defense = 20;
monster.money = 30;
monster.experience = 50;
System.out.println(monster.name + "๊ณผ ์ ํฌ๋ฅผ ์์ํฉ๋๋ค.");
}
// ๋ค๊ฐ ๋ชฌ์คํฐ ์ด๊ธฐํ
if(num == 3) {
monster = new WildDog();
monster.name = "๋ค๊ฐ";
monster.hp = 3000;
monster.mp = 0;
monster.level = 15;
monster.power = 300;
monster.defense = 30;
monster.money = 50;
monster.experience = 100;
System.out.println(monster.name + "๊ณผ ์ ํฌ๋ฅผ ์์ํฉ๋๋ค.");
}
// ๋ฉง๋ผ์ง ๋ชฌ์คํฐ ์ด๊ธฐํ
if(num == 4) {
monster = new WildPig();
monster.name = "๋ฉง๋ผ์ง";
monster.hp = 10000;
monster.mp = 0;
monster.level = 30;
monster.power = 1000;
monster.defense = 80;
monster.money = 200;
monster.experience = 300;
System.out.println(monster.name + "๊ณผ ์ ํฌ๋ฅผ ์์ํฉ๋๋ค.");
}
// ๊ณต๊ฒฉ์ ํ์ ๋ฒ์ด๋์ง ๋ชปํ๋๋ก ๋ฌดํ๋ฃจํ
while(true) {
System.out.println(hero.name + "์ ๊ณต๊ฒฉ์
๋๋ค.");
// ์ฌ๊ธฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ํธ์ถํ๋ค.
monster.attacked(hero.attack());
// ๋ชฌ์คํฐ์ ์ฒด๋ ฅ์ด 0์ด๋ฉด
if(monster.hp <= 0) {
System.out.println(monster.name + "๊ฐ ์ฃฝ์์ต๋๋ค.");
// ๊ฒฝํ์น์ ๋์ด ์ฆ๊ฐ
hero.experience += monster.experience;
hero.money += monster.money;
break;
}
System.out.println(monster.name + "์ ๊ณต๊ฒฉ์
๋๋ค.");
// ์ฌ๊ธฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ํธ์ถํ๋ค.
hero.attacked(monster.attack());
// ์ฃฝ์ผ๋ฉด ๊ฒ์์ ์ด์ด๋๊ฐ๊ธฐ ์ํด ์ฒด๋ ฅ 1๋ก ๋ถํํ๋ค
if(hero.hp <= 0) {
System.out.println(hero.name + "์ด ์ฃฝ์์ต๋๋ค.");
hero.hp = 1;
System.out.println(hero.name + "์ด ์ฒด๋ ฅ" + hero.hp + "์ผ๋ก ๋ถํํ์ต๋๋ค.");
break;
}
}
// ๋ฌด๊ธฐ ์์
}else if(num == 2) {
// ๋ฌด๊ธฐ์์ ๊ฐ์ฒด ์์ฑ
WeaponStore weaponstore = new WeaponStore();
System.out.println("๋ฌด๊ธฐ ์์ ์ ์
์ฅํ์์ต๋๋ค.");
System.out.println("1. ๊ณต๋ ๋ฌด๊ธฐ (50์)");
System.out.println("2. ๊ณต๋ ๋ฐฉํจ (50์)");
System.out.println("ํ์ฌ ๋์ด " + hero.money + "์์ต๋๋ค.");
System.out.printf("์ํ์๋ ๋ฌผ๊ฑด์ ์
๋ ฅํ์ธ์. : ");
num = sc.nextInt();
// ์์ ๊ฑฐ๋๋ฅผ ์ํด ํ๋ ์ด์ด์ ๋์ temp ๋ณ์์ ๋ฃ๋๋ค.
int temp = hero.money;
// ํ๋ ์ด์ด์ ๋์ด ์์๊ฐ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋งค๊ฐ ๊ฐ๋ฅ
if((hero.money = weaponstore.show(hero.money,num)) != -1)
{
System.out.println("๊ตฌ์
์ด ์๋ฃ๋์์ต๋๋ค.");
// ๋ฌด๊ธฐ๋ฅผ ๊ตฌ๋งคํ ๊ฒฝ์ฐ
if(num == 1) {
// ๊ณต๊ฒฉ๋ ฅ 5๊ฐ ์ฆ๊ฐ
hero.power += 5;
}
// ๋ฐฉํจ๋ฅผ ๊ตฌ๋งคํ ๊ฒฝ์ฐ
if(num == 2) {
// ๋ฐฉ์ด๋ ฅ 5๊ฐ ์ฆ๊ฐ
hero.defense += 5;
}
System.out.println(temp + "์ ๋จ์์ต๋๋ค.");
}else {
System.out.println("๋์ด ๋ถ์กฑํฉ๋๋ค.");
System.out.println(temp + "์ ๋จ์์ต๋๋ค.");
}
// ํฌ์
์์ ์
์ฅ
}else if(num == 3) {
// ํฌ์
์์ ๊ฐ์ฒด ์์ฑ
PotionStore potionstore = new PotionStore();
System.out.println("ํฌ์
์์ ์ ์
์ฅํ์์ต๋๋ค.");
System.out.println("1. ๊ณต๊ฒฉ๋ ฅ ์ฆ๊ฐ ํฌ์
(30์)");
System.out.println("2. ๋ฐฉ์ด๋ ฅ ์ฆ๊ฐ ํฌ์
(30์)");
System.out.println("3. ๊ฒฝํ์น ์ฆ๊ฐ ํฌ์
(100์)");
System.out.println("4. HP ์ฆ๊ฐ ํฌ์
(10์)");
System.out.println("5. MP ์ฆ๊ฐ ํฌ์
(10์)");
System.out.printf("์ํ์๋ ๋ฌผ๊ฑด์ ์
๋ ฅํ์ธ์. : ");
// ์
๋ ฅ๊ฐ์ int ์ ์ num ๋ณ์์ ์ ์ฅํ๋ค.
num = sc.nextInt();
// ๋์ temp ์ ์ญ์ ๋ฃ๋๋ค.
int temp = hero.money;
// ํ๋ ์ด์ด์ ๋์ด ์์๊ฐ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋งค๊ฐ ๊ฐ๋ฅ
if((hero.money = potionstore.show(hero.money,num)) != -1) {
System.out.println("๊ตฌ์
์ด ์๋ฃ๋์์ต๋๋ค.");
if(num == 1) {
// ๊ณต๊ฒฉ๋ ฅ ์ฆ๊ฐ +3
hero.power += 3;
}
if(num == 2) {
// ๋ฐฉ์ด๋ ฅ ์ฆ๊ฐ +3
hero.defense += 3;
}
if(num == 3) {
// ๊ฒฝํ์น ์ฆ๊ฐ +50
hero.experience += 50;
}
if(num == 4) {
// ์ฒด๋ ฅ ์ฆ๊ฐ +50
hero.hp += 50;
}
if(num == 5) {
// ๋ง๋ ฅ ์ฆ๊ฐ +50
hero.mp += 50;
}
System.out.println(temp + "์ ๋จ์์ต๋๋ค.");
}else {
System.out.println("๋์ด ๋ถ์กฑํฉ๋๋ค.");
System.out.println(temp + "์ ๋จ์์ต๋๋ค.");
}
}
// ๋ ๋ฒจ์ x80ํ๋งํผ ๊ฒฝํ์น๋ฅผ ๊ฐ์ง๊ณ ์์ ๊ฒฝ์ฐ๋ฅผ ๋ ๋ฒจ์
๊ธฐ์ค
if(hero.experience >= hero.level * 80)
{
// ๋ ๋ฒจ์ด 1 ์ค๋ฅธ๋ค.
hero.level += 1;
System.out.println(hero.name + "์ ๋ ๋ฒจ์ด" + hero.level + "์ด ๋์์ต๋๋ค.");
// ๋์ ๋ ๋ฒจ์ x50ํ ๋งํผ ์ค๋ค
hero.money += hero.level * 50;
System.out.println("๋ ๋ฐธ์
๊ธฐ๋
์ผ๋ก ๋์ด " + hero.level * 50 + "์ ์ฆ๊ฐํ์ฌ ");
System.out.println(hero.money + "์์ด ๋์์ต๋๋ค.");
hero.experience = 0; // ๊ฒฝํ์น ์ด๊ธฐํ
}
}
}
}
package Map;
// ์ง๋ ํด๋์ค๋ ์ด๋ฆ์ ๋ฐํํ๋ค
public class Map {
String name;
}
package Map;
//Map ๋ถ๋ชจ ํด๋์ค์ ์์๋ PotionStore
public class PotionStore extends Map
{
// ๋ฉค๋ฒ ๋ณ์์ ์ด๊ธฐํ๋ฅผ ์ง์ ํ๋ค
int powerPotion = 30;
int defensePotion = 30;
int experiencePotion = 100;
int hpPotion = 10;
int mpPotion = 10;
// ๋ฉค๋ฒ ๋ฉ์๋
public int show(int money, int num)
{
name = "ํฌ์
์์ ";
System.out.println(name + "์์ ๋ฌผ๊ฑด์ ๊ตฌ๋งค ์๋ํ๋ ์ค์
๋๋ค.");
// ํํฌ์
์ ์์๋
if(num == 1)
{
// ๋์ด ์์ด์ผ ํ๋ฉฐ
if(powerPotion <= money)
{
// ๊ฐ์ง ๋์์ ๊ฐ์ ๋บ๋ค
return money - powerPotion;
}
}
if(num == 2) {
if(defensePotion <= money) {
return money - defensePotion;
}
}
if(num == 3)
{
if(experiencePotion <= money)
{
return money - experiencePotion;
}
}
if(num == 4)
{
if(hpPotion <= money)
{
return money - hpPotion;
}
}
if(num == 5)
{
if(mpPotion <= money)
{
return money - mpPotion;
}
}
return money;
}
}
package Map;
//Map ๋ถ๋ชจ ํด๋์ค์ ์์๋ WeaponStore
public class WeaponStore extends Map
{
// ์ง์ ์ด๊ธฐํํ ๋ฉค๋ฒ๋ณ์
int commonWeapon = 50;
int commonShield = 50;
// ๋ฉค๋ฒ ๋ฉ์๋
public int show(int money, int num) {
name = "๋ฌด๊ธฐ ์์ ";
System.out.println(name + "์์ ๋ฌผ๊ฑด์ ๊ตฌ๋งค ์๋ํ๋ ์ค์
๋๋ค.");
// ๊ณตํต ๋ฌด๊ธฐ๋ฅผ ์ด ๊ฒฝ์ฐ
if(num == 1) {
// ๋์ด ์์ ๊ฒฝ์ฐ -> ๊ฐ๊ฒฉ์ ๋บ ๊ฐ์ ๋ฐํ
if(commonWeapon <= money) {
return money - commonWeapon;
}
}
if(num == 2) {
if(commonShield <= money) {
return money - commonShield;
}
}
return money;
}
}
package Character;
import java.util.Scanner;
// hero ๋ถ๋ชจ ํด๋์ค์ ์์๋ Archer
public class Archer extends Hero {
// ๋ฉค๋ฒ ๋ฉ์๋
public int attack() {
Scanner sc = new Scanner(System.in);
System.out.println("1. ํ์ด ๊ณต๊ฒฉ");
System.out.println("2. ์ฐ์ ํ์ด ๊ณต๊ฒฉ");
System.out.printf("๊ณต๊ฒฉ ๋ฒํธ๋ฅผ ์
๋ ฅํ์ธ์ : ");
int num = sc.nextInt();
// ๋ฅ๋ ฅ์น๋ฅผ 0์ผ๋ก ์ด๊ธฐํ ํด ๋๋๋ค.
int sum = 0;
// ํ์ด๊ณต๊ฒฉ
if(num == 1) {
// ๋ ๋ฒจ์ 15๋ฐฐ+๊ณต๊ฒฉ๋ ฅ 15๋ฐฐ+๋ฐฉ์ด๋ ฅ 15๋ฐฐ์ ๋ฐ๋ฏธ์ง๋ก ๋ค์ด๊ฐ๋ค.
sum += level * 15;
sum += power * 15;
sum += defense * 15;
System.out.println("๋ฐ๋ฏธ์ง๋ " + sum + " ์
๋๋ค.");
return sum;
// ์ฐ์ ํ์ด ๊ณต๊ฒฉ
}else if(num == 2) {
// ๋ ๋ฒจ์ 10๋ฐฐ+๊ณต๊ฒฉ๋ ฅ 20๋ฐฐ+๋ฐฉ์ด๋ ฅ 10๋ฐฐ์ ๋ฐ๋ฏธ์ง๋ก ๋ค์ด๊ฐ๋ค.
sum += level * 10;
sum += power * 20;
sum += defense * 10;
System.out.println("๋ฐ๋ฏธ์ง๋ " + sum + " ์
๋๋ค.");
return sum;
}
System.out.println("๋ฐ๋ฏธ์ง๋ " + sum + " ์
๋๋ค.");
return sum;
}
//Archer.attacked์ ๋ถ๋ ์ ๊ฒฝ์ฐ
public void attacked(int sum) {
// ๋ฐฉ์ด๋ ฅ์ด ๋ ํฌ๋ฉด ํผํด๋ฅผ ์
์ง ์๋๋ค.
if(defense >= sum) {
hp = hp - 0;
}else
{
//์ฒด๋ ฅ+๋ฐฉ์ด๋ ฅ์์ ๋ฐ๋ฏธ์ง๋ฅผ ๋บ ๊ฐ์ด ์ฒด๋ ฅ์ผ๋ก ๋จ๋๋ค.
hp = hp + defense - sum;
}
}
}
package Character;
// ์บ๋ฆญํฐ ํด๋์ค
public class Character {
// ์ด๋ฆ๊ณผ hp mp ๋ ๋ฒจ์ด ๋ฉค๋ฒ๋ณ์๋ก ์๋ํ
public String name;
public int hp;
public int mp;
public int level;
}
package Character;
//Character ๋ถ๋ชจ ํด๋์ค์ ์์๋ Hero
public class Hero extends Character {
// ์ง์ ์ ์ผ๋ก ๋ฉค๋ฒ๋ณ์ ์ ์ธ๊ณผ ์ด๊ธฐํ
public int power;
public int defense;
public int money = 0;
public int experience = 0;
// ๋ฉค๋ฒ ๋ฉ์๋๋ฅผ ๋ถ๋ ์๋ ๊ณต๊ฒฉ๋ ฅ์ ๋ฐํ
public int attack() {
return power;
}
//Hero.attacked์ ๋ถ๋ ์ ๊ฒฝ์ฐ
public void attacked(int sum) {
// ๊ฐ๋ณด๋ค ๋ฐฉ์ด๋ ฅ์ด ๋ ํฌ๋ฉด
if(defense >= sum) {
// ํผํด๋ฅผ ์
์ง ์๋๋ค
hp = hp - 0;
}else
{
// ๊ทธ ์ธ๋ ์ฒด๋ ฅ๊ณผ ๋ฐฉ์ด๋ ฅ์ ๋ํ ๊ฐ์์ ๋ฐ๋ฏธ์ง๋งํผ ๋นผ์ ์ฒด๋ ฅ์ผ๋ก ๋จ์
hp = hp + defense - sum;
}
}
}
package Character;
import java.util.Scanner;
//hero ๋ถ๋ชจ ํด๋์ค์ ์์๋ Magician
public class Magician extends Hero {
// ๋ฉค๋ฒ ๋ฉ์๋
public int attack() {
// ๋ฅ๋ ฅ์น๋ฅผ ์ด๊ธฐํ
int sum = 0;
// ๋ง๋ ฅ์ด 10๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ
if(mp >= 10) {
Scanner sc = new Scanner(System.in);
System.out.println("1. ํ์ด์ด๋ณผ");
System.out.println("2. ์ํฐ๋ณผ");
System.out.printf("๊ณต๊ฒฉ ๋ฒํธ๋ฅผ ์
๋ ฅํ์ธ์ : ");
int num = sc.nextInt();
// ํ์ด์ด๋ณผ : ๋ ๋ฒจ์ 10๋ฐฐ+๊ณต๊ฒฉ๋ ฅ์ 15๋ฐฐ+๋ฐฉ์ด๋ ฅ์ 5๋ฐฐ๊ฐ ๋ฐ๋ฏธ์ง๋ก
if(num == 1) {
sum += level * 10;
sum += power * 15;
sum += defense * 5;
System.out.println("๋ฐ๋ฏธ์ง๋ " + sum + " ์
๋๋ค.");
//๋ง๋ ฅ์ด 5 ๊น์ธ๋ค
mp = mp - 5;
return sum;
// ์ํฐ๋ณผ : ๋ ๋ฒจ์ 8๋ฐฐ+๊ณต๊ฒฉ๋ ฅ์ 13๋ฐฐ+๋ฐฉ์ด๋ ฅ์ 10๋ฐฐ๊ฐ ๋ฐ๋ฏธ์ง๋ก
}else if(num == 2) {
sum += level * 8;
sum += power * 13;
sum += defense * 10;
System.out.println("๋ฐ๋ฏธ์ง๋ " + sum + " ์
๋๋ค.");
//๋ง๋ ฅ์ด 5 ๊น์ธ๋ค
mp = mp - 5;
return sum;
}
System.out.println("๋ฐ๋ฏธ์ง๋ " + sum + " ์
๋๋ค.");
return sum;
// ๋ง๋ ฅ์ด 10๋ณด๋ค ์์ ๊ฒฝ์ฐ
}else
{
System.out.println("MP๊ฐ ๋จ์์์ง ์์ต๋๋ค.");
return sum;
}
}
//Magician.attacked์ ๋ถ๋ ์ ๊ฒฝ์ฐ
public void attacked(int sum) {
// ๋ฐฉ์ด๋ ฅ์ด ๋ฐ๋ฏธ์ง๋ณด๋ค ํฌ๋ฉด ๋ฐ๋ฏธ์ง ์์
if(defense >= sum) {
hp = hp - 0;
}else
{
// ๊ทธ ์ธ๋ ์ฒด๋ ฅ๊ณผ ๋ฐฉ์ด๋ ฅ์ ๋ํ ๊ฐ์ ๋ฐ๋ฏธ์ง๋ฅผ ๋บ ๊ฐ์ด ์ฒด๋ ฅ์ผ๋ก ๋จ์ ๋ฐํ
hp = hp + defense - sum;
}
}
}
package Character;
//Character ๋ถ๋ชจ ํด๋์ค์ ์์๋ Monster
public class Monster extends Character{
// ๋ฉค๋ฒ๋ณ์ ์๋ํ
public int power;
public int defense;
public int money;
public int experience;
// ์ดํ ๋ฉค๋ฒ ๋ฉ์๋๋ฅผ ๋ถ๋ ์๋ ๊ณต๊ฒฉ๋ ฅ์ ๋ฐํํ๋ค
public int attack() {
return power;
}
public void attacked(int sum) {
if(defense >= sum)
{
hp = hp - 0;
}
else {
hp = hp + defense - sum;
}
}
}
package Character;
public class Racoon extends Monster {
public int attack() {
System.out.println("๋ฐ๋ฏธ์ง๋ " + power + " ์
๋๋ค.");
return power;
}
public void attacked(int sum) {
if(defense >= sum) {
hp = hp - 0;
}else {
hp = hp + defense - sum;
}
}
}
package Character;
import java.util.Scanner;
//Hero ๋ถ๋ชจ ํด๋์ค์ ์์๋ Warrior
public class Warrior extends Hero {
public int attack() {
Scanner sc = new Scanner(System.in);
System.out.println("1. ์ฐ๋ฌ์คํธ");
System.out.println("2. ์ผ๋จ ๋ฒ ๊ธฐ");
System.out.printf("๊ณต๊ฒฉ ๋ฒํธ๋ฅผ ์
๋ ฅํ์ธ์ : ");
int num = sc.nextInt();
int sum = 0;
if(num == 1) {
sum += level * 10;
sum += power * 30;
System.out.println("๋ฐ๋ฏธ์ง๋ " + sum + " ์
๋๋ค.");
return sum;
}else if(num == 2) {
sum += level * 20;
sum += power * 15;
sum += defense * 15;
System.out.println("๋ฐ๋ฏธ์ง๋ " + sum + " ์
๋๋ค.");
return sum;
}
System.out.println("๋ฐ๋ฏธ์ง๋ " + sum + " ์
๋๋ค.");
return sum;
}
public void attacked(int sum) {
if(defense >= sum) {
hp = hp - 0;
}else {
hp = hp + defense - sum;
}
}
}
package Character;
//WildCat ํด๋์ค๋ Monster๊ฐ ๋ถ๋ชจ ํด๋์ค ์์
public class WildCat extends Monster {
// ๋ฉค๋ฒ ๋ฉ์๋
public int attack() {
System.out.println("๋ฐ๋ฏธ์ง๋ " + power + " ์
๋๋ค.");
return power;
}
//WildCat.attacked์ ๋ถ๋ ์ ๊ฒฝ์ฐ
public void attacked(int sum) {
// ๋ฐ๋ฏธ์ง๊ฐ ๋ฐฉ์ด๋ ฅ๋ณด๋ค ์์ผ๋ฉด ํผํด ์์
if(defense >= sum) {
hp = hp - 0;
}else {
// ๊ทธ ์ด์ธ๋ ์ฒด๋ ฅ+๋ฐฉ์ด๋ ฅ-๋ฐ๋ฏธ์ง = ์ฒด๋ ฅ์ผ๋ก ๋จ๋๋ค.
hp = hp + defense - sum;
}
}
}
package Character;
//WildDog ํด๋์ค๋ Monster๊ฐ ๋ถ๋ชจ ํด๋์ค ์์
public class WildDog extends Monster {
// ๋ฉค๋ฒ ๋ฉ์๋
public int attack() {
System.out.println("๋ฐ๋ฏธ์ง๋ " + power + " ์
๋๋ค.");
return power;
}
//WildDog.attacked์ ๋ถ๋ ์ ๊ฒฝ์ฐ
public void attacked(int sum) {
// ๋ฐ๋ฏธ์ง๊ฐ ๋ฐฉ์ด๋ ฅ๋ณด๋ค ์์ผ๋ฉด ํผํด ์์
if(defense >= sum) {
hp = hp - 0;
}else {
// ๊ทธ ์ด์ธ๋ ์ฒด๋ ฅ+๋ฐฉ์ด๋ ฅ-๋ฐ๋ฏธ์ง = ์ฒด๋ ฅ์ผ๋ก ๋จ๋๋ค.
hp = hp + defense - sum;
}
}
}
package Character;
// WildPig ํด๋์ค๋ Monster๊ฐ ๋ถ๋ชจ ํด๋์ค ์์
public class WildPig extends Monster {
// ๋ฉค๋ฒ ๋ฉ์๋
public int attack() {
System.out.println("๋ฐ๋ฏธ์ง๋ " + power + " ์
๋๋ค.");
return power;
}
//WildPig.attacked์ ๋ถ๋ ์ ๊ฒฝ์ฐ
public void attacked(int sum) {
// ๋ฐ๋ฏธ์ง๊ฐ ๋ฐฉ์ด๋ ฅ๋ณด๋ค ์์ผ๋ฉด ํผํด ์์
if(defense >= sum) {
hp = hp - 0;
}else {
// ๊ทธ ์ด์ธ๋ ์ฒด๋ ฅ+๋ฐฉ์ด๋ ฅ-๋ฐ๋ฏธ์ง = ์ฒด๋ ฅ์ผ๋ก ๋จ๋๋ค.
hp = hp + defense - sum;
}
}
}
- ์ด๋ ๊ฒ ์์๊น์ง ๋์ด ๋ฌ๋ค. ์์์ ํจ์จ์ ๊ทน๋ํํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์ง๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
์ง๋ฅ๊ณผ ๋ ผ๋ฆฌ ์ฌ๊ณ ๊ฐ ํ์ํ ํํธ์ด๋ค.
๋ค์ ํฌ์คํ ์๋ ์ญ์ ๊ฟ ๋จ์ด์ง๋ ํฌ์คํ ์ ๊ณ์๋๋น!
์ ๋ ๊ฐ๋ฐ์์ธ๋ฐ ๊ฐ์ด ๊ต๋ฅ ๋ง์ด ํด๋ด์ ใ ใ ! ์๋ก ํ์ดํ ํฉ์๋ค!