2. 인터페이스 이번에는 핸드폰 예제를 이용합니다! 쌈쏭의 자랑 애니콜(Anycall) 핸드폰의 통화(call)기능을 구현합니다.사람(Person)은 use_phone()을 통해 이 기능을 사용합니다. 싸이언(Cyon) 핸드폰을 하나 더 구매했다고 합시다.싸이언은 통화 기능이 애니콜과 달리 send 함수를 사용하네요.역시 통화하기 위해 Person 클래스에 싸이언용 use_phone()을 구현합니다. 애니콜과 싸이언은 다른 타입으로, 다른 타입의 포인터끼리는 호환이 되지 않기 때문에void use_phone(Cyon *p, const char* n) { p -> send(n); }을 하나 더 만들어주어야 하는 것이죠. 메인함수에는int main() { Person p; Anycall a; p.use_ph..
Refactoring은 내부의 코드를 개선하는 하나의 방법론이자 솔루션입니다.대부분 리팩토링은 OS에 독립적인 Java에서 이루어지는데요.그러나 객체 지향의 내부 구조를 이해를 돕기 위해 C++로 진행하겠습니다. 리팩토링을 한마디로 말하자면, 나쁜 냄새가 나는 코드를 최적화하는 것입니다.여기서 주의할 점은 런타임에서의 최적화가 아니라!코드를 짤 때, 버그 없는 프로그램을 만드는 것입니다.외부 인터페이스는 그대로 두고 내부의 코드만을 개선하여 재사용과 가독성을 높이는 데 목적이 있습니다. 특히 전체적인 아키텍처에서 개선해나가는 디자인패턴과 떼어놓을 수 없는 관계입니다.리팩토링과 디자인패턴의 개념은 동일한데, 바라보는 관점이 다를 뿐 입니다! 이제 본격적으로 리팩토링을 시작합니다. 1. 순수 가상함수와 추상..
입력을 받을 때 string과 char 차이! 1. input은 다음과 같다.HELLO C++ 2. 배열과 스트링 생성1) char 배열 생성 간단하게 동적 배열 생성하지 않아도 되도록, 가장 큰 배열 수만큼 SIZE를 define 해두자 초기화는 memset이용하는데 여기서는 하지 않음 char arr[SIZE]; 2) 스트링 생성string s; 3. 표준 입력 읽어오기1) char 배열 읽어오기cin for문 돌려서 일일이 받아와도 되지만 배열 전체로 받아와도 됨공백, 개행 무시 cin >> arr; ** 입력이 H E L L O C + + 이런 식으로 띄어쓰기 되어있다면 for문으로 일일이 받아와야 한다** 2) 스트링 읽어오기cin#include 필요공백, 개행 무시 cin >> s; 4. 문자..