본문 바로가기

기타/객체지향의 탄생(2013)

객체지향의 탄생-목차,머리말

덧 ) 이 객체지향의 탄생 원고는 제가 책으로 내려다가 일단 잘 안되었는데요. 이유는 비문이 많다. 단락내 주제가 중복된다. 어떤 상황 설명을 과장한다.등 입니다. 그래도 원고를 일단 블로그에 몽땅 풀어보고 언젠가 제대로 교정해서 다시 도전할 생각입니다. 비문이 많다. 단락내 주제가 중복된다. 어떤 상황 설명을 과장한다. 이점을 감안해서 읽고 객체지향을 이해하는데 도움이 되셨으면 좋겠습니다. 의견도 주셨으면 좋겠습니다. 원고 조금만 교정하면 괜찮을것 같은 출판사 관계자분의 피드백도 환영합니다. 특별한 일 없으면 매주 월수 발행 예정입니다.

목차

1.    기본    7

1.1    객체지향의 탄생    7

1.1.1    생각의 탄생    7

1.1.2    객체지향의 탄생    10

1.1.3    객체지향, 삽질을 줄이는 지혜    13

1.1.4    객체지향의 진입장벽    15

1.1.5    진입장벽이 높다는     17

1.1.6    객체지향은 낯설다    18

1.2    객체지향의 기본 요소    19

1.2.1    객체(Object)    20

1.2.2    클래스(Class)    21

1.2.3    속성(Attribute)    24

1.2.4    메소드(Method)    25

1.2.5    생성자(Constructor)    27

1.3    객체지향을 이롭게 하는 5가지 특징    30

1.3.1    객체지향 보물지도의 해석    31

1.3.2    인터페이스    35

1.3.3    오버로딩과 오버라이딩    39

1.3.4    캡슐화와 정보은닉    44

1.3.5    상속과 폴리모피즘    48

1.3.6    상속과 구성    52

1.4    UML 객체지향 세계를 그리다.    58

1.4.1    클래스, 인터페이스    64

1.4.2    상속    64

1.4.3    연관, 의존    64

1.4.4    구성, 집합    64

1.4.5    예제    65

1.5    객체지향 디자인 원리 SOLID    66

1.5.1    SRP(Single Responsibility Principle)    66

1.5.2    OCP(Open Closed Principle)    69

1.5.3    LSP(Liskov Substitution Principle)    71

1.5.4    ISP(Interface Segregation Principle)    74

1.5.5    DRY(Don't Repeat Yourself)    76

1.6    기타 객체지향 이야기거리    78

1.6.1    객체지향적인 개발 단계    78

1.6.2    객체지향 설계를 위한 조언    78

1.6.3    객체지향 글쓰기    81

2    패턴    85

2.1    행동 관련 패턴(Behavioral Patterns)    85

2.1.1    스트라테지 패턴(Strategy)    85

2.1.2    옵저버 패턴(Observer)    90

2.1.3    커맨드 패턴(Command)    95

2.1.4    템플릿 메소드 패턴(Template Method)    102

2.1.5    이터레이터 패턴(Iterator)    109

2.1.6    스테이트 패턴(State)    121

2.1.7    채인 오브 리스판시빌리티 패턴(Chain of Responsibility)    130

2.2    구조 관련 패턴(Structural Patterns)    137

2.2.1    데코레이터 패턴(Decorator)    137

2.2.2    어뎁터 패턴(Adapter)    146

2.2.3    퍼사드 패턴(Façade)    151

2.2.4    컴포지트 패턴(Composite)    156

2.3    생성 관련 패턴(Creational Patterns)    164

2.3.1    팩토리 메소드 패턴(Factory Method)    164

3    현실    171

3.1    기술적인 고민거리    171

3.1.1    응집도와 결합도    171

3.1.2    객체지향과 절차지향    173

3.1.3    객체지향과 추상화    176

3.1.4    디자인패턴과 프레임워크, 그리고 라이브러리    180

3.1.5    객체와 컴포넌트    182

3.1.6    아키텍처와 아키텍트    183

3.1.7    객체지향과 관계형 데이터베이스의 조화    184

3.1.8    디자인패턴과 리팩토링    186

3.1.9    올드스쿨/ 스쿨 프로그래밍    188

3.2    현장의 고민거리    191

3.2.1    장인 정신이 깃든 프로그램    191

3.2.2    프로젝트의 풍선효과, 개발자가 고생하는 3가지 이유    192

3.2.3    프로젝트의 우선 순위에서 코드 품질이 취하위인 이유    196

3.2.4    미드웨이 해전에서 배우는 코드 품질의 중요성    198

3.2.5    필리핀 해전에서 배우는 연구 개발의 중요성    203

3.2.6    우리나라 현실에 맞는 코드 품질 향상 대안    206

3.3    객체지향의 탄생, 책쓰기의 마무리    209

 

 

머리말, 객체지향은 좋은 코드를 만드는 방법

꼬마때 겪은 겨울은 놀이터였다동심을 살려주는 놀이터였다눈사람도 만들고 눈싸움도 했다하얀 눈이 아름다워보였던 겨울은 하얀 천국과 같았다꼬마때 추운 기억은 없고 재밌게 뛰어다닌 기억만 남아 있다. 

어른이 되어 겪은 겨울은 하얀 악마와 같다군대있을때 삽으로 치워도 치워도 눈은 계속 내렸다하늘을 바라보니 눈이 얼굴위로 쏟아졌다하늘에 구멍이 뚫려 눈이 쏟아지는것 같다.

 

나는 프로그래밍이 재미있어서 프로그래머가 되었다내가 생각한대로 결과물이 나올때의 즐거움은 꼬마때 눈싸움을 하던 즐거움과 같았다프로그래머가 되면 마치 게임을 하듯 재밌게 일할것만 같았다

 

나는 프로그래머가 되었다나는  프로젝트에 투입되었다나는 고된 현실과 부딪히게 되었다월화수목금금금을 겪었다나는 유독 겨울에 SI프로젝트로 투입됐다지독한 추위 였다발은 얼얼했다얇은 바지 사이로 칼바람이 찌른다 사이로 냉기가 스며든다겨울의 추위는 갑의 일정 재촉과 같았다.

 

이런 추위를 겪으며나는 소프트웨어 개발이 재미도 있고 자부심도 있지만 일하는 환경은 좋지 않다개선하는 방법은 없을까라는 질문을 계속자문자답 했다답은 어떠한 상황이라도 개발자 스스로 편하게 일하는 환경을 만드는 것이 중요하다개발자는 남을 편하게 해주는 일을 하는 사람들인데본인을 편하게 하는 일은 게을리했다.