π™Šπ™‹π™‹

uuuouuoΒ·2022λ…„ 6μ›” 20일
0
post-thumbnail

πŸ“– 객체지ν–₯


πŸ’¬Β κ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°κ³Ό μ ˆμ°¨μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°

μ ˆμ°¨μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°

  • 데이터 μ€‘μ‹¬μ˜ ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜λ©° ν”„λ‘œκ·Έλž¨μ„ 순차적으둜 μ²˜λ¦¬ν•˜μ—¬ ν”„λ‘œκ·Έλž¨ 전체가 유기적으둜 μ—°κ²°λ˜μ•Ό 함
  • μž₯점 : 속도 빠름
  • 단점 : μ½”λ“œμ˜ μˆœμ„œκ°€ λ°”λ€Œλ©΄ μ˜¬λ°”λ₯Έ κ²°κ³Όλ₯Ό 보μž₯ν•˜κΈ° 어렀움

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°

  • κΈ°λŠ₯ μ€‘μ‹¬μœΌλ‘œ μ—¬λŸ¬κ°œμ˜ 객체 λ‹¨μœ„λ‘œ λ‚˜λˆ  μž‘μ—…ν•˜λŠ” λ°©μ‹μœΌλ‘œ 객체듀이 μ„œλ‘œ 유기적으둜 μƒν˜Έμž‘μš©ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ°
  • μž₯점 : μ½”λ“œ μž¬ν™œμš©μ„± λ†’μŒ, μœ μ§€λ³΄μˆ˜ 쉬움
  • 단점 : 섀계 μ‹œ μ‹œκ°„/λ…Έλ ₯ 많이 ν•„μš”, μƒλŒ€μ μœΌλ‘œ μ²˜λ¦¬μ†λ„ 느림

클래슀 vs μΈμŠ€ν„΄μŠ€(객체)

  • 클래슀 : λ³€μˆ˜μ™€ λ©”μ†Œλ“œλ‘œ μ •μ˜ν•œ κ²ƒμœΌλ‘œ 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ 메타 정보
  • μΈμŠ€ν„΄μŠ€ : ν΄λž˜μŠ€μ—μ„œ μ •μ˜ν•œ 것을 ν† λŒ€λ‘œ μ‹€μ œ λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλœ 것

πŸ’¬Β κ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)의 νŠΉμ§•

  • Object-Oriented Programming
  • μΊ‘μŠν™”, 상속, 좔상화, λ‹€ν˜•μ„± 4가지 νŠΉμ§•μ„ 가짐

β—Ύ μΊ‘μŠν™”

  • μ—°κ΄€ μžˆλŠ” λ³€μˆ˜μ™€ ν•¨μˆ˜λ₯Ό 클래슀둜 λ¬ΆλŠ” μž‘μ—…

β—Ύ 상속

  • μžμ‹ ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ 클래슀의 νŠΉμ„±κ³Ό κΈ°λŠ₯을 λ¬Όλ €λ°›μ•„ μž¬μ‚¬μš©μ„±μ„ λ†’μ΄λŠ” μ—­ν• 

β—Ύ 좔상화

  • μΈν„°νŽ˜μ΄μŠ€λ‘œ 곡톡적인 νŠΉμ„±λ“€μ„ λ¬Άμ–΄ ν‘œν˜„ν•˜λŠ” 것

β—Ύ λ‹€ν˜•μ„±

  • ν•˜λ‚˜μ˜ 객체가 μ—¬λŸ¬κ°€μ§€ νƒ€μž…μ„ κ°€μ§ˆ 수 μžˆλŠ” 것을 μ˜λ―Έν•˜λ©°, λŒ€ν‘œμ μΈ νŠΉμ§•μœΌλ‘œλŠ” μ˜€λ²„λ‘œλ”©, μ˜€λ²„λΌμ΄λ”©μ΄ 있음

πŸ’¬Β κ°μ²΄μ§€ν–₯ 섀계 5원칙

  • SRP(단일 μ±…μž„ 원칙), OCP(개방-폐쇄 원칙), LSP(λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙), ISP(μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙), DIP(의쑴 μ—­μ „ 원칙)을 λ§ν•˜λ©°, μ•žμžλ₯Ό λ”°μ„œ SOILD 원칙이라고 뢀름
  • ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ‹œκ°„μ΄ μ§€λ‚˜λ„ μœ μ§€ λ³΄μˆ˜μ™€ ν™•μž₯이 μ‰¬μš΄ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“œλŠ”λ° 이 원칙듀을 적용 κ°€λŠ₯

β—Ύ SRP(Single Responsibility Principle), 단일 μ±…μž„ 원칙

  • κ°μ²΄λŠ” 단 ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό ν•œλ‹€λŠ” 원칙
  • μ‹œμŠ€ν…œμ— λ³€ν™”κ°€ 생기더라도 영ν–₯을 μ΅œμ†Œν™” ν•  수 μžˆλ‹€λŠ” μž₯점

β—Ύ OCP (Open-Closed Principle), 개방-폐쇄 원칙

  • 기쑴의 μ½”λ“œλ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠμœΌλ©΄μ„œ, κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆλ„λ‘ 섀계가 λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 원칙
  • ν™•μž₯에 λŒ€ν•΄μ„œλŠ” 개방적이고 μˆ˜μ •μ— λŒ€ν•΄μ„œλŠ” νμ‡„μ μœΌλ‘œ 섀계해야 ν•œλ‹€λŠ” 의미

β—Ύ LSP (Liskov’s Substitution Principle), λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙

  • μžμ‹ ν΄λž˜μŠ€λŠ” μ΅œμ†Œν•œ μžμ‹ μ˜ λΆ€λͺ¨ ν΄λž˜μŠ€μ—μ„œ κ°€λŠ₯ν•œ ν–‰μœ„λŠ” μˆ˜ν–‰ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” 섀계 원칙

β—Ύ ISP (Interface Segregation Principle), μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙

  • μžμ‹ μ΄ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μΈν„°νŽ˜μ΄μŠ€λŠ” κ΅¬ν˜„ν•˜μ§€ 말아야 ν•œλ‹€λŠ” 섀계 원칙

β—Ύ DIP (ependency Inversion Principle), 의쑴 μ—­μ „ 원칙

  • 객체듀이 μ„œλ‘œ 정보λ₯Ό μ£Όκ³  받을 λ•Œ 의쑴 관계가 ν˜•μ„±λ˜λŠ”λ°, 이 λ•Œ 객체듀은 λ³€ν™”ν•˜κΈ° μ–΄λ €μš΄ 것, 거의 λ³€ν™”κ°€ μ—†λŠ” 것에 μ˜μ‘΄ν•˜λΌλŠ” 원칙
  • κ΅¬ν˜„ ν΄λž˜μŠ€μ— μ˜μ‘΄ν•˜μ§€ 말고, μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•΄μ•Όν•¨

0개의 λŒ“κΈ€