본문 바로가기
Spring/스프링 핵심 원리 - 기본편

스프링과 객체 지향 프로그래밍

by hk27 2022. 1. 1.
스프링의 핵심 개념은 무엇일까요?

 

안녕하세요. 오늘은 스프링과 객체 지향 프로그래밍에 대해 알아보고자 합니다. 

 

스프링의 핵심 개념은 무엇일까요? 

'웹 애플리케이션을 만들고 서버를 자동으로 띄워주는 기술' 보다는, 

'객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크'로 정의하는 것이 좋을 것 같습니다.

 

프레임워크

참고로, 프레임워크에 대해서 잘 다듬어진 글이 있어서 공유하고 싶습니다.

https://jokergt.tistory.com/89

 

프레임워크란?

프레임워크의 개념을 한번에 잡아주는 좋은 글이다.. 프레임워크란 단어처럼 많이 쓰이면서도 애매한 단어가 없는 것 같다. 일단 구글링을 해 본 결과 다음과 같은 정의를 찾을 수 있었다.   ===

jokergt.tistory.com

글에서는 프레임워크를 '소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것'이자 "기본적인 설계나 필요한 라이브러리는 알아서 제공해 줄 것이니 넌 그냥 네가 진짜로 하고 싶은 기능 구현에만 전념해!"라는 취지에서 만들어진 물건으로 정의하고 있습니다. 

스프링은 웹을 만들기 위해 이용되는, MVC 패턴이 적용된, 재사용할 수 있는 기술이니 프레임워크라고 할 수 있을 것입니다. 

 

객체 지향

다시 본론으로 돌아와서, 스프링은 자바 언어 기반의 프레임워크입니다. 자바 언어의 가장 큰 특징이 객체 지향 언어라는 것이죠. 스프링은 객체 지향 언어의 특징을 살려내는 프레임워크입니다. 

객체 지향 패러다임의 4가지 주요 특성은 추상화, 캡슐화, 상속, 다형성입니다.

그중 다형성에 초점을 맞춰서 알아봅시다. 

 

다형성

다형성(polymorphism)은 하나의 객체가 여러 개의 자료형 타입을 가질 수 있는 것입니다[3]. 예를 들어서,

Tiger가 Animal 클래스를 상속받고(extends), Predator와 Barkable 인터페이스를 상속받는(implements)다면, 아래와 같이 Tiger 객체를 만들 수 있습니다. 

Tiger가 4개의 타입으로 정의될 수 있는데, 이를 다형성이라고 합니다. 

 

더 쉽게 이해하기 위해서, '역할'과 '구현'으로 세상을 구분해봅시다. 

로미오와 줄리엣 공연이 있을 때, 로미오, 줄리엣 역할과 구현하는 배우를 분리할 수 있습니다. 

 

역할은 인터페이스, 구현은 인터페이스를 구현한 구현체입니다. 

인터페이스를 구현한 객체 인스턴스는 유연하게 변경할 수 있습니다. 

클라이언트가 인터페이스에 접근한다면, 서버에서 구현체를 어떻게 변경하든 클라이언트의 코드를 변경하지 않을 수 있을 것입니다. 

스프링을 사용하면 공연 무대의 배우를 선택하듯이, 구현을 편리하게 변경할 수 있습니다. 

스프링의 중요한 개념인 제어의 역전(IoC), 의존관계 주입(DI)도 다형성을 활용해 역할과 구현을 분리하고 있는데, 앞으로 이를 알아갈 것입니다. 

 

인프런  '스프링 핵심 원리 - 기본편' 강의를 듣고 공부하며 정리한 자료입니다. 

잘못된 부분은 피드백 주시면 감사하겠습니다. 

글 읽어주셔서 감사합니다 :-)

 

참고자료

[1] 스프링 핵심 원리 - 기본편, 섹션 1. 객체 지향 설계와 스프링 https://www.inflearn.com/course/스프링-핵심-원리-기본편

[2] https://jokergt.tistory.com/89

[3] https://wikidocs.net/269

댓글