좋은 객체 지향 프로그래밍??
- 객체 지향 프로그래밍의 의미
- 프로그램 명령을 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, “객체”들의 모임으로, 각각의 객체 끼리 데이터를 주고 받으며 처리 할 수 있는 프로그래밍을 말한다.
- 객체 지향 프로그래밍은 “유연” 하고 “변경”이 용이 하여 대규모 소프트웨어 개발에 많이 사용된다.
⎈ 객체 지향의 유연, 변경 용이??
- 레고 블럭 조립하듯이
- 키보드, 마우스 갈아 끼우듯
- 컴퓨터 부품 갈아 끼우듯
- 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법
- 객체 지향 특징
- 추상화
- 캡슐화
- 상속
- 다형성 ⇒ 객제지향 프로그래밍에서 가장 중요
다형성의 실세계 비유
- 역할과 구현으로 세상을 구분
- 역할 ⇒ 인터페이스
- 구현 ⇒ 역할을 구현한 실제 객체
⇒ 자동차 역할 에 k3, 아반떼, 테슬라 무엇이 오든 상관 없이 운전자는 자동차를 사용할 수 있다.
⇒ 로미오, 줄리엣 역할을 누가 하든 로미오나 줄리엣에 영향을 끼치지 않고 변환이 가능하다.
역할(인터페이스)과 구현(객체)을 분리 의 장점
- 사용자 (Client) 는 구현 까지 알 필요 없고 역할 (인터페이스) 만 알면 되고, 구현 (내부 구조) 는 몰라도 되며, 구현 (내부 구조) 가 변경이 되어도 영향을 받지 않는다. 그리고 구현 자체를 변경하여도 클라이언트는 영향을 받지 않는다.
역할 과 구현의 분리 한계 점
- 인터페이스가 변경이 되면 클라이언트 와 서버 모두 큰 변경이 발생 한다.
다형성의 본질
- 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있는 것
⇒ 클라이언트가 car 라는 인터페이스를 사용할 때 인터페이스와 클라이언트 변경 없이 그때그때 원하는 것을 사용할 수 있게 해주는 것
OCP 원칙 (Open-Closed Princilpe)
- 좋은 객체 지향 설계 원칙 중 하나로 OCP 원칙이라는 것이 있다.
- Open for extension : 새로운 기능의 추가나 변경 사항이 생겼을 때, 기존 코드는 확장할 수 있어야 한다. ⇒ 확장의 기능
- Closed for modification : 기존의 코드는 수정되지 않아야 한다.
⇒ 결론 : 기존 코드의 수정 없이 새로운 기능을 추가할 수 있다는 의미, 다형성이 바로 이 OCP 원칙을 잘 키고 있는 코드이다.
⇒ NewCar 가 추가 되어도 기존 코드 Car 나 Driver 의 코드에 변경 없이 잘 사용 된다.
- Open 의미 ⇒ Car 인터페이스를 사용해 새로운 차량을 자유롭게 추가할 수 있는 의미, 그리고 클라이언트인 Driver 오 Car 인터페이스를 통해 추가된 차량을 자유롭게 호출할 수 있다. 이것이 확장에 열려 있다는 의미이다.
- Closed 의미 ⇒ 새로운 차가 추가 되었을 때 당연히 어딘가의 코드는 수정 되지만, 핵심 부분인 Car 나 Driver 부분이 수정 되지 않는 뜻 이다.
'자바 공부 > [ 完 ] 자바 실전 - 기본편' 카테고리의 다른 글
10-9. 다형성 - 인터페이스의 다중 구현 (0) | 2024.03.29 |
---|---|
10-8. 다형성 - 인터페이스 (0) | 2024.03.29 |
10-7. 다형성 - 추상메소드만 존재하는 "순수 추상 클래스" (없는 용어) (0) | 2024.03.29 |
10-6. 다형성 - 추상클래스 (0) | 2024.03.29 |
10-5. 다형성 - 사용하는 이유와 사용법 (0) | 2024.03.29 |