2025-10-01

OOP κ°œλ… 정리

클래슀

  • κ³΅ν†΅λœκΈ°λŠ₯을 ν•˜λ‚˜λ‘œ λ¬Άμ–΄μ„œ μž¬μ‚¬μš©μ„±μ„ λ†’νžˆκΈ°μœ„ν•œ λͺ©μ 

상속

  • ν•˜λ‚˜μ˜ν΄λž˜μŠ€κ°€ λ‹€λ₯Έ 클래슀의 속성과 λ©”μ„œλ“œλ₯Ό λ¬Όλ €λ°›λŠ” 것

abstract

  • extends(상속)와 implement(μΈν„°νŽ˜μ΄μŠ€κ΅¬ν˜„)으둜 μ‚¬μš©κ°€λŠ₯
  • μƒμ†μ˜ 경우 λ‹€νŠΈμ—μ„œλŠ” 닀쀑 상속 λΆˆκ°€λŠ₯
  • μΈν„°νŽ˜μ΄μŠ€ κ΅¬ν˜„μ€ 닀쀑 κ΅¬ν˜„ κ°€λŠ₯

interface

  • μΆ”μƒλ©”μ„œλ“œλ‘œλ§Œ 이루어진 클래슀

λ‹€ν˜•μ„±

  • ν•˜λ‚˜μ˜ 객체가 μ—¬λŸ¬ νƒ€μž…μ„ κ°€μ§ˆ 수 μžˆλŠ” 것
  • 예λ₯Ό λ“€λ©΄ 각각의 νƒ€μž…μ„ μ„ μ–Έν•  λ•Œ μžμ‹ μ˜ 클래슀둜 λ‚˜νƒ€λ‚Ό 수 μžˆμ§€λ§Œ, λΆ€λͺ¨μ˜ ν΄λž˜μŠ€λ‘œλ„ λ‚˜νƒ€λ‚΄λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

μ˜€λ²„λ‘œλ”©(Overloading)

  • 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό λ§€κ°œλ³€μˆ˜λ§Œ λ‹€λ₯΄κ²Œ μ—¬λŸ¬ 개 μ •μ˜ν•˜λŠ” 것 (μ»΄νŒŒμΌνƒ€μž„ λ‹€ν˜•μ„±)

μ˜€λ²„λΌμ΄λ”©(Overriding)

  • 상속 κ΄€κ³„μ—μ„œ λΆ€λͺ¨ λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•˜λŠ” 것 (λŸ°νƒ€μž„ λ‹€ν˜•μ„±)

mixin - with

  • 닀쀑 μƒμ†μ²˜λŸΌ μ‚¬μš©ν•˜κΈ°μœ„ν•΄ λ‚˜μ˜¨ 것
  • 닀쀑 상속 없이 ν΄λž˜μŠ€μ— μž¬μ‚¬μš© κ°€λŠ₯ν•œ κΈ°λŠ₯ λ¬ΆμŒμ„ λΌμ›Œ λ„£λŠ” 기법
  • μ—¬λŸ¬ ν΄λž˜μŠ€μ— 곡톡 λ™μž‘μ„ 곡유/μ‘°ν•©ν•΄ 상속 의쑴과 λ³΅μž‘λ„λ₯Ό μ€„μž„
  • class ApiClient with Logger, Cache 와 같이 withλ₯Ό 톡해 κ΅¬ν˜„ λ©”μ„œλ“œ ν˜Ήμ€ 좔상 λ©”μ„œλ“œ(μ˜€λ²„λΌμ΄λ”© ν•„μš”)λ₯Ό μž¬μ‚¬μš©κ°€λŠ₯


Map

  • 데이터 λ­‰μΉ˜λ₯Ό μˆœνšŒν•˜λ©΄μ„œ λ‚΄κ°€ μ›ν•˜λŠ” λͺ©μ μ— 맞게 μž¬κ΅¬μ„±
  • iterable을 λ°˜ν™˜ν•œλ‹€.
  • 보톡 toList()λ₯Ό 톡해 λ¦¬μŠ€νŠΈν™” ν•΄μ„œ μ‚¬μš©ν•œλ‹€.
  • map ((λ§€κ°œλ³€μˆ˜) => μˆ˜ν–‰ν• λ™μž‘);
List<String> fruitList = ['사과', 'μ˜€λ Œμ§€', 'μˆ˜λ°•'];
var delicious = fruitList.map((fruit) {
  var word = 'λ§›μžˆλŠ” ';
  word += fruit;
  return word;
});
print(delicious); // (λ§›μžˆλŠ” 사과, λ§›μžˆλŠ” μ˜€λ Œμ§€, λ§›μžˆλŠ” μˆ˜λ°•)



νƒœκ·Έ:

μΉ΄ν…Œκ³ λ¦¬:

μ—…λ°μ΄νŠΈ: