๋ฉ์๋ : ํน์ ํ ๋ก์ง์ ๊ฐ์ง๋ ์์ค์ฝ๋
๋ก์ง์ ์ถ์ํํด๋๊ณ ์ํฉ์ ๋ง๊ฒ ์คํํ ์ ์๋ค
์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์๋ค
๋ฐํ์๋ฃํ์ด ์์ ๋๋ Unit์ผ๋ก ๋ช
์ํ๊ฑฐ๋ ์๋ตํ ์ ์๋ค
ํ๋ก๊ทธ๋จ์ ์์์ ํญ์ main ํจ์์ด๋ค
OOP(Object Oriented Programming)
: ์ฝํ๋ฆฐ์ ๋ชจ๋ ๊ฒ์ด ํด๋์คํํ์ด๋ฏ๋ก ๊ฐ์ฒดํํ ์ ์๋ค
ํ๋ก๊ทธ๋จ์ ๊ฐ ์์๋ณ ์ค๊ณ๋
class ํค์๋๋ฅผ ํ์ฉํด ํด๋์ค๋ฅผ ๋ง๋ฆ
์ ๋ณด(ํ๋กํผํฐ)์ ํ์(๋ฉ์๋)๋ฅผ ์์ฑ
1.data class
2.sealed class
3.object class
: ํด๋์ค๋ผ๋ ์ค๊ณ๋๋ฅผ ๋ง๋ค์๋ค๊ณ ํด์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ก ์ฌ๋ผ๊ฐ๋ ๊ฒ ์๋์ง๋ง object๋ฅผ ๋ถ์ด๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ก ์ฌ๋ผ๊ฐ๋ค
ํด๋์ค๋ฅผ ์ค์ฒดํํ ๋ ์ต์ด๋ก ์คํํ ๋ก์ง์ ์์ฑ
1)๊ธฐ๋ณธ ์์ฑ์
2)๋ช
์์ ์์ฑ์
์ฃผ ์์ฑ์
: ํด๋์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ์ค์ฒดํ ์์
์ ํ ๋ ์ต์ด๋ก ์คํ๋๋ ์ฝ๋๋ init
๋ถ ์์ฑ์
: ํ ๊ฐ์ง์ ํํ๋ก ํด๋์ค๋ฅผ ์ค์ฒดํํ ๋ ์ ํด์ง ๋งค๊ฐ๋ณ์์ ํํ๋ก๋ง ํด๋์ค๋ฅผ ๋ถ๋ฅผ ์ ์์. ์ด๋ ๊ฒ ํด์ผ init์ ์ธ ์ ์์
class Character(_name:String, _hairColor:String, _height:Double) {
init {
println("๋งค๊ฐ๋ณ์์๋ ์์ฑ์ ์คํ ์๋ฃ!")
}
}
๋ถ์์ฑ์ :
์ฌ๋ฌ ํํ๋ก ํด๋์ค๋ฅผ ์ค์ฒดํํ ๋
constructor๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค์ด์ ๊ฐ์ ๋ค๋ฅธ ํ๋ผ๋ฏธํฐ์ ํํ๋ฅผ ๊ฐ์ง ์์ฑ์๋ฅผ ๋ง๋ค ์ ์๋ค.
class Character {
constructor(_name:String, _hairColor:String, _height:Double) {
println("${_name}์ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_hairColor}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_height}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
}
}
๊ฐ์ฒด : ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ํฌํจํ๋ ๊ฐ๋
ํด๋์ค ํํ๋ก ์ค๊ณ๋ ๊ฐ์ฒด๋ฅผ ์ค์ฒดํํ๋ฉด ์ธ์คํด์ค๊ฐ ์๊น
์ธ์คํด์ค : ํด๋์ค ํํ๋ก ์ค๊ณ๋ ๊ฐ์ฒด๋ฅผ ์ค์ฒดํํ๋ฉด ์ธ์คํด์ค๊ฐ ์๊น
๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํจ
ํด๋์ค๋ฅผ ์ค์ฒดํํ๋ ๊ฒ
:๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ.
ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด์ ์์น์ ๋ณด๋ฅผ ๋ณ์์ ์ ์ฅํด๋๊ณ , ํ์ํ ๋ ์ฐธ์กฐํจ
๋ณดํต ํด๋์ค๋ฅผ ๋ง๋ค ๋๋ ํ์ผ๋ก ๊ตฌ๋ถ์ ํ๋ ๊ฒ ์ผ๋ฐ์
ํจ์์ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ค๋ค. ๊ทธ ๊ฐ์ฒด์ ๋ณ์์ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค
ํด๋์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๋์ฑ ๋๋ํ๊ฒ ๋ง๋ค ์ ์๋ค
๊ณตํต์ ์ธ ์์๊ฐ ์์ ๋ ๋ถ๋ชจ/์์ ํด๋์ค๋ฅผ ๊ตฌ๋ถํด์ ์์๊ด๊ณ๋ฅผ ๋ง๋ค ์ ์๋ค
final ํค์๋๋ก ์์์ ๋ง์
open ํค์๋๋ก ์์ ๊ด๊ณ๋ฅผ ๋ง๋ค ์ ์์
-์์์ด ํ์ํ ์ด์
๋คํ์ฑ
ํด๋์ค์ ๋ด์ฉ์ ๋ณ๊ฒฝํด์ผ ํ ๋ ๋ถ๋ชจ ํด๋์ค๋ง ๋ณ๊ฒฝํจ์ผ๋ก์จ ๊ณต์๋ฅผ ์ค์ผ ์ ์๋ค
์ค๋ฒ๋ผ์ด๋ฉ : ์์๋ฐ์ ๋ถ๋ชจ ํด๋์ค์ ์ ๋ณด(ํ๋กํผํฐ)๋ ํ์(๋ฉ์๋)๋ฅผ ์ฌ์ค๊ณ. ์ฃผ๋ก ๋ฉ์๋๋ฅผ ์ฌ์ค๊ณ
์ค๋ฒ๋ผ์ด๋ฉ์ด ํ์ํ ์ด์ :
Q.์ด์ฐจํผ ์ฌ์ค๊ณํ๋ ๊ฑฐ๋ผ๋ฉด ์์์ด๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ํ๋ ์ด์ ๊ฐ ์๋์ง?
: ํด๋์ค์ ๊ฐ๋ฐ์๋ค์ด ๋ง์์ก์ ๋ ์์์์ ์ฐ๋ ๋ฉ์๋๋ฅผ ํ์ธํ๊ณ ์ฌ์ค๊ณํ๋ฉด ์ผ๊ด์ฑ์ ์งํฌ ์ ์์
์ฐ์ง ์์ผ๋ฉด ์ฌ์ฌ์ฉ์ฑ์ด ๋จ์ด์ ธ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง
์ค๋ฒ๋ก๋ฉ : ๋งค๊ฐ๋ณ์์ ๊ฐฏ์, ์๋ฃํ์ ๋ค๋ฅด๊ฒ ํด ๋์ผํ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ํํ๋ก ๋ง๋ค ์ ์๋ค
๋ฐํํ์ ์ํฅ์ ์ฃผ์ง ์์
์ค๋ฒ๋ก๋ฉ์ด ํ์ํ ์ด์ : ๊ฐ์ ์ญํ ์ ํ๋ addInt, addDouble์ ์์ฑํ ํ์๊ฐ ์์ด์ง๋ค.
์ค๋ฒ๋ก๋ฉ์ ๊ฐ์ฅ ๋ํ์ ์ธ ์๋ println ๋ฉ์๋
์ฝํ๋ฆฐ์ ๋ฐ๋์ ๋ถ๋ชจ ํด๋์ค๊ฐ ํ๊ฐ์ฌ์ผ ํ๋ค.
๊ทผ๋ณธ์ ์ธ ๊ณตํต์ ์ ์์ ๋ฐ๊ณ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ๋ค์ ์ธํฐํ์ด์ค๋ก ์ถ๊ฐํ ์ ์๋ค.
interface ํค์๋๋ฅผ ์ฌ์ฉํด ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ฆ
์ถ์ ๋ฉ์๋ : ๋ก์ง์ ์๊ณ ์ด๋ฆ๋ง ์๋ ๋ฉ์๋
์ธํฐํ์ด์ค : ์ถ์ ๋ฉ์๋๋ง ๊ฐ์ง๊ณ ์์
์ธํฐํ์ด์ค๋ ์ถ์๋ฉ์๋๋ง ์์ฑํ๋ ๊ฒ ์์น์ด์ง๋ง ์ต๊ทผ์๋ ์ถ์๋ฉ์๋๊ฐ ์๋์ฌ๋ ๊ด์ฐฎ์ ํ์ง๋ง ์ต๊ทผ์ ๋์จ ๊ฒ์ด๊ณ ์ฐ๋ฆฌ๋ ์ต๊ทผ์ ๋์จ ์ฝ๋๋ง ๋ณด๋ ๊ฒ ์๋๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค๋ ์ถ์๋ฉ์๋๋ฅผ ์์ฑํ๋ ์ต๊ด์ ๊ฐ์ง๋ ๊ฒ ์ข๋ค
๋ญ, ์ฐธ์, ๋น๋๊ธฐ์์ ์ค๋ฆฌ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๋ฉด ํค์์น๋ค๋ผ๋ ํ์๋ ๊ทผ๋ณธ์ ์ธ ๊ณตํต์ ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค๋ก ๋นผ๋ ๊ฒ
Q .์ ์ธํ ํจ์ํ ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ
Q . ์ฃผ,๋ถ๋ฅผ ๋๋ ์ด์
Q . ์ this.name = name์ ํ๋กํผํฐ ์์ญ์ ์ ์ ๊ณ init์ ์ ๋์ง?
Q .๋งค๊ฐ๋ณ์์ ์์๊ฐ ๋ฌ๋ผ๋ ์ค๋ฒ๋ก๋ฉ์ด ๋๋?
: Y. ๋งค๊ฐ๋ณ์์ ์์น๊ฐ ๋ฌ๋ผ๋ ์ค๋ฒ๋ก๋ฉ์ผ๋ก ์ธ์ ์ด ๋๋ค.
Q .์์๋ ์์ ๋จผ์ ํ๊ณ ์ค๋ฒ๋ผ์ด๋ฉ ํ๋ ๊ฑด์ง?, ์ธํฐํ์ด์ค๋ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ธ ์ ์๋์ง?