우규이인우윀
Eager To Learn 🌌
우규이인우윀
전체 방문자
였늘
μ–΄μ œ

λΈ”λ‘œκ·Έ 메뉴

  • 🏑 ν™ˆ
  • πŸš€ κΉƒν—ˆλΈŒ
  • β›… νƒœκ·Έ ν΄λΌμš°λ“œ
  • λΆ„λ₯˜ 전체보기 (217)
    • πŸ‘¨πŸ»‍πŸ’» PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm 기법 (1)
      • 바킹독 (21)
    • λΈ”λ‘œκ·Έ 이사 (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • 자료ꡬ쑰 (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • κ°œλ°œμ„œμ  (15)
      • 가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초 (1)
      • 였브젝트 - 쑰영호 (7)
      • μΉœμ ˆν•œ SQL νŠœλ‹ (7)
    • 회고 (2)
hELLO Β· Designed By μ •μƒμš°.
우규이인우윀

Eager To Learn 🌌

κ°œλ°œμ„œμ /였브젝트 - 쑰영호

Chapter 7. 객체 λΆ„ν•΄

2023. 10. 26. 14:35

μ‘°μ˜ν˜Έλ‹˜μ˜ μ˜€λΈŒμ νŠΈλ₯Ό 읽고 제 머릿속에 μžˆλŠ” λ‚΄μš©λ“€μ„ μ •λ¦¬ν•˜λ©° μž‘μ„±ν•œ κΈ€μž…λ‹ˆλ‹€.


ν”„λ‘œμ‹œμ € 좔상화와 κΈ°λŠ₯ λΆ„ν•΄

 

πŸ’‘ ν”„λ‘œμ‹œμ €λŠ” 반볡적으둜 μ‹€ν–‰λ˜κ±°λ‚˜ 거의 μœ μ‚¬ν•˜κ²Œ μ‹€ν–‰λ˜λŠ” μž‘μ—…λ“€μ„ ν•˜λ‚˜μ˜ μž₯μ†Œμ— λͺ¨μ•„λ†“μŒμœΌλ‘œμ¨ λ‘œμ§μ„ μž¬μ‚¬μš©ν•˜κ³  쀑볡을 λ°©μ§€ν•  수 μžˆλŠ” 좔상화 방법이닀.

 

전톡적인 κΈ°λŠ₯ λΆ„ν•΄ 방법은 μ‹œμŠ€ν…œμ„ κ΅¬μ„±ν•˜λŠ” μ΅œμƒμœ„ κΈ°λŠ₯을 μ •μ˜ν•˜κ³  μž‘μ€ λ‹¨κ³„μ˜ ν•˜μœ„ κΈ°λŠ₯으둜 λΆ„ν•΄ν•΄ λ‚˜κ°€λŠ” 방법을 μ‚¬μš©ν•œλ‹€.

 

πŸ’‘ μ„ΈλΆ„ν™”λœ λ§ˆμ§€λ§‰ ν•˜μœ„ κΈ°λŠ₯이 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ κ΅¬ν˜„κ°€λŠ₯ν•œ μˆ˜μ€€μ΄ 될 λ•ŒκΉŒμ§€ 계속 λœλ‹€.

 

ν•˜ν–₯식 ν”„λ‘œμ‹œμ € 좔상화λ₯Ό 톡해 λ§Œλ“  ν”„λ‘œκ·Έλž¨μ€ λ‹€μŒκ³Ό 같은 ꡬ성이 λœλ‹€.

 

μ΅œμƒμœ„ κΈ°λŠ₯(){
	μ„ΈλΆ€κΈ°λŠ₯1();
    μ„ΈλΆ€κΈ°λŠ₯2();
    μ„ΈλΆ€κΈ°λŠ₯3();
    ..
}

μ΅œμƒμœ„ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ μ—¬λŸ¬κ°œμ˜ μ„ΈλΆ€κΈ°λŠ₯이 ν˜ΈμΆœλ˜μ–΄ μ›ν•˜λŠ” μ΅œμƒμœ„ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” ꡬ쑰가 λœλ‹€.

 

단, μ΄λŸ°μ‹μœΌλ‘œ μ„€κ³„λœ μ‹œμŠ€ν…œμ€ 변화에 민감해진닀.

 

μ΅œμƒμœ„ κΈ°λŠ₯κ³Ό 결이 λ‹€λ₯Έ κΈ°λŠ₯을 좔가해달라고 μš”κ΅¬λ°›μ•˜μ„ λ•Œ, μ΅œμƒμœ„ κΈ°λŠ₯ λ©”μ„œλ“œ μ•ˆμ— κΈ°λŠ₯을 μΆ”κ°€ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œ ν•΄κ²°ν•  수 μ—†μ–΄μ§„λ‹€.

 

μƒˆλ‘œμš΄ μš”κ΅¬μ‚¬ν•­μ„ μ•„μš°λ₯΄λŠ” μ΅œμƒμœ„ κΈ°λŠ₯을 μƒˆλ‘œ μ •μ˜ν•˜κ±°λ‚˜ ꡬ쑰λ₯Ό λ°”κΏ”μ•Ό κ°€λŠ₯ν•΄μ§€κΈ° λ•Œλ¬Έμ— 변경에 μ·¨μ•½ν•΄μ§ˆ 수 밖에 μ—†λ‹€.

 

🚨 λ˜ν•œ, ν•˜ν–₯식 방법은 μ„ΈλΆ€κΈ°λŠ₯의 μˆœμ„œλ₯Ό κ³ μ •μ‹œμΌœλ‘κ²Œ λœλ‹€.

 

μ„ΈλΆ€κΈ°λŠ₯ 1κ³Ό μ„ΈλΆ€κΈ°λŠ₯ 2의 호좜 μˆœμ„œκ°€ μ΅œμƒμœ„ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ”λ° 영ν–₯을 μ£Όμ§€ μ•ŠλŠ” κ²½μš°λ„ μžˆμ§€λ§Œ, 섀계 κ³Όμ •μ—μ„œ μˆœμ„œλ₯Ό κ³ μ •μ‹œμΌœλ²„λ¦¬κ²Œ λœλ‹€.

 

즉, μ΅œμƒμœ„ ν•¨μˆ˜λ₯Ό κΈ°μ€€μœΌλ‘œ λ‹€λ₯Έ ν•¨μˆ˜λ“€μ„ λ¬Έλ§₯에 κ°•ν•˜κ²Œ κ²°ν•©μ‹œν‚€κΈ° λ•Œλ¬Έμ— μ‹œμŠ€ν…œμ„ 변경에 μ·¨μ•½ν•˜κ²Œ λ§Œλ“€κ³  μ΄ν•΄ν•˜κΈ° μ–΄λ ΅κ²Œ λ§Œλ“ λ‹€.

 

λ˜ν•œ, 데이터가 λ³€κ²½λ˜μ—ˆμ„ λ•Œ μ„ΈλΆ€ κΈ°λŠ₯의 μ΄λ¦„λ§ŒμœΌλ‘œ λ³€κ²½λœ 데이터가 μ‚¬μš©λœ μ„ΈλΆ€κΈ°λŠ₯인지 μ§κ΄€μ μœΌλ‘œ νŒŒμ•…ν•˜κΈ° νž˜λ“€μ–΄ ν•¨μˆ˜λ₯Ό μ—΄μ–΄μ„œ ν™•μΈν•΄λ΄μ•Όν•œλ‹€.

 

 

νƒ€μž… 좔상화와 절차 좔상화

class Employee{

	public calculatePay(){
    	if(μ •κ·œ 직원){
        	return κΈ°λ³ΈκΈ‰ - (κΈ°λ³ΈκΈ‰ * μ†Œλ“μ„Έμœ¨);
        }
        
        if(μ•„λ₯΄λ°”μ΄νŠΈ 직원){
        	return κΈ°λ³ΈκΈ‰*μ‹œκ°„ - (κΈ°λ³ΈκΈ‰*μ‹œκ°„)*μ†Œλ“μ„Έμœ¨;
        }
    
    }

}

μœ„μ™€ 같이, μ •κ·œμ§μ›μΈ κ²½μš°μ™€ μ•„λ₯΄λ°”μ΄νŠΈ 직원인 경우 κΈ°λ³ΈκΈ‰ 계산을 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” ν΄λž˜μŠ€κ°€ μžˆλ‹€.

 

λ¬Όλ¦¬μ μœΌλ‘œλŠ” ν•˜λ‚˜μ˜ νƒ€μž…μ΄μ§€λ§Œ κ°œλ…μ μœΌλ‘œλŠ” 직원과 μ•„λ₯΄λ°”μ΄νŠΈ μ§μ›μ΄λΌλŠ” 두 개의 κ°œλ³„μ μΈ κ°œλ…μ„ ν¬κ΄„ν•œλ‹€.

 

ν•˜λ‚˜μ˜ νƒ€μž…μ΄ ꡬ체적인 직원 νƒ€μž…μ„ 감좔기 λ•Œλ¬Έμ— νƒ€μž… 좔상화라고 λΆ€λ₯Ό 수 μžˆλ‹€.

 

 

 

interface Employee{
	public calculatePay(){

    }
}


class μ •κ·œμ§μ› implements Employee{

	private calculatePay(){
        return κΈ°λ³ΈκΈ‰ - (κΈ°λ³ΈκΈ‰ * μ†Œλ“μ„Έμœ¨);
    }

}

class μ•„λ₯΄λ°”μ΄νŠΈμ§μ› implements Employee{

	private calculatePay(){
        return κΈ°λ³ΈκΈ‰*μ‹œκ°„ - (κΈ°λ³ΈκΈ‰*μ‹œκ°„)*μ†Œλ“μ„Έμœ¨;
    }

}

μœ„μ™€ 같이 λͺ…μ‹œμ μœΌλ‘œ λ‘κ°œμ˜ νƒ€μž…μ„ μ •μ˜ν•˜κ³  μ˜€νΌλ ˆμ΄μ…˜μ„ 각각 μ •μ˜ν•˜κ³  두 νƒ€μž…μ΄ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” κΈ°λŠ₯은 λΆ€λͺ¨ν΄λž˜μŠ€μ— 두고 상속받도둝 κ΅¬ν˜„ν•œλ‹€.

 

ν΄λΌμ΄μ–ΈνŠΈλŠ” λΆ€λͺ¨ ν΄λž˜μŠ€μ— λ©”μ‹œμ§€λ₯Ό 보내고 μ‹€μ œ ν΄λž˜μŠ€κ°€ 무엇인지에 따라 μ μ ˆν•œ μ ˆμ°¨κ°€ μ‹€ν–‰λœλ‹€.

 

πŸ’‘ 즉, 결둠은 νƒ€μž… μΆ”μƒν™”λŠ” μ˜€νΌλ ˆμ΄μ…˜μ„ κΈ°μ€€μœΌλ‘œν•˜κ³  κ·Έ μ•ˆμ— νƒ€μž…μ„ λ¬Άμ—ˆλ‹€λ©΄, 절차 μΆ”μƒν™”λŠ” νƒ€μž…μ„ κΈ°μ€€μœΌλ‘œ κ³΅ν†΅λœ μ˜€νΌλ ˆμ΄μ…˜μ„ λ¬ΆλŠ”λ‹€.

 

λ”°λΌμ„œ, 객체 μ§€ν–₯은 절차 좔상화가 λœλ‹€.

 

객체 μ§€ν–₯μ—μ„œλŠ” νƒ€μž… λ³€μˆ˜λ₯Ό μ΄μš©ν•œ 쑰건문을 λ‹€ν˜•μ„±μœΌλ‘œ λŒ€μ²΄ν•œλ‹€.

 

λ§Œμ•½, νƒ€μž… μΆ”μƒν™”μ—μ„œ 일반 직원, μ•„λ₯΄λ°”μ΄νŠΈ 직원 외에 λ˜λ‹€λ₯Έ 계약직 직원이 μΆ”κ°€λœλ‹€κ³  ν–ˆμ„ λ•Œ,

 

λ©”μ„œλ“œμ˜ κ΅¬ν˜„λΆ€λ₯Ό λ³€κ²½ν•΄μ•Όν•˜μ§€λ§Œ

 

절차 μΆ”μƒν™”μ˜ 경우 '계약직 직원'μ΄λΌλŠ” μƒˆλ‘œμš΄ 클래슀λ₯Ό μΆ”κ°€ν•¨μœΌλ‘œμ„œ ν•΄κ²°ν•  수 μžˆλ‹€.

 

 

    'κ°œλ°œμ„œμ /였브젝트 - 쑰영호' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • Chapter 6. λ©”μ‹œμ§€μ™€ μΈν„°νŽ˜μ΄μŠ€
    • Chapter 5. μ±…μž„ ν• λ‹Ήν•˜κΈ°
    • Chapter 4. 섀계 ν’ˆμ§ˆκ³Ό νŠΈλ ˆμ΄λ“œμ˜€ν”„
    • Chapter 3. μ—­ν• , μ±…μž„, ν˜‘λ ₯
    우규이인우윀
    우규이인우윀
    개발자 κΏˆλ‚˜λ¬΄

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”