πŸ“•CS

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP, Object-Oriented Programming)

stonesy 2024. 11. 20. 10:35
728x90

πŸ“Œκ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°

μ‹€μ„Έκ³„μ˜ 사물을 객체둜 λͺ¨λΈλ§ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ 개발 λ°©λ²•λ‘ μœΌλ‘œ, 속성과 λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ 객체둜 λ¬ΆλŠ”λ‹€.

 

πŸ“Œκ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° μž₯점

1. μ½”λ“œμ˜ μž¬μ‚¬μš©μ„± 증가

객체λ₯Ό μž¬μ‚¬μš©ν•˜μ—¬ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높일 수 μžˆλ‹€. 기쑴의 클래슀λ₯Ό ν™•μž₯ν•˜κ±°λ‚˜ μˆ˜μ •ν•˜λŠ”λ° μš©μ΄ν•˜λ‹€.

2. μœ μ§€λ³΄μˆ˜μ„± ν–₯상

μΊ‘μŠν™”λ₯Ό 톡해 λ‚΄λΆ€ κ΅¬ν˜„μ„ 감좔고, μΈν„°νŽ˜μ΄μŠ€λ§Œ κ³΅κ°œν•˜μ—¬ μ½”λ“œ λ³€κ²½ μ‹œ 영ν–₯을 μ΅œμ†Œν™”ν•  수 μžˆλ‹€.

3. 가독성과 이해도 증가

ν˜„μ‹€ μ„Έκ³„μ˜ 사물을 객체둜 λͺ¨λΈλ§ν•˜μ—¬ 직관적인 섀계가 κ°€λŠ₯ν•˜λ‹€.

 

πŸ“Œκ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° νŠΉμ§•: 좔상화, μΊ‘μŠν™”, 상속, λ‹€ν˜•μ„±

1. 좔상화

λ³΅μž‘ν•œ κ°œλ…μ€ 감좔고 ν•΅μ‹¬λ§Œ λ“œλŸ¬λ‚΄λŠ” 것

2. μΊ‘μŠν™”

객체의 속성과 λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜λ‘œ λ¬Άκ³  일뢀λ₯Ό 외뢀에 감좔어 μ€λ‹‰ν•˜λŠ” 것

3. 상속

μƒμœ„ 클래슀의 νŠΉμ„±μ„ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ λ¬Όλ €λ°›μ•„ μ‚¬μš©ν•˜λŠ” κ²ƒμœΌλ‘œ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±, 계측적 ꡬ쑰, μœ μ§€λ³΄μˆ˜μ„±μ˜ μΈ‘λ©΄μ—μ„œ μ€‘μš”ν•˜λ‹€.

4. λ‹€ν˜•μ„±

ν•˜λ‚˜μ˜ λ©”μ„œλ“œλ‚˜ ν΄λž˜μŠ€κ°€ λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜λŠ” 것(μ˜€λ²„λ‘œλ”©, μ˜€λ²„λΌμ΄λ”©)

 

πŸ“Œκ°μ²΄μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° 섀계 원칙: SOLID

1. Single-Responsibility 원칙

ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” 각각 ν•˜λ‚˜μ˜ μ±…μž„λ§Œμ„ κ°€μ Έμ•Ό ν•œλ‹€.

2. Open-Close 원칙

ν™•μž₯μ—λŠ” μ—΄λ €μžˆκ³ , μˆ˜μ •μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό ν•œλ‹€. κΈ°μ‘΄ μ½”λ“œλŠ” 잘 λ³€κ²½ν•˜μ§€ μ•ŠμœΌλ©΄μ„œ ν™•μž₯은 μ‰½κ²Œ ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

3. Liskov μΉ˜ν™˜ 원칙

μƒμœ„ ν΄λž˜μŠ€λŠ” ν•˜μœ„ 클래슀둜 μΉ˜ν™˜ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.

4. Interface 뢄리 원칙

ν•˜λ‚˜μ˜ 일반적인 μΈν„°νŽ˜μ΄μŠ€λ³΄λ‹€ μž‘κ³  ꡬ체적인 μ—¬λŸ¬ 개의 μΈν„°νŽ˜μ΄μŠ€κ°€ μ’‹λ‹€.

5. Dependency Inversion 원칙

μƒμœ„ λͺ¨λ“ˆμ€ ν•˜μœ„ λͺ¨λ“ˆμ— μ˜μ‘΄ν•˜λ©΄ μ•ˆλœλ‹€.

728x90