타입 코드(type code)라는 것은 오브젝트의 종류를 표현하는 값입니다. 어떤 프로그램이 서적, DVD, 소프트웨어를 다룬다고 가정합니다. 그리고 이 상품의 종류를 표현하기 위해 다음과 같이 서적 = 0, DVD = 1, 소프트웨어 = 2라고 int형 값을 할당한다고 하면,이 때, 1, 2, 3 이라는 값이 타입 코드가 됩니다. 그러나타입코드가 int와 같은 기본형이면 문제가 생깁니다. Item* book2 = new Item(1000, "Jobs", 3000);Item* software2 = new Item(Payment::TYPECODE_CREDIT, "Word", 3000);와 같은 코드도 문제 없이 돌아가는데요. 타입 코드의 범위 이외의 값인 1000도, item 타입이 아닌 payment 타..
이번에는 널객체와 타입코드에 대한 이야기입니다. 5. 널객체 파일과 콘솔에서 로그를 기록하는 FileLog와 ConsoleLog 클래스를 구현합니다. 각각의 객체가 존재할 때 Write를 하는 LogService 클래스도 구현합니다. LogService 클래스에서는 run 함수 안에서 FileLog가 null이 아니면 FileLog.write()를, ConsoleLog가 null이 아니면 console.write()를 하게 됩니다. 그런데! 같은 일(write())을 하는데 객체마다 한번씩 여러 번을 처리하고 있습니다. ????????????!!!!!!!!!!!!!!!!!!!! 배운거에요!!!!!!!!!!!!! 이럴 경우 강한 결합Tightly coupling 으로 OCP를 위배합니다. 다형 객체를 하나..
슷타의 마린과 고스트 클래스입니다.class Marine{}; class Ghost{}; 마린(Marine) 부대와 고스트(Ghost) 부대를 동시에 움직이게 합시다.어떻게 하나로 묶어서 보낼까요?드래그로 몽땅 잡아서? g = m; 으로??이는 서로 다른 폼이기 때문에 불가능합니다... 이럴 때, C언어에서는 모든 포인터 묶기 위해 - void* 쓰지요!void* grp1[2] = { &g, &m }; 이런 식으로 말이죠! void main(){ Marine m; Ghost g; void* grp1[2] = { &g, &m };} 이제 상속의 개념이 나오게 됩니다.♥ 다형적 객체를 하나의 타입으로 처리하기 위해 부모 클래스를 도입하게 됩니다. 상속의 특징은1) 재사용성 2) 유지보수성 더불어 3) 다형성..
이번에는 캐스팅에 대해서 공부합니다. 3. 캐스팅퀴즈퀴즈! char* pa = malloc(sizeof(char)); // c(o), c++(x)char* pb = (char*)malloc(sizeof(char)); // c(o), c++(o)위의 두 문장은 C, C++ 환경에서 문제없이 잘 돌아갈까요? (정답은 질문 옆을 아주 잘~ 보면 보입니다.) C언어에서는 명시적으로 형 변환을 하지 않아도 컴파일러는 알아서 잘 짰거니 하고, 개발자를 믿고 실행합니다.논리적으로 잘못됐어도 에러를 내지 않으니 개발자는 월화수목금금금... 이와 달리, C++에서는 타입 체크가 강화되어 타입을 명시하지 않으면 컴파일 에러가 납니다.♥ 따라서 C++에서는 타입을 정확히 명시해주어야 합니다. 그러나 (char*) 이런 식으..