πŸ“•κ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° κ°œμš” 및 νŠΉμ§•

dev_itzel_02✨·2024λ…„ 8μ›” 21일
post-thumbnail

πŸ”–κ°μ²΄μ˜ μ •μ˜

  • κ°μ²΄λŠ” μƒνƒœ(속성)와 행동(λ©”μ†Œλ“œ)을 가짐
  • κ°μ²΄λŠ” μ‹€μ„Έκ³„μ˜ μ‚¬λ¬Όμ΄λ‚˜ κ°œλ…μ„ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ ν‘œν˜„ν•œ 것
  • 객체 κ°„μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ˜ 전체 κΈ°λŠ₯이 κ΅¬ν˜„λ¨

πŸ”–κ°μ²΄μ§€ν–₯μ΄λž€?

: 객체 μ§€ν–₯은 ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ 쀑 ν•˜λ‚˜λ‘œ, ν”„λ‘œκ·Έλž¨μ„ κ°μ²΄λ“€μ˜ μ§‘ν•©μœΌλ‘œ 보고 이듀이 μƒν˜Έμž‘μš©ν•˜λ„λ‘ μ„€κ³„ν•˜λŠ” 방법
-> Java, C++, Python λ“± λŒ€λ‹€μˆ˜μ˜ ν˜„λŒ€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ 객체 μ§€ν–₯을 지원함

πŸ₯Šκ°μ²΄μ§€ν–₯ vs μ ˆμ°¨μ§€ν–₯

  • 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°: 데이터와 ν•΄λ‹Ή 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ 객체둜 λ¬Άμ–΄μ„œ 처리
  • μ ˆμ°¨μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°: 데이터와 처리 방법을 λΆ„λ¦¬ν•˜μ—¬ 처리


πŸ”–κ°μ²΄μ§€ν–₯ 섀계 원칙

SOLID 원칙

  1. 단일 μ±…μž„ 원칙: κ°μ²΄λ‚˜ ν΄λž˜μŠ€κ°€ 단 ν•˜λ‚˜μ˜ μ±…μž„λ§Œ(ν•˜λ‚˜μ˜ κΈ°λŠ₯)을 κ°€μ Έμ•Ό 함
    -> 고객 정보λ₯Ό κ΄€λ¦¬ν•˜λŠ” Customer ν΄λž˜μŠ€μ™€ λ³΄κ³ μ„œλ₯Ό μƒμ„±ν•˜λŠ” Report ν΄λž˜μŠ€κ°€ 각각 ν•˜λ‚˜μ˜ μ±…μž„λ§Œ 가짐

  2. 개방-폐쇄 원칙: ν™•μž₯(κΈ°λŠ₯ μΆ”κ°€)에 λŒ€ν•΄μ„œλŠ” μ—΄λ € μžˆμ–΄μ•Ό ν•˜κ³ , 변경에 λŒ€ν•΄μ„œλŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό 함

  • 기쑴의 μ½”λ“œλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³ λ„ μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆλ„λ‘ 섀계해야 함
    -> Shape ν΄λž˜μŠ€λŠ” 좔상 클래슀이며, Circleκ³Ό Rectangleμ΄λΌλŠ” μžμ‹ ν΄λž˜μŠ€κ°€ 각각 Shape의 draw() λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ“œ 함
  1. λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙: 상속 λ°›λŠ” ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ ν΄λž˜μŠ€κ°€ ν•  수 μžˆλŠ” 것을 λͺ¨λ‘ ν•  수 μžˆμ–΄μ•Ό 함
    -> Duck은 Bird의 fly() λ©”μ„œλ“œλ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜μ§€λ§Œ, OstrichλŠ” walk() λ©”μ„œλ“œλ§Œ 가짐

  2. μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙: ν΄λΌμ΄μ–ΈνŠΈλŠ” μžμ‹ μ΄ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•˜λ©΄ μ•ˆλ¨

  • μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ˜ ν•„μš”μ— 맞게 μ„ΈλΆ„ν™”ν•˜λΌλŠ” 의미
    -> IPrintTasks와 IFaxTasksλΌλŠ” 두 개의 μΈν„°νŽ˜μ΄μŠ€κ°€ 있으며, Printer ν΄λž˜μŠ€λŠ” IPrintTasks μΈν„°νŽ˜μ΄μŠ€λ₯Ό MultiFunctionMachine ν΄λž˜μŠ€λŠ” 두 μΈν„°νŽ˜μ΄μŠ€λ₯Ό λͺ¨λ‘ κ΅¬ν˜„ν•¨
  1. μ˜μ‘΄μ„± μ—­μ „ 원칙: μƒμœ„ λͺ¨λ“ˆμ€ ν•˜μœ„ λͺ¨λ“ˆμ— μ˜μ‘΄ν•˜λ©΄ μ•ˆλ˜κ³ , λ‘˜ λ‹€ 좔상화에 μ˜μ‘΄ν•΄μ•Ό 함
    -> Manager ν΄λž˜μŠ€κ°€ IWorker μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•˜λ©°, Worker ν΄λž˜μŠ€λŠ” IWorkerλ₯Ό κ΅¬ν˜„ν•¨
    -> 이λ₯Ό 톡해 Manager ν΄λž˜μŠ€λŠ” Worker 클래슀의 ꡬ체적인 κ΅¬ν˜„μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ²Œ 됨

πŸ”–κ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° νŠΉμ§•

  1. 좔상화: λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ„ λ‹¨μˆœν™”μ‹œν‚€λŠ” ν”„λ‘œμ„ΈμŠ€
  2. μΊ‘μŠν™”: 객체의 속성과 ν–‰μœ„λ₯Ό ν•˜λ‚˜λ‘œ λ¬Άκ³ , μ‹€μ œ κ΅¬ν˜„ λ‚΄μš©μ„ 외뢀에 μˆ¨κΈ°λŠ” λ©”μ»€λ‹ˆμ¦˜
  3. λͺ¨λ“ˆν™”: 큰 μ‹œμŠ€ν…œμ„ μž‘κ³  관리 κ°€λŠ₯ν•œ λΆ€λΆ„μœΌλ‘œ λΆ„ν• ν•˜λŠ” κ³Όμ •
  4. 계측화: μ‹œμŠ€ν…œμ„ μ—¬λŸ¬ 측으둜 λΆ„ν• ν•˜λŠ” ꡬ쑰적인 섀계 기법
  5. λ‹€ν˜•μ„±: λ™μΌν•œ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•΄ λ‹€μ–‘ν•œ λ™μž‘μ„ κ΅¬ν˜„ν•  수 있게 함
profile
πŸœπŸ‘£steadinessπŸœπŸ‘£

0개의 λŒ“κΈ€