λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“šμ½μ€ μ±… 정리

(39)
[μ΄νŽ™ν‹°λΈŒ μžλ°”] 5μž₯ : μ œλ„€λ¦­ μ œλ„€λ¦­ μ§€μ›ν•˜κΈ° μ „ μžλ°”μžλŠ” μ»¬λ ‰μ…˜μ—μ„œ 객체λ₯Ό κΊΌλ‚Ό λ•Œλ§ˆλ‹€ ν˜•λ³€ν™˜μ„ ν•΄μ•Όν–ˆμŒ (μ΄λŠ” μ‹€μˆ˜λ‘œ μΈν•œ λŸ°νƒ€μž„μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚΄) κ·Έλž˜μ„œ μ»΄νŒŒμΌλŸ¬λŠ” μ•Œμ•„μ„œ ν˜•λ³€ν™˜ μ½”λ“œλ₯Ό μΆ”κ°€ν•  수 있고 μ—‰λš±ν•œ νƒ€μž…μ˜ 객체λ₯Ό λ„£μœΌλ €λŠ” μ‹œλ„λ₯Ό 컴파일 κ³Όμ •μ—μ„œ μ°¨λ‹¨ν•˜μ—¬ 더 μ•ˆμ „ν•˜κ³  λͺ…ν™•ν•œ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄μ€€λ‹€. μ œλ„€λ¦­μ˜ 이점을 μ΅œλŒ€ν•œ 살리고 단점을 μ΅œμ†Œν™”ν•˜μ—¬ μ‚¬μš©ν•΄λ³΄μž. μ•„μ΄ν…œ 26 : 둜(raw) νƒ€μž…μ€ μ‚¬μš©ν•˜μ§€ 마라 클래슀, μΈν„°νŽ˜μ΄μŠ€ 선언에 ‘νƒ€μž… λ§€κ°œλ³€μˆ˜'κ°€ 쓰이면 μ œλ„€λ¦­ 클래슀, μΈν„°νŽ˜μ΄μŠ€λΌκ³  뢀름 → 이λ₯Ό 톡틀어 ‘μ œλ„ˆλ¦­ νƒ€μž…'이라고 함 → ‘μ œλ„€λ¦­ νƒ€μž…’은 λ§€κ°œλ³€μˆ˜ν™” νƒ€μž…μ„ μ •μ˜ν•œλ‹€. → ‘μ œλ„€λ¦­ νƒ€μž…'을 μ •μ˜ν•˜λ©΄ ‘raw νƒ€μž…' 도 μ •μ˜λœλ‹€. (νƒ€μž… λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” νƒ€μž…) ex) List → List (μ œλ„€λ¦­ 도..
[μ΄νŽ™ν‹°λΈŒ μžλ°”] 4μž₯ : ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ μ•žμ— μ •λ¦¬ν•œκ²Œ λ‹€ 날라가버렸닀... λ‹€μ‹œ ν•œλ²ˆ κ³΅λΆ€ν•˜λ©΄μ„œ 정리해야겠닀.. μ•„μ΄ν…œ 24 : 멀버 ν΄λž˜μŠ€λŠ” λ˜λ„λ‘ static으둜 λ§Œλ“€λΌ 쀑첩 클래슀의 μ’…λ₯˜ 정적 멀버 클래슀 비정적 멀버 클래슀 읡λͺ… 클래슀 지역 클래슀 이 쀑 첫번째λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€λŠ” λ‚΄λΆ€ 클래슀(inner class)이닀. 정적 멀버 클래슀의 νŠΉμ§• λ°”κΉ₯ 클래슀의 private멀버에 μ ‘κ·Όκ°€λŠ₯ λ°”κ°™ ν΄λž˜μŠ€μ™€ ν•¨κ»˜ 쓰일 λ•Œ μœ μš©ν•œ public λ„μš°λ―Έ 클래슀둜 μ“°μž„ 비정적 멀버 클래슀 μΈμŠ€ν„΄μŠ€ν™” 될 λ•Œ 비정적 멀버 ν΄λž˜μŠ€κ°€ 확립됨 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό 감싸 λ‹€λ₯Έ 클래슀의 μΈμŠ€ν„΄μŠ€μ²˜λŸΌ λ³΄μ΄κ²Œν•¨ 멀버 ν΄λž˜μŠ€μ—μ„œ λ°”κ°™ μΈμŠ€ν„΄μŠ€λ‘œ 접근할이 μ—†λ‹€λ©΄ 정적 멀버 클래슀둜 μ •μ˜ λ°”κΉ₯ μΈμŠ€ν„΄μŠ€μ˜ μ™ΈλΆ€ μ°Έμ‘°λ₯Ό 얻을 수 μžˆμœΌλ―€λ‘œ 차단 가비지 μ»¬λ ‰μ…˜μ΄ λ°”κΉ₯ 클래슀의 인..
[μ΄νŽ™ν‹°λΈŒ μžλ°”] 3μž₯ : λͺ¨λ“  객체의 곡톡 λ©”μ„œλ“œ λͺ¨λ“  객체의 곡톡 λ©”μ„œλ“œ ObjectλŠ” 객체λ₯Ό λ§Œλ“€ 수 μžˆλŠ” ꡬ체 ν΄λž˜μŠ€μ§€λ§Œ 기본적으둜 μƒμ†ν•΄μ„œ μ‚¬μš©ν•˜λ„λ‘ 섀계됨 Objectμ—μ„œ final이 μ•„λ‹Œ λ©”μ„œλ“œλŠ” λͺ¨λ‘ μž¬μ •μ˜λ₯Ό 염두에 두고 μ„€κ³„λ˜μ–΄μ§. λ”°λΌμ„œ, 이 λ©”μ„œλ“œλ₯Ό μ˜¬λ°”λ₯΄κ²Œ μ˜€λ²„λΌμ΄λ”©ν•΄μ•Όλ§Œ ν΄λž˜μŠ€κ°€ μ˜€λ™μž‘ ν•˜μ§€ μ•ŠλŠ”λ‹€. μ•„μ΄ν…œ 10 : equalsλŠ” 일반 κ·œμ•½μ„ μ§€μΌœ μž¬μ •μ˜ν•˜λΌ equals λ©”μ„œλ“œλŠ” μ˜€λ²„λΌμ΄λ”© ν•˜μ§€ μ•ŠμœΌλ©΄ 였직! μžκΈ°μžμ‹ λ§Œ κ°™λ‹€. (κ°μ²΄μ‹λ³„μ„±μœΌλ‘œ 비ꡐ) μ˜€λ²„λΌμ΄λ”©μ΄ ν•„μš”ν•œ 경우 객체 식별이 μ•„λ‹Œ '논리적 λ™μΉ˜μ„±'을 확인 ν•΄μ•Όν•  λ•Œ 주둜 κ°’ 클래슀 ( new Inteager(2)λ₯Ό λ‘λ²ˆν•˜λ©΄ 물리적으둜 λ‹€λ₯Έ κ°μ²΄μ΄λ‚˜ λ…Όλ¦¬μ μœΌλ‘œλŠ” 같은 값을 κ°€μ§€λŠ” 객체가 λœλ‹€ μ–‘μ§ˆμ˜ equals λ©”μ„œλ“œ κ΅¬ν˜„λ°©λ²• 1. == μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄ μž…λ ₯이 자기 μžμ‹ μ˜..
[μ΄νŽ™ν‹°λΈŒ μžλ°”] 2μž₯ : 객체 생성과 파괴 2μž₯ 객체 생성과 파괴 객체λ₯Ό ‘λ§Œλ“€μ–΄μ•Ό ν•˜λŠ” μ‹œκΈ°'λ₯Ό κ΅¬λΆ„ν•˜λŠ” 방법 λΆˆν•„μš”ν•œ 생성을 ν”Όν•˜λŠ” 방법 μ œλ•Œ νŒŒκ΄΄λ¨μ„ 보μž₯ν•˜κ³  νŒŒκ΄΄μ „μ— μˆ˜ν–‰ν•΄μ•Όν•  μž‘μ—… 처리 방법 μ•„μ΄ν…œ 1 : μƒμ„±μž λŒ€μ‹  정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό κ³ λ €ν•˜λΌ ν΄λž˜μŠ€λŠ” μƒμ„±μžμ™€ λ³„λ„λ‘œ 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•  수 μžˆλ‹€. 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ 이름을 κ°€μ§ˆ 수 μžˆλ‹€. (λ°˜ν™˜ 객체의 νŠΉμ„± μ„€λͺ… κ°€λŠ₯) 호좜 μ‹œλ§ˆλ‹€ μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€. λ°˜ν™˜ νƒ€μž…μ˜ ν•˜μœ„ νƒ€μž… 객체λ₯Ό λ°˜ν™˜ν•  수 μžˆλŠ” λŠ₯λ ₯이 μžˆλ‹€. λ°˜ν™˜ν•  객체의 클래슀λ₯Ό 자유둭게 선택할 수 μžˆλŠ” ‘μœ μ—°μ„±'을 제곡 νŒ©ν† λ¦¬ λ©”μ„œλ“œ 이름에 따라 각기 λ‹€λ₯Έ κΈ°λŠ₯의 κ΅¬ν˜„μ²΄ 생성 κ°€λŠ₯ (λ°˜ν™˜ μ°Έμ‘° κ°μ²΄λŠ” κ°™λ‹€) → μ΄λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ λ°˜ν™˜ νƒ€μž…μœΌλ‘œ μ‚¬μš©ν•˜λŠ μΈν„°νŽ˜μ΄μŠ€ 기반 ν”„λ ˆμž„μ›Œ..
[μžλ°” λ§ˆμŠ€ν„°λΆ] 12μž₯ : λ””μžμΈνŒ¨ν„΄ 즐기기 - 행동 객체의 '행동'에 λŒ€ν•œ λ””μžμΈ νŒ¨ν„΄ 1. Command 2. Strategy 3. Iterator 4. Observer 12.4.1 Command νŒ¨ν„΄ - 'λͺ…λ Ή'을 μΈμŠ€ν„΄μŠ€λ‘œ μ·¨κΈ‰ν•˜μ—¬ 처리 쑰합을 μ‰½κ²Œ ν•œλ‹€. 처리 λ‚΄μš©μ΄ λΉ„μŠ·ν•œ λͺ…령을 νŒ¨ν„΄μ— 따라 κ΅¬λΆ„ν•˜κ±°λ‚˜ μ‹€ν–‰ν•˜λŠ” μ²˜λ¦¬κ°€ ν•„μš”ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ κ³„μ ˆμ— 따라 λ°”λ€ŒλŠ” ν• μΈμœ¨ 적용이 μžˆμ„ 수 μžˆλ‹€. Command νŒ¨ν„΄μ€ 'λͺ…λ Ή' 자체λ₯Ό μΈμŠ€ν„΄μŠ€λ‘œ μ·¨κΈ‰ν•΄ 처리의 쑰합을 μš©μ΄ν•˜κ²Œ ν•˜λŠ” νŒ¨ν„΄μ΄λ‹€. Book.java public class Book { private double amount; public Book(double amount) { this.amount = amount; } public double getAmount() { return amoun..
[μžλ°” λ§ˆμŠ€ν„°λΆ] 12μž₯ : λ””μžμΈνŒ¨ν„΄ 즐기기 - ꡬ쑰 12.3 ꡬ쑰에 κ΄€ν•œ νŒ¨ν„΄ 12.3.1 Adapter νŒ¨ν„΄ - μΈν„°νŽ˜μ΄μŠ€μ— `ν˜Έν™˜μ„±μ΄ μ—†λŠ” 클래슀`듀을 μ‘°ν•©μ‹œν‚€κΈ° κΈ°μ‘΄ μ‹œμŠ€ν…œμ„ μž¬μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•œλ‹€κ³  κ°€μ •ν•΄λ³΄μž. μ΄λ•Œ μƒˆλ‘œμš΄ μ‹œμŠ€ν…œμ€ μ§€κΈˆκΉŒμ§€ μ‚¬μš©ν•˜λ˜ λ©”μ„œλ“œμ™€λŠ” λ‹€λ₯Έ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 가지고 μžˆλ‹€. 이 κ²½μš°μ—λŠ” κΈ°μ‘΄ μ‹œμŠ€ν…œμ— 손을 λŒ€μ„œ μˆ˜μ •μ„ ν•˜κ²Œ 되면 μ—„μ²­λ‚œ λ³€ν™”λ₯Ό κ°•μš”ν•˜κ²Œ λœλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 'μˆ˜λ‹¨'이 Adapter νŒ¨ν„΄μ΄λ‹€. 이 νŒ¨ν„΄μ€ 'μΈν„°νŽ˜μ΄μŠ€'에 ν˜Έν™˜μ„±μ΄ μ—†λŠ” ν΄λž˜μŠ€λ“€μ„ μ‘°ν•©μ‹œν‚€λŠ” 것을 λͺ©μ μœΌλ‘œ ν•˜μ—¬ κΈ°μ‘΄ μ‹œμŠ€ν…œκ³Ό μƒˆλ‘œμš΄ μ‹œμŠ€ν…œμ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν‘μˆ˜ν•˜λŠ” Adapterλ₯Ό μ œκ³΅ν•˜μ—¬ '적은 λ³€κ²½μœΌλ‘œ κΈ°μ‘΄ μ‹œμŠ€ν…œμ„ μƒˆλ‘œμš΄ μ‹œμŠ€ν…œμ— μ μš©ν•  수 μžˆλ„λ‘' ν•œλ‹€. Adapter νŒ¨ν„΄μ€ 두 가지 방법이 μžˆλ‹€. 1. 상속을 μ΄μš©ν•˜λŠ” 방법 ..
[μžλ°” λ§ˆμŠ€ν„°λΆ] 12μž₯ λ””μžμΈνŒ¨ν„΄ 즐기기 - 생성 12.1 λ””μžμΈ νŒ¨ν„΄μ˜ κΈ°λ³Έ 12.1.1 λ””μžμΈ νŒ¨ν„΄μ΄λž€? μš°λ¦¬κ°€ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•  λ•Œ μ™„μ„±λ˜λŠ” 것은 'λͺ©μ 'κ³Ό '개발자'에 따라 μ²œμ°¨λ§Œλ³„μ΄λ‹€. κ·ΈλŸ¬λ‚˜ 이λ₯Ό 각각의 λΆ€ν’ˆλ‹¨μœ„λ‘œ μ‚΄νŽ΄λ³΄λ©΄ ν”„λ‘œκ·Έλž¨λ§ˆλ‹€ λΉ„μŠ·ν•œ 뢀뢄이 μ‘΄μž¬ν•œλ‹€. 예λ₯Ό λ“€μ–΄, 'μ–΄λ–€ μƒνƒœκ°€ λ°”λ€Œμ—ˆμ„ λ•Œ λ°˜μ‘ν•˜λŠ” 클래슀ꡰ λ§Œλ“€κΈ°' 'λ‹€λ₯Έ νŒ€μ΄ λ§Œλ“  λΆ€ν’ˆκ³Όμ˜ μ€‘κ°œλ₯Ό ν•˜λŠ” 클래슀 λ§Œλ“€κΈ°', 'μž¬κ·€μ μΈ ꡬ쑰λ₯Ό 클래슀둜 ν‘œν˜„ν•˜κΈ°'와 같은 것듀이 μžˆλ‹€. 이런 λΉ„μŠ·ν•œ λͺ©μ μ— λŒ€ν•΄ 클래슀 ꡬ쑰의 λͺ¨λ²”사둀λ₯Ό νŒ¨ν„΄μœΌλ‘œ μ •λ¦¬ν•œ 것이 λ””μžμΈ νŒ¨ν„΄μ΄λ‹€. 이 쀑 κ°€μž₯ 유λͺ…ν•œ 것이 'GoF λ””μžμΈ νŒ¨ν„΄'이며 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ— λ„μ›€μ΄λ˜λŠ” λ””μžμΈ νŒ¨ν„΄ 23가지λ₯Ό μ†Œκ°œν•œλ‹€. 23μ’…λ₯˜μ˜ νŒ¨ν„΄μ€ 크게 3κ°€μ§€λ‘œ λΆ„λ₯˜λ˜μ–΄ μžˆλ‹€. 객체의 '생성'에 κ΄€ν•œ νŒ¨ν„΄ ν”„λ‘œκ·Έλž¨μ˜ 'ꡬ쑰'에 κ΄€..
[μžλ°” λ§ˆμŠ€ν„°λΆ] 10μž₯ 객체지ν–₯ 즐기기 10.1 κΈ°λ³Έν˜•κ³Ό μ°Έμ‘°ν˜•μ˜ κ°’ μ „λ‹¬ν•˜κΈ° 10.1.1 κΈ°λ³Έν˜•κ³Ό μ°Έμ‘°ν˜•μ˜ κ°’ 전달 방법 κΈ°λ³Έν˜•μœΌλ‘œ 값을 μ „λ‹¬ν•˜λŠ” κ²½μš°μ—λŠ” μˆ˜μ‹ μžμ—μ„œ 값을 변경해도 ν˜ΈμΆœμžμ— 영ν–₯을 주지 λͺ»ν•œλ‹€. ν•˜μ§€λ§Œ μ°Έμ‘°ν˜•μ˜ κ°’ 전달을 ν•˜λ©΄ μˆ˜μ‹ μž μ•ˆμ—μ„œ λ³€κ²½λœ 값이 ν˜ΈμΆœμ— λ°˜μ˜λœλ‹€. "μ°Έμ‘°ν˜•"의 κ²½μš°λŠ” 객체 자체의 값을 λ³΅μ‚¬ν•΄μ„œ λ„˜κΈ°λŠ” 것이 μ•„λ‹Œ 'μ°Έμ‘°'λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 값을 μ „λ‹¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. λ”°λΌμ„œ 호좜된 λ©”μ„œλ“œμ˜ λ³€κ²½ 사항이 ν˜ΈμΆœμžμ—κ²Œ λ°˜μ˜λœλ‹€. λ”°λΌμ„œ, μΈμˆ˜μ— 객체λ₯Ό μ „λ‹¬ν–ˆμ„ λ•ŒλŠ” λ©”μ„œλ“œ μ•ˆμ—μ„œ 값이 λ³€ν•˜λŠ”μ§€μ— λŒ€ν•œ μ—¬λΆ€λ₯Ό λͺ…ν™•νžˆ ν•΄μ•Όλ§Œ ν•œλ‹€. μ±…μ˜ μ €μžλŠ” 이λ₯Ό μœ„ν•΄ κ·œμΉ™μ„ μ •ν•΄λ‘μ—ˆλ‹€. μ›μΉ™μ μœΌλ‘œ 인수 객체의 μˆ˜μ •μ€ ν”Όν•œλ‹€. λ°˜ν™˜κ°’μ΄ void인 경우 인수객체λ₯Ό μˆ˜μ •ν•΄λ„ μ’‹λ‹€. λ°˜ν™˜κ°’μ΄ void μ΄μ™Έμ˜ 경우 인수 객체λ₯Ό λ³€κ²½ν•΄μ„œλŠ” μ•ˆλœλ‹€..

λ°˜μ‘ν˜•