기능 중심적인 소프트웨어 설계 방식의 문제점
────────────────────────────────────
여러 언어로 프로그램을 개발할 때 처리방법은 크게 세가지 패턴으로 나눌 수 있습니다.

1. 순차 처리 : 시간 흐름 순서대로 처리 내용을 기술하는 방식
2. 조건 처리 : 특정 조건에 따라 서로 다른 처리를 하는 방식
3. 재귀 처리 : 동일한 처리를 반복해서 실행하는 방식

프로그램 개발시 이런 기본 패턴을 조합하여 사용하는 언어를 절차형 언어 혹은 절차지향적 언어라고 합니다.
프로그래밍 언어를 분류할 때 절차형이 아닌 언어로는 관계형, 논리형 언어 등이 있습니다.
하지만 현재까지 수많은 프로그램이 절차지향적 언어로 개발되었거나 지금도 개발되고 있습니다.

특정 업무를 프로세스와 함수로 분해하면서 데이터 형식을 정의하는 것이 절차지향적 언어의 시스템 설계방식입니다.
하지만 일반적으로 소프트웨어에 대한 요구사항은 수시로 추가, 확장, 변경이 필요합니다.
이럴경우 절차형 언어로 개발한 프로그램인 경우 상당한 내용을 수정해야 합니다.
절차형 언어에서는 기능이 곧 프로그램 자체이기 때문에 기능 변경이 곧 프로그램 변경으로 직결되기 때문이죠.
(이로 인해 유지 보수 비용이 높아질 수 밖에 없습니다.)


객체 개념을 적용한 모델링 방식
────────────────────────
앞서 설명한 이유로 1980년대 후반부터 주목받기 시작한 것이 객체지향 개념입니다.
넓은 의미로 생각해보자면 '객체'란 인간이 다른 것과 구분해서 인식할 수 있는 '어떤 대상'을 의미합니다.
예를 들어 메모장, 책상, 시계, 자동차 이런것들이 객체가 될 수 있습니다.
심지어 청구서, 도서관, 시청 같은 것도 객체로 볼 수 있습니다.

객체는 그 내부에 속성(attribute)을 가지고, 외부로부터 메시지(message)를 받아 처리할 수 있습니다.
- 속성(attribute) : 그 객체가 가지고 있는 의미있는 정보
- 메시지(message) : 객체간의 정보 교환

즉 어떤 정보를 전달하거나, 거꾸로 정보를 얻거나 혹은 특정 처리를 요청하기 위해 사용합니다.


메시지를 사용한 상호작용 방식
────────────────────────
메시지는 객체 간의 상호작용을 가능하게 하는 유일한 방법입니다.
객체가 메시지를 받으면 그 메시지 내용에 해당하는 처리를 하고, 그 처리 결과를 리턴합니다.
메시지를 처리하는 구체적인 방법은 객체 자체가 내부에 숨기고 있는데,
그 처리방식에 대한 외부적인 표현이 메소드(method)입니다.
메시지는 인수를 통해 객체나 값을 전달받을 수 있고, 메시지 처리 결과를 객체나 값의 형태로 리턴할 수 있습니다.
메시지를 보내는 객체를 센더(sender)라고 하고, 메시지를 받는 객체를 리시버(receiver)라고 합니다.
객체는 서로 메시지를 주고받는 협력 관계에 있고, 이들이 어우러져 하나의 시스템으로 동작합니다.
이것이 바로 객체 개념을 적용한 시스템의 구현 모델입니다.

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST