- 객체지향 프로그래밍
- 컴퓨터 프로그램을 명령어 목록으로 보기보다는 여러 개의 독립된 단위인 객체들의 모임으로 파악하고자 하는 것.
- 객체는 메시지를 주고 받고 데이터 처리 가능
- 프로그램을 유연하고 변경이 용이(부품 갈아끼우듯이) 하게 만들기 때문에 대규모 개발에 많이 사용됨.
- 다형성
- 실세계와 비교해보자. 세상을 역할과 구현으로 구분해본다면!
- 운전자 & 자동차 비유
- 운전자 & 자동차. 운전자 역할 / 자동차 역할. 이런 자동차 역할을 여러 자동차 회사의 자동차들이 구현
- 자동차가 바뀌어도 운전자에게 영향을 주지 않음
- 자동차 역할과 구현을 분리한건 바로 운전자를 위한 것. 자동차의 내부 구조를 운전자가 알 필요가 없고, 자동차가 바뀌어도 운전자는 바뀔 필요가 없다. => 대상을 바꾸지 않고 새로운 자동차를 출시(클라이언트에게 영향을 주지 않고)할 수 있으므로 자동차의 세상을 무한히 확장할 수 있음.
- 로미오 & 줄리엣 공연
- 로미오 역할과 줄리엣 역할 각 역할을 다른 배우가 대체 가능
- 로미오 역할을 하는 사람은 줄리엣 역할을 누가 하든 대본에만 충실하면 괜찮음.
- 운전자 & 자동차 비유
- 역할과 구현으로 구분하면 세상이 단순, 유연해지고 변경이 편해짐
- 클라이언트는 대상의 역할(인터페이스)만 알고 내부구조 몰라도 괜찮아짐.
- 클라이언트는 구현 대상의 내부구조가 변경 돼도 , 구현 대상 자체를 변경해도 영향받지 않음
- Java에서 역할 : 인터페이스 / 구현 : 클래스, 구현 객체
- 자바 언어의 다형성
- 오버라이딩 된 메서드가 실행
- 클래스 상속 관계도 다형성, 오버라이딩 적용 가능
- 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 가능
- 다형성의 본질을 이해하고자 한다면, 협력이라는 객체사이 관계에서 시작.
- 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경 가능
'Learning-log > Spring & JPA' 카테고리의 다른 글
(스프링 핵심 원리 - 기본편) 1-(5) 객체 지향 설계와 스프링 (0) | 2023.03.25 |
---|---|
(스프링 핵심 원리 - 기본편) 1-(4) 좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2023.03.24 |
(스프링 핵심 원리 - 기본편) 1-(2)스프링이란? (0) | 2023.03.24 |
(스프링 핵심 원리 - 기본편) 1-(1)스프링의 탄생 (0) | 2023.03.24 |
비즈니스 요구사항 정리 (0) | 2023.03.20 |