카테고리 없음

스프링 프레임워크와 객체지향

k-hamin 2024. 8. 13. 15:38

spring boot spring 애플리케이션을 간편하고 빠르게 만들 수 있도록 도와주는 프레임워크이다.

 

spring"보다 나은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임 워크이다."

객체 지향언어인 자바 언어 기반의 프레임워크이며, 객체 지향 언어의 특징을 잘 살려주는 프레임워크이다.


객체지향이란

프로그맴을 명령어의 목록으로 보는 것이 아닌, 객체들의 모임으로 파악하는 것을 말한다.

 

객체지향의 특징

 

은행 계좌를 예를 들어 설명해 보자.

 

 

캡슐화

 

캡슐화는 간단히 말해 데이터를 보호하는 기법이다.

 

은행 계좌에 있는 돈을 외부에서 마음대로 입출금 할 수 없도록 해야 한다.

이를 위해, 계좌의 잔액을 나타내는 변수를  private로 두고 특정된 메서드 즉 특정된 루트를 통해서만 이 변수에 접근할 수 있게 하는 것이 캡슐화이다.

 

상속

 

클래스의 공통된 특성을 재사용하는 것이다.

 

모든 계좌는 입출금이라는 공통된 특성을 가지고 있지만, 각 계좌에는 특정 혜택이나 특징이 추가될 수 있다.

상속은 이 입출금이라는 큰 공통점을 부모 클래스로 두고 상위 클래스의 특성을 이어받아 하위 클래스를 생성하는 방법이다.

 

추상화

 

추상화는 복잡한 시스템에서 중요한 부분을 간추려 내는 것을 의미한다.

 

추상화는 2가지로 나뉜다.

제어 추상화

 

메서드의 작동 방식과 같은 내부 로직을 숨기는 것

 

데이터 추상화

 

대상을 간단한 개념으로 일반화하는 과정

삼각형, 사각형, 원이라는 객체가 있을 때 이 객체들을 묶어 도형이라는 이름을 붙이는 것

 

 

다형성

 

다형성이란 하나의 타입으로 여러 타입의 객체를 다루는 것이다. 

 

자바에서는 대표적으로 오버로딩, 오버라이딩, 업/다운 캐스팅, 인터페이스, 추상 클래스, 추상 메서드가 있다.

 


좋은 객체지향

좋은 설계란.. 새로운 변경사항이나 요구사항이 있을 때 영향받는 범위가 적게 설계하는 것이다.

 

SOLD

SRP(Single Responsiblity Principle): 단일 책임 원칙

 

클래스는 단 하나의 책임만을 가져야 한다는 원칙

이때, 책임이란 기능 담당이다.

 

청소기 클래스는 청소 메서드만 잘 구현하면 되지 강아지를 놀아주고, 옷을 걸어주는 일까지 다할 필요는 없다.

물론 다재다능한 청소기는 좋겠지만, 만일 청소기가 고장 나면 다른 기능까지도 사용하지 못하게 된다.

 

즉, 하나의 클래스로 너무 많은 일을 하지 말고 하나의 책임만을 수행하라는 뜻이다,

 

OCP(Open Colosed Priciple): 개방 폐쇄 원칙

 

확장에는 열려있어야 하며, 수정에는 닫혀있어야 한다.

 

기존의 코드를 변경하지 않으면서, 기능을 추가할 수 있도록 설계가 되어야 한다.

어렵게 생각할 필요 없이 추상화를 의미하는 것으로 보면 된다.

 

LSP(Listove Substitution Priciple): 리스코프 치환 원칙

 

서브 타입은 언제나 부모 타입으로 교체할 수 있어야 한다.

 

다형성 원리를 이용하기 위한 원칙으로 보면 된다.

 

ISP(Interface Segregation Principle): 인터페이스 분리 원칙

 

인테페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.

 

DIP(Dependency Inversion Principle): 의존 역전 원칙

추상화에 의존해야지 구체화에 의존하면 안 된다.