본문 바로가기

길게 쓰기/객체지향의 탄생 (공식)

객체지향 생각의 도구1-한두깨 객체지향 프로그래밍 미리보기

한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기


책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다.


보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+


 

2) 절차지향 언어의 사상과 단점

객체지향 이전의 언어는 주로 절차지향 언어였다. 그렇다면 객체지향 언어는 절자치향 언어의 단점을 개선하여, 더 나은 장점을 보여주기 위해 치열하게 고민한 사상이 언어 속에 담겨 있을 것이다. 그래서 객체지향의 사상과 장점을 설명하기 전에 배경 지식으로 절차지향 언어의 사상과 단점을 소개한다.

절차지향 언어는 처리-판단-반복(변수선언, if, for)의 기초 문법, 함수등의 명령어를 활용하여 위에서 아래로 절차적으로 수행하는 언어이다. 또한 함수를 이용하여 로직의 모듈화를 할수 있다. 함수를 통해 goto문의 남발이나 코드 중복을 막을 수 있다.

절차지향 언어는 구현하고 싶은 어떤 기능을 함수로 만든다. 이 함수를 프로그램 어느 위치에서든 호출하여 같은 기능을 재사용할 수 있다. 그래서 기능들을 복사/붙여넣기 하지 않아도 다른 장소에서 다시 사용할 수 있다. 이렇게 함수를 통해 기능들을 모듈화 할 수 있다.

여기서 알 수 있는 절차지향 언어의 사상, 절차지향 언어가 어셈블리어 같은 기존 언어보다 더 나은 장점을 보여주기 위해 그 언어가 치열하게 고민한 구체적인 사고나 생각은, 어떤 기능을 함수로 모듈화 하고 이를 재사용하는 것이다. 그러나 이 함수를 통한 모듈화는 단점이 있다. 절차지향에서는 소프트웨어가 커지면 전역 변수(프로그램내에서 모든 함수가 조작할 수 있는 변수)를 여러 함수에서 같이 조작할 수 있다. 그래서 하나의 함수를 수정하면 다른 함수에도 나쁜 영향(사이드 이팩트)을 끼치는 단점이 있다.

함수의 역할은 객체지향의 클래스보다 역할이 한정될 수밖에 없다. 함수는 절차지향 언어에서 객체지향의 클래스처럼 더 많은 것을 담을 수 있는 최상위 개념은 아니다. 함수는 iffor문 등처럼 명령어의 한 요소처럼 쓰인다. 그래서 절자치향은 소프트웨어가 커지고 복잡해질수록, 효과적인 모듈화, 재사용성에 한계가 있다.


 Yes24: http://bitly.kr/DAg9t
 알라딘: http://bitly.kr/aSMu2
 교보문고: http://bitly.kr/utfU7
 인터파크: http://bitly.kr/ffJjy