본문 바로가기
Spring

Spring-OOP와 스프링

by 토니짱 2022. 9. 25.

스프링이란!?

- 자바 언어 기반의 프레임워크

- OOP를 도와주는 프레임워크

OOP가 뭔데요?

Object Oriented Programing의 줄임말이다.

객체 지향 프로그래밍을 뜻하며 객체의 관점에서 프로그래밍한다.

객체는 메시지를 주고받는 협력을 통해 데이터를 처리한다.

블록을 조립하거나 부품을 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하여 대규모에 많이 사용된다.

 

좋은 객체 지향 프로그래밍

다형성

-클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경한다.

-클라이언트 = 운전자, 서버 = 자동차 => 자동차가 바뀌어도 운전자는 자동차를 운전할 수 있다.

 운전자는 운전만 할 줄 알면 자동차 내부 구조나 동작 원리 등을 몰라도 운전 가능하다.

 

역할과 구현의 분리

아주아주 중요한 내용!

  • 클라이언트는 대상의 역할(인터페이스)만 알면 된다.
  • 클라이언트는 구현체의 내부 구조를 몰라도 된다.
  • 클라이언트는 구현체의 내부 구조가 바뀌어도 영향을 받지 않는다.
  • 즉, 클라이언트는 대상 구현체가 바뀌어도 영향을 받지 않는다.

역할 = 인터페이스

구현 = 인터페이스를 구현한 클래스, 구현 객체

객체를 설계할 때 역할(인터페이스)을 먼저 부여하고, 그 역할을 수행하는 구현 객체를 만든다!

 

자바의 다형성

오버 라이딩

public class MemberService {
  private MemberRepository memberRepository = new MemoryMemberRepository();
}

public class MemberService {
//private MemberRepository memberRepository = new MemoryMemberRepository();
  private MemberRepository memberRepository = new JdbcMemberRepository();
}
  • 다형성으로 인터페이스를 구현한 객체를 실행 시점에 유연하게 변경할 수 있다.
  • 클래스 상속 관계도 마찬가지로 다형성, 오버 라이딩을 적용할 수 있다.

클라이언트(MemberService)가 인터페이스(MemberRepository)를 의존한다면 MemoryMemberRepository와 JdbcMemberRepository를 모두 받아들일 수 있다. 

 

다형성의 본질

  • 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다.
  • 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다.

만약 역할(인터페이스) 자체가 변하면 클라이언트, 서버 모두 큰 변경이 발생한다.

자동차를 비행기로 바꾸면 운전자는 더 이상 운전할 수 없다.

 

 

 

반응형

'Spring' 카테고리의 다른 글

1. JPA 실습 - 프로젝트 설정 및 JPA 기초 개념  (1) 2022.09.30
JPA가 뭘까?  (0) 2022.09.29
AOP(Aspect Oriented Programming)  (1) 2022.09.25
@Component와 @Configuration  (0) 2022.09.25
스프링 빈과 의존 관계  (2) 2022.09.25