항해 99 : TIL - 4
학습 내용 정리
다형성 - 역할과 구현
- 역할과 구현으로 구분하면 단순해지고, 유연해지며 변경도 편리해짐.
- 장점
- 클라이언트는 인터페이스(역할)만 알면 된다.
- 클라이언트는 구현 대상의 내부 구조를 몰라도 된다.
- 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않음
- 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않음
자바 언어의 다형성 활용
- 역할 = 인터페이스
- 구현 = 인터페이스 구현 클래스, 구현 객체
객체 설계 시 역할과 구현을 명확히 분리, 객체 설계 시 역할(인터페이스)를 먼저 부여하고 역할을 수행하는 구현 객체 만들기
객체의 협력 관계
- 클라이언트 : 요청 , 서버 : 응답
다형성의 본질
- 클라이언트 변경 없이, 서버의 구현 기능을 유연하게 변경 가능
한계
- 인터페이스가 변하면 클라이언트, 서버 모두 큰 변경이 발생(인터페이스를 안정적으로 설계하는 것이 중요)
객체 지향에서 가장 중요한 것은 다형성.
OCP(Open-Closed Principle)
좋은 객체 지향 설계 원칙 중 하나
- Open for extension : 새로운 기능의 추가나 변경 사항이 생길 때, 기존 코드는 확장할 수 있어야 함
- Closed for modification : 기존 코드는 수정되지 않아야 한다
기존 코드의 수정 없이 새로운 기능을 추가할 수 있다.
확장에 열려 있음
- 인터페이스를 사용해 새로운 기능을 자유롭게 추가할 수 있음, 인터페이스를 사용하는 클라이언트도 추가된 기능을 자유롭게 호출 가능
코드 수정은 닫혀 있음
- 새로운 기능이 추가 되면 기존 코드의 수정은 불가피함
변하지 않는 부분
- 새로운 기능을 추가할 때 인터페이스를 사용하는 클라이언트는 수정하지 않아도 됨
변하는 부분
- 전체 프로그램을 설정하고 조율하는 역할을 하는 부분은 OCP를 지켜도 변경이 필요함
다형성, OCP, 역할과 구현을 통한 리펙토링 간 느낀 점
- 코드를 리펙토링하기 위해서는 단계 별로 진행하는 것이 좋음
- 프로그램에서 역할과 구현을 나누고 클라이언트에서 변하지 않을 부분과 변할 부분을 분리하기
- 단계 별로 진행하는 도중에도 프로그램 출력이 어떤 식으로 달라지는지 확인하기
기술 매니저님 멘토링 내용 요약
- 알고리즘 문제 진행 시 조건(제약)을 보고 감을 못 잡을 경우 바로 답을 확인하고 답을 통해서 배우기
- 비슷한 유형의 예제가 많기 때문에 배운 내용을 토대로 다른 문제를 푸는 식으로 공부
- 프로그래밍 중 다음 스탭으로 넘어가는데 어려움을 겪을 때는 혼자서 시간을 들여서 시도해보고 안 될 경우에는 답변을 보고 코드를 왜 이런 식으로 설계했는지 이해하고 넘어가기
- 익숙하지 않아서 어려운 것은 비슷한 예제를 많이 푸는 것으로 익숙해지기
- 좋은 코드를 많이 보는 것도 프로그래밍에 도움이 된다.
- 어렵거나 이해가 잘 안 되는 부분은 최대한 이해를 하기 위해 복습 등의 노력이 필요하고 다른 사람들과 소통을 통해 배우는 것도 좋음
'항해 99 > Java' 카테고리의 다른 글
페어 프로그래밍 - 코딩 테스트 (1) | 2024.02.13 |
---|---|
WIL - 1 (1) | 2024.02.12 |
Java 기초 12 - 다형성 (1) | 2024.02.08 |
객체 지향, 상속, 다형성 (1) | 2024.02.07 |
연산자, 조건문, 반복문, 배열 (1) | 2024.02.06 |