본문 바로가기

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

책 관련 유익한 사이트, 재미있는 비하인드 스토리 소개 (한번 읽으면 두번 깨닫는 객체지향 프로그래밍) 안녕하세요.~ 책을 쓰면서 체계적으로 하나의 주제를 가지고 예제 코드를 작성하려고 했습니다. 제가 작성한 코드는 2차 세계대전 비행기 게임이란 컨셉입니다. 이 코드는 github에 올렸습니다. 최근 일터에서 git을 처음 써봤는데 SVN하고는 많이 달라서 놀랬고 기능이 생각보다 훨씬 파워넘치고 유익해서 놀랐습니다. 일터에서 git을 안 덕분에 public 계정으로 책의 예제 코드를 올릴 수 있었습니다. 또한 책과 관련된 비하인드 스토리도 소개합니다. 저자와 출판사 기획자 부장님의 비하인드 스토리가 흥미진진 한것 같아 같이 공유합니다. 재밌게 읽어주세요.~ 책의 예제 코드와 책 관련 유익한 정보는 여기서, https://github.com/mckdh/OT_OOP_Book 이 책의 배경에는 형의권이라는 무술.. 더보기
'한번 읽으면 두번 깨닫는 객체지향' 책이 정식으로 출간 되었습니다.~ 제 책 '한번 읽으면 두번 깨닫는 객체지향' 책이 정식으로 출간 되었습니다.~작년 4월말 계약되서 2월 중하순에 출간되니 10개월이 걸린것 같습니다. 소감을 한단어로 표현하자면 '고통' 입니다. 어떤 종류의 고통이냐면 아마도 마라토너의 길고 긴 지루한 고통과 비슷하지 않을까 싶습니다.일단 제 책의 설명을 공식 책 소개와 추천사로 대신합니다. 추천사를 두분께 부탁드렸는데, 제 책을 읽고 괜찮으면 추천사 써주시라고 했는데 다행이 흔쾌히 써주셨습니다. * 책 소개 프로그래머라면 피해갈 수 없는 ‘객체지향’의 개념과 원리 기초부터 활용까지 객체지향을 넓고 깊게 바라보는 새로운 솔루션IT 분야에 종사한다면 누구나 들어보았을 객체지향 프로그래밍. C#과 JAVA로부터 KOTLIN과 마이크로서비스에 이르기까지 객체지.. 더보기
객체지향 생각의 도구6-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다. 보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 7) 패턴인식객체지향의 관계의 의존성은 낮추고, 기능의 집중도는 높이는 구체적인 방법은 수많은 개발 경험을 통해 지속적으로 개선되었다. 특히, 객체지향은 객체 하나하나를 잘 설계하는 것을 넘어 이 객체간의 관계를 잘 연결 짓는 기술이 필요 했다. 그래서 객체와 객체를 잘 연결 짓는 기법이 발달하게 되었다. 예를 들어 상속도 객체와 객체를 연결 짓는 기법이다. 그러나 모든 상황을 상속으로 해결하기에는 상속의 단점도 존재 한다. 그래서 객체간의 관계를 다양하게 연결하는 기법이 발달하게 되었다. 그리고 이 객체와 객체를 잘 .. 더보기
객체지향 생각의 도구5-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다. 보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 6) 추상화우리는 앞의 객체지향 사고의 과정 2단계에서 ‘우리는 우리가 인식한 많은 데이터 중에 의미 있는 데이터만 가져오고 나머지는 버리고, 우리는 의미 있는 데이터들을 모아 더 큰 단위의 의미 있는 정보로 만들 수 있다.’고 했다. 이 사고력이 ‘추상화’라고 했다. ※ 우리는 인식한 많은 데이터 중에 의미 있는 데이터만 가져오고 나머지는 버린다. 추상화는 문제 해결에 필요한 부분만 취하고 불필요한 부분은 제거하여 대상을 간결하고 이해하기 쉽게 만드는 사고 과정이다. ‘나는 내가 관찰하고 생각한 것 중에서 가장 중요한.. 더보기
객체지향 생각의 도구4-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다. 보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 5) 관찰 : 사물이나 현상을 주의하여 자세히 살펴보는 것. 모든 지식은 관찰에서부터 시작된다. 우리는 세계를 정밀하게 관찰할 수 있어야 한다. 그래야만 행동의 패턴들을 구분해내고, 패턴들로부터 원리들을 추출해내고, 사물들이 가진 특징에서 유사성을 이끌어내고, 행위모형을 창출해낼수 있으며, 효과적으로 혁신할 수 있다. 관찰은 보이는 것을 표현하는게 아니라 어떤 것을 보이게 하는 것이다. 발견은 모든 사람들이 보는 것을 보고 아무도 생각하지 않는 것을 생각하는 것으로 이루어져 있다. 진정한 창조자는 가장 평범하고 비루한 .. 더보기
객체지향 생각의 도구3-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다. 보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 4) 관찰 → 추상화 → 패턴인식이제 관계의 의존성은 낮추고 기능의 집중도는 높인다는 객체지향의 장점을 살리려면 우리는 어떻게 접근해야 할지 알아본다. 예를 들어 2차 세계 대전 비행기 시뮬레이터를 객체지향 프로그래밍으로 구현하기로 했으면, 비행기를 어떻게 객체지향 프로그래밍으로 풀어 가는지 같이 살펴본다. ① 비행기란 사물을 살펴보자. 우리는 사물을 보면 먼저 어떻게 생겼는지 관찰부터 한다. 비행기를 객체지향 프로그래밍으로 구현 하기 위해서, 우리는 비행기를 먼저 관찰한다. 비행기를 앞에 두고 관찰하면서 우리는 객체지.. 더보기
객체지향 생각의 도구2-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다. 보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 3) 객체지향 언어의 사상과 장점이렇게 절차지향 언어의 단점을 개선하고 더 나은 장점을 추구하는 객체지향 언어가 탄생했다. 1장에서 우리는 객체지향이 낮은 관계의 의존성과 높은 기능의 집중도를 통해 유연한 소프트웨어를 지향한다고 했다. 이것이 객체지향의 사상이고 장점이다. 여기서 좀더 객체지향이 어떻게 이런 사상과 장점을 지원하는지 배경을 좀 더 살펴보자.객체지향은 프로그램을 처리-판단-반복(변수선언, if, for문)-함수호출의 명령어들의 연결이라고 보는 과거 시각에서 벗어나 여러 개의 독립된 단위, 객체(사물)들의 .. 더보기
객체지향 생각의 도구1-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다. 보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 2) 절차지향 언어의 사상과 단점객체지향 이전의 언어는 주로 절차지향 언어였다. 그렇다면 객체지향 언어는 절자치향 언어의 단점을 개선하여, 더 나은 장점을 보여주기 위해 치열하게 고민한 사상이 언어 속에 담겨 있을 것이다. 그래서 객체지향의 사상과 장점을 설명하기 전에 배경 지식으로 절차지향 언어의 사상과 단점을 소개한다.절차지향 언어는 처리-판단-반복(변수선언, if, for문)의 기초 문법, 함수등의 명령어를 활용하여 위에서 아래로 절차적으로 수행하는 언어이다. 또한 함수를 이용하여 로직의 모듈화를 할수 있다. 함수.. 더보기
객체지향 생각의 도구-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다. 보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 1.1 정의와 목표의 전환5) 객체지향의 정의와 목표.. 생략 .. 1.2 고정관념의 전환.. 생략 .. 2. 객체지향을 돕는 도구이 장은 기술적인 내용보다는 인간 사고의 종류인 관찰, 추상화, 패턴 인식 등을 다룬다. 이 사고들은 객체지향 등의 개발 방법론에서 쓰인다. 개발 방법론은 자신의 장점을 극대화하기 위해 지향하는 고유 특징(=사상)이 있다. 이런 사상에는 관찰, 추상화, 패턴 인식 같은 사고력이 쓰인다. 2장에서는 이 사고력들이 객체지향 설계, 개발에서 어떻게 쓰이는지 이야기한다.기계어, 어셈블리어, 절차지향.. 더보기
정의와 목표의 전환3-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다. 보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 4) 관계의 의존성은 낮게 기능의 집중도는 높게여기까지 읽었다면 이렇게 생각할 수 있겠다. 기능 구현에만 집착하면 유연성이 훼손 될 수도 있고, 유연성이 어떤 건지도 대략 알겠다. 그렇다면 유연한 소프트웨어를 개발하려면 구체적으로 어떻게 해야 할까? 다행히 좋은 소프트웨어를 만드는 기준이 되는 원칙을 간결하게 한 문장, 두 가지 권고사항으로 정리할 수 있다. ‘관계의 의존성은 낮게, 기능의 집중도는 높게’ 이것은 ‘응집도는 높게, 결합도는 낮게’와 같은 뜻이다.’ 정보처리 기사 이론을 공부할 때, 유독 객체지향이란 단어.. 더보기
정의와 목표의 전환2-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다. 보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 3) 유연한 소프트웨어란 코드 품질 향상이다. (1) 유연한 소프트웨어는 코드 품질이 좋다는 의미소프트웨어를 개발할 때, 우리는 먼저 고객이 원하는 기능을 정확히 구현해야 한다. 그리고 여기에 하나 더 추가해야 한다. 바로 ‘유연한 소프트웨어 개발’이다. 우리는 고객이 원하는 기능을 정확하고 유연하게 구현해야 한다. ※ 고객이 원하는 좋은 소프트웨어 = 고객이 원하는 기능의 정확한 구현 + 유연한 구성 당장 기능 구현도 어려운데, 이런 유연한 가치까지 신경 써서 개발하라니, 더 어렵게 느껴질 것이다. 그러나 유연한 소프.. 더보기
정의와 목표의 전환-한두깨 객체지향 프로그래밍 미리보기 한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기 책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다.보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+ 1. 1장 발상의 전환 시작은 ‘발상의 전환’이다. 현장에서 우리는 주로 객체지향 언어를 사용한다. 서버는 역시 객체지향 언어인 JAVA를 주로 사용한다. 안드로이드도 JAVA를 쓰거나, 안드로이드 최신 언어 Kotlin은 함수형 프로그래밍과 객체지향을 함께 쓴다. 아이폰 개발은 Objective-C를 사용한다. 아이폰 최신 언어인 Swift도 함수형 프로그래밍과 함께 객체지향이 바탕이다. 한 마디로 여전히 객체지향이 주류다. 그런데 주변 개발자를 보면, 객체지향의 정의가 무엇인지, 어떤 목표를 지향하는지 잘 모르는 경우.. 더보기
책이 곧 나옵니다. (한번 읽으면 두번 깨닫는 객체지향 프로그래밍) * 올해 4월에 객체지향 주제로 출판 계약이 되고 시간이 흘렀습니다. 출판사는 많은 돈을 투자하고, 독자들은 많은 돈을 들여 구입해야하는 책이니 만큼, 출판사의 요구사항이 높았습니다. 그래서 지금 원고와 옛날 원고와 비교하면 99%가 바꼈습니다. ㅎㅎ (바로 전에 올린 내용도 교정되고 다시 쓰면서 개선되었습니다.) 바꼈다는 표현보다는 개선했다는 표현이 맞을것 같습니다. 책은 1월말에 출고 될것 같습니다. 그 전후에 블로그에 객체지향 관련 유용한 정보를 올리겠습니다. 아래는 최근 페이스북을 통해 책 소개와 표지 투표내용을 공유 하니 그냥 재미로 봐주세요. 책 표지는 거의 1번으로 되었습니다. * 출판사 소개글이 책도 사연이 많다. 함께 운동하는 형님 중에 14년차 경력의 현직 프로그래머로 활동하는 분이 계.. 더보기
기능 구현 중심 개발의 심각한 문제 기능 구현 중심 개발의 문제-2에 이어서.. 기능 구현에 집착하다보면 다른 소프트웨어의 중요한 가치를 놓치게 된다. 는 일부 틀린 말이다. 중요한 가치를 놓치는 것이 아니고 더 나아가 해를 입힌다. 우리는 고객의 기능을 성실히 구현하여 소프트웨어의 완성에 노력했는데 이 노력이 소프트웨어의 다른 뭔가를 훼손한다고요? 소프트웨어를 만들 때 지향해야할 큰 가치는 유연한 소프트웨어다. 소프트웨어가 유연하다는 것은 소프트웨어가 재사용하기 쉽고, 수정하기 쉽고, 확장하기 쉽고, 버그잡기 쉽고 가독성이 좋아 유지보수와 추가 개발하기 편하다는 의미이다. 우리는 고객이 원하는 기능을 개발 하면서 이런 가치를 함께 추구해야 한다. 우리는 당장의 기능 구현도 어려운데, 이런 가치까지 같이 신경써서 개발하라니 더 어렵게 느껴.. 더보기
기능 구현 중심 개발의 문제-2 기능 구현 중심 개발의 문제-1에 이어서.. ‘다른 요소의 무시’, 여러 가지를 같이 관리해야 하는데 한가지만 치우치면 다른 요소가 무시당하는 부작용이 발생한다. 예를 들면 우리나라는 70~90년대 경제 발전 중심으로 치우쳐 발전했다. 덕분에 경제는 발전했으나, 민주주의, 복지, 빈부격차, 문화, 인권은 더 안좋게 퇴보하기도 하는 등 부작용이 발생했다. ‘낙수효과’란 용어가 있다. ‘고소득층의 소득 증대가 소비 및 투자 확대로 이어져 궁극적으로 저소득층의 소득도 증가하게 되는 효과’를 가르킨다. 그래서 고소득층, 대기업을 육성하듯이 경제, 복지, 정치, 문화, 인권 중에 경제를 우선으로 역량을 쏟아부으면 다른 분야도 낙수효과로 저절로 좋아질까. 좋아지는 분야도 있지만, 처음부터 같이 관심을 가져야 하는 .. 더보기
기능 구현 중심 개발의 문제-1 개발자 대부분 기능 구현 중심인 이유에 이어서.. 우리중 일부는 여기까지 읽고 의문이 들 것 같다. 고객이 요구한 기능 구현에 집중하는 것이 뭐가 문제지, 당연히 가장 우선적으로 신경써야 할 것 아닌가? 고객이 원하는 기능을 누락 왜곡 없이, 빠른시간내 구현하는 것은 당연하다. 객체지향적으로 개발해도 이것은 기본적으로 지켜야할 의무/임무 이다. 문제는 좋은 소프트웨어를 만들기 위해 관심을 갖고 의식해서 신경써야 할 덕목이 있다. 우리는 보통 이런 부분을 무시하면서 기능 구현만 집착한다. ‘매몰’, 개발자가 기능 구현만 집착할 경우 발생되는 부작용은 매몰현상이다. 한가지만 뚫어지게 신경쓰다 보니, 다른 중요한 것들을 보지 못하는 상황이다. 예를 들어 공군의 비행기, 전투기나 정찰기중에 두명의 조종사가 타도.. 더보기
개발자 대부분 기능 구현 중심인 이유 초보였던 나와 내가 알던 많은 개발자들, 더 나아가 고객도 객체지향으로 얻는 효과에 대해 크게알지 못하고 관심도 없었다. 이들의 관심분야는 하나로 모아졌다. 소프트웨어의 온전한 ‘기능’ 구현, ‘기능’ 구현이란 고객의 요구사항을 소프트웨어로 고스란히 구현하는 것이다. 기능 구현은 개발자의 당연한 임무이다. 사실은 기능 구현외에 더 중요한 것이 있고 같이 챙겨야 할 것이 있다. 그러나 많은 개발자들은 오직 기능 구현 관점만 신경 쓴다. 개발자들은 주어진 요구사항을 어떻하든 구현하여 돌아가게만 하자~! 이것이 가장 큰 관심사이다. 나는 신입이었을 때 실력 있는 개발자로 빨리 인정받고 싶었다. 문제가 주어지면 문제를 빠르고 버그 없이 구현하고 싶었다. 예를 들어 게시판에 답글 달기, 페이징 기능을 구현하라는 .. 더보기
관계형 데이터베이스 모델링/튜닝과 객체지향 이 글은 뭔가 해답을 구하고 설명하기 보다는 제 스스로 의문을 갖고 답을 찾아보기 위해 메모장에 끄적이듯 적습니다.객체지향은 프로그래밍을 잘 짜게 해주는 방법론, 기법 입니다. 코드를 유연하게 만들어 주기 때문이지요. 유연하다는 말은 수정하기 쉽고 확장하기 쉽고 재 사용하기 쉽다는 뜻을 가지고 있습니다.관계형 데이터베이스 모델링/튜닝(줄여서 RDB)는 관계형 데이터베이스 모델링을 잘 설계하고 SQL을 효율적으로 튜닝하는 방법론, 기법이라고 정리하겠습니다. 이 뜻 역시 모델을 유연하게, 수정하기 쉽고 확장하기 쉽고 이해하기 쉽게 해줄 것입니다. SQL 튜닝은 여기에다가 속도가 더 중요한 요소 입니다.관계형 모델보다 객체지향이 나중에 나왔습니다. 지금 객체지향은 자바, C#등의 프로그래밍 언어로 소프트웨어를.. 더보기
객체지향의 탄생 출판 계약 안녕하세요. 오랜만에 글을 씁니다. 저는 블로그를 항상 염두하고 있습니다. 예를 들면 제 카톡의 멘트에 꼭 mckdh.net 을 적어 놓았습니다. 그래도 글을 많이 쓰진 못했습니다. 이유는 제가 여러가지 공부등의 개인 프로젝트를 벌려 놓았기 때문이에요.제가 여러가지 벌린일 중에 하나가 몇달 전에 성사되었습니다. 제 블로그를 아시는 분이라면, 제가 객체지향의 탄생이란 원고로 책을 내고 싶어 했다는 것을 아실거에요. 드디어~ 이 원고가 정식으로 출판 계약을 맺었습니다. 차질이 없으면 올해 말 정도에 출간될 것 같습니다. 정식으로 출판 계약 맺기까지 우여곡절이 있었습니다. 담당 출판사 부장님은 꼼꼼하신 분입니다. 처음에 출판사 부장님께 샘플원고를 드렸어요. 부장님은 고칠 부분을 다시 회신해 주었습니다. 이 과.. 더보기