본문 바로가기

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

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

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


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


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


1.1 정의와 목표의 전환

5) 객체지향의 정의와 목표

.. 생략 ..


1.2 고정관념의 전환

.. 생략 ..


2. 객체지향을 돕는 도구

이 장은 기술적인 내용보다는 인간 사고의 종류인 관찰추상화패턴 인식 등을 다룬다이 사고들은 객체지향 등의 개발 방법론에서 쓰인다개발 방법론은 자신의 장점을 극대화하기 위해 지향하는 고유 특징(=사상)이 있다이런 사상에는 관찰추상화패턴 인식 같은 사고력이 쓰인다. 2장에서는 이 사고력들이 객체지향 설계개발에서 어떻게 쓰이는지 이야기한다.

기계어어셈블리어절차지향 언어인 C언어는 문제를 주로 수학적으로논리적으로 분석한다객체지향은 여기에 더해서우리가 사는 세상의 사물을 관찰하고추상화하고패턴인식 하는 사고력을 바탕으로소프트웨어 세계로 구현한다그래서 인간이 사물을 바라보고 해석하는 데 쓰였던 관찰추상화패턴인식 등 생각의 도구를 객체지향에 도입할 필요가 있다여기 등장하는 생각의 도구는우리가 나중에 아키텍트/설계자가 되고 싶을 때도 도움을 준다예를 들어여기 나오는 사고의 종류 중 추상화는 나중에 DB 모델링 할 때도 도움이 된다마지막으로객체지향 표현의 도구 UML에서 객체지향 개발에서 UML을 통한 의사소통 방법을 이야기한다.

 

1. 객체지향 생각의 도구(관찰, 추상화, 패턴인식)

1) 그 언어의 사상을 배우고 따른다는 것

우리가 프로그래밍 언어를 배울 때 배워야 할 것은 분류하기 나름인데아래처럼 크게 2가지로 나눌 수 있다.

 

개발 언어의 문법을 배우고 따른다.

개발 언어의 사상을 배우고 따른다.

 

만약 JAVA언어를 쓴다면먼저 처리-판단-반복(변수선언, if, for)의 기초 문법을 배우고프로그램을 컴파일하고 실행하는 사용법을 알아야 한다더 나아가 실무에 쓰일 소프트웨어를 개발하기 위해 JAVA 언어가 지향하는 사상을 이해하면서 작성(개발)할 줄 알아야 한다.

여기서 문법은 직관적으로 이해가 될 것인데 사상이란 단어의 뜻은 이해하기 어렵다사상의 사전적인 뜻은 어떠한 사물에 대하여 가지고 있는 구체적인 사고나 생각이다이 정의를 프로그래밍 언어에 대입해 본다.

프로그래밍 언어가 새롭게 탄생되었으면기존 다른 언어의 단점을 개선하여 더 나은 장점을 보여주려 할 것이다더 나은 장점을 보여주기 위해 언어가 치열하게 고민한 구체적인 사고나 생각이 언어 속에 담겨 있다그래서 우리가 언어의 사상을 배우고 따른다면언어의 장점을 거의 100% 활용할 수 있다여기서 한 가지 정리할 수 있다위의 마지막 문장을 통해언어의 사상을 배우고 따른다는 것은 언어의 장점을 배우고 따른다는 것과 거의 같다고 이해해도 좋다그래서 나는 그 언어의 사상과 장점을 동일한 표현으로 설명 한다예를 들어 영어를 배울 때기본 문법을 아는 것으로 영어를 잘한다고 할 수 없다영어의 역사적문화적 배경을 알아야 원어민을 더 이해하고 의사소통을 잘 할 수 있다예를 들어 영어는 영시(poem)에서 영향을 많이 받았다고 한다영시의 운율성 때문에 영어에서는 유독 강세가 발달했다고 한다만약 우리가 이런 문화적 사실을 몰랐다면영어는 왜 유독 강세가 발달했는지 모를 것이다그러나 영어의 이런 역사적문화적 기원을 알 수 있다면우리는 영어의 강세를 더 익히려고 노력 할 것이다그래서 영어의 강세를 통해 내 뜻을 명확하게 전달하는 영어의 장점을 더 살릴 수 있다마찬가지로 프로그래밍 언어 또한 언어 밑바탕에 깔린 사상을 알아야언어를 통해 내가 하고 싶은 것을 더 수월하게 진행할 수 있다.