[개발자_객체지향_디자인패턴] 절차지향과 객체 지향

박상준·2024년 8월 10일
0

절차 지향 프로그래밍

정의

  • 소프트웨어를 구현할 때 데이터와 데이터를 조작하는 코드를 작성하는 방식이다
  • 흔히 프로시저(procedure) 로 프로그램을 구성하는 기법을 절차 지향 프로그래밍 이라고 한다.

  • 그림과 같이 프로시저는 여러 데이터를 공유한다.
  • 또한 프로시저들끼리는 서로를 사용할 수 있다.

장점

  • 코드를 자연스럽게 구현할 수 있다

단점

  • 프로그램의 규모가 커지게 되면, 데이터의 종류가 많아지고, 이를 사용하는 프로시저가 증가하면서 문제가 발생하게 된다.

어떤 문제가 발생하느냐

  1. 데이터 타입이나 의미 변경시, 함께 수정해야 하는 프로시저가 증가된다.
  2. 같은 데이터를 프로시저들이 서로 다른 의미로 사용하는 경우가 있다.

EX

  • boolean 타입의 isOn 데이터를 사용해 전자 장비의 꺼짐/ 켜짐 상태를 저장하는 경우
  • isOn 데이터 타입을 boolean 에서 열거 타입으로 변경 시 발생하는 문제
  • 해당 데이터를 사용하는 모든 프로시저의 isOn 의 타입도 수정해야함

  • 최초 서비스 만료일이 null 인 경우 오류로 처리하도록 만료 확인 프로시저를 만듬.
  • 하지만
    • 회원 정보 수정시, 서비스 만료일이 null → 무한정으로 설정하는 등의 다른 의미로 설정한다면
    • 만료 확인 프로시저는 잘못들어가게된 null 때문에 오류발생함.

객체 지향 프로그래밍

  • 데이터 및 데이터 관련 프로시저를 객체라고 부르는 단위로 묶는다.
  • 프로시저를 실행할때 필요한 만큼의 데이터를 가짐.

  • 위 그림과 같이 객체들간의 네트워크로 구성된다.

객체 특성

  • 각 객체는 자신만의 데이터와 프로시저를 가진다.
  • 객체는 자신의 기능을 제공, 다른 객체의 기능을 사용할 수 있다.
  • 프로시저는 자신이 속한 객체의 데이터만 접근이 가능하다

절차 지향과는 뭐가 다른가?

  1. 객체 지향은 데이터와 프로시저를 객체별로 정의한다
  2. 작은 규모의 프로그램에서 절차지향보단는 객체지향이 좀 더 복잡한 구조를 띌 수 있다.

객체 지향의 장점

  • 데이터를 변경하는 경우 해당 객체에만 영향을 미치며, 다른 객체에는 영향을 주지 않는다.
  • 요구사항 변화에 대응해서 프로그램을 더 쉽게 변경할 수 있다는 장점이 있다.

장기적 관점

  • 절차 지향은 시간이 지나면서 유지보수 하기 어려워짐
  • 객체 지향은 초기 설계에 시간이 조금 더 드는 편임. 장기적으로는 유지보수성이 증대
  • 변화하는 요구사항을 빠르게 반영가능
    • 이는 캡슐화 라는 객체지향의 장점이 한 몫한다.
profile
이전 블로그 : https://oth3410.tistory.com/

0개의 댓글