JAVA
[SPRING] 객체지향 특징
BAKSSSE
2023. 6. 14. 18:49
객체지향프로그래밍이란
프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 봐야 한다.
유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다.
유연, 변경 용이?
- 레고 블럭을 조립
- 키보드, 마우스를 바꾸듯
- 컴퓨터 부품을 바꾸듯
- 컴포넌트를 쉽고 유연하게 변경 하면서 개발할 수 있는 방법
이것이 바로 다형성(Polymorphism)입니다.
다형성(Polymorphism)
자동차의 역할을 K3에서 아반떼로 바꾸어도 운전자는 운전이 가능합니다.
운전자는 자동차의 역할(인터페이스)만 의존하고있습니다.
자동차의 역할을 만들고, 구현을 분리하는 것은 우리들(client)을 위한 것입니다.
즉, Client에게 영향을 주지 않고 새로운 기능을 제공 할 수 있습니다.
아래의 코드 처럼 원하는 jdbc 접근 기술을 담은 Repository를 골라서 사용 할 수 있습니다.
memberRepository.save(member);
public interface MemberRepository
{
Member save(Member member);
Optional<Member> findById(Long id);
Optional<Member> findByName(String name);
List<Member> findAll();
}
@Bean
public MemberRepository memberRepository()
{
return new JdbcMemberRepository(dataSource);
return new JdbcTemplateMemberRepository(dataSource);
return new JpaMemberRepository(em);
}
역할과 구현을 분리
- 역할: 인터페이스
- 구현: 인터페이스를 이용해 구현한 클래스, 구현체
- 객체를 설계할 때 역할과 구현을 명확하게 분리
- 객체설계시 인터페이스를 먼저 생성하고, 그 역할을 수행하는 구현체를 만듬