250x250
Rainbow🌈Coder
My dev NoteπŸ“’
Rainbow🌈Coder
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (411)
    • 곡지사항 (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • νƒ€μž…μŠ€ν¬λ¦½νŠΈ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE κ°œλ°œν™˜κ²½μ„€μ • (3)
      • React와 Node 같이 λ•Œλ €μž‘κΈ° (6)
      • next.js (2)
      • pixi.js (7)
    • λ§ˆν¬μ—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • 이것이 C#이닀 (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(기초) (8)
      • Unity(C#쀑급) (5)
      • μœ λ‹ˆν‹° 포톀(λ„€νŠΈμ›Œν¬) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • μŠ€ν”„λ§ (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • μžλ£Œκ΅¬μ‘°μ™€ μ•Œκ³ λ¦¬μ¦˜ (15)
      • 자료ꡬ쑰 (5)
      • μ•Œκ³ λ¦¬μ¦˜ (10)
    • ν˜•μƒκ΄€λ¦¬ (15)
      • Git (11)
      • μ†ŒμŠ€νŠΈλ¦¬ (3)
    • κ·Έλž˜ν”½μŠ€ (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • λ¦¬λˆ…μŠ€ (5)
      • λ¦¬λˆ…μŠ€ (5)
    • μ±… 리뷰 (13)
      • ν΄λ¦°μ½”λ“œ(책리뷰) (3)
      • μœ μ§€λ³΄μˆ˜κ°€λŠ₯ν•œμ½”λ”©μ˜κΈ°μˆ C#편(책리뷰) (1)
      • λ¦¬νŒ©ν† λ§(μžλ°”μŠ€ν¬λ¦½νŠΈνŒ) (9)
    • Server (2)
      • κ²Œμž„ μ„œλ²„(λ„€νŠΈμ›Œν¬, λ©€ν‹°μ“°λ ˆλ“œ,OS) (2)
    • 섀계, 아킀텍쳐 (4)
    • 파이썬 (5)
    • λ””μžμΈνŒ¨ν„΄ (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • 인곡지λŠ₯ (1)
      • ν˜Όμžκ³΅λΆ€ν•˜λŠ”λ¨Έμ‹ λŸ¬λ‹+λ”₯λŸ¬λ‹ (1)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

νƒœκ·Έ

  • μœ„μž„
  • MySQL
  • μ»΄ν¬μ§€μ…˜
  • γ…£γ„·

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Rainbow🌈Coder

My dev NoteπŸ“’

TypeScript/νƒ€μž…μŠ€ν¬λ¦½νŠΈ TypeScript

[νƒ€μž…μŠ€ν¬λ¦½νŠΈ] μΊ‘μŠν™”, 좔상화 차이 λͺ…ν™•ν•˜κΈ° 작기

2022. 4. 20. 14:29
728x90

OOP μžμ²΄κ°€ 세상에 μžˆλŠ” 것을 λ³Έλ”° 클래슀λ₯Ό λ§Œλ“€κ³  κ·Έκ²ƒλ“€λ‘œ ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜κ² λ‹€λŠ” κ°œλ…μ΄κ³ 

μΊ‘μŠν™”μ™€ μΆ”μƒν™”λŠ” 아이디어 μžμ²΄λŠ” κ³΅μœ ν•˜μ§€λ§Œ 사뭇 κ°ˆλž˜κ°€ λ‹€λ₯Έ λŠλ‚Œμ΄λ‹€.

μΊ‘μŠν™”λŠ” 세상에 μžˆλŠ” 것을 λ³Έλ”° 클래슀λ₯Ό λ§Œλ“€ λ•Œ  ν•˜λ‚˜μ˜ 객체에 λŒ€ν•΄ κ·Έ 객체가 νŠΉμ •ν•œ λͺ©μ μ„ μœ„ν•œ ν•„μš”ν•œ λ³€μˆ˜λ‚˜ λ©”μ†Œλ“œλ₯Ό ν•˜λ‚˜λ‘œ λ¬ΆλŠ” 것을 μ˜λ―Έν•œλ‹€. [λ”°λΌλ‚˜μ˜€λŠ” κ°œλ… : 정보은닉, private/public/protected, getter/setter]

μΆ”μƒν™”λŠ” 세상에 μžˆλŠ” 것을 λ³Έλ”° 클래슀λ₯Ό λ§Œλ“€ λ•Œ  μΆ”μƒμ μœΌλ‘œ 생각해 클래슀 μ•ˆμ— μ΅œμ†Œ λ“€μ–΄κ°€μ•Όκ² λ‹€ 싢은 곡톡적인 μš”μ†Œλ‚˜ ν•„μˆ˜μ μΈ μš”μ†Œλ“€μ„ λ„£μ–΄μ„œ λ§Œλ“œλŠ” 것이닀. [따라 λ‚˜μ˜€λŠ” κ°œλ… : μΆ”μƒν΄λž˜μŠ€, μΈν„°νŽ˜μ΄μŠ€]

 

 

μΊ‘μŠν™”λž€, ν•˜λ‚˜μ˜ 객체에 ν•„μš”ν•œ λ©”μ†Œλ“œμ™€ λ³€μˆ˜λ“€μ„ ν•˜λ‚˜λ‘œ λ¬ΆλŠ” 것이고, 정보 μ€λ‹‰μ˜ 이점을 κ°€μ§ˆ 수 μžˆλ‹€.(private ν™œμš©) 

μΆ”μƒν™”λž€, 세상에 μžˆλŠ” 것을 λ³Έλ”° 클래슀λ₯Ό λ§Œλ“€ λ•Œ 정말 ν•„μš”ν•œ λΆ€λΆ„λ§Œμ„ ν‘œν˜„ν•œλ‹€λŠ” κ°œλ…μ΄λ‹€. 이 μž‘μ—…μ€ λ‹€λ₯΄κ²Œ λ§ν•˜λ©΄, 클래슀 μ™ΈλΆ€μ—μ„œ μ–΄λ–»κ²Œ ν•΄λ‹Ή 클래슀λ₯Ό μ–΄λ–€ ν˜•νƒœλ‘œ μ΄μš©ν•˜κ²Œ 할것인가λ₯Ό κ³ λ―Ό,생각,μ •λ¦¬ν•˜λŠ” 쀑노동 단계가 ν¬ν•¨λœ κ°œλ…μΌ μˆ˜κ°€ μžˆλ‹€..

좔상화에 λŒ€ν•΄μ„œ μ•„λž˜ μ˜ˆμ‹œλ₯Ό 보면 ν™• 와닿을 수 μžˆλ‹€.

 

μ–΄λ”˜κ°€ μ–΄μ„€ν”ˆ 좔상화

 

class Animal {

    play() {}

}

 

class Cat extends Animal { }

 

λŒ€μ‹ μ—

놀아 쀄 수 μžˆλŠ” 동물 ν΄λž˜μŠ€λ“€μ΄ κ³΅ν†΅μ μœΌλ‘œ 따라야 ν•˜λŠ” ν•¨μˆ˜, μΈν„°νŽ˜μ΄μŠ€ Playableλ₯Ό λ§Œλ“€μ–΄μ„œ ν™œμš©ν•˜μž

 

interface Playable {

    play();

}

 

이제 이 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” ν΄λž˜μŠ€λ“€μ€ λ‹€ 놀아쀄 수 μžˆλŠ” 클래슀

 

class Cat implements Playable {

    play() {

       console.log("μž¬λ°Œλ‹€λƒ₯🐱")

    }

}

 

class Dog implements Playable {

    play() {

       console.log("μž¬λ°Œλ‹€λ©πŸΆ")

    }

}

 

class Tiger {

    

}

 

Tigerμ—λŠ” Playable μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šλ„λ‘ ν•˜μž, μžλ°”λ¨ΉνžŒλ‹€.(응? java? ) 

 

 

μ΄λŸ°μ‹μœΌλ‘œ μ™ΈλΆ€μ—μ„œ μ–΄λ–»κ²Œ 이 클래슀λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ”μ§€,

μΈν„°νŽ˜μ΄μŠ€λ‚˜ λ‹€λ₯Έ λΆ€λͺ¨ 클래슀λ₯Ό 톡해 곡톡적인 κΈ°λŠ₯듀을 μΆ”μΆœν•΄μ„œ μ μš©ν•΄λ³΄λŠ” μž‘μ—…λ“€λ„ 좔상화 μž‘μ—…μ˜ μ—°μž₯선상에 μžˆλ‹€κ³  λ³Ό 수 μžˆλŠ” 것이닀.

 

 

μΈν„°νŽ˜μ΄μŠ€μ™€ μΆ”μƒν΄λž˜μŠ€

예λ₯Ό λ“€κ² λ‹€.

μžλ™μ°¨λ“€μ˜ 곡톡적인 μš”μ†Œλ‚˜ νŠΉμ§•μ„ μΆ”μΆœν•˜λŠ” 과정인 좔상화λ₯Ό 거쳐 μžλ™μ°¨λΌλŠ” μΆ”μƒν΄λž˜μŠ€λ₯Ό λ§Œλ“ λ‹€κ³  치자.

일단 move(), stop(), private seat:number; λ“±λ§Œ λ„£μž.

μ΄λ ‡κ²Œ 곡톡적인 행동 즉 μ–΄λ–€ μ°¨λ“  ν•„μˆ˜μ μœΌλ‘œ ν•„μš”ν•œ λ©”μ„œλ“œλ‚˜ λ³€μˆ˜λ“€μ΄ λ“€μ–΄κ°€κ²Œ λœλ‹€.

μ΄λŸ¬ν•œ 과정이 μΆ”μƒν™”ν•˜λŠ” 과정이닀.

 

그런데 λͺ¨λ“  μžλ™μ°¨λ“€μ΄ μ „λΆ€ μ˜€ν”ˆμΉ΄λŠ” μ•„λ‹ˆλ‹€.

κ·ΈλŸ¬λ―€λ‘œ open() μžλ™μ°¨ μΆ”μƒν΄λž˜μŠ€μ— open()을 λ„£λŠ” 것은 μ–΄μ„€ν”ˆ 섀계이닀.

μ΄λ ‡κ²Œ λ…νŠΉν•œ ν–‰μœ„λ©”μ†Œλ“œμ΄μ§€λ§Œ μ’…μ’… ν•„μš”ν•  λ©”μ„œλ“œλ“€μ„ μΈν„°νŽ˜μ΄μŠ€μ— λ„£μ–΄μ£Όλ©΄

interface Openable{

    open();

}

ν•΄ν”Όν•΄μ‘Œλ‹€.

 

이렇듯 ν΄λž˜μŠ€κ°€ 각 객체의 μ™„μ „ν•œ 섀계도라기 λ³΄λ‹€λŠ”, 객체듀이 μ–΄λ–€ νŠΉμ§•λ“€μ΄ μžˆμ„μ§€λ₯Ό 곰곰히 μƒκ°ν•΄λ³΄λ©΄μ„œ, μ–΄λ–€ νŠΉμ§•λ“€μ€ μΆ”μƒν΄λž˜μŠ€μ—, μ–΄λ–€ νŠΉμ§•λ“€μ€ μΈν„°νŽ˜μ΄μŠ€μ— 잘 λΆ„λ°°ν•΄μ„œ  μ •μ˜λ₯Ό ν•΄λ³΄λŠ” 일련의 과정이 μ „λΆ€ 좔상화라고 ν•  수 μžˆλ‹€. 

 

<μ‰¬μš΄ 말둜 정리>

μΆ”μƒν™”μ˜ ν’ˆμ§ˆμ΄ κΉ”μŒˆν•΄μ§ˆμˆ˜λ‘ πŸ‘‰  μ™ΈλΆ€μ—μ„œ 클래슀λ₯Ό κ°„νŽΈν•˜κ²Œ 잘 μ“°κΈ° μœ„ν•΄μ„œ 곡톡점을 적절히 λͺ¨μ•„λ‘” μΈν„°νŽ˜μ΄μŠ€ ν˜Ήμ€ 핡심 λ³Έμ§ˆμ„ κ³΅μœ ν•˜λŠ” λΆ€λͺ¨ν΄λž˜μŠ€κ°€ μƒμ†λ˜μ–΄ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 보닀 ν–‰λ³΅ν•˜κ²Œ μž‘μ—…ν•  수 있게 λœλ‹€

 

μΊ‘μŠν™”λ₯Ό μž˜ν•˜λŠ” κ³Όμ • μ€‘μ—μ„œ private/public 등을 잘 λΆ„λ°°ν•˜λ©΄ πŸ‘‰  μ™ΈλΆ€μ—μ„œ ν•„μš”ν•œ λΆ€λΆ„μ—λ§Œ μ ‘κ·Όν•  수 있게 ν†΅μ œν•˜μ—¬ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ μ• λ¨Ό 리딩 μ‹œκ°„μ„ 쀄이고 λ°μ΄ν„°λŠ” λ°μ΄ν„°λŒ€λ‘œ λ³΄ν˜Έλ°›κ²Œ λ˜λŠ” 것이닀. 

728x90

'TypeScript > νƒ€μž…μŠ€ν¬λ¦½νŠΈ TypeScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

TS둜 콜백 ν•¨μˆ˜, 쀑첩 ν•¨μˆ˜, κ³ μ°¨ ν•¨μˆ˜ κ΅¬ν˜„  (0) 2022.04.20
[νƒ€μž…μŠ€ν¬λ¦½νŠΈ] 좔상화λ₯Ό μ΄μš©ν•΄μ„œ 클래슀 κ°œμ„ ν•˜κΈ°  (0) 2022.04.20
[νƒ€μž…μŠ€ν¬λ¦½νŠΈ] λ¬Έλ§₯적 νƒ€μž…ν™”  (0) 2022.04.20
[νƒ€μž…μŠ€ν¬λ¦½νŠΈ] 호좜 μ‹œκ·Έλ‹ˆμ²˜  (0) 2022.04.20
[νƒ€μž…μŠ€ν¬λ¦½νŠΈ] μ œλ„ˆλ ˆμ΄ν„°, 반볡자(iterator) μΆ”λ‘ κ³Ό λͺ…μ‹œ  (0) 2022.04.20
    'TypeScript/νƒ€μž…μŠ€ν¬λ¦½νŠΈ TypeScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • TS둜 콜백 ν•¨μˆ˜, 쀑첩 ν•¨μˆ˜, κ³ μ°¨ ν•¨μˆ˜ κ΅¬ν˜„
    • [νƒ€μž…μŠ€ν¬λ¦½νŠΈ] 좔상화λ₯Ό μ΄μš©ν•΄μ„œ 클래슀 κ°œμ„ ν•˜κΈ°
    • [νƒ€μž…μŠ€ν¬λ¦½νŠΈ] λ¬Έλ§₯적 νƒ€μž…ν™”
    • [νƒ€μž…μŠ€ν¬λ¦½νŠΈ] 호좜 μ‹œκ·Έλ‹ˆμ²˜
    Rainbow🌈Coder
    Rainbow🌈Coder
    λͺ°λΌλ„ 결ꡭ은 μ•„λŠ” 개발자, 그런 μ‚¬λžŒμ΄ 되기 μœ„ν•œ 맀일의 ν•œκ±ΈμŒ

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”