스프링

3. 객체지향 프로그래밍이란? (java)

juhoyang 2024. 9. 12. 15:49

뜻 (위키백과)

컴퓨터 프로그램을 명령어의 목록으로 보는 시각에 벗어나 여러개의 독립된 단위, 객체들의 모임으로 파악하고자 하는것.

각각의 객체는 메시지를 주고받고 데이터 처리 가능하다.

유연하고 변경 용이하여 대규모 소프트웨어 개발에 사용한다. (컴포넌트를 쉽고 유연하게 변경하면서 개발)

 

객체 지향의 특징

1. 추상화

- 객체의 공통적인 속성과 기능을 추출해서 정의 하는것

- 인터페이스로 객체의 역할을 기술하고 실질적인 구현은 클래스에서 만듬

 

2. 상속

- 기존 클래스를 상속 받아 부모의 기능, 속성을 이용할수 있게 하는 기능이다.

- 여러 클래스간 공유하는 속성과 기능을 부모 클래스에 정의해두고 상속받아서 사용한다.

- 클래스의 반복되는 소스를 최소화 하고 공유하는 속성, 기능을 쉽게 접근하고 수정이 있을때 부모클래스만 수정을 하면 되는 이점이 있다.

 

3. 캡슐화

외부로부터 클래스에 정의된 속성과 데이터를 보호하고, 접근이 필요한 부분만 외부 노출하여 영역을 지킴

자바에서는 접근 제어자(public, protected, private)로 접근을 제어하고, 데이터는 set,get 메서드로 접근 허용할 속성을 설정 가능 

 

4. 다형성 

객체의 속성이나 기능이 상황에 따라 여러가지 형태를 가질 수 있는 성질

- 인터페이스를 구현한 객체를 실행시점에서 유연하게 변경할수 있다.

- 역할은 고정되어 있으면 구현은 어떤게 되어도 크게 상관없음

 

다형성을 공부하다보면 역할과 구현으로 구분하는 비유가 많이 나온다.

 

실생활 비교

대상 : 휴대폰

역할 : 통화, 웹서핑, 문자 등

구현 : 아이폰, 갤럭시, 등

-> 역할이 고정되어 있으면 구현이 달라져도 상관없다.

사용자(클라이언트)는 구현 역할(인터페이스)만 알면 되고. 구현 대상의 내부구조를 몰라도 영향받지 않는다.

반대로 구현이 바뀌어도 클라이언트가 바뀔 필요가 없음

 

-> 개발을 할때 역할(인터페이스)이 변경되면 클라이언트, 구현체 모두 고쳐야 해서 구상하는게 매우 중요해 보인다.

가장 변화가 없는 방식으로 인터페이스를 설계하는게 중요해 보임

 

스프링과 객체지향

스프링은 다형성을 극대화 하여 이용하게 해줌

IOC, DI는 다형성을 활용해 역할, 구현을 편리하게 다룰 수 있게 해준다.

스프링은 구현을 편리하게 변경할수 있다.

 

참고

*오버라이딩 : 상속받은 클래스의 메소드를 재정의 하는것으로 이름, 매개변수, 리턴값이 모두 동일해야함

*오버로딩 : 같은 이름의 메소드를 파라미터 타입이나 개수의 차이로 만드는 것

 

https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

객체 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목

ko.wikipedia.org

 

https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95

 

객체 지향 프로그래밍의 4가지 특징ㅣ추상화, 상속, 다형성, 캡슐화 -

객체 지향 프로그래밍은 객체의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미합니다. 객체 지향 프로그래밍의 기본적인 개념과 그 설계를 바르게 하기 위

www.codestates.com

 

'스프링' 카테고리의 다른 글

7. 스프링 컨테이너, 빈  (0) 2024.09.22
5. IoC, DI, 컨테이너  (0) 2024.09.22
4. [SOLID] 객체 지향 설계 5가지 원칙  (1) 2024.09.13
2. 스프링 프레임 워크의 구성  (0) 2024.09.11
1. 스프링이란?  (0) 2024.09.11