์กฐ๊ฑด (1) ์์๊ด๊ณ
์๋ก ์์๊ด๊ณ์ ์๋ ์์ ํด๋์ค - ํ์ ํด๋์ค ์ฌ์ด์๋ง ํ์
๋ณํ์ด ๊ฐ๋ฅ
์กฐ๊ฑด (2) ์ค๋ฒ๋ผ์ด๋ฉ ํ์
ํ์ ํด๋์ค ๋ฉ์๋๊ฐ ๋ฐ๋์ ์ฌ์ ์ ๋์ด์์ด์ผ ํจ
์กฐ๊ฑด (3) ์
์บ์คํ
์ผ ๋ ํ๋ณํ ์ฐ์ฐ์ ์๋ต / ๋ค์ด์บ์คํ
์ผ ๋ ํ๋ณํ ์ฐ์ฐ์ ๊ผญ ๋ช
์
์
์บ์คํ
- ํ์ ํด๋์ค์ ๊ฐ์ฒด ์ฃผ์๋ฅผ ์์ ํด๋์ค ํ์
์ผ๋ก ํ์
๋ณํํ๋ ๊ฒ
๐ ํ๋ณํ ์ฐ์ฐ์(๊ดํธ)๋ฅผ ์๋ต ๊ฐ๋ฅ
๋ค์ด์บ์คํ
- ์์ ํด๋์ค์ ๊ฐ์ฒด ์ฃผ์๋ฅผ ํ์ ํด๋์ค ํ์
์ผ๋ก ๋ณํํ๋ ๊ฒ
๐ ํ๋ณํ ์ฐ์ฐ์(๊ดํธ)๋ฅผ ๋ฐ๋์ ์ ๊ธฐ
โ ๏ธ ๋ค์ด์บ์คํ ์ ์ด์ ์ ์ ์บ์คํ ์ด ์ต์ ํ๋ฒ ์ด์ ์คํ๋์์ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅ !! )
์์ํด๋์ค๋ฅผ ํ์ํด๋์ค๋ก ๋ฐ๋ก ๋ค์ด์บ์คํ ์ ๋ถ๊ฐ๋ฅ !! )
์๋ ๋ ์ฝ๋์์ Friend
๊ฐ ์์ํด๋์ค / ๊ฐ๊ฐ BoyFriend
, GirlFriend
๊ฐ ํ์ํด๋์ค๋ผ๊ณ ํ ๋,
1, 2๋ฒ - ๊ฐ์ฒด ํ์ ๊ณผ ์ฐธ์กฐ๋ณ์์ ํ์ ์ด ์ผ์นํ๋ฏ๋ก ๋น์ฐํ ์บ์คํ ์ด ๊ฐ๋ฅ
3๋ฒ - ๊ฐ์ฒด์ ์ฐธ์กฐ๋ณ์์ ํ์
์ด ์ผ์นํ์ง ์์ ( ์
์บ์คํ
)
๐ GirlFriend๋ผ๋ ํ์ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ํด๋์ค์ Friend ํ์
์ผ๋ก ์ง์ ํด ์ค ๊ฒ์ด๋ฏ๋ก
GirlFriend ๊ฐ์ฒด๊ฐ Friend ํ์
์ ๊ฐ์ฒด๋ก ์ทจ๊ธ๋๊ธฐ ๋๋ฌธ์ GirlFriend ํด๋์ค ์์ ํ๋/๋ฉ์๋๋ ์ ๊ทผํ ์ ์๊ฒ ๋๊ณ ์์ํด๋์ค์ Friend์ ๋ฉค๋ฒ์๋ง ์ ๊ทผ ๊ฐ๋ฅ
( ํ์ํด๋์ค์ ๋ง์ ๊ธฐ๋ฅ๋ค์ ์์ํด๋์ค๋ก ์ทจ๊ธํจ์ผ๋ก ์ธํด ์ค์ฌ์ค๋ค๊ณ ์๊ฐํ๊ธฐ )
4๋ฒ - ์์ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ํ์ํด๋์ค ํ์ ์ ์ฐธ์กฐ๋ณ์๋ก ์ง์ ํด์ฃผ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ
5๋ฒ - ๊ฐ์ฒด์ ์ฐธ์กฐ๋ณ์์ ํ์
์ด ์ผ์นํ์ง ์์ ( ๋ค์ด์บ์คํ
)
๐ Friend๋ผ๋ ์์ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋ ์ฐธ์กฐ๋ณ์ ์์ฒด๋ฅผ GirlFriend๋ผ๋ ํ์ํด๋์ค์ ํ์
์ผ๋ก ํ์
๋ณํํ์ฌ freind2์ ํ ๋น
But, friend2๋ผ๋ ์ฐธ์กฐ๋ณ์ ํ์
์ด ์ด์ ์ ์
์บ์คํ
์ ํด์ค ์ํ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์์ -> ํ์ ํด๋์ค๋ก ๋ฐ๋ก ๋ค์ด์บ์คํ
ํ๋ฉด ์ค๋ฅ!!
1๋ฒ - ๊ฐ์ฒด ํ์ ๊ณผ ์ฐธ์กฐ๋ณ์์ ํ์ ์ด ์ผ์นํ๋ฏ๋ก ํ์ ๋ณํ ํ์ X
2๋ฒ - ์์ํด๋์ค๋ฅผ ํ์ํด๋์ค๋ก ์ ์บ์คํ ํด์ฃผ๋ ๊ฒฝ์ฐ (ํ์ ๋ณํ) ์๋ต ๊ฐ๋ฅ
3๋ฒ - ํ์ํด๋์ค๋ฅผ ์์ํด๋์ค๋ก ๋ค์ด์บ์คํ ํด์ฃผ๋ ๊ฒฝ์ฐ (ํ์ ๋ณํ) ๊ผญ ๋ช ์ ํด์ค์ผํจ
4๋ฒ - ์์๊ด๊ณ๊ฐ ์๋๋ฏ๋ก ํ์ ๋ณํ ๋ถ๊ฐ ๐ ์๋ฌ ๋ฐ์
( โ ๏ธ ์บ์คํ ๋๋ ์ฐํญ ๋ถ๋ถ์ด ๋ชจ๋ ์ฐธ์กฐ๋ณ์๋ผ๋ ๊ฒ์ ํท๊ฐ๋ฆฌ์ง ์๊ธฐ!!! โ ๏ธ )
์ฐธ์กฐ๋ณ์์ ํ์ ๋ณํ, ์ฆ ์บ์คํ ์ด ๊ฐ๋ฅํ ์ง ์ฌ๋ถ๋ฅผ boolean ํ์ ์ผ๋ก ํ์ธํ ์ ์๋ ์๋ฐ์ ๋ฌธ๋ฒ์์
์ฐธ์กฐ_๋ณ์ instanceof ํ์
๐ ์์ ์๋ ์ฐธ์กฐ๋ณ์๊ฐ ๋ค์ ์๋ ์ธ์คํด์ค ํ์ ์ ํฌํจ๋๋๊ฐ?
true
--> ํ์
๋ณํ ๊ฐ๋ฅfalse
--> ํ์
๋ณํ ๋ถ๊ฐ๋ฅfalse
๋ฐํ )์์ค ์ฝ๋๊ฐ ๊ธธ์ด์ ธ์ ๋ง์ ์์ฑ ๊ฐ์ฒด๋ค์ ํ์ ์ ํ์ธํ๊ธฐ ์ด๋ ค์ธ ๊ฒฝ์ฐ์ instanceof ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ์บ์คํ ์ฌ๋ถ๋ฅผ ํ์ธํด์ ์๋ฌ๋ฅผ ์ต์ํํ ์ ์์
์๋ ๋ ์ฝ๋์์ Animal
์ด ์์ํด๋์ค / ๊ฐ๊ฐ Cat
, Bat
๊ฐ ํ์ํด๋์ค๋ผ๊ณ ํ ๋,
1-1๋ฒ - ์ฐธ์กฐ๋ณ์ a๊ฐ ์ฐธ์กฐํ๊ณ ์๋ Animal ์ธ์คํด์ค ํ์ ์ด ์ต์์ ํด๋์ค Object์ ์ํ๊ธฐ ๋๋ฌธ์ true
1-2๋ฒ - ์์ ์ ์ธ์คํด์ค ํ์ ์ด๋ฏ๋ก true
1-3๋ฒ - ์ฐธ์กฐ๋ณ์ a๊ฐ ์ฐธ์กฐํ๊ณ ์๋ Animal ์ธ์คํด์ค ํ์
์ด ํ์ํด๋์ค ์ธ์คํด์ค Bat์ ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ -> ํ์ ๋ก ๋ณํ์ ์๋ผ์ false
(์ด์ ์ ์
์บ์คํ
์ ํ์ง ์์๊ธฐ์ ๋ฐ๋ก ๋ค์ด์บ์คํ
์ด ์๋จ)
2-1๋ฒ - ์ฐธ์กฐ๋ณ์ b๊ฐ ์ฐธ์กฐํ๊ณ ์๋ Animal ์ธ์คํด์ค๋ก ์ทจ๊ธ๋ฐ๋ Cat ์ธ์คํด์ค๊ฐ ์ต์์ ํด๋์ค Object์ ์ํ๊ธฐ ๋๋ฌธ์ true
2-2๋ฒ - ์ฐธ์กฐ๋ณ์ b๊ฐ ์ฐธ์กฐํ๊ณ ์๋ Animal ์ธ์คํด์ค๋ก ์ทจ๊ธ๋ฐ๋ Cat ์ธ์คํด์ค๊ฐ ์์ํด๋์ค Animal์ ์ํ๊ธฐ ๋๋ฌธ์ true
2-3๋ฒ - ์ฐธ์กฐ๋ณ์ b๊ฐ ์ฐธ์กฐํ๊ณ ์๋ Animal ์ธ์คํด์ค๋ก ์ทจ๊ธ๋ฐ๋ Cat ์ธ์คํด์ค๊ฐ ์๊ธฐ ์์ ์ ํ์ Cat๊ณผ ๋์ผํ๊ธฐ ๋๋ฌธ์ true
2-4๋ฒ - ์์๊ด๊ณ๊ฐ ์๋๋ฏ๋ก b ์ฐธ์กฐ๋ณ์๊ฐ Bat ์ด๋ผ๋ ๊ฐ์ฒด ํ์ ์ ์ํ์ง ์์ false
๐ฅ๐ฅ ์ฌ๊ธฐ์ ๋ด๊ฐ ํท๊ฐ๋ ธ๋ ์ !! ๐ฅ๐ฅ
โ
โ๏ธ 1-3๋ฒ - ๋ค์ด์บ์คํ ์ด ์๋๋ฐ ์ false ์ผ๊น?
๐ instanceof ์ฐ์ฐ์๋ ์ธ์คํด์ค ํ์ ์ ํฌํจ๊ด๊ณ๋ฅผ ์ง์ค์ ์ผ๋ก ๋ณด๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐ๋ณ์์ ํ๋ณํ๊ณผ ๊ด๋ จ์ด ์์! ๋ฐ๋ผ์ ๋ค์ด์บ์คํ ๋ ๋ฌผ๋ก ์๋๊ณ ์์ -> ํ์ํด๋์ค๋ก ํ์ ๋ณํ๋ ๋ถ๊ฐ!
โ
โ๏ธ 2-3 - ์ฐธ์กฐ๋ณ์ cat์ ์ธ์คํด์ค ํ์ ์ Cat ์ผ๋ก ์ทจ๊ธํด์ true์ผ๊น
์๋๋ฉด Cat ๊ฐ์ฒด๊ฐ Animal ํ์ ์ ๊ฐ์ฒด๋ก ์ทจ๊ธ ๋์ด์ true์ผ๊น?
๐ ํ์ํด๋์ค Cat ๊ฐ์ฒด๋ฅผ ์์ํด๋์ค Animalํ์ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ ๊ฒ! ์์->ํ์ ๋ณํ์ ๋ถ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ ์๋ ๋ถ๊ฐ๋ฅ
โ
โ๏ธ 2-3 - ์์์ Cat ๊ฐ์ฒด๋ฅผ Animal ํ์ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค๊ณ ํ๋๋ฐ ๊ทธ๋ฌ๋ฉดAnimal b = new Cat();
==Cat b == Cat();
๋์ด ๊ฐ์ ๊ฒ์ผ๊น?
๐ ์ฐธ์กฐ๋ณ์ b๊ฐ ๋ชจ๋ ๊ฐ์ Cat ๊ฐ์ฒด๋ฅผ ํฌํจํ๊ณ ์์
๋ค๋ง ์ฌ๊ธฐ์ ๋์ ๋ค๋ฅธ ์ ์!!
์ ์๋ ํ์ํด๋์ค Cat์ด ์์๋ฐ์ ๋ฉค๋ฒ(ํ๋,ํด๋์ค) + ์๊ธฐ ์์ ๋ง์ ๋ฉค๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์์ํ ๋ฐ Cat์ ์์ํด๋์ค์ธ Animal ํ์ ๊ฐ์ฒด๋ก ํ์ ์ ๋ณํํ ๊ฒฝ์ฐ, ์๊ธฐ ์์ ๋ง์ ๋ฉค๋ฒ๋ ์ฌ์ฉ์ด ๋ถ๊ฐํ๊ณ ์์๋ฐ์๋ ์์ํด๋์ค์ ๋ฉค๋ฒ๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค
ํ์๋ ์๋ก ๊ฐ์ ์๊ธฐ์์ ์ด๊ธฐ ๋๋ฌธ์ ์์๋ฐ์ ๋ฉค๋ฒ + ์๊ธฐ ์์ ์ ๋ฉค๋ฒ ๋ณด๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
๊ธฐ์กด ํด๋์ค๋ค์ ๊ณตํต์ ์ธ ์์ฑ/๊ธฐ๋ฅ๋ค์ ๋ฝ์์ ์์ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ด๋ ๊ฒ
( ์์์ ๋ฐ๋๋ผ๊ณ ์๊ฐ )
ํด๋์ค์ ์์ ์์๊ฐ ๋์ ์๋ก ์ถ์ํ์ ์ ๋๊ฐ ๋๊ณ ๊ทธ ์๋๋ก ๋ด๋ ค๊ฐ์๋ก ๊ตฌ์ฒดํ๋จ
( ์์ํด๋์ค์ผ์๋ก ๋ ๊ณตํต์ ์ธ ๋ฉค๋ฒ๋ค์ด ์ ์๋์ด์๊ณ ๋ด๋ ค๊ฐ ์๋ก ๋ ๊ตฌ์ฒด์ ์ธ ๋ฉค๋ฒ๋ค์ด ์ ์๋์ด์์ )
abstract ๋? -> ์ถ์์ ์ธ -> ์ถฉ๋ถํ ๊ตฌ์ฒด์ ์ด์ง ์์ -> ๋ฏธ์์ฑ์ธ
abstract class ํด๋์ค๋ช { // ์ถ์ ๋ฉ์๋๊ฐ ์ต์ ํ๋ ์ด์ ํฌํจ๋ผ์๋ ์ถ์ ํด๋์ค abstract void ๋ฉ์๋๋ช (); // ๋ฉ์๋ ๋ฐ๋๊ฐ ์๋ ์ถ์๋ฉ์๋ }
์ถ์ ํด๋์ค(abstract class)
-> ์ถ์ ๋ฉ์๋๋ฅผ ํ๋ ์ด์ ๊ฐ์ง๊ณ ์๋ ํด๋์ค
-> ๋๋จธ์ง๋ ๊ทธ๋ฅ ์ผ๋ฐ ํด๋์ค์ ๊ฐ์
( โ ๏ธ ์ผ๋ฐ ํด๋์ค ์์ abstract ํค์๋๋ฅผ ๋ถ์ด๊ณ ์ถ์๋ฉ์๋๋ฅผ ์ฐ์ง ์์๋ ๊ทธ ํด๋์ค๋ ์ถ์ํด๋์ค๋ก ๋ถ๋ฅ๋์ด ๊ฐ์ฒด ์์ฑ์ด ๋ถ๊ฐ )
์ถ์ ๋ฉ์๋(abstract method)
-> ๋ฉ์๋ ์๊ทธ๋์ฒ๋ง ์๊ณ ๋ฐ๋๊ฐ ์๋ ๋ฉ์๋
-> ๋ฏธ์์ฑ ์ค๊ณ๋์ด๊ธฐ ๋๋ฌธ์ ๋ฉ์๋ ๋ฐ๋๊ฐ ์์ฑ์ด ๋๊ธฐ ์ ๊น์ง ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฒด ์์ฑ ๋ถ๊ฐ
-> ์์ํด๋์ค์ ์ถ์๋ฉ์๋๋ฅผ ๋ฃ๊ณ ๊ทธ ๊ฐ์ ์์๋ฐ๋ ํ์ํด๋์ค๋ค์ ์ถ์๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ๊ฐ๊ฐ ์ํฉ์ ๋ง๋ ๋ฉ์๋ ๊ตฌํ ๊ฐ๋ฅ
ํด๋์ค ์์ ๋ถ๋ ๊ฒฝ์ฐ
-> ๋ณ๊ฒฝ/ํ์ฅ ๋ถ๊ฐ๋ฅํ ํด๋์ค, ์์ ๋ถ๊ฐ
๋ฉ์๋ ์์ ๋ถ๋ ๊ฒฝ์ฐ
-> ์ค๋ฒ๋ผ์ด๋ฉ ๋ถ๊ฐ
๋ณ์ ์์ ๋ถ๋ ๊ฒฝ์ฐ
-> ๊ฐ ๋ณ๊ฒฝ์ด ๋ถ๊ฐํ ์์
์ ๋ชจ๋ ๊ณตํต์ ์ผ๋ก final ์ ์ด์๊ฐ ์ถ๊ฐ๋๋ฉด ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๊ณ ํ์ฅํ ์ ์๋ค
โ ์ถ์ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ฐจ์ด์์๋๊ธฐ!!
๊ทธ ์์ฒด๋ก ์ธ์คํด์ค๋ฅผ ์์ฑ ๋ถ๊ฐ, ๋ฉ์๋ ๋ฐ๋๋ฅผ ์ฌ์ ์ํ๋ ๊ตฌํ ํด๋์ค๋ฅผ ๋ฐ๋ก ์์ฑํด์ผํจ
(like. ์ถ์๋ฉ์๋๋ค์ ์ฌ์ ์ํ ํ์ํด๋์ค๋ค)
โ implements
ํค์๋ ์ฌ์ฉํด์ ์ธํฐํ์ด์ค ๊ตฌํ ( ๋ฉ์๋ ์ฌ์ ์ )
โ ์ธํฐํ์ด์ค๋ผ๋ฆฌ๋ extends
ํ ์ ์๊ณ , ํด๋์ค์ ๊ตฌํํ๋ ค๋ฉด implememts
class ํด๋์ค๋ช implements ์ธํฐํ์ด์ค๋ช { ... // ํด๋น ์ธํฐํ์ด์ค์ ์ ์๋ ๋ชจ๋ ์ถ์๋ฉ์๋ ๊ตฌํ }
๐ ์ธํฐํ์ด์ค์์ ๋ฐ๋๊ฐ ์์๋ ๋ชจ๋ ์ถ์ ๋ฉ์๋๋ค์ ๊ตฌํ ํด๋์ค ๋ด์์ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ๊ฐ๊ฐ ๋ฐ๋๋ฅผ ์์ฑ
class ํด๋์ค๋ช implements ์ธํฐํ์ด์ค๋ช 1, ์ธํฐํ์ด์ค๋ช 2, ์ธํฐํ์ด์ค๋ช 3 { ... }
์์ ๊ฐ์ด ๋ค์ค ๊ตฌํ ๊ฐ๋ฅ
๐ก ํด๋์ค์์ ๋ค์ค ์์์ด ๋ถ๊ฐ๋ฅํ์๋ ์ด์
โ ์์ํด๋์ค์ ๋์ผํ ์ด๋ฆ์ ๋ฉค๋ฒ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์ถฉ๋์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ
But, ์ธํฐํ์ด์ค - ์ ์ด์ ๋ฏธ์์ฑ๋ ๋ฉค๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ถฉ๋์ด ๋ฐ์ํ ์ฌ์ง๊ฐ ์๊ณ , ๋ฐ๋ผ์ ์์ ํ๊ฒ ๋ค์ค ๊ตฌํ์ด ๊ฐ๋ฅ
class ํด๋์ค๋ช
extends ์์ํด๋์ค๋ช
implements ์ธํฐํ์ด์ค๋ช
{
...
}
์์ ๊ฐ์ด ๋ค๋ฅธ ํด๋์ค ์์๊ณผ ์ธํฐํ์ด์ค ๊ตฌํ์ ๋์์ ํ๋ ๊ฒฝ์ฐ๋ ์์
์ ์ธ / ๊ตฌํ์ ๋ถ๋ฆฌ์์ผ ๊ฐ๋ฐ์๊ฐ ๋จ์ถ
์ญํ ๊ณผ ๊ตฌํ์ ๋ถ๋ฆฌ์์ผ ์ฌ์ฉ์ ์ ์ฅ์์๋ ๋ณต์กํ ๊ฒ๊ณผ ์๊ด์์ด ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉ ๊ฐ๋ฅ
๋ ๋ฆฝ์ ์ธ ํ๋ก๊ทธ๋๋ฐ -> ์ฝ๋ ๋ณ๊ฒฝ์ ๋ฒ๊ฑฐ๋ก์ ์ต์ํ / ํ ํด๋์ค ์์์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ํด๋์ค์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ ์ ์์
Ex. aํด๋์ค๊ฐ bํด๋์ค๋ฅผ ์์กดํ๊ณ ์์ ๋(๋ชจ๋ ์์ฑ ๊ธฐ๋ฅ์ด bํด๋์ค๋ฅผ ํธ์ถํ ๊ฒ์ผ ๋), b ํด๋์ค ๋ฉค๋ฒ์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ผ์ผ์ด ๋ฐ๊ฟ์ผํจ
โ
๐ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด์ bํด๋์ค์์ ๊ตฌํํ๊ณ , aํด๋์ค์ ๋งค๊ฐ๋ณ์๋ฅผ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋๋ก ์ค์ ํ๋ฉด bํด๋์ค๊ฐ ๋ณ๊ฒฝ๋์ด๋ ๋ณ๊ฒฝ๋ ๋ฉค๋ฒ๋ค์ด ์๋์ผ๋ก ์ธํฐํ์ด์ค์ ๊ฐ๊ฒ๋๊ณ ๊ทธ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ aํด๋์ค๋ ์๋์ผ๋ก ์์ ๋์ด ์ถ๋ ฅ
( ์ข ๋ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ณ , ์ ์ฐํ๊ณ , ํ์ฅ์ด ์ฌ์ด ์ํํธ์จ์ด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์์น )
๋จ์ผ ์ฑ ์ ์์น (Single responsibility principle)
ํด๋์ค๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค์ ํ๋์ ์ฑ ์์ ์ํํ๋๋ฐ ์ง์คํด์ผ ํ๋ค๋ ์์น
AOP๋ ๋ณ๋์ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ํต์ฌ ๋ก์ง์์ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์ SRP์ ์์น์ ์งํจ ๋ฐฉ์์ด๋ผ๊ณ ํ ์ ์์
Ex.
Hyunju
๋ผ๋ ํด๋์ค๊ฐ ์๋ค๋ฉด, ์ญํ ๋ณ๋ก ๋๋์ด์
์น๊ตฌ์ ์ญํ / ๋ธ์ ์ญํ / ์ง์์ ์ญํ / ํ์์ ์ญํ ๋ฑ
[ SRP๋ฅผ ์ ์งํฌ ๊ฒฝ์ฐ ]
์์ง๋ ฅ์ด ๋์์ง๊ณ , ๊ฒฐํฉ๋๋ ๋ฎ์์ง
์ฝ๋ ๊ฐ๋ ์ฑ๋ ์ข์์ง
ํ
์คํธ ๋ฒ์๋ ์์์ง
โ ์ ์ง๋ณด์ ํธํด์ง
๊ฐ๋ฐฉ-ํ์ ์์น (Open/closed principle)
ํ์ฅ์๋ ์ด๋ ค์๊ณ (Open), ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค(Close)๋ ์์น
( ๋ณํ๋ ๊ธฐ๋ฅ์ Open, ๋ณํ์ง ์๋ ๊ธฐ๋ฅ์ Close )
๋ณํ์ง ์๋ ๊ธฐ๋ฅ์ ์ฉ์ดํ ํ์ฅ๊ณผ ์์ ์ ์ํด ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋์จํ๊ฒ ์์กดํ๊ฒ ๋ง๋ค์ด์ผ ํ๋ค
Ex.
Car
์ด๋ผ๋ ๊ฐ์ฒด๊ฐ ์๋ค๋ฉด,
- ๋ณํ์ง ์๋ ๋์
โ ์์ง์ด๋ ๊ฒ- ๋ณํ๋ ๋์
โ ์๋ ๋ชจ๋, ์คํ ๋ฉ์ด์ ๋ชจ๋, ํฌ๋ฃจ์ฆ์ปจํธ๋กค ๋ชจ๋ ๋ฑ
๋ฆฌ์ค์ฝํ ์นํ ์์น (Liskov substitution principle)
ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊นจ๋จ๋ฆฌ์ง ์์ผ๋ฉด์ ํ์ ํ์ ์ ์ธ์คํด์ค๋ก ๋ฐ๊ฟ ์ ์์ด์ผ ํ๋ค๋ ์์น
์์ ํ์
์ ๊ฐ์ฒด๋ฅผ ํ์ ํ์
์ ๊ฐ์ฒด๋ก ์นํํด๋ ์์ ํ์
์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ์ ์์ ์ผ๋ก ๋์ํด์ผ ํ๋ค
( ํน์ ๋ฉ์๋๊ฐ ์์ ํ์
์ ์ธ์๋ก ์ฌ์ฉํ๋ค๊ณ ํ ๋, ๊ทธ ํ์
์ ํ์ ํ์
๋ ๋ฌธ์ ์์ด ์ ์์ ์ผ๋ก ์๋์ ํด์ผ ํ๋ค )
OCP ์์น์ ๊ธฐ๋ฐ์ด ๋๋ค๊ณ ์๊ฐ๋จ
์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น (Interface segregation principle)
์ผ๋ฐ์ ์ธ ํ๋์ ์ธํฐํ์ด์ค๋ฅผ ์กฐ๊ธ ๋ ๊ตฌ์ฒด์ ์ธ ์ธํฐํ์ด์ค๋ก ์ชผ๊ฐ๋๊ฒ์ด ๋ซ๋ค๋ ์์น
Ex. ์ฌ๋์ ํ๋์์ (์ผ๋ฐ์ ์ธ ํ๋์ ์ธํฐํ์ด์ค)
- ๊ฑท๊ธฐ (๊ตฌ์ฒด์ ์ธ ์ธํฐํ์ด์ค)
- ๋งํ๊ธฐ (๊ตฌ์ฒด์ ์ธ ์ธํฐํ์ด์ค)
- ๋ฐ๊ธฐ (๊ตฌ์ฒด์ ์ธ ์ธํฐํ์ด์ค)
๋ฑ
์์กด๊ด๊ณ ์ญ์ ์์น (Dependency inversion principle)
์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ธฐ๋ฅ์ ๊ตฌ์ฒด ํด๋์ค์ ์์กดํ์ง ์๊ณ , ์ถ์ํ(์ผ๋ฐํ) ๋ ํด๋์ค์ ์์กดํ๋ ๊ฒ์ ์๋ฏธ
๊ตฌ์ฒด ํด๋์ค๊ฐ ์ถ์ ํด๋์ค์ ์์กดํ๋ฏ๋ก ์์กด ๊ด๊ณ๊ฐ ์ญ์ ๋ ํํ
์์กด์ฑ ์ฃผ์ ์ด ์ด ์์น์ ๋ฐ๋ฅด๋ ๋ฐฉ๋ฒ ์ค ํ๋
[์ฐธ๊ณ ] https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84)
์ค๋์ ๋คํ์ฑ์์ ํ์
๋ณํ ๋ถ๋ถ์ด ์ ์ผ ํท๊ฐ๋ฆฌ๊ณ ์ดํด๋ ์ ์๋ผ์ ์๋ ๊ถ๊ธํ ๊ฒ์ ๋นจ๋ฆฌ ํ๊ณ ๋์ด๊ฐ์ผ ์ง์ฑ์ด ํ๋ฆฌ๊ธฐ์ ์ ์ฌ๋ ๋ชป๋จน๊ณ ๊ณ์ ์ฐพ์๋ณด๋ฉด์ ๊ณต๋ถํ๊ณ ๊ทธ๋๋ ์ดํด๊ฐ ์๋๋ ๋ถ๋ถ์ ์ค ์ธ์
์์ ์ง๋ฌธํ์ฌ ์ข ๋ ์ดํดํ ์ ์๋๋ก ํ๋ค !
์์ง๊น์ง 100% ์ดํด๊ฐ ๋ ๊ฑด ์๋์ง๋ง ๋ด์ผ ์ ๋ฆฌํ ์ ์๋ ์๊ฐ์ด ์์ผ๋ ๋ด์ผ ๊ฐ์ฒด์งํฅ ๊ด๋ จํด ๋ค ๋ณต์ตํด์ผ๊ฒ ๋ค!!