μŠ€ν„°λ””/였브젝트

[였브젝트] 4μž₯ '섀계 ν’ˆμ§ˆκ³Ό νŠΈλ ˆμ΄λ“œμ˜€ν”„'

moon101 2022. 11. 4. 23:58

 

4μž₯μ—μ„œλŠ” μ˜ν™” 예맀 μ‹œμŠ€ν…œμ„ 절차적 ν”„λ‘œκ·Έλž˜λ°(데이터 쀑심)으둜 κ΅¬ν˜„ν•˜κ³  μΊ‘μŠν™”, 응집도, κ²°ν•©λ„λ‘œ μ½”λ“œλ₯Ό 평가해 λ³Έλ‹€. 

 

2μž₯ μ½”λ“œκ°€ μ–΄λ €μ›Œμ„œ 4μž₯도 미리 κ²λ¨Ήμ—ˆλŠ”λ° 생각보닀 μ΄ν•΄ν•˜κΈ° 쉬웠닀. ν™•μ‹€νžˆ λΉ„κ΅ν•΄μ„œ λ³΄λ‹ˆκΉŒ μ™œ 객체지ν–₯적으둜 μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•˜λŠ”μ§€ μ•Œ 수 μžˆμ—ˆλ‹€. 

 

 

 

μ§„μ •ν•œ μΊ‘μŠν™”λž€?

λ‹¨μˆœνžˆ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό private둜 λ³€κ²½ν•˜κ³  ν•΄λ‹Ή 데이터λ₯Ό λ³€κ²½ν•  수 μžˆλ„λ‘ public κ²Œν„°/μ„Έν„°λ₯Ό λ§Œλ“€μ–΄ λ†“λŠ”κ±΄ μ§„μ •ν•œ 의미의 μΊ‘μŠν™”λŠ” μ•„λ‹ˆλ‹€.  μΊ‘μŠν™”λŠ” 변경될 수 μžˆλŠ” μ–΄λ–€ 것이라도 κ°μΆ”λŠ” 것이고, λ‚΄λΆ€ 속성을 μ™ΈλΆ€λ‘œλΆ€ν„° κ°μΆ”λŠ” 것은 '데이터 μΊ‘μŠν™”'이닀. ν•˜μ§€λ§Œ μ±…μ—μ„œ μ„€λͺ…ν•˜λ“―이 μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•  수 μžˆλŠ” λ©”μ†Œλ“œλ₯Ό 톡해 객체가 κ°€μ§€κ³  μžˆλŠ” λ‚΄λΆ€ 속성을 μ•Œ 수 μžˆλ‹€λŠ” 건 λ‚΄λΆ€ κ΅¬ν˜„μ„ λ³€κ²½ν•  경우, 이 λ©”μ†Œλ“œλ₯Ό μ˜μ‘΄ν•˜κ³  μžˆλŠ” λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈλ„ 영ν–₯을 λ°›λŠ”λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ μš°λ¦¬λŠ” μ„€κ³„μ—μ„œ λ³€ν•˜λŠ” 것이 무엇인지 κ³ λ €ν•˜κ³  λ³€ν•˜λŠ” κ°œλ…μ„ μΊ‘μŠν™”ν•΄μ•Ό ν•œλ‹€(p.128)

 

데이터 쀑심 μ„€κ³„μ˜ λ¬Έμ œμ μ€ λ¬΄μ—‡μΌκΉŒ?

- 행동보닀 μƒνƒœμ— μ΄ˆμ μ„ λ§žμΆ˜λ‹€

- 객체λ₯Ό κ³ λ¦½μ‹œν‚¨ 채 μ˜€νΌλ ˆμ΄μ…˜μ„ μ •μ˜ν•˜λ„λ‘ ν•œλ‹€ -> 객체가 λ‹€λ₯Έ 객체와 μ–΄λ–»κ²Œ ν˜‘λ ₯ν•˜λŠ”μ§€μ— λŒ€ν•œ κ³ λ―Ό 없이 객체가 관리할 λ°μ΄ν„°μ˜ μ„ΈλΆ€ 정보λ₯Ό 미리 κ²°μ •ν•΄ 놓기 λ•Œλ¬Έμ— λ‚˜μ€‘μ— 객체듀이 ν˜‘λ ₯ν•  λ•Œ 이미 κ΅¬ν˜„λœ 객체의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό 써야 ν•œλ‹€. 

 


μŠ€ν„°λ””μ—μ„œ 2μž₯ μ½”λ“œλ₯Ό 곡뢀할 μ˜ˆμ •μ΄λΌ μ½”λ“œμ— 주석을 λ‹¬μ•„λ†“μ•˜λŠ”λ°, μ΄λ ‡κ²Œ ν•˜λŠ” 것이 λ§žλŠ”μ§€ λͺ¨λ₯΄κ² μ–΄μ„œ μ†ŒμŠ€μ½”λ“œ 뢄석 방법을 μ°Ύμ•„λ³΄μ•˜λ‹€. 

 

μš°μ„  ν•œμ€„ν•œμ€„ 주석 λ‹€λŠ”κ±΄ μ•„λ‹Œ 것 κ°™κ³  본인 컴퓨터에 λΉŒλ“œ 및 μ‹€ν–‰ ν™˜κ²½μ„ κ΅¬μΆ•ν•΄μ„œ 뢄석에 ν•„μš”ν•œ 둜그λ₯Ό μΆ”κ°€ν•˜μ—¬ 재 μ»΄νŒŒμΌν•œ ν›„ μ‹€ν–‰ν•˜λ©΄μ„œ 둜그λ₯Ό ν™•μΈν•˜λΌ... 이건 메인 λ©”μ„œλ“œκ°€ μ—†μ–΄μ„œ κ°€λŠ₯ν•œκ°€?

μ§ˆλ¬Έμ„ 많이 ν•˜λŠ” 것. 예λ₯Ό λ“€μ–΄ 'λ‚˜λΌλ©΄ μ–΄λ–»κ²Œ κ°œλ°œν–ˆμ„μ§€' κ³ λ―Όν•΄ 보기. UML, PPT λ“±μœΌλ‘œ λ¬Έμ„œν™”ν•˜κΈ°. 

Log level을 λ””λ²„κ·Έλ‘œ μ„€μ •ν•˜κ³  λ””λ²„κ±°μ˜ breakpoint ν™œμš©. (μŠ€ν… λ‹¨μœ„λ‘œ μ‹€ν–‰ν•˜λ©΄μ„œ 각 λ³€μˆ˜μ˜ λ³€ν™” μƒνƒœ 확인)

Thread.dumpStack()λ₯Ό μΆ”κ°€ν•˜μ—¬ 전체 호좜 흐름 및 μ‹€μ œ 바인딩 λ˜λŠ” 클래슀 확인. λ””μžμΈ νŒ¨ν„΄ 곡뢀. 

 

 

Thread.dumpStack()

- ν˜„μž¬ μ½œμŠ€νƒμ„ 좜λ ₯(output)함. exception stack trace처럼. μ½”λ“œλ₯Ό 느리게 ν•˜κΈ° λ•Œλ¬Έμ— 디버깅할 λ•Œλ§Œ μ‚¬μš©ν•΄μ•Ό 함

 

 

μ°Έκ³ μ‚¬μ΄νŠΈ

https://www.facebook.com/218158748272233/posts/758498224238280/

https://www.popit.kr/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EC%BD%94%EB%93%9C-%EB%B6%84%EC%84%9D-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%98%EB%82%98/