[객체지ν–₯] 6. ꡬ쑰섀계

2022. 3. 26. 21:04ㆍJAVA/객체지ν–₯

728x90

 

ν›Œλ₯­ν•œ μ„€κ³„μžλŠ” μ‚¬μš©μžκ°€ λ§Œμ‘±ν•  수 μžˆλŠ” ν›Œλ₯­ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” λ™μ‹œμ— 예츑 λΆˆκ°€λŠ₯ν•œ μš”κ΅¬μ‚¬ν•­ 변경에 μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 μžˆλŠ” μ•ˆμ •μ μΈ ꡬ쑰λ₯Ό μ œκ³΅ν•˜λŠ” λŠ₯λ ₯을 κ°–μΆ°μ•Όν•œλ‹€. 

λ―Έλž˜μ— λŒ€λΉ„ν•˜λŠ” κ°€μž₯ 쒋은 방법은 변경을 μ˜ˆμΈ‘ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 변경을 μˆ˜μš©ν•  수 μžˆλŠ” μ„ νƒμ˜ 여지λ₯Ό 섀계에 λ§ˆλ ¨ν•΄ 놓은 것이닀. 

 

객체지ν–₯은 객체의 ꡬ쑰에 μ§‘μ€‘ν•˜κ³  κΈ°λŠ₯이 객체의 ꡬ쑰λ₯Ό λ”°λ₯΄κ²Œ λ§Œλ“ λ‹€. 

μ‹œμŠ€ν…œ κΈ°λŠ₯은 더 μž‘μ€ μ±…μž„μœΌλ‘œ λΆ„ν• λ˜κ³  μ μ ˆν•œ κ°μ²΄μ—κ²Œ λΆ„λ°°λ˜κΈ° λ•Œλ¬Έμ— κΈ°λŠ₯이 λ³€κ²½λ˜λ”λΌλ„ 객체 κ°„μ˜ κ΅¬μ‘°λŠ” κ·ΈλŒ€λ‘œ μœ μ§€λœλ‹€.

μ•ˆμ •μ μΈ 객체 κ΅¬μ‘°λŠ” 변경을 μˆ˜μš©ν•  수 μžˆλŠ” μœ μ—°ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€ 수 μžˆλŠ” κΈ°λ°˜μ„ μ œκ³΅ν•œλ‹€. 

 

 

0️⃣ κΈ°λŠ₯κ³Ό ꡬ쑰 

κΈ°λŠ₯은 μ‚¬μš©μžκ°€ μžμ‹ μ˜ λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•  수 μžˆλŠ” μ‹œμŠ€ν…œμ˜ μ„œλΉ„μŠ€μ΄λ‹€. 

κ΅¬μ‘°λŠ” μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ 기반으둜 κΈ°λŠ₯ 변경을 μˆ˜μš©ν•  수 μžˆλ„λ‘ μ•ˆμ •μ μ΄μ–΄μ•Όν•œλ‹€.

 

 

1️⃣ [ꡬ쑰] 도메인 λͺ¨λΈ 

도메인 λͺ¨λΈμ΄λž€ μ‚¬μš©μžκ°€ ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•˜λŠ” λŒ€μƒ μ˜μ—­μ— κ΄€ν•œ 지식을 μ„ νƒμ μœΌλ‘œ λ‹¨μˆœν™”ν•˜κ³  μ˜μ‹μ μœΌλ‘œ κ΅¬μ‘°ν™”ν•œ ν˜•νƒœμ΄λ‹€. 

도메인 λͺ¨λΈμ€ μ†Œν”„νŠΈμ›¨μ–΄κ°€ λͺ©μ ν•˜λŠ” μ˜μ—­ λ‚΄μ˜ κ°œλ…κ³Ό κ°œλ… κ°„μ˜ 관계, λ‹€μ–‘ν•œ κ·œμΉ™μ΄λ‚˜ μ œμ•½ 등을 주의 깊게 μΆ”μƒν™”ν•œ 것이닀. 

 

도메인 λͺ¨λΈμ€ 도메인에 λŒ€ν•œ μ‚¬μš©μž λͺ¨λΈ, λ””μžμΈ λͺ¨λΈ, μ‹œμŠ€ν…œ 이미지λ₯Ό ν¬κ΄„ν•˜λ„λ‘ μΆ”μƒν™”ν•œ μ†Œν”„νŠΈμ›¨μ–΄ λͺ¨λΈμ΄λ‹€. 

-> 도메일 λͺ¨λΈμ΄λž€ 즉 μ‚¬μš©μžλ“€μ΄ 도메인을 λ°”λΌλ³΄λŠ” 관점이며, μ„€κ³„μžκ°€ μ‹œμŠ€ν…œμ˜ ꡬ쑰λ₯Ό λ°”λΌλ³΄λŠ” 관점인 λ™μ‹œμ— μ†Œν”„νŠΈμ›¨μ–΄ μ•ˆμ— κ΅¬ν˜„λœ μ½”λ“œμ˜ λͺ¨μŠ΅ κ·Έ 자체이기 λ•Œλ¬Έμ΄λ‹€.

 

 

도메인 λͺ¨λΈμ˜ 핡심은 μ‚¬μš©μžκ°€ 도메인을 λ°”λΌλ³΄λŠ” 관점을 λ°˜μ˜ν•΄ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€κ³„ν•˜κ³  κ΅¬ν˜„ν•˜λŠ” 것이닀. 

 

 

결둠적으둜 μ•ˆμ •μ μΈ ꡬ쑰λ₯Ό μ œκ³΅ν•˜λŠ” 도메인 λͺ¨λΈμ„ 기반으둜 μ†Œν”„νŠΈμ›¨μ–΄μ˜ ꡬ쑰λ₯Ό μ„€κ³„ν•˜λ©΄ 
변경에 μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•  수 μžˆλŠ” 탄련적인 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

 

 

 

 

2️⃣ [κΈ°λŠ₯] μœ μŠ€μΌ€μ΄μŠ€

κΈ°λŠ₯적 μš”κ΅¬μ‚¬ν•­μ΄λž€ μ‹œμŠ€ν…œμ΄ μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•΄μ•Όν•˜λŠ” κΈ°λŠ₯의 λͺ©λ‘μ„ μ •λ¦¬ν•œ 것이닀. 

ν›Œλ₯­ν•œ κΈ°λŠ₯적 μš”κ΅¬μ‚¬ν•­μ„ μ–»κΈ° μœ„ν•΄μ„œλŠ” λͺ©ν‘œλ₯Ό 가진 μ‚¬μš©μžμ™€ μ‚¬μš©μžμ˜ λͺ©ν‘œλ₯Ό λ§Œμ‘±μ‹œν‚€κΈ° μœ„ν•΄ 일련의 절차λ₯Ό μˆ˜ν–‰ν•˜λŠ” μ‹œμŠ€ν…œ κ°„μ˜ 'μƒν˜Έμž‘μš©' κ΄€μ μ—μ„œ μ‹œμŠ€ν…œμ„ λ°”λΌλ΄μ•Όν•œλ‹€. 

 

μ΄λ ‡κ²Œ μ‚¬μš©μžμ˜ λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ μ‚¬μš©μžμ™€ μ‹œμŠ€ν…œ 간에 μ΄λ€„μ§€λŠ” μƒν˜Έμž‘μš©μ˜ 흐름을 ν…μŠ€νŠΈλ‘œ μ •λ¦¬ν•œ 것을 μœ μŠ€μΌ€μ΄μŠ€λΌκ³  ν•œλ‹€. 

 

 

- μœ μŠ€μΌ€μ΄μŠ€ νŠΉμ„± 

 

1. μœ μŠ€μΌ€μ΄μŠ€λŠ” μ‚¬μš©μžμ™€ μ‹œμŠ€ν…œκ°„μ˜ μƒν˜Έμž‘μš©μ„ λ³΄μ—¬μ£ΌλŠ” ν…μŠ€νŠΈμ΄λ‹€. 

-> μœ μŠ€μΌ€μ΄μŠ€μ˜ 핡심은 μ‚¬μš©μžμ™€ μ‹œμŠ€ν…œκ°„μ˜ μƒν˜Έμž‘μš©μ„ 일련의 이야기 νλ¦„μœΌλ‘œ ν‘œν˜„ν•œ 것이닀. 

 

2. μœ μŠ€μΌ€μ΄μŠ€λŠ” ν•˜λ‚˜μ˜ μ‹œλ‚˜λ¦¬μ˜€κ°€ μ•„λ‹ˆλΌ μ—¬λŸ¬ μ‹œλ‚˜λ¦¬μ˜€μ˜ 집합이닀.

 

3. μœ μŠ€μΌ€μ΄μŠ€λŠ” λ‹¨μˆœν•œ featureν”Όμ²˜ λͺ©λ‘κ³Ό λ‹€λ₯΄λ‹€.

-> μœ μŠ€μΌ€μ΄μŠ€μ˜ 강점은 μœ μŠ€μΌ€μ΄μŠ€κ°€ λ‹¨μˆœνžˆ κΈ°λŠ₯을 λ‚˜μ—΄ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 이야기λ₯Ό 톡해 μ—°κ΄€λœ κΈ°λŠ₯듀을 ν•¨κ»˜ 묢을 수 μžˆλ‹€λŠ” 점이닀. 

 

4. μœ μŠ€μΌ€μ΄μŠ€λŠ” μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€μ™€ κ΄€λ ¨λœ μ„ΈλΆ€ 정보λ₯Ό ν¬ν•¨ν•˜μ§€ λ§μ•„μ•Όν•œλ‹€. 

 

5. μœ μŠ€μΌ€μ΄μŠ€λŠ” λ‚΄λΆ€ 섀계와 κ΄€λ ¨λœ 정보λ₯Ό ν¬ν•¨ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

 

μœ μŠ€μΌ€μ΄μŠ€λŠ” 단지 μ‚¬μš©μžκ°€ μ‹œμŠ€ν…œμ„ 톡해 무엇을 얻을 수 있고 μ–΄λ–»κ²Œ μƒν˜Έμž‘μš©ν•  수 μžˆλŠλƒμ— κ΄€ν•œ μ •λ³΄λ§Œ κΈ°μˆ λœλ‹€. 

μœ μŠ€μΌ€μ΄μŠ€λŠ” μ‹œμŠ€ν…œμ΄ 외뢀에 μ œκ³΅ν•΄μ•Όν•˜λŠ” ν–‰μœ„λ§Œ ν¬ν•¨λ˜κΈ° λ•Œλ¬Έμ— μœ μŠ€μΌ€μ΄μŠ€λ‘œλΆ€ν„° μ‹œμŠ€ν…œμ˜ λ‚΄λΆ€ ꡬ쑰λ₯Ό μœ μΆ”ν•  수 μžˆλŠ” 방법은 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

 

3️⃣ 도메인 λͺ¨λΈ, μœ μŠ€μΌ€μ΄μŠ€, μ±…μž„-주도 섀계 

λΆˆμ•ˆμ •ν•œ κΈ°λŠ₯을 μ•ˆμ •μ μΈ ꡬ쑰 μ•ˆμ— λ‹΄μŒμœΌλ‘œμ¨ 변경에 λŒ€ν•œ νŒŒκΈ‰νš¨κ³Όλ₯Ό μ΅œμ†Œν™”ν•˜λŠ” 것은 ν›Œλ₯­ν•œ 객체지ν–₯ μ„€κ³„μžκ°€ κ°–μΆ°μ•Όν•  기본적인 섀계 λŠ₯λ ₯이닀. 

 

도메인 λͺ¨λΈμ€ μ•ˆμ •μ μΈ ꡬ쑰λ₯Ό κ°œλ…ν™”ν•˜κΈ° μœ„ν•΄, 

μœ μŠ€μΌ€μ΄μŠ€λŠ” λΆˆμ•ˆμ •ν•œ κΈ°λŠ₯을 μ„œμˆ ν•˜κΈ° μœ„ν•΄ κ°€μž₯ 일반적으둜 μ‚¬μš©λ˜λŠ” 도ꡬ이닀.

변경에 μœ μ—°ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” μœ μŠ€μΌ€μ΄μŠ€μ— μ •λ¦¬λœ μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯을 도메인 λͺ¨λΈμ„ 기반으둜 ν•œ κ°μ²΄λ“€μ˜ μ±…μž„μœΌλ‘œ λΆ„λ°°ν•΄μ•Όν•œλ‹€. 

 

μ‹œμŠ€ν…œμ— ν• λ‹Ήλœ μ»€λ‹€λž€ μ±…μž„μ€ 이제 μ‹œμŠ€ν…œμ•ˆμ˜ μž‘μ€ 규λͺ¨μ˜ 객체듀이 μˆ˜ν–‰ν•΄μ•Όν•˜λŠ” 더 μž‘μ€ 규λͺ¨μ˜ μ±…μž„μœΌλ‘œ μ„ΈλΆ„ν™”λœλ‹€. 

ν˜‘λ ₯을 μ™„μ„±ν•˜λŠ”λ° ν•„μš”ν•œ λ©”μ‹œμ§€λ₯Ό μ‹λ³„ν•˜λ©΄μ„œ κ°μ²΄λ“€μ—κ²Œ μ±…μž„μ„ ν• λ‹Ήν•΄ λ‚˜κ°„λ‹€. 

λ§ˆμ§€λ§‰μœΌλ‘œ ν˜‘λ ₯에 μ°Έμ—¬ν•˜λŠ” 객체λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ 클래슀λ₯Ό μΆ”κ°€ν•˜κ³  속성과 ν•¨κ»˜ λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•˜λ©΄ μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯이 μ™„μ„±λœ 것이닀. 

이제 μ½”λ“œλŠ” λΆˆμ•ˆμ •ν•œ κΈ°λŠ₯을 μˆ˜μš©ν•  수 μžˆλŠ” μ•ˆμ •μ μΈ ꡬ쑰에 κΈ°λ°˜ν•œλ‹€.

 

μœ μŠ€μΌ€μ΄μŠ€λŠ” μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•  κΈ°λŠ₯을 μ‹œμŠ€ν…œμ˜ μ±…μž„μœΌλ‘œ 보게 ν•¨μœΌλ‘œμ¨ κ°μ²΄κ°„μ˜ μ•ˆμ •μ μΈ ꡬ쑰에 μ±…μž„μ„ λΆ„λ°°ν•  수 μžˆλŠ” μΆœλ°œμ μ„ μ œκ³΅ν•œλ‹€. 

 

도메인 λͺ¨λΈμ€ κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ€μœ ν•  수 μžˆλŠ” μ•ˆμ •μ μΈ ꡬ쑰λ₯Ό μ œκ³΅ν•œλ‹€. 

 

μ±…μž„-주도 μ„€κ³„λŠ” μœ μŠ€μΌ€μ΄μŠ€λ‘œλΆ€ν„° 첫번째 λ©”μ‹œμ§€μ™€ μ‚¬μš©μžκ°€ λ‹¬μ„±ν•˜λ €λŠ” λͺ©ν‘œλ₯Ό, 도메인 λͺ¨λΈλ‘œλΆ€ν„° κΈ°λŠ₯을 μˆ˜μš©ν•  수 μžˆλŠ” μ•ˆμ •μ μΈ ꡬ쑰λ₯Ό μ œκ³΅λ°›μ•„ μ‹€μ œλ‘œ λ™μž‘ν•˜λŠ” κ°μ²΄λ“€μ˜ ν˜‘λ ₯ 곡동체λ₯Ό μ°½μ‘°ν•œλ‹€. 

 

 

 

객체지ν–₯ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜κΈ° μœ„ν•΄μ„œλŠ” μ‚¬μš©μžμ˜ κ΄€μ μ—μ„œ μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯을 λͺ…μ‹œν•˜κ³ ,
μ‚¬μš©μžμ™€ μ„€κ³„μžκ°€ κ³΅μœ ν•˜λŠ” μ•ˆμ •μ μΈ ꡬ쑰λ₯Ό 기반으둜 κΈ°λŠ₯을 μ±…μž„μœΌλ‘œ
λ³€ν™˜ν•˜λŠ” 체계적인 절차λ₯Ό λ”°λΌμ•Όν•œλ‹€λŠ” 것이닀. 

 

 

 

μ•ˆμ •μ μΈ 도메인 λͺ¨λΈμ„ 기반으둜 μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯을 κ΅¬ν˜„ν•  경우 μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯이 λ³€κ²½λ˜λ”λΌλ„ λΉ„μ§€λ‹ˆμŠ€μ˜ 핡심 μ •μ±…μ΄λ‚˜ κ·œμΉ™μ΄ λ³€κ²½λ˜μ§€ μ•ŠλŠ” ν•œ 전체적인 ꡬ쑰가 ν•œλ²ˆμ— 흔듀리지 μ•ŠλŠ”λ‹€. 

이것이 일반적으둜 객체지ν–₯이 κΈ°λŠ₯의 변경에 λŒ€ν•΄ μ’€ 더 μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•  수 μžˆλŠ” νŒ¨λŸ¬λ‹€μž„μ΄λΌκ³  μΌμ»¬μ–΄μ§€λŠ” μ΄μœ μ΄λ‹€. 

 

 

 

 

 

 

⭐결둠⭐

μ•ˆμ •μ μΈ 도메인 λͺ¨λΈμ„ 기반으둜 μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μž!

도메인 λͺ¨λΈκ³Ό μ½”λ“œλ₯Ό λ°€μ ‘ν•˜κ²Œ μ—°κ΄€μ‹œν‚€κΈ° μœ„ν•΄ λ…Έλ ₯ν•˜μž!

그러면 μœ μ§€λ³΄μˆ˜κ°€ 쉽고 μœ μ—°ν•œ 객체지ν–₯ μ‹œμŠ€ν…œμ„ λ§Œλ“œλŠ” 첫걸음이 λœλ‹€~~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

좜처: 객체지ν–₯의 사싀과 μ˜€ν•΄_μ‘°μ˜ν˜Έμ§€μŒ 

728x90