객체 지향 프로그래밍(OOP)이란?

bp.chys·2020년 3월 19일
4

OOP & Design Pattern

목록 보기
1/17
post-thumbnail

소프트웨어의 세 가지 기능

  1. 실행 중에 제대로 동작한다.
  2. 간단한 작업만으로도 변경이 용이해야한다.
  3. 코드는 쉽게 읽고 이해할 수 있어야 한다.

개발 비용은 점점 증가한다.

  • 릴리즈가 늘어날 때마다 한 줄을 만드는데 드는 비용이 증가한다.

소프트웨어의 가치 : 변화 대응

  • 변하지 않는 것은 오직 변한다는 사실이다.
  • 변화 대응하는 비용을 낮추고, 빠르게 대응하는 것이 필요하다.

객체 지향은 개발 비용을 낮춰줄 수 있다.

객체

절차 지향

  • 데이터와 프로시저를 별도의 모듈에 위치시킨다.
  • 직관적으로 데이터의 흐름을 파악할 수 있다.
  • 중간에 데이터 갯수나 타입이 변경되면 전체 흐름에서 변경이 일어나야 한다.
  • 절차지향은 요구사항이 변경되었을때, 대응하는 비용이 크다. (시간)

객체지향

  • 데이터와 프로시저를 객체에 모은다.
  • 객체에 포함된 데이터는 해당 객체의 프로시저만 변경할 수 있다.
  • 서로 다른 객체는 데이터를 변경할 수 없어야 한다.
  • 객체 내부 변화를 예측하기 쉬우므로 변화에 따른 개발 비용이 적게 든다.

훌륭한 객체지향의 핵심은 캡슐화를 이용해 의존성을 적절히 관리함으로써 객체 사이의 결합도를 낮추는 것이다. 이를 통해 소프트웨어를 구성하는 모든 객체들이 자율적으로 행동하는 설계를 목표로 한다.

객체란?

  • 객체의 핵심은 기능 제공하는 것이다.
    • 객체는 제공하는 기능으로 객체를 정의한다. (행위, 책임 중심)
    • 객체가 가지고 있는 데이터와는 무관하다.

기능 명세 : 인터페이스

  • 객체가 제공하는 기능의 명세
  • 메서드 이름, 전달 파라미터, 반환 타입
  • 클래스가 구현
  • 클래스를 실제 메모리에 올린 것이 바로 인스턴스이다.

메시지

  • 메시지 전달은 객체에게 기능 실행을 요청하는 것이다.
  • 일반적인 언어에서 메서드 호출로 구현

객체 지향 프로그래밍 특징

  • 캡슐화
  • 상속
  • 추상화
  • 다형성

결론

소프트웨어는 시간이 지날 수록 기능이 추가되고 코드가 복잡해지면서, 개발 비용은 증가하게 된다.
만약 절차 지향으로 프로그래밍한다면 늘어나는 비용을 감당하지 못하게 된다. 그러나 변경에 유연한 설계를 지향하는 객체 지향 패러다임을 적용한다면, 늘어나는 비용을 효과적으로 감당할 수 있게 된다.

객체 지향 패러다임의 특징은 캡슐화, 상속, 추상화, 다형성이 있고, 궁극적인 목적은 이러한 특징을 잘 활용하여 의존성을 관리하고 객체 사이의 결합도를 낮춰 모든 객체들이 자율적으로 행동하고 협력하는 소프트웨어를 구축하는 것이다.


참고자료

  • NHN 기술세미나, 객체지향 입문 - 최범균
  • 오브젝트 - 조영호
profile
하루에 한걸음씩, 꾸준히

0개의 댓글