본문 바로가기

디자인패턴

객체지향의 탄생-상속과 폴리모피즘 상속과 폴리모피즘 상속에 대하여 생각해보면, 부모의 재산을 물려 받는 것도 상속이고, 스승으로부터 기술을 전수 받는 것도 일종의 상속이다. 한창 프로그래밍에 관심이 많을 때 나는 부모의 재산을 물려받은 재벌2세보다 훌륭한 맨토를 만나 소중한 기술과 삶의 지혜를 배우길 더 바랬다. 부모의 재산을 물려받은 재벌2세는 부모가 낚은 고기를 그대로 물려준것에 불과하다. 맨토의 지식을 물려받은 제자는 고기를 잘 낚는 법을 배우는 것이다. 고기를 잘 낚는 법을 배운 제자가 더 자부심이 클 것이기 때문에 나는 훌륭한 맨토를 만나기를 더 바랐다. 지금도 나는 훌륭한 맨토를 만나고 싶은 열망이 많지만, 사실 나이가 들고 사회생활을 하다보니 역시 부모 재산의 혜택을 입은 부자2세들이 더 부럽기도 하다. 이렇게 변한 나를 볼.. 더보기
객체지향의 탄생-캡슐화와 정보은닉 얼마전 이사간 우리집 내방은 창문이 훤히 뚫렸다. 창문 밖은 시원한 바람이 불었다. 창문 바깥에는 높은 건물도 없어 바깥 경치도 훤히 보였다. 나는 좋은집으로 이사왔다. 그러나 걱정도 되었다. 우리집이 2층인데다가 창문이 크고 넓어서 도둑이 마음만 먹으면 쉽게 칩입할수 있었다. 나는 고민하다가 결국 2층 넓은 창문을 방범창으로 막았다. 방범창으로 막았더니 내 집은 안전해지기는 했지만, 마치 감옥의 창살과 같은 느낌이라 보기 좋지는 않았다. 그래도 이 방법이 최선이었기 때문에 나는 곧 방범창에 익숙해졌다. 이번에 컴퓨터를 새로 마련했다. 기본 컴퓨터 사양에 업그레이드 옵션으로 구입하려고 했더니 돈이 들었다. 따로 램하고 하드디스크와 키보드를 구입하는 것이 돈을 더 아꼈다. 컴퓨터 본체가 오고 얼마뒤 램과 .. 더보기
객체지향의 탄생–오버로딩과 오버라이딩 군대를 다시 가고 싶어하는 사람은 없다. 그러나 군대 한번 갔다오면 그곳의 이야기 거리는 마치 당겨도 당겨도 묶인 손수건이 계속 나오는 마술 상자와 같다. 군대에서 나는 정비쪽 업무도 종종 보곤 했다. 처음 나는 조수였다. 고참이 능숙하게 장비를 고치면 옆에서 나는 라이트~ 를 비춰주거나 공구심부름을 하곤 하였다. 사실 공구심부름은 고역이었다. 1층 작업하는 곳에서 3층 사무실까지 갔다 와야 했다. 정비작업이 필요할땐 미리 필요한 공구를 예상하여 챙겨 내려갔다. 그래도 빠진 공구가 있어 가끔 3층 계단을 힘들게 올라갈때면, 막강한 만능공구 하나만 챙겨서 쓰면 얼마나 좋을까 하며 투덜거리곤 했다. 맥가이버 칼은 공구를 좋아하는 남자들의 작은 로망이다. 맥가이버 칼 하나로 갖가지 공구를 쓴다. 오버로딩은 맥.. 더보기
객체지향의 탄생-인터페이스 인터페이스는 산의 맑은 공기와 같다. 등산할때는 맑은 공기를 마실 수 있지만, 맑은 공기의 고마움은 쉽게 인식하지 못한다. 등산을 마치고 도시속에 찌든 공기를 마실때 기침을 콜록일 때야 고마움을 깨닫곤 한다. 인터페이스는 산의 맑은 공기처럼 늘 객체지향 개발자와 함께 하는 존재이며, 무의식중에 쓰는 존재이지만, 인터페이스의 유익함과 고마움을 쉽게 인식하지 못한다. 꼬마때 삼국지를 열심히 읽었다. 삼국지는 꼬마가 꿈꾸는 갖가지 상상력을 소설로 모두 담았다. 넓은 대륙, 영웅 호걸 장수들의 무협 소설 같은 활약, 천재 모사들의 머리 싸움, 영웅들의 사랑까지~ 담을 수 있는 '판타지' 는 모두 담은 소설이니 영웅들을 동경하며 열심히 읽었다. 나는 천재 모사들의 머리 싸움을 좋아했다. 제갈량이나 조조가 전장을 .. 더보기
객체지향의 탄생-객체지향 보물지도의 해석 꼬마때 동화나 만화, 고전 소설들을 읽다보면 보물이 꼭꼭 숨겨져 있다. 보물을 찾기 위한 험난한 스토리가 이어진다. 진부하면서도 손을 놓을 수 없는 스토리 전개에 푹 빠졌다. 어린 나이에 나도 보물을 찾아 어려운 집안에 도움을 줘야겠다는 상상도 했다. 그러나 지금 생각해보니 보물찾기 소설은 어쩌면 한탕주의를 부추기는 스토리이기도 하다. 중학교때는 무협소설, 무협영화에 빠져지냈다. 유명한 황비홍, 동방불패 시리즈를 보며 인간의 한계를 저렇게 뛰어넘을수도 있겠구나 싶었다. 무협에 대해 좀더 알고 싶어 여러 무협소설을 읽었다. 무협소설도 읽어보니 공통점이 있다. 하나의 무공비급을 얻기위해 각 인물이나 문파들이 기를쓰고 싸운다는 것이다. 무공비급들도 하나의 책에 불과할 것인데, 무공비급만 얻으면 천하무적이 되는.. 더보기
객체지향의탄생-생성자 노을이 질 때 나는 편안한 주황색 색감에 취해 잠시 몽롱해지곤한다. 몽롱함은 마치 소주에 취한 것처럼 달고 약간은 쓸쓸하다. 1,2년에 한번씩 동해바다 아침 노을을 볼 때 나는 진하게 취한 느낌이 든다. 어쩌다 한번 마시는 고급 양주를 마시는 느낌이다. 아침 노을은 어쩌다 한번 비싼 값을 치루고 보는 광경이라 고급 양주와 같다. 작은 동그란 노른자 태양이 서서히 뜰때면 나는 새로운 생명의 에너지를 받는 착각에 빠진다. 저녁에는 저 에너지 넘치는 태양이 흐릿하게 사라질것이다. 삶과 죽음은 순환한다. 돌아가신 외할머니의 구순 생신때 찍은 사진을 보았다. 외할머니와 외할머니의 증손주 다섯살 내 조카가 생일케익을 앞에두고 똑같이 촛불을 끄고 있었다. 나는 그 사진을 보며 생각 많고 감수성 풍부한 시인처럼 뭉클해.. 더보기
객체지향의 탄생-메소드 문득 CSI 요원들의 섬세한 관찰력과 증거로부터 단서를 추출하는 능력을 생각했다. 그들은 객체지향 전문가가 되더라도 훌륭한 설계자, 개발자가 되었을 것이 분명하다. CSI 요원이 발품팔고 깊이있게 관찰하여 얻은 소중한 증거물들은 범죄를 해결하기 위한 중요한 '속성'들이다. 그러나 속성만 확보만 해서는 수사의 아무런 진전이 없다. 증거물(속성)로부터 범죄와 관련된 데이터를 추출해야한다. 데이터를 추출하는 '방법'을 알아야 한다. CSI 에서는 요원들이 채취한 증거물을 분석하기 위한 다양한 첨단장비들이 등장한다. 지문 분석기, DNA 분석기, 범죄 현장을 3차원으로 재구성하여 시뮬레이션 하는 소프트웨어도 있다. 이 첨단장비들은 모두 채취한 증거를 분석하기 위한 '방법' 들이다. 어느 객체든 어느 일이든 그 .. 더보기
객체지향의탄생-속성 유독 주변을 잘 관찰하고 기억하는 친구들이 있다. 친구들은 한번 갔던 길이나 거리의 간판을 보고 바로 기억하여, 필요할때 편리하게 써먹곤 한다. 나는 친구들이 부러웠다. 나는 10번을 가보기전에는 갔던 길이나 거리의 간판을 봐도 기억하지 못했다. 친구들은 타고난 관찰자 들이다. 타고난 관찰자들을 책에서도 드라마에서도 보곤한다. 자전거 여행이란 수필 책을 읽으면 보이는 자연과 음식과 사람에 대해 어떻게 이렇게 새밀하게 관찰하고 묘사했는지 탄성을 지를때가 있다. 보리밭, 대나무숲에 대해 몇페이지에 걸쳐 관찰하고 묘사하기도 한다. 쑥된장국의 냄새를 "먹이 피라미드 밑바닥의 아린 냄새"라고 묘사하는 부분을 읽을때면, 이 책의 저자가 세상을 보는 관찰력과 통찰력이 경지에 이르렀구나 하며 감탄하곤 한다. 내가 즐겨.. 더보기
객체지향의 탄생-클래스 클래스(Class) 객체지향이라는 어려운 IT기술을 익히기도 전에 고유명사니 일반명사니 하는 반대편 국어 개념이 등장했다. 고유명사는 이해하기 쉽다. 고유명사가 이해하기 쉬운 이유는 직설적이고 직관적이기 때문이며 바로 눈 앞에 보이기 때문이다. 눈에 보이는 모든 사물이 고유 명사이다. 지금 내 앞에 있는 노트북, 모니터, 옆에 핸드폰, 쓰레기통까지 고유 명사이다. 말 그대로 세상에 유일한 존재를 고유명사라고 부른다. 일단 세상에 나왔다 하면 사람이든 물건이든 유일한 존재이기 때문에 세상에 존재하는 모든 것들은 고유명사 일 수 밖에 없다. 고유명사는 세상에 존재하는 사물이다. 일반명사는 사람이 만들어낸 개념이다. 일반명사는 사람이 만들어낸 개념 안에서만 존재한다. 만약 일반명사가 없다면 등산을 할 때 눈에.. 더보기
객체지향의 탄생-객체 객체지향의 기본 요소 객체지향에도 여러 요소들이 있다. 객체지향의 요소들은 마치 생물처럼 전체를 구성하고 있는 각 부분이 서로 가깝고도 깊게 관련을 맺고있다. 그래서 떼어내서 생각하지 말고 연관지어 생각하는 것이 좋다. 나는 객체지향의 각 요소를 자연의 숲과 나무에 비교하기로 했다. 우리는 객체지향 휴양림을 보고 있다. 객체지향 휴양림의 가장 큰 요소는 숲이다. 숲은 어플리케이션과 같다. 어플리케이션 숲안에는 다양한 나무들이 있다. 나무들은 숲을 이루는 가장 기본적인 요소이기 때문에 마치 객체와 같다. 자연이 성장하는데 가장 중요한 요소중 두어가지는 그 지역이 낮은 해충과 높은 영양을 갖춰야 하는 것이다. 객체지향 휴양림이 있는 지역은 다른 휴양림보다 낮은 해충과 높은 영양으로 유명한 땅이었다. 소프트웨.. 더보기
객체지향의 탄생-진입장벽 객체지향의 진입장벽 2003년의 겨울은 추웠다. 날씨가 추웠고 돈이 없어 추웠고 미래가 불안해서 추웠다. 나는 옛날부터 프로그래밍을 좋아했다. 다만 바로 취직하기에는 실력이 부족했다. 5개월을 이곳 노동부지원 IT학원에 투자했다. 만약 여기를 수료해도 취직이 되지않는다면 답이 없다. 내가 그해 겨울에 추웠던 것은 미래가 불안했기 때문이다. 몇천원 붕어빵 간식과 중국집 사장님 양해를 구해 짬뽕국물만 시켜 소주 마셨던 그때는 돈도 유독 없었다. 다만 지금은 따르지 못한 것을 하나 가지고 있었었다. 열정이다. 그때의 열정은 지금은 따라잡기 힘든 절박함이 뒷받침된 강력한 힘을 가졌다. 우리는 프로그래밍의 기초인 처리, 판단, 반복에 대해 배우고 있다. 처리는 일반적인 변수 대입등의 처리문, 판단은 if문에 따른.. 더보기
객체지향의 탄생-객체지향, 삽질을 줄이는 지혜 객체지향은 '세상의 사물을 관찰하여 사물의 본질을 속성과 메소드를 포함한 객체와, 객체간의 관계로 추상화 한다.' '그래서 응집도를 높게하고 결합도는 낮게 개발한다.' '그 결과 유연하고 확장하기 쉽고 유지보수가 편리하는 소프트웨어를 개발하는 방법' 이 객체지향 개발이고 객체지향 개발에 따른 효과이다. 더 나아가, '객체와 객체간의 관계에서 반복적으로 발견되는 좋은 원칙을 이끌어 내어 패턴으로 만들어낸 것' 은 다자인 패턴이다. 삽질은 프로젝트 할때의 삽질이다. 프로젝트 삽질의 최후는, 동작은 하나 안은 만신창이 누더기인 결과물이 탄생한다. 살아는 있으나 신체와 정신이 만신창이가 된 개발자가 생긴다. 그래도 치명적인 문제는 일단 숨겨져 있고 결과물은 돌아간다. 개발자는 고된 일터 탈출을 꿈꾸더라도 밥벌이.. 더보기
객체지향의 탄생-객체지향의 탄생 객체지향의 탄생 사람은 관찰한다. 눈으로 세상을 보고, 귀로 소리를 듣고, 코로 냄새를 맡고, 혀로 맛을 느낀다. 덕분에 사람은 세상을 있는 그대로 받아들이는 능력을 가졌다. 사람은 세상을 있는 그대로 받아들이진 않는다. 나에게는 아름답게 눈 덮힌 거리가 누군가에게는 귀찮은 노동거리로 보인다. 나에게는 감미로운 음악 소리가 누군가에게는 수면을 방해하는 소음으로 들린다. 나에게는 맛있는 고기 냄새가 누군가에게는 불쾌감을 준다. 나에게는 맛있는 불 닭발이 누군가에게는 매운 음식으로 인식된다. 사람이 보는 세상의 모든 것들은, 사람의 관찰 도구 '이목구비'를 통해 객관적으로 인식되었다가, 사람의 '생각'을 통해 주관적으로 덧씌워져서, 각자의 이미지로 재 탄생한다. 객관적인 관찰도구 이목구비가 사람의 사고를 거.. 더보기
객체지향의 탄생-생각의 탄생 기본 객체지향의 탄생 생각의 탄생 프로그래밍은 머리를 굴리는 작업이다. 머리를 굴린다는 것은 생각을 한다는 것이다. 생각을 잘하려면 사고력이 필요하다. 생각의 종류는 어떤 것들이 있을까, 생각을 잘하는 방법은 어떤 것들이 있을까. 나는 어렴풋이 궁금증을 갖기도 했다. 굳이 자세하게 따져보지는 않았다. 나는 철학자처럼 깊이있는 고민을 하지는 못했다. 프로그램 개발자로 생각의 근육을 사용해 지식 노동을 하지만, 깊이 있는 고민을 많이 해보지 않은 게으른 나를 위해 생각의 탄생이란 책이 출판된적이 있다. 생각의 탄생은 문명이 발달하면서 인류의 사고가 어떻게 사용되고 발전되었는지 생각의 종류를 13개로 분류하여 각 생각의 영역마다 위인들의 사례를 들고 실예를 설명한다. 관찰, 형상화, 추상화, 패턴인식, 패턴형.. 더보기
객체지향의 탄생-용어 정리 덧 ) 이 객체지향의 탄생 원고는 제가 책으로 내려다가 일단 잘 안되었는데요. 이유는 비문이 많다. 단락내 주제가 중복된다. 어떤 상황 설명을 과장한다.등 입니다. 그래도 원고를 일단 블로그에 몽땅 풀어보고 언젠가 제대로 교정해서 다시 도전할 생각입니다. 비문이 많다. 단락내 주제가 중복된다. 어떤 상황 설명을 과장한다. 이점을 감안해서 읽고 객체지향을 이해하는데 도움이 되셨으면 좋겠습니다. 의견도 주셨으면 좋겠습니다. 원고 조금만 교정하면 괜찮을것 같은 출판사 관계자분의 피드백도 환영합니다. 특별한 일 없으면 매주 월수 발행 예정입니다. 책의 고유 속성과 메소드 이 책은 자바, C#의 객체지향 언어의 기초 문법과 기초 개념은 알고 있는 초급 개발자와, 객체지향 개념을 명확하게 이해하고 싶은 중급 개발자.. 더보기
객체지향의 탄생-목차,머리말 덧 ) 이 객체지향의 탄생 원고는 제가 책으로 내려다가 일단 잘 안되었는데요. 이유는 비문이 많다. 단락내 주제가 중복된다. 어떤 상황 설명을 과장한다.등 입니다. 그래도 원고를 일단 블로그에 몽땅 풀어보고 언젠가 제대로 교정해서 다시 도전할 생각입니다. 비문이 많다. 단락내 주제가 중복된다. 어떤 상황 설명을 과장한다. 이점을 감안해서 읽고 객체지향을 이해하는데 도움이 되셨으면 좋겠습니다. 의견도 주셨으면 좋겠습니다. 원고 조금만 교정하면 괜찮을것 같은 출판사 관계자분의 피드백도 환영합니다. 특별한 일 없으면 매주 월수 발행 예정입니다.목차 1. 기본 7 1.1 객체지향의 탄생 7 1.1.1 생각의 탄생 7 1.1.2 객체지향의 탄생 10 1.1.3 객체지향, 삽질을 줄이는 지혜 13 1.1.4 객체지.. 더보기
블로그와 트위터, 디자인패턴과 리팩토링, 수필 객체지향 블로그처럼 네티즌을 위한 훌륭한 도구가 또 하나 있다. 트위터라는 도구이다. 예전에 블로그는 '자기 생각과 주장을, 자유롭게 글이나 사진으로 편집해서 올리고, 댓글, 트랙백, RSS, 태그등의 기법으로 쉽게 전파하는 도구' 라고 정의한 적이 있다. 트위터는 '블로그 처럼 자기 생각과 주장을, 짧은 글로 올리고, 친구(following, followers) 맺기, RT(친구의 글을 내가 전파함), 댓글등의 기법으로 쉽게 전파하는 도구'라고 정의해 본다. 블로그와 트위터의 정의로부터 이 둘의 공통점과 차이점을 찾아 보았다. 블로그는 편한대로 쓰기도 하지만 대부분은, 글을 쓰기전에 미리 이런식으로 글을 구성하겠다고 생각한다. 블로그는 글쓰기 전에 또는 글을 쓰면서 많은 노력을 요구한다. 트위터는 편한대로 쓴다.. 더보기
객체지향과 절차지향, 수필 객체지향 세상의 모든 사물을 프로그래밍으로 표현하면 속성과 행동이라는 두가지 요소로 나누어서 표현된다. 세상의 모든 사물을 오직 두가지 요소로 나누어 표현해도 된다는 사실은 마치 0과1의 2진법처럼 명쾌하고 간결하게 느껴진다. 절차지향이던 객체지향이던 프로그래밍 대상의 구성 요소는 오직 속성과 행동으로 간결하게 구분지어 개발할수 있다는 사실을 생각해보니, 우리가 절차지향이나 객체지향을 너무 복잡하고 어렵게 생각하고 있는 것 같았다. 세상의 모든 사물을 속성과 행동으로 나누는 것은 절차지향과 객체지향 언어에서 나눈다. 좀더 명확하게 단어까지 고쳐 말하면, 속성과 행동은 절차지향에서는 데이터와 함수이고 객체지향에서는 속성과 메소드로 불린다. 절차지향은 농민들이 공동으로 농장을 경영하는 것과 같다. 무질서하고 원시적인.. 더보기
수필 객체지향, 디자인패턴과 프레임워크 그리고 라이브러리 디자인패턴(Design Pattern)이 무엇이고 프레임워크(Framework)가 무엇이고 이 둘의 차이가 무엇이냐는 질문은 객체지향 개발이 무엇이냐는 질문처럼 나를 바보로 만든다. 하지만 명색이 제대로 된 객체지향 개발자를 꿈꾼다면 이 둘의 실체를 알아내는 것이 두렵다고 해서 이 둘의 추적을 중단해서는 안될것이었다. 라이브러리(Library)의 정의는 간단하다. 자주 쓸만한 로직을 잘 갖춰놓고 필요할때마다 가져다 쓰는 유틸리티 클래스들의 모음이다. 그런데 디자인패턴을 정의하려면 말문이 막혀서 터지지 않는다. 대략의 뜻은 알고있고 써먹을줄도 알지만 명확한 정의에 대해서는 생각이 잘 떠오르지 않는다. 그럴수록 좀더 생각을 하면서 단어의 뜻을 따라가보았다. 디자인이란 말은 설계란 뜻이다. 패턴은 일종의 정형.. 더보기
수필 객체지향, 객체지향과 추상화 객체지향 개발에 익숙한 개발자들이 있다. 그들은 자신이 제일 잘쓰는 에디터를 구동하는 순간부터 저절로 객체지향적인 코딩이 진행된다. 그러나 갑자기 객체지향 코딩에 익숙한 개발자에게 ‘객체지향’ 개발이란 무엇인가요? 그리고 왜 객체지향적으로 개발을 하는건가요? 객체지향적으로 개발한다는 것은 어떤 뜻인가요?라고 호기심 가득한 신입 후배가 묻는다면 갑자기 머릿속이 가비지 컬렉터 되면서 아무 생각도 떠오르지 않지 않을까 짐작된다. 질문에 왠지 명쾌하게 답하기가 어렵기 때문이다. 그래서 저런 어려운 질문에 대하여 곰곰히 생각해본적이 있다. 답은 잘 떠오르지 않았다. 한때 이 문제로 고뇌했다. 한참 후에 결국 ‘객체지향 개발이란 세상의 모든 요소를 객체와 객체간의 관계로 추상화 하여 추상화시 얻을 수 있는 유연함과.. 더보기
수필 객체지향, 클래스(Class) 클래스(Class)는 일반명사이다. 일반명사는 저 사람~ 저 물건~ 처럼 유일한 사물을 가르키는 단어가 아니다. 사람, 나라, 자동차, 컴퓨터처럼 사물을 공통적으로 부를 수 있는 단어로 묶은 것이다, 예를 들어 맥북, 센스, X노트 등으로 불리는 고유명사인 사물은 노트북이란 일반명사로 묶어서 부른다. 노트북, 휴대폰, 자동차처럼~ 우리가 부르는 일반명사는 명확하게 어느 사물을 가리켜 부르는 것이 아니고 뭉뚱그려 부르기 때문에 그 실체가 애매모호하다. 일반명사는 명확하게 가리키며 부를 수 있는 눈앞에 존재하는 사물이 아니며 우리 인간의 사고과정을 통해 한단계 추상화시킨 존재이다. 그래서 클래스는 아직 사람 머릿속에 존재하는 개념이고 아직 객체로 생성하여 세상에 나온 개념은 아니다. 객체지향 언어인 자바로 .. 더보기
수필 객체지향, 응집도와 결합도 객체지향 개발을 하는 이유는 객체지향적으로 제대로 개발하면 유연하고 확장성 높고 유지보수 편리한 개발이 가능하기 때문이라고 한다. 객체지향적으로 개발하면 왜 유연하고 확장성 높고 유지보수가 편리하냐고 누가 단도직입적으로 묻는다면 나는 총으로 겨냥당한것처럼 돌부처가 될것 같다. 그래도 우격다짐으로 말해보면 객체지향적으로 개발하면 모듈간 응집도는 높고 결합도는 낮아지기 때문이라고 말할것이다. 하지만 역시 열심히 공부하려는 우리를 당혹스럽게 하는 뜬구름 잡는 얘기이기도 하다. 응집도는 높고 결합도는 낮아야 된다는 이 공대 용어 스러운 말이 무슨 뜻이야? 응집도가 높다는 말은 비슷한 일을 하는 기능들이 하나의 모듈로 얼마나 잘 뭉쳐 있냐와 비슷한 말이고 결합도가 낮다는 말은 그 일을 완수하기 위해서 얼마나 다른.. 더보기
수필 객체지향, 객체(Object) 객체(Object)란 단어는 낯설다. 객체지향 개발이 두려우면서 범접하기 어려운 기술로 느껴지는 이유중에 하나는 객체(Object)란 단어부터 낯설기 때문이다. 객체(Object)의 사전적인 뜻은 ‘실체로 존재하는 대상 또는 개념’ 이다. 이 뜻을 우리 사람사는 세상에서는 어떻게 표현하면 되는지 불러보았다. 저 사람~, 저 사물~, 저 물건~, 저 동물~, 저 것은~, 그것은~, 이것은~ 으로 불리는 것 같다. 그러고보니 저 사람, 사물, 물건, 동물, 그것은, 이것은 등을 하나로 통합하여 사람 입에 불리어지는 단어는 없다. 그냥 저 사람이고 저 물건으로 불리어질 뿐이다. ‘실체로 존재하는 대상 또는 개념’이라고 정의되는 대상을 우리는 저 사람~ 저 물건~ 하며 친숙하게 부르는데 다만 하나로 통합하여 부.. 더보기
수필 객체지향, OCP(open-closed principle, 개방-폐쇄의 원리) 사람 사는 세상은 복잡다단하다. 예를들어 마른하늘에 정말로 날벼락이 칠수도 있다. 어플리케이션은 사람 사는 세상을 고스란히 옮겨놓았다. 틀림없이 어플리케이션도 마른하늘에 날벼락이 치는 변화무쌍한 요구사항이 발생할것이다. 요구사항에는 기존 개발된 기능의 변경 건이 있거나 새로운 기능의 확장의 경우가 있다. 이런 요구사항이 생길때 객체지향 설계자는 어플리케이션을 어떻게 변경하거나 확장할지 고민한다. 기존의 소스를 변경하는 방법이 있다. 이 경우는 가장 직관적으로 해결하는 방법일 것이다. 하지만 위험하다. 기름바닥에 라이타불을 던져서 불폭탄을 만드는 광경을 영화에서 본적이 있는가. 기존의 소스를 변경하는 방법은 기름바닥이라는 높은 결합도에 라이타불을 던지는 것과 마찬가지이다. 기존의 소스는 이미 여러 클래스들.. 더보기
책읽기 패턴 요즘 무슨 일.. 때문에 여러 책을 참고해야 했고 글쓰는 요령도 공부하고 있다. 당분간 계속되어야 할 이 작업에 책읽는 방법을 나름대로 정리하고, 글쓰는 요령도 나름대로 정리해야 겠다는 생각이 들었다. 내가 프로그램 개발자라 그런지 디자인패턴, 리팩토링에서 따와서 책읽기 패턴, 글쓰기 리팩토링이란 제목으로 연달아 포스팅 할 계획이다. 사실 글쓰기 리팩토링은 직접적으로 도움이 될 내용이 될것 같은데 책읽기 패턴은 내용이 두루뭉실하니 내용 전달이 애매할것 같다. 그래도 정리해보자. 명품을 좋아하는 여성이 명품하나 구입하면 며칠이나마 마음이 든든하듯, 나는 내가 관심가는 분야가 있으면 관련 책을 일단 구입해야 마음이 든든하다. 예를 들어 최근 등산에 관심을 가졌더니 등산 관력책을 두권이나 구입했다. 내 서재는.. 더보기