2010년 7월 6일 화요일

Factory Pattern

패턴 그리고 객체지향적 코딩의 법칙」중에서 정리

Factory

이름
그대로
객체
생성

enum
, argument
통해
구체화된
자식 class
객체 return
new & delete
법칙에
위배
되지
않음

그렇지만
자식 class
함수를
수행하고
싶을
경우 type
통해 downcasting
이루어져야
( 다중
상속

문제가
발생 )
Class ...Factory ( arg e_type )
( switch ( e_type )
case e1: new CE1;
case e2: new CE2;

...)


 

Abstract Factory

연관성
있는
객체들을
모아서 interface
제공

Example )

Class IABFactory ( interface class )
CCom1Ob : public IABstractFactory
{ virtual Ob1 * CreateA () ;
virtual Ob2 * Createb () ;
...}

pOb1 = CCom1-> CreateA;
pOb2 = CCom1-> CreateB;
...
delete pOb1 , pOB2 ;


 

2010년 7월 2일 금요일

[iPhone] Change the Theme

해킹 아이폰에만 해당됩니다.

무료로 다운 받을 수 있는 사이트 모음

다운 받은 테마를 옮기는 폴더

/private/var/stash/Themesxxxxx

안을 살펴보면 된다. ~ 이상 ㅎ

2010년 6월 25일 금요일

Simple Singleton Example


From : http://sourcemaking.com/design_patterns/singleton/cpp/1

class GlobalClass

{

...
static GlobalClass *instance()

{

if (!s_instance)

s_instance = new GlobalClass;

return s_instance;

}
...

};

// Allocating and initializing GlobalClass's

// static data member. The pointer is being

// allocated - not the object inself.

GlobalClass *GlobalClass::s_instance = 0;


void foo(void)

{

GlobalClass::instance()->set_value(1);

cout << "foo: global_ptr is " << GlobalClass::instance()->get_value() << '\n';

}
  
 위에서 보는 것처럼 단지 공유 객체 포인터를 static으로만 선언하는 것만으로는불 충분하다. 좀 괜찮게 보일 될려면 GlobalClass::instance() 이렇게 한 꺼풀더 씌우자
From : http://sourcemaking.com/design_patterns/singleton/cpp/1

2010년 6월 23일 수요일

습관을 고치자 – in programming

초기의 간단한 구조에서는 그닥 class diagram이 필요가 없지만

깔끔하게 design pattern 등도 고려가 되어서 잘 구조가 된다.

그렇지만 어느 순간 덧붙이다 보면

class 간 partition이 제대로 이루어 지지 않는다.

이 이유 중 하나가 새로운 기능 추가 시 기존의 class diagram을 보지 않고

보이는 데로 추가를 하기 때문에 발생한다.

2010년 6월 22일 화요일

간단하지만 헷갈리는 virtual destructor

이 자료는 http://glotalk.egloos.com/2018168 에서 퍼옴을 밝힙니다.

#include "stdafx.h"
struct A1      { virtual ~A1() { printf("A1 dtor\n"); } };
struct A2 : A1 { virtual ~A2() { printf("A2 dtor\n"); } };
struct A3 : A2 { virtual ~A3() { printf("A3 dtor\n"); } };
struct B1      { ~B1() { printf("B1 dtor\n"); } };
struct B2 : B1 { ~B2() { printf("B2 dtor\n"); } };
struct B3 : B2 { ~B3() { printf("B3 dtor\n"); } };
int _tmain(int argc, _TCHAR* argv[])
{
    A1 * a = new A3;
    delete a;
    printf("\n");

    A3 * a2 = new A3;
    delete a2;
    printf("\n");

    B1 * b = new B3;
    delete b;
    printf("\n");

    B3 * b2 = new B3;
    delete b2;
    printf("\n");

    return 0;
}


 

출력은

A3 dtor
A2 dtor
A1 dtor

A3 dtor
A2 dtor
A1 dtor

B1 dtor

B3 dtor
B2 dtor
B1 dtor

2010년 6월 20일 일요일

C++ 다중 상속의 개념

class간 결합을 interface로 따로 분리됨으로써 class 간 복잡도, 결합도가 떨어진다.


 

interface는C++ 에서는 class로 표현, JAVA에서는 interface keyword로 표현


 

C++ 에서 보통 interface를 virtual 로 정의하고 구현은 뒤로 미루는데 이것이 interface정의의 원칙이란다.


 

Java에서는 interface에서 class에서 정의된 함수들을 그냥 쓰면 되지만

C++ 에서는 interface의 함수들을 이용하기 위해서는 그 interface를 정의된 class의 상속을 통해서

이용이 가능하다. 따라서 다른 class에서 정의된 interface를 사용하기 위해서는 서로 다른 class를 상속

하는 길 밖에는 없다.

  • 패턴 그리고 객체지향적 코딩의 법칙 story 3 일부분에서

2010년 6월 11일 금요일

헷갈리는 const 용법 ( in Effective C++ )

전통적 Const 용법

Const char *p = greeting

비상수 포인터 , 비상수 데이터

Char * const p = greeting

상수 포인터 , 비상수 데이터


 

class에서 const

class TextBlock {

    public :

    ...

     const char & operator [] const ( std::size_t position ) const { return text[ position ] ; } // 상수 객체에 대한

     const char & operator [] ( std::size_t position ) const { return text[ position ] ; }         // 비상수 객체에 대한

    ...

}

    

비상수 멤버 호출

상수 멤버 호출

TextBlock tb("hello");

std::cout<< tb[0];

const TextBlock tb("hello");

std::cout<< tb[0];


 

여기서 파생되는 유의점

std:;size_t CTexxtBock::length () const

{    

    // 내부에서 class 변수들을 수정한다면 error

    // 왜냐하면 여기서 변수를 수정한다면 상수 멤버를 호출한 것에 대한 것과 모순이 발생

}

2010년 4월 18일 일요일

1Q84 #1을 읽고

<1Q84 #1 >
 - 명백히 들어나는 소설 전체에 깔아놓은 의문점
 1. 1편만 봤지만 정체를 알수 없는 소설 - 이오마메가 달 2개로 보는 것은 후에 어떻게 설명할 것인지 궁금\

 2. 리틀 피플 ->  늙은 부인 말에 의하면 교주에 의해 4번째 범해진 입에서 나와서 형성이 됨  ( 초현실 소설인가 ;;;)
 공기번데기 쓴 소녀는 왜 리틀피플은 선악으로 나누지 않고, 그들이 영리하다고만 충고를 덴코에게 했을까 ?
 그 소녀는 드라나기 싫은 존재인데 애 소설로 드러냈을까 ?
 뜬금없이 SF 소설로 가는 것인가 ?

 3.  암시가 나오는데 교주에 당한 1번째 소년은 자기 딸이라는 것으로 봐서 선구를 만든 후카다일 가능성이 있고 ,
 강력한 카리스마를 이용해서 교주로 군림할 수도 있음
  딸은 공기번데기를 쓴 자기 딸일 가능성 있음

 4. 어떻게 아모마메랑 덴코는 초등이후 헤어졌다면서 같은 노래 < 신포니에타 > 를 공유하는 것인가 ?

 5. 아오마메가 도서관에서 읽은 기사에 NHK 수금원이 죽었다고 나오는데 덴코 아버지 인거 같은데 아직 언급없음
  암시로 그 수금원은 정직원 승급후 죽었음


 




 

2010년 1월 13일 수요일

행동 하나가 미치는 영향

무심코 출발하기전 고스톱 한판이 몇시간걸렸을때의 황당함 .
난 지금 변화가 필요하고 그 첫번째는 세심함이다 좀더 행동이 미치는 파장을 생각하자

파랑새.100104 빌게이츠 MBC 프로

Dream Come True

1. 먼저 detail Dream 이 있는지 확인
 - simple, 모험심

2. Come 을 하려고 노력
 - self talk형 ( 피카소 : 대비 (고흐))
 - image 형   (콘래드 힐든 : 사진 찍고 이미지화 )

+  윌리엄 게이츠
  세상에 운명이란 없다. 세상에 모든 일이 자기가 어떻게 생각하고 어떻게 행동하느냐에 따라
 결과가 바뀌게 된다.

+ 현려 ( 현명하고 사려깊다 )
  돈만 버는 경영자가 아닌 경우를 뜻함
  미리 돈을 많이 벌었을 경우 반을 내어놓을 생각을 하고 있었다.