์๋
! ์ค๋์ ์์
์ ์บก์ํ์ ํ ์ ํ๊ณ ์์ ๋ก ๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค. :) ์ฌ๊ธฐ ํ๋ฒํ ์๋ค ๊ธฐ๊ณ๊ฐ
์์ต๋๋ค . ํ ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค. ์ด๋ป๊ฒ ์๋ํฉ๋๊น? ์ปต์ ์ถ์ฒ, ๋ด๋ถ ์จ๋๋ ์ด๋ป๊ฒ ์ ์ง๋๊ณ , ์ผ์์ ์ด๋์ ์ ์ฅ๋๋ฉฐ, ๊ธฐ๊ณ๋ ์ด๋ค ์๋ฝ์ ์ถ๊ฐํด์ผ ํ๋์ง ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น? ์๋ง๋ ์ด๋ฌํ ์ง๋ฌธ์ ๋ํ ๋ต์ด ์์ ๊ฒ์
๋๋ค. ๋ชจ๋ ์ฌ๋์ด ๊ทธ๋ฌํ ๊ธฐ๊ณ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋๋ฏ๋ก ์ถฉ๋ถํฉ๋๋ค. ๊ทธ๋ค์ ์์ฆ ๊ทธ๋ ๊ฒ ์ธ๊ธฐ๊ฐ ์์ต๋๋ค. ๋ค๋ฅธ ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๋งค์ผ ์ฌ๋ฌ ๋ฒ ํ์คํ ์ฌ์ฉํ๋ ๊ฒ. ์ค, ์ฌ๊ธฐ ์์ด๋์ด๊ฐ ์์ต๋๋ค! Google ๊ฒ์ ์์ง์ด ์ด๋ป๊ฒ
๊ณต์ฅ. ์
๋ ฅํ ๋จ์ด์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ ํํ ์ด๋ป๊ฒ ๊ฒ์ํฉ๋๊น? ํน์ ๊ฒฐ๊ณผ์ ์์๊ฐ ๋์ ์ด์ ๋ ๋ฌด์์
๋๊น? ๋งค์ผ Google์ ์ฌ์ฉํ๋๋ผ๋ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ค์ํ์ง ์์ต๋๋ค. ๋น์ ์ ์ด๊ฒ์ ์ ํ์๊ฐ ์์ต๋๋ค. ์๋ ๋ฐฉ์์ ๋ํด ์๊ฐํ์ง ์๊ณ ๊ฒ์ ์์ง์ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํ ์ ์์ต๋๋ค. ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ชจ๋ฅธ ์ฑ ๊ธฐ๊ณ์์ ํ์ฐ์๋ฃ๋ฅผ ๊ตฌ์
ํ ์ ์์ต๋๋ค. ๋ด์ฐ ๊ธฐ๊ด์ด ์ด๋ป๊ฒ ์๋ํ๋์ง, ๋ฌผ๋ฆฌํ์ ์ ํ ๋ชฐ๋ผ๋ ์ด๋ฑํ๊ต ์์ค์์๋ ์๋์ฐจ๋ฅผ ์ด์ ํ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฃผ์ ์์น ์ค ํ๋์ธ ์บก์ํ ๋๋ถ์ ๊ฐ๋ฅํฉ๋๋ค.. OOP(๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ)์ ๋ํ ๋ค์ํ ๊ธฐ์ฌ๋ฅผ ์ฝ์ผ๋ฉด์ ํ๋ก๊ทธ๋๋ฐ์ ์บก์ํ ์ ์จ๊ธฐ๊ธฐ ๋ผ๋ ๋ ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๊ฐ๋
์ด ๊ด๋ จ๋์ด ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์์ ๊ฒ์
๋๋ค . ๊ทธ๋ฆฌ๊ณ ์ ์๋ "์บก์ํ"๋ผ๋ ๋จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ ๊ฐ์ง๋ฅผ ์๋ฏธํ๊ณ ๋ค๋ฅธ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์์ ํ ์ดํด๋ฅผ ์ป์ ์ ์๋๋ก ๋ ์ฉ์ด๋ฅผ ๋ชจ๋ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํ๋ก๊ทธ๋๋ฐ์์ ์บก์ํ ์ ์๋ ์๋ฏธ๋ ๋ฐ์ดํฐ๋ฅผ ํด๋น ๋ฐ์ดํฐ์์ ์๋ํ๋ ๋ฉ์๋์ ํจ๊ป ๋จ์ผ ๋จ์ (์: "์บก์") ๋ก ๋ฌถ๋ ๊ฒ์
๋๋ค . Java์์ ํด๋์ค๋ ์บก์ํ์ ๋จ์์
๋๋ค. ํด๋์ค์๋ ๋ฐ์ดํฐ (ํ๋)์ ์ด ๋ฐ์ดํฐ๋ก ์์
ํ๊ธฐ ์ํ ๋ฉ์๋๊ฐ ๋ชจ๋ ํฌํจ๋์ด ์์ต๋๋ค.
์ด๊ฒ์ ๋ถ๋ช
ํ ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์์๋ ๋ชจ๋ ๊ฒ์ด ๋ค๋ฅด๊ฒ ๋ฐฐ์ด๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐ์ดํฐ๋ ์์
๊ณผ ์๊ฒฉํ๊ฒ ๊ตฌ๋ถ๋ฉ๋๋ค. OOP์์ ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ์ ํด๋น ๋ฐ์ดํฐ๋ก ์์
ํ๊ธฐ ์ํ ํจ์๋ก ๊ตฌ์ฑ๋ ์บก์ ๋๋ ํด๋์ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด์ ์ํ ์ ๋ํด ์ด์ผ๊ธฐํด ๋ด
์๋ค . ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๊ณ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ์ง ๋ชปํ ์ฑ ๋ชจ๋ ์ข
๋ฅ์ ๋ณต์กํ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ๊ฐ๋จํฉ๋๋ค. ์ ์์๊ฐ ๊ฐ๋จํ๊ณ ํธ๋ฆฌํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ต๋๋ค.. ์๋ค ๊ธฐ๊ณ์์ ์ธํฐํ์ด์ค๋ ํจ๋์ ๋ฒํผ์
๋๋ค. ํ๋์ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ปต ํฌ๊ธฐ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๊ฒ์ ๋๋ฅด๋ฉด ๋ง์ ์ ํํฉ๋๋ค. ์ธ ๋ฒ์งธ๋ ์ผ์ ์ถ๊ฐ๋ฅผ ๋ด๋นํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ๋น์ ์ด ํด์ผ ํ ์ ๋ถ์
๋๋ค. ๊ธฐ๊ณ์ ๋ด๋ถ ๊ตฌ์ฑ์ ์ค์ํ์ง ์์ต๋๋ค. ์ค์ํ ๊ฒ์ ์ฌ์ฉ์๊ฐ ํ์ฐ์๋ฃ๋ฅผ ์ป๊ธฐ ์ํด ์ธ ๊ฐ์ ๋ฒํผ์ ๋๋ฌ์ผ ํ๋ ๋ฐฉ์์ผ๋ก ์ค๊ณ๋์๋ค๋ ๊ฒ์
๋๋ค . ์๋์ฐจ์ ๋ํด์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ๋ด๋ถ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง๋ ์ค์ํ์ง ์์ต๋๋ค. ์ค์ํ ๊ฒ์ ์ค๋ฅธ์ชฝ ํ๋ฌ์ ๋ฐ์ผ๋ฉด ์ฐจ๊ฐ ์์ผ๋ก ๊ฐ๊ณ ์ผ์ชฝ ํ๋ฌ์ ๋ฐ์ผ๋ฉด ์๋๊ฐ ๋๋ ค์ง๋ค๋ ๊ฒ์
๋๋ค.. ๊ทธ๊ฒ์ด ๋ฐ๋ก ์จ๊ธฐ๋ ๊ฒ์
๋๋ค. ํ๋ก๊ทธ๋จ์ ๋ชจ๋ "๋ด๋ถ"๋ ์ฌ์ฉ์์๊ฒ ์จ๊ฒจ์ ธ ์์ต๋๋ค. ์ฌ์ฉ์์๊ฒ๋ ์ด๋ฌํ ๋ถํ์ํ๊ณ ๋ถํ์ํ ์ ๋ณด์
๋๋ค. ์ฌ์ฉ์์๊ฒ๋ ๋ด๋ถ ํ๋ก์ธ์ค๊ฐ ์๋ ์ต์ข
๊ฒฐ๊ณผ๊ฐ ํ์ํฉ๋๋ค.
๋ค์ ๋ฉ์ปค๋์ฆ์ ๋ฐ์ดํฐ ์๋์ ๋ฌ์ฑํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
![์บก์ํ์ ์๋ฆฌ - 1](https://cdn.codegym.cc/images/article/cd065697-891d-46fe-9429-a3bf741cf71f/800.jpeg)
![์บก์ํ์ ์๋ฆฌ - 2](https://cdn.codegym.cc/images/article/3a3c8ba1-d3e2-4818-8766-d840c278e19b/800.jpeg)
![์บก์ํ์ ์๋ฆฌ - 3](https://cdn.codegym.cc/images/article/5fe85c7c-7d12-4195-aca8-111e1c0992d9/800.jpeg)
Auto
ํด๋์ค๋ฅผ ์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค .
public class Auto {
public void go() {
/* Some complicated things happen inside the car.
As a result, it moves forward */
}
public void brake() {
/* Some complicated things happen inside the car.
As a result, it slows down. */
}
public static void main(String[] args) {
Auto auto = new Auto();
// From the user's perspective,
// one pedal is pressed and the car accelerates.
auto.gas();
// The other is pressed, and the car slows down.
auto.brake();
}
}
๋ค์์ Java ํ๋ก๊ทธ๋จ์์ ๊ตฌํ ์จ๊ธฐ๊ธฐ์ ๋ชจ์ต์
๋๋ค. ์ค์ํ๊ณผ ๋๊ฐ์ต๋๋ค. ์ฌ์ฉ์์๊ฒ ์ธํฐํ์ด์ค(๋ฉ์๋)๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์์
์ ์ํํ๊ธฐ ์ํด ํ๋ก๊ทธ๋จ์์ ์๋์ฐจ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ํ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฌํ ๋ฉ์๋ ๋ด์์ ์ผ์ด๋๋ ์ผ์ ๋ถํ์ํฉ๋๋ค. ์ค์ํ ๊ฒ์ ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ์๋ํ๋ค๋ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๊ตฌํ ์จ๊ธฐ๊ธฐ ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค . ๊ทธ ์ธ์๋ Java์๋ ๋ฐ์ดํฐ ์จ๊ธฐ๊ธฐ๊ฐ ์์ต๋๋ค . ์ฐ๋ฆฌ๋ ๊ฒํฐ์ ์ธํฐ์ ๋ํ ์์
์์ ๊ทธ๊ฒ์ ๋ํด ์ผ์ง ๋ง, ๊ฐ๋
์ ๋ณต์ตํ๋ ๊ฒ์ ๋์์ง ์์ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ํด๋์ค๊ฐ ์์ต๋๋ค Cat
.
public class Cat {
public String name;
public int age;
public int weight;
public Cat(String name, int age, int weight) {
this.name = name;
this.age = age;
this.weight = weight;
}
public Cat() {
}
public void sayMeow() {
System.out.println("Meow!");
}
}
์ง๋ ์์
์์ ์ด ์์
์ ๋ฌธ์ ๋ฅผ ๊ธฐ์ตํ์๋์? ๊ทธ๋ ์ง ์๋ค๋ฉด ์ง๊ธ ๊ธฐ์ตํฉ์๋ค. ๋ฌธ์ ๋ ๋ฐ์ดํฐ(ํ๋)๊ฐ ๋ชจ๋ ์ฌ๋์๊ฒ ๊ณต๊ฐ๋์ด ์๋ค๋ ๊ฒ์
๋๋ค. ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ๋ ๊ฐ์ค์น๊ฐ 0์ด๊ณ ๋์ด๊ฐ -1000๋
์ธ ์ด๋ฆ ์๋ ๊ณ ์์ด๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
public static void main(String[] args) {
Cat cat = new Cat();
cat.name = "";
cat.age = -1000;
cat.weight = 0;
}
๋๋ฃ ์ค ํ ๋ช
์ด ์๋ชป๋ ์ํ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋์ง ์ฌ๋ถ๋ฅผ ๋ฉด๋ฐํ ์ฃผ์ํ ์ ์์ง๋ง ์ด๋ฌํ "์๋ชป๋ ๊ฐ์ฒด"๋ฅผ ์์ฑํ ๊ฐ๋ฅ์ฑ์กฐ์ฐจ ๋ฐฐ์ ํ๋ ๊ฒ์ด ํจ์ฌ ์ข์ต๋๋ค. ![์บก์ํ์ ์๋ฆฌ - 4](https://cdn.codegym.cc/images/article/70d6b15d-d3a7-4cee-b562-4a9537ab78d0/800.jpeg)
- ์ก์ธ์ค ์์ ์( ๊ฐ์ธ , ๋ณดํธ , ํจํค์ง ๊ธฐ๋ณธ๊ฐ )
- ๊ฒํฐ์ ์ธํฐ
- ๊ฐ์ฒด์ ์ฌ๋ฐ๋ฅธ ์ํ๋ฅผ ์ ์ดํฉ๋๋ค. ์์ ๊ฐ์ ์๊ฐ ์์์ต๋๋ค. setter์ private ํ์ ์๋ ํ๋ก๊ทธ๋จ์ ๊ฐ์ค์น๊ฐ 0์ธ ๊ณ ์์ด๊ฐ ์๋๋ก ํฉ๋๋ค.
- ์ธํฐํ์ด์ค๋ฅผ ํตํ ์ฌ์ฉ์ ์นํ์ฑ. ๋ฉ์๋๋ง ์ธ๋ถ ์ธ๊ณ์ "๋ ธ์ถ"๋ฉ๋๋ค. ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ๋ง์ผ๋ก๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์๋ ๋ฐฉ์์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์กฐ์ฌํ ํ์๊ฐ ์ ํ ์์ต๋๋ค.
- ์ฝ๋ ๋ณ๊ฒฝ์ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ๋ฉ์๋ ๋ด์์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํฉ๋๋ค. ์ด๋ ๋ฉ์๋ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์ด์ ์ ์ฌ๋ฐ๋ฅธ ์ฝ๋๊ฐ ๊ฐ์ ํ๋ฌ์ ์ ์ฉํ๊ธฐ ์ํ "auto.gas()"์๋ค๋ฉด ๊ณ์ ๊ทธ๋ด ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ gas() ๋ฉ์๋ ๋ด๋ถ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ณ๊ฒฝํ๋ค๋ ์ฌ์ค์ ์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์์ต๋๋ค. ์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํธ์ถ์๋ ๋จ์ํ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค.
GO TO FULL VERSION