관리 메뉴

πŸ–₯ dev-ruby

[μ†Œν”„νŠΈμ›¨μ–΄κ³΅ν•™] 객체지ν–₯섀계 λ³Έλ¬Έ

μ†Œν”„νŠΈμ›¨μ–΄κ³΅ν•™

[μ†Œν”„νŠΈμ›¨μ–΄κ³΅ν•™] 객체지ν–₯섀계

ruby_s 2021. 12. 12. 00:15
728x90
λ°˜μ‘ν˜•
SMALL

클래슀 및 λ©”μ†Œλ“œ 섀계

ν˜„μž¬ λͺ¨λΈ 리뷰

1. ν΄λž˜μŠ€κ°€ λ¬Έμ œμ— ν•„μš”ν•˜κ³  μΆ©λΆ„ν•œμ§€ 확인
2. κ° ν΄λž˜μŠ€μ˜ μ†μ„± λ° λ©”μ†Œλ“œ κ°€μ‹œμ„± λ§ˆλ¬΄λ¦¬
3. 각 클래슀의 λͺ¨λ“  λ©”μ†Œλ“œ μ›ν˜• μ •μ˜
4. κ°μ²΄κ°€ λ³΄μ‘΄ν•  μ œμ•½ μ‘°κ±΄ μ •μ˜

섀계 μž¬κ΅¬μ‘°ν™”

Factoring - λ©”μ†Œλ“œ 클래슀λ₯Ό μƒˆ λ©”μ†Œλ“œ λ˜λŠ” 클래슀둜 ꡬ뢄

Normalization - μ„€κ³„μ—μ„œ λˆ„λ½λœ 잠재적 클래슀 식별

 

λ©”μ†Œλ“œ λͺ…μ„Έ

  • 일반 정보 
    • λ©”μ†Œλ“œ 이름, id, ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄
  • Event 
    • 이벀트λ₯Ό νŠΈλ¦¬κ±°ν•˜λŠ” 이벀트 λ‚˜μ—΄
  • Message passing
    • λ©”μ†Œλ“œμ— μ˜ν•΄ μ–΄λ–€ μΈμˆ˜κ°€ μ „λ‹¬λ˜κ³ , μ „λ‹¬λ˜κ³ , λ°˜ν™˜λ˜λŠ”κ°€
  • μ•Œκ³ λ¦¬μ¦˜ λͺ…μ„Έ
    • κ΅¬μ‘°ν™”λœ μ˜μ–΄
    • μ˜μ‚¬μ½”λ“œ
    • UML activity diagram

 

도메인 클래슀λ₯Ό κ΅¬ν˜„ 언어에 λ§€ν•‘

  • Single-Inheritance Language (단일 상속 μ–Έμ–΄)
    • association κ΄€κ³„λ‘œ λ°”κΎΌλ‹€.
    • μΆ”κ°€ 슈퍼 클래슀의 속성과 λ©”μ†Œλ“œλ₯Ό λ³΅μ‚¬ν•˜μ—¬ 상속을 ν‰νƒ„ν•˜κ²Œ ν•œλ‹€.
  • Object-Based Language (객체지ν–₯ μ–Έμ–΄)
    • 문제 도메인 클래슀 μ„€κ³„μ—μ„œ μƒμ†μ˜ λͺ¨λ“  μ‚¬μš©μ„ 배제
  • Traditional procedural Language (전톡적 ν•¨μˆ˜ν˜• μ–Έμ–΄)
    • 섀계상 상속 배제
    • λ‹€ν˜•μ„±, 동적 바인딩, μΊ‘μŠν™” λ“±μ˜ λͺ¨λ“  μ‚¬μš©μ„ 배제

 

νŒ¨ν‚€μ§€ λ‹€μ΄μ–΄κ·Έλž¨

μ˜μ‘΄κ΄€κ³„ - 점선 λΉˆν™”μ‚΄ν‘œ

A ••• > B : AλŠ” B에 의쑴적, B에 μžˆλŠ” λ³€μˆ˜λ‚˜ ν•¨μˆ˜κ°€ μˆ˜μ •λ˜λ©΄ A도 λ°”λ€Œμ–΄μ•Ό 함

 

One to One (1 : 1)

  • λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έ ν‚€λ₯Ό  secondary ν‚€λ‘œ ν•œ ν…Œμ΄λΈ”μ— μΆ”κ°€ (secondary ν‚€κ°€ NULL이 μ•„λ‹˜)

One to One (0...1 : 1)

  • λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έ ν‚€λ₯Ό  secondary ν‚€λ‘œ ν•œ ν…Œμ΄λΈ” (0...1인)에 μΆ”κ°€ (secondary ν‚€κ°€ NULL이 μ•„λ‹˜)

One to Many (1 : *)

  • secondary ν‚€λ₯Ό λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έ 킀와 ν•¨κ»˜ 닀쀑성이 λ§Žμ€ ν…Œμ΄λΈ”μ— μΆ”κ°€ (secondary ν‚€λŠ” NULL이 μ•„λ‹˜)

Many to Many (* : *)

  • intersecting(ꡐ차) 클래슀둜 λ§Œλ“ λ‹€.
  • one-to-many둜 λ°”κΎΌλ‹€.
  • 두 μ˜€λ¦¬μ§„ 클래슀의 κΈ°λ³Έ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ ꡐ차 ν΄λž˜μŠ€μ— ν‚€ 속성 μΆ”κ°€

T_A

Attr a { PK } Attr 2  ….

T_B

Attr b { PK } Attr 2  ….

 T_AB 

Attr a {PK, SK } Attr b {PK, SK}  ….

 

상속관계 1

  • 슈퍼 클래슀 ν…Œμ΄λΈ”μ— ν”Œλž˜κ·Έ 속성 μΆ”κ°€
  • 슈퍼 클래슀의 κΈ°λ³Έ ν‚€λ₯Ό ν•˜μœ„ 클래슀 ν…Œμ΄λΈ”μ— κΈ°λ³Έ ν‚€λ‘œ μΆ”κ°€ (ν‚€ 상속)

T_A

Attr a { PK } Attr a1  Flag

T_B

Attr a { PK, SK } Attr b1  ….

 T_C

Attr a {PK, SK } Attr c1  ….

 

상속관계 2

  • 슈퍼 클래슀의 λͺ¨λ“  속성을 ν•˜μœ„ 클래슀 ν…Œμ΄λΈ”μ— μΆ”κ°€
  • ν•˜μœ„ 클래슀 ν…Œμ΄λΈ”μ˜ κΈ°λ³Έ ν‚€λŠ” 슈퍼 클래슀의 κΈ°λ³Έ ν‚€ (ν‚€ 상속)

T_A

Attr a { PK } Attr a1 Attr a2

T_B

Attr a { PK } Attr a1 Attr a2  ….

T_C

Attr a { PK } Attr a1 Attr a2  ….

 

Client-Server 아킀텍쳐

  • Server-based 아킀텍쳐 : Clientκ°€ terminal이닀.
    • μ„œλ²„λŠ” λ‹€μŒ 4κ°€μ§€ κΈ°λŠ₯을 κ°€μ§„λ‹€.
      • Presentation logic
      • Application logic
      • Data access logic
      • Data storage
  • Client-based 아킀텍쳐
  • Client-Server 아킀텍쳐

 

Client-Server μ•„ν‚€ν…μ³μ˜ 기술 ν™˜κ²½ 확인

  • Object-Oriented programming language
  • User interface implementation techniques
  • Middleware
  • Database Management System

Summary

  • Architecture Design
    • Package diagram, 3-layered Architecture
  • Detail Design based on 3-Layered Architecture
    • PD layer : Class & Method Design : Restructuring, Invariants and Method Spec.
    • Data layer : Database Schema, File design
    • UI layer : Window navigation design, Interface template, UI Classes
  • Physical Architecture Design
    • Deployment diagram, Technical Emvironment Spec.
    • External Interface Specification

 

 

 

728x90
λ°˜μ‘ν˜•
LIST