본문 바로가기

JAVA/OOP

절차지향

반응형

절차지향
소프트웨어를 구현하다는 것은 최종적으로 소프트웨어를 구성하는 데이터와 데이터를 조작하는 코드를 작성하는 것이다.
데이터를 조작하는 코드를 별도로 분리해서 함수나 프로시저와 같은 형태로 만들고, 각 프로시저들이 데이터를 조작하는 방식으로 코드를 작성할 수 있다.
프로시저는 다른 프로시저를 사용할 수도 있고, 각각의 프로시저가 같은데이터를 사용할수도 있다.
프로시저(procedure)로 프로그램을 구성하는 기법을 절차지향(Procedural Oriented)프로그래밍이라고 부른다.

각 프로시저는 데이터를 사용해서 기능을 구현하며, 필요에 따라 다른 프로시저를 사용하기도한다.
또한 여러 프로시저가 동일한 데이터를 공유한다.

예) 시험성적관리 프로그램

  • 평균계산 프로시저는 각 과목의 점수가 보관된 데이터를 읽어서 합을 구한뒤, 평균 값을 계산한다. 계산된 평균값은 다른 데이터로 생성된다.
  • 화면 출력 프로시저는 평균 계산 프로시저가 생성한 평균 값 데이터와 과목 점수 데이터를 이용해서 화면에 성적을 출력한다.

'평균계산프로시저'와 '화면출력프로시저'는 데이터를 공유해서 사용한다.
다수의 프로시저들이 데이터를 공유하는 방식으로 만들어지기 때문에, 절차 지향 프로그램은 자연스럽게 데이터를 중심으로 구현하게 된다.
데이터와 그 데이터를 사용하는 프로시저를 작성하는 것은 자연스러운 과정이기 때문에, 최초에 절차 지향적으로 코드를 구현하는 것은 쉽다. 하지만, 프로그램 규모가 커져서 데이터 종류가 증가하고 이를 사용하는 프로시저가 중가하게 되면 문제들이 발생하게 된다.

  • 데이터 타입이나 의미를 변경해야 할때, 함께 수정해야 하는 프로시저가 증가한다.
  • 같은 데이터를 프로시저들이 서로 다른 의미로 사용하는 경우가 발생한다.

한 데이터를 사용하는 프로시저가 많아 질수록 그 데이터의 타입을 변경하기 어려워진다.

예) 전자 장비의 꺼짐/켜짐 상태를 저장하기 위해 boolean 타입이고 이름이 isOn이라는 데이터를 사용한다고 하자

이 데이터를 사용하는 프로시저는 모두 isOn를 boolean타입으로 처리할 것이다.
그런데, 요구사항이 변경되면서 꺼짐/켜짐 상태뿐만 아니라 대기 상태를 추가해야 한다고 하면, 이 요구사항을 반영하기 위해 isOn 데이터의 타입을 boolean타입에 열거 타입으로 변경하게 되면, 이 데이터를 사용하는 모든 프로시저도 함게 수정해 주어야 한다.

더 안좋은 경우는 프로그램 규모가 커질수록 같은 데이터를 서로 다른 의미로 사용하는경우가 발생할 가능성이 높다.
최초에 서비스 만료일 데이터가 null인 경우 오류로 처리하도록 만료확인 프로시저를 만들었는데, 회원정보 수정 프로시저에서 서비스를 무한정 사용한다는 의미로 서비스 만료일 데이터 값을 null로 설정할 수가 있다.
이 경우, 만료확인 프로시저는 잘못 들어간 null 값 때문에 얘기치 않은 오류를 발생하게 될 것이다.

절차 지향적으로 프로그램을 구성할때 새로운 요구사항이 생겨서 프로그램의 한 곳을 수정하게 되면, 다른 곳에서 문제가 발생하고, 다시 그곳을 수정하면 또 다른 곳에 문제가 발생하는 악순환이 발생하기도 한다.
코드의 수정을 어렵게 만들며, 새로운 기능을 추가하는데 많은 구현시간, 개발비용을 투입하게 만든다.

출처-객체지향과 디자인패턴 저자-최범균

반응형

'JAVA > OOP' 카테고리의 다른 글

단일책임원칙  (0) 2018.11.06
객체지향  (0) 2018.10.16
컴포넌트  (0) 2018.04.21
다형성  (0) 2018.04.20
인터페이스  (0) 2018.04.20