개발 일지/Java

[Java] 객체 지향 프로그래밍(OOP)

미숫가루설탕많이 2022. 12. 27. 19:57

 객체 지향 프로그래밍 (Object Oriented Programming, OOP)이란, 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말한다. 여기서 객체란, 우리가 인지할 수 있는 '실재하는 모든 것'이자 '사용할 수 있는  실체'를 의미한다.

 

 객체 지향 이론의 핵심 개념은 '실제 세계는 이러한 객체들로 구성되어 있으며, 발생하는 모든 사건들은 이 객체들 간의 상호작용을 통해 발생한다'는 전제로부터 출발한다.

 

 컴퓨터 프로그래밍의 관점에서 보면 일련의 명령어들의 나열을 통해 컴퓨터에게 말을 건네는 절차적 프로그래밍 방식과는 다르게, 객체지향적 프로그래밍은 '프로그래밍에서 필요한 데이터를 한 데 모아 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 협력과 유기적인 상호작용을 통해 특정 기능을 구성'하는 프로그래밍 방법론을 지칭한다.

 

 즉, 객체 지향 프로그래밍은 실제 사물의 속성(state)과 기능(behavior)을 분석한 후에 이것을 프로그래밍의 변수와 함수로 정의함으로 실제 세계를 최대한 컴퓨터 프로그래밍에 반영하고자 하는 시도라고 설명할 수 있다.

 

 

 

 

객체 지향 프로그래밍의 장단점


장점

  1. 기존 코드를 활용해서 새로운 코드를 상대적으로 손쉽게 작성할 수 있다.
  2. 코드 간의 관계 설정을 통해 적은 노력으로도 쉽게 코드를 변경할 수 있다.
  3. 클래스 단위로 모듈화시켜서 개발하기 때문에 업무 분담이 편리하고 대규모 소프트웨어 개발에 적합하다.
  4. 프로그램 개발 및 유지 보수에 드는 비용과 시간을 획기적으로 줄일 수 있다.
  5. 객체를 통해 데이터를 관리하여 데이터를 손실 없이 관리하기에 용이하다.

 

단점

  1. 처리 속도가 상대적으로 느리다.
  2. 객체의 수가 많아짐에 따라 용량이 커질 수 있다.
  3. 설계 시, 많은 시간과 노력이 필요하게 될 수 있다.

 

 

 

 

SOLID (객체 지향 설계 원칙)


  객체 지향적으로 설계하기 위해 SOLID라 불리는 다섯 가지 원칙이 있다.

 

  • S (Single responsibility principle, SRP) - 단일 책임 원칙
    : 한 클래스는 하나의 책임만 가져야 한다.

  • O (Open/Closed principle, OCP) - 개방/폐쇄 원칙
    : 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.

  • L (Liskov substitution principle, LSP) - 리스코프 치환 원칙
    : 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

  • I (Interface segregation principle, ISP) - 인터페이스분리 원칙
    : 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
     
  • D (Dependency inversion principle, DIP) - 의존관계 역전 원칙
    : 프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다.

'개발 일지 > Java' 카테고리의 다른 글

[Java] 객체(Object)  (0) 2022.12.27
[Java] 클래스(Class)  (0) 2022.12.27
[Java] 배열(array)  (0) 2022.12.26
[Java] 반복문(Repetitive Statement)  (0) 2022.12.23
[Java] 조건문(Conditional Statement)  (0) 2022.12.23