๐Ÿ”ฅTIL๐Ÿ”ฅ์ŠคํŒŒ๋ฅดํƒ€ | ํด๋ž˜์Šค

hyihyiยท2023๋…„ 12์›” 4์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
11/69
post-thumbnail

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ

๋ฉ”์†Œ๋“œ : ํŠน์ •ํ•œ ๋กœ์ง์„ ๊ฐ€์ง€๋Š” ์†Œ์Šค์ฝ”๋“œ
๋กœ์ง์„ ์ถ”์ƒํ™”ํ•ด๋†“๊ณ  ์ƒํ™ฉ์— ๋งž๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค
์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค
๋ฐ˜ํ™˜์ž๋ฃŒํ˜•์ด ์—†์„ ๋•Œ๋Š” Unit์œผ๋กœ ๋ช…์‹œํ•˜๊ฑฐ๋‚˜ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค

ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘์€ ํ•ญ์ƒ main ํ•จ์ˆ˜์ด๋‹ค

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

OOP

5๋Œ€ ํ‚ค์›Œ๋“œ(ํด๋ž˜์Šค / ์ถ”์ƒํ™” / ์บก์Šํ™” / ์ƒ์† / ๋‹คํ˜•์„ฑ)

-ํด๋ž˜์Šค ์„ค๊ณ„

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 .์ˆœ์„œ๋Š” ์ƒ์† ๋จผ์ €ํ•˜๊ณ  ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜๋Š” ๊ฑด์ง€?, ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€?

profile
์ž์œ ๋กญ๊ฒŒ ์“ด ๋‚˜์˜ ์ž์œ ๋กœ์šด Development voyageโ›ต

0๊ฐœ์˜ ๋Œ“๊ธ€