본문 바로가기

class7

UML의 기본 구성-클래스 다이어그램 디자인 패턴에 들어 가기에 앞서 UML을 알아둬야 할 필요성이 있습니다. Unified Modeling Language의 약자로 설계문서를 시각화 한다고 정의 되어 있습니다. 지금 설명하는 것들은 모두 클래스 다이어그램입니다. 가장 기본적인 상속 구조를 알아 보도록 하겠습니다. 해당 그림은 다음과 같습니다. - 부모 클래스가 가상 클래스(이탤릭)로써, 자식 클래스가 상속을 받은 형태 - 부모클래스에는 변수, 스태틱 변수( 밑줄 )가 존재 - 부모 클래스는 가상함수(이텔릭)와 함수가 존재 - 자식 클래스는 변수X, 부모로써 상속받은 가상함수와 스태틱함수(밑줄) 존재 - 각 변수나 함수 앞에 기호는 public은 +, protected는 #, private는 -로 표기 다음은 인터페이스 설명입니다. - 가상.. 2016. 5. 2.
항목3. 배열과 다형성은 같은 수준으로 놓고 볼 것이 아니다. 제목이 뭐랄까 복잡하지만, 내용을 보니 그정도 까진 아닌거 같다. 다형성이라는 정의를 좀 쉽게 설명하면, "AAA 클래스를 상속받은 BBB 클래스가 있다. 그리고 AAA 클래스의 객체가 BBB 클래스를 접근하는 것이 가능하다. " 라고 표현 할 수 있겠는데... 아.. 써놓고 보니 쉽지 않은거 같기도 하고--;; 자세한 내용은 다형성에 대해서 "객체 포인터"라는 부분에서 정리를 예전에 해 두었으니 해깔리면 그걸 먼저 보는것이 나을 것 같다. 예제는 2가지정도 존재 하지만, 첫번째 예제만 봐도. "아!... 위험하네." 싶다. // 기본 클래스 AAA class AAA { public: int a; public: AAA() { a = 0; } // AAA 클래스의 연산자 오버로딩 friend ostream.. 2011. 4. 25.
MFC-새로운 자식 클래스 생성하기 MFC에 대해서 뭐랄까 심도 있게 설명해 놓고 싶지만, 아무래도 그 내용이 방대하고, API에 대한 윈도우 구조를 다 파악 했다면 구지 다시 그 부분을 집고 넘어갈 필요는 없을것 같다. MFC에 대한 내용은, 가능한 나 스스로가 복습하면서 다시 한번 되돌아 본다는 식으로 포스팅을 하기로 하겠다. 프로젝트 생성은 살펴 보았고, 이제 기본적인 창에 무언가를 추가해 보자. View.cpp 부분에 존재하는 CView를 상속받은 클래스가 존재할 것이다. // 작업입니다. public: CWnd m_wndChild; // CWnd 클래스 변수인 m_wndChild를 멤버 변수로 추가 하였다.​ 다음 처럼 멤버 변수를 CWnd로 추가하고, [클래스뷰]-[속성]-[메시지탭]-[WM_CREATE]-[OnCreate 생성.. 2010. 5. 12.
객체 포인터 객체 포인터, 간단하게 보면 class를 가르키는 포인터로 볼 수 있겠지만, 이거, 생각보다 재밋으면서도 어렵다. 일단 따로 보자. int n; int* pn = &n;​ int n을 만들고, 포인터 pn이 가르킨다. (n의 값이 쓰레기인건 신경쓰지 말자) 그렇다면 여기서, 의문을 가져 보자. char* c = (char*)new int; int* n = (int*)new char; delete c; delete n;​ 어떻게 될까? 컴파일에서 문제도 일어 나지 않고, 실행도 된다. 여기서 파악해야 할 것은, 메모리의 크기이다. char* c 은 1바이트 int* n은 4바이트를 가르키게 되는데, 저런식으로 하게 되면 c는 new int의 1바이트 부분만 가르키게 되고, n은 새로 생성된 1바이트를 넘쳐.. 2010. 3. 29.
friend private로 선언된 class 변수를 외부에서 조작 하기 위해 사용. #include class AAA { int n; public: // SetN이라는 함수에 대해서 friend 선언 friend void SetN( AAA& a, int n ); void PrintN() { std::cout 2010. 3. 21.
클래스의 활용 누가 그랬던가, C++로 제작이 가능한 모든것은 C로도 제작이 가능하다고, 물론 맞는 말이지만, 추후 그 프로그램을 수정할때의 시간은 확실히 차이가 난다고 생각한다. 클래스의 활용법에 대해서 알아보자. 클래스를 선언할 때에 public: private: protected: 가 존재 하지만 일반 적으로 public:에는 함수 선언을 많이 하고 private:에는 변수 선언을 많이 하게 된다. 왜 그럴까? 소스 코드를 보자. #include class AAA { // 기본적으로 아무 것도 설정해 주지 않으면 private: int n; public: int GetN();// N의 값을 return 받기 위해 void SetN(int tmp);// N에, 값을 넣기 위해 }; void main() { // 만.. 2010. 3. 20.