πŸ’» Computer Science

01. 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° μž…λ¬Έ - 객체와 μΊ‘μŠν™”

μ• μ •μ“° 2021. 5. 7. 15:31

www.inflearn.com/course/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%9E%85%EB%AC%B8

 

객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° μž…λ¬Έ - μΈν”„λŸ° | κ°•μ˜

잘 ν•˜λŠ” κ°œλ°œμžκ°€ 되기 μœ„ν•΄μ„œλŠ” μœ μ—°ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  쀄 μ•Œμ•„μ•Όν•©λ‹ˆλ‹€. 객체 지ν–₯을 μ΄μš©ν•΄μ„œ λ³€κ²½ν•˜κΈ° 쒋은 μœ μ—°ν•œ μ½”λ“œλ₯Ό λ§Œλ“œλŠ” 방법을 μ•Œμ•„λ³΄μ„Έμš”., 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° μž…λ¬Έ 이번 '객

www.inflearn.com

 

ν•΄λ‹Ή κ°•μ˜λ₯Ό 보며 μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€!

 

 

객체의 핡심?

κ°μ²΄λŠ” μ œκ³΅ν•˜λŠ” κΈ°λŠ₯으둜 μ •μ˜ν•œλ‹€. μ–΄λ–€ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ”μ§€λ‘œ μ •μ˜ν•˜μ§€ λ‚΄λΆ€μ μœΌλ‘œ 가진 ν•„λ“œλ‘œ μ •μ˜ν•˜μ§€ μ•ŠλŠ”λ‹€.

예λ₯Όλ“€μ–΄ νšŒμ›κ°μ²΄κ°€ μžˆλ‹€λ©΄ νšŒμ›κ°μ²΄μ˜ κΈ°λŠ₯은 νšŒμ›μˆ˜μ •, νšŒμ›νƒˆν‡΄ ... λ“± 이닀!

 

κ·Έλ ‡λ‹€λ©΄ κΈ°λŠ₯은 μ–΄λ–»κ²Œ μ •μ˜λ κΉŒ?

보톡 λ©”μ„œλ“œ(μ˜€νΌλ ˆμ΄μ…˜)을 μ΄μš©ν•΄μ„œ κΈ°λŠ₯을 λͺ…μ„Έ. 이름, νŒŒλΌλ―Έν„° , 결과둜 κ΅¬μ„±λ˜μ–΄μžˆλ‹€.

 

그럼 μ–΄λ–€μ‹μœΌλ‘œ 데이터λ₯Ό μ£Όκ³  λ°›μ„κΉŒ?

κΈ°λŠ₯을 μ‚¬μš©ν•΄μ„œ μ—°κ²°ν•©λ‹ˆλ‹€. κΈ°λŠ₯ μ‚¬μš© == λ©”μ„œλ“œ 호좜

μ„œλ‘œ μƒν˜Έ μž‘μš©(λ©”μ‹œμ§€)을 ν•œλ‹€. 예λ₯Όλ“€μ–΄ λ©”μ„œλ“œ 호좜 λ©”μ‹œμ§€, λ¦¬ν„΄ν•˜λŠ” λ©”μ‹œμ§€, μ΅μ…‰μ…˜ λ©”μ‹œμ§€ 

 

κ°μ²΄λŠ” μ–΄λ–»κ²Œ μƒκΈ΄κ±ΈκΉŒ?

κΈ°λŠ₯을 ν¬ν•¨ν•˜λŠ”κ±Έ 객체라고 ν•©λ‹ˆλ‹€! 

dto,vo 같은 λ°μ΄ν„°λ§Œμ„ ν¬ν•¨ν•˜κ³  μžˆλŠ”κ±΄ 객체라고 ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

제 μƒκ°μ—λŠ” λ°μ΄ν„°λ§Œμ„ ν¬ν•¨ν•˜κ³  μžˆλŠ” 것 λ˜ν•œ 객체라고 μƒκ°ν•˜μ§€λ§Œ... κΈ°λŠ₯을 μ€‘μ‹¬μœΌλ‘œ μƒκ°ν•˜κ³  κ°•μ˜λ₯Ό λ“€μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€,,

 

μΊ‘μŠν™”?

- 데이터 + 데이터 κ΄€λ ¨ κΈ°λŠ₯을 λ¬ΆλŠ”λ‹€.

- 객체가 κΈ°λŠ₯을 μ–΄λ–»κ²Œ κ΅¬ν˜„ν–ˆλŠ”μ§€ 외뢀에 κ°μΆ˜λ‹€.

- 정보 은닉 의미λ₯Ό ν¬ν•¨ν•œλ‹€. 

 

μΊ‘μŠν™”λ₯Ό μ™œ ν•˜λŠ”κ±΄κ°€?

외뢀에 영ν–₯ 없이 객체 λ‚΄λΆ€ κ΅¬ν˜„μ„ λ³€κ²½ν•˜κΈ° μœ„ν•¨μ΄λ‹€.

 

λ§Œμ•½ μΊ‘μŠν™”λ₯Ό ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μ–΄λ–»κ²Œ 될까?

μš”κ΅¬μƒν™©μ˜ λ³€ν™”κ°€ μƒκ²¨μ„œ μˆ˜μ •ν•˜κ²Œ λ˜μ—ˆμ„ λ•Œ 데이터 ꡬ쑰/μ‚¬μš©μ— λ³€ν™”κ°€ μƒκΈ°λŠ”λ°

ν•΄λ‹Ή 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” μ½”λ“œμ˜ μˆ˜μ •μ΄ λ°œμƒν•˜κ²Œ λ©λ‹ˆλ‹€. ν•΄λ‹Ή 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” 곳을 λͺ¨λ‘ μˆ˜μ •ν•΄μ•Ό ν•˜λŠ” λ²ˆκ±°λŸ¬μ›€

 

μΊ‘μŠν™”λ₯Ό ν•˜κ²Œ λœλ‹€λ©΄!

μ–΄λ–€ μš”κ΅¬ 상황이 λ³€κ²½λ˜μ—ˆμ„ λ•Œ λ³€κ²½μš”μ†Œκ°€ 적닀. 

Account μ•ˆμ— μžˆλŠ” hasRefularPermission 만 λ³€κ²½ν•΄μ£Όλ©΄ 되기 λ•Œλ¬Έ.

μΊ‘μŠν™”λœ κΈ°λŠ₯을 μ‚¬μš©ν•˜λŠ” μ½”λ“œ 영ν–₯ μ΅œμ†Œν™”, κΈ°λŠ₯에 λŒ€ν•œ 이해λ₯Ό 높인닀

if(acc.hasRegularPermission()){
 ... μ •νšŒμ› κΈ°λŠ₯
 }
 
 
 public class Account{
 	private Membership membership;
    private Date expDate;
    
    public boolean hasRegularPermission(){
    	return membership == REGULAR && (expDate.isAfter ... 

 

μΊ‘μŠν™”λ₯Ό μœ„ν•œ κ·œμΉ™

1. 데이터λ₯Ό 달라고 ν•˜μ§€λ§κ³  해달라고 ν•˜κΈ°. 예λ₯Ό λ“€μ–΄ 

acc.getMembership() == REFULAR λ₯Ό 보면 Accountμ—μ„œ 멀버λ₯Ό 달라고 ν•˜κ³  κ·Έ 후에 쑰건을 λΉ„κ΅ν•œλ‹€. μ΄λ ‡κ²Œ ν•˜μ§€λ§κ³ 

acc.hasRegularPermission() 와 같이 ν•΄λ‹Ή λ°μ΄ν„°λ₯Ό κ°–κ³  μžˆλŠ” κ°μ²΄μ—κ²Œ κΈ°λŠ₯을 해달라고 μ§€μ‹œν•˜λŠ” 것이닀.

 

2. Demeter's Law

λ©”μ„œλ“œμ—μ„œ μƒμ„±ν•œ 객체의 λ©”μ„œλ“œλ§Œ 호좜

νŒŒλΌλ―Έν„°λ‘œ 받은 객체의 λ©”μ„œλ“œλ§Œ 호좜

ν•„λ“œλ‘œ μ°Έμ‘°ν•˜λŠ” 객체의 λ©”μ„œλ“œλ§Œ 호좜

 

μ—°μ†μœΌλ‘œ μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” κ²ƒμœΌλ‘œ λ³€κ²½ν•œλ‹€.

 

 

 

λ°˜μ‘ν˜•