lecture4 – ch4
1301665632.pdf
ch4 실습 (SimpleDraw) StockObject, CPen, CBrush, CBitmap, etc
1378366765.zip
Monthly Archives: September 2008
MFC CObject Program Demo
MFC CObject Program (CObject를 상속받은 CPoint3D클래스의 사용예제)
–MFC Application Program 방식으로 프로그램을 생성
-CPoint3D 클래스는 실시간 클래스 정보 & 동적 객체 생성을 지원
1081925782.zip
-CChildView 클래스는 RUNTIME_CLASS(MYCLASS)->CreateObject()로 동적객체생성과
IsKindOf(RUNTIME_CLASS(MYCLASS))를 통해 실시간 클래스 정보 테스트
1382672211.zip
MFC Application Program
.NET2005
- 메뉴에서 File->New->Project->Visual C++ 템플릿->MFC->MFC Application를 선택한 후 “프로젝트 이름(예를 들어, SimpleMFC)”을 적고 확인버튼을 누른다.
- SDI, Use MFC in a Shared DLL, 한국어 선택하고 Next버튼을 누른다.
- 데이터베이스는 None으로 선택하고 Next버튼을 누른다.
- 사용자인터페이스 확인하고 Next버튼을 누른다.
- Advanced Features에서 ActiveX를 선택해제한다.
- 그리고, Generated Classes를 확인하고 Finish버튼을 누른다.
- CChildView::OnPaint에 출력함수(예: “dc.TextOut(100, 100, CString(“안녕하세요”))을 추가한다.
lecture3 – cobject
lecture3 – ch3
실습숙제2 재공지
실습숙제2 재공지
–실습숙제2에서 2_CPerson.zip을 새로 다운로드 받아서 작성하도록 함
-CPersonManager 클래스는 private 멤버로 CList<CPerson, CPerson&> m_aPersonList를 가지는 것이 아니라 CList<CPerson*, CPerson*> m_aPersonList를 가짐
-그래야, CList에 데이터가 CPerson이나 CStudent이나 CFaculty이라해도 그 데이터형에 맞는 Show함수를 부를 수 있음.
-만약, CList<CPerson, CPerson&>으로 하면 CPerson이나 CStudent이나 CFaculty의 데이터형에 상관없이 모두 CPerson의 Show를 부르게 됨.
-차이점 예시
arr1.Add(Point(10,20));
arr1.Add(Point(30,40));
arr1.Add(Point3D(4,5,6));
arr1.Add(Point3D(7,8,9));
cout << endl << “CArray<Point, Point&> 출력 Loop by index:” << endl;
for(int i = 0; i < arr1.GetSize(); i++) {
arr1[i].Show(); // dynamic binding이 안됨
} 출력결과:
CArray<Point, Point&> 출력 Loop by index:
X= 10 Y= 20
X= 30 Y= 40
X= 4 Y= 5
X= 7 Y= 8
arr2.Add(new Point(10,20));
arr2.Add(new Point(30,40));
arr2.Add(new Point3D(4,5,6));
arr2.Add(new Point3D(7,8,9)); cout << endl << “CArray<Point*, Point*> 출력 Loop by index:” << endl;
for(int i = 0; i < arr2.GetSize(); i++) {
Point * pt = arr2[i];
pt->Show(); // dynamic binding
}
출력결과:
CArray<Point*, Point*> 출력 Loop by index:
X= 10 Y= 20
X= 30 Y= 40
X=4 Y=5 Z=6
X=7 Y=8 Z=9
실습숙제2 (Due by 10/3)
□ 단원 : 유틸리티 클래스, 집합 클래스
□ 목표 : CString, 집합클래스 연습
□ 주요 연습 내용 : CString, CList
□ 준비자료 : 2_CPerson.zip (Person.cpp, Person.h, Student.cpp, Student.h, Faculty.cpp, Faculty.h, PersonManager.cpp, PersonManager.h, main.cpp)
1102780408.zip
참고: VC++는 Win32 console에 MFC를 사용하는 방식으로 작성한다.
http://dis.dankook.ac.kr/lectures/hci08/entry/WIN32-Console-Program-Using-MFC-Classes
연습문제 Ex2 (Due by 10/3 금 24시까지)
-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC++ 2005 file, 보고서를 학번_이름_Ex2.zip으로 묶어서 낼 것. 보고서 (30%)
[연습문제]
1. CPerson 클래스의 변수를 CString 형으로 변환한다. 그에 따른 함수 내부를 수정한다. (10%)
– CString m_strName;
– int n_nID;
– CString m_strPhone;
– CString m_strAddr;
– friend bool operator==(const CPerson &lhs, const CPerson &rhs) 함수 추가
2. CStudent 클래스의 변수를 CString 형으로 변환한다. 그에 따른 함수 내부를 수정한다. (10%)
– float m_nGPA;
– friend bool operator==(const CStudent &lhs, const CStudent &rhs) 함수 추가
3. CFaculty 클래스는 CPerson에서 파생한 클래스로 다음과 같은 멤버변수를 추가로 가지고 있다. (10%)
– CString m_strDept;
그리고 멤버 함수는 다음과 같은 기능을 한다.
– CFaculty(); // default constructor 기본 생성자 함수
– CFaculty(CString , int, CString, CString, CString); // conversion 형변환 생성자 함수
– CFaculty(const CFaculty&); // copy constructor 복사 생성자 함수
– CFaculty& operator=(const CFaculty&); // operator= 함수
– virtual ~CFaculty(); // destructor 소멸자 함수
– virtual void Show(); // CFaculty의 이름, 아이디, 전화번호, 주소, 소속을 보여줌
– CString GetDepartment() const; // CFaculty의 소속 (m_strDept)을 돌려줌
– friend std::ostream& operator<<(std::ostream&, const CFaculty&);
– friend std::ostream& operator<<(std::ostream&, const CFaculty*);
– friend std::istream& operator>>(std::istream&, CFaculty&);
– friend bool operator==(const CFaculty &lhs, const CFaculty &rhs) 함수 추가
4. CPerson, CStudent, CFaculty 목록을 CList를 이용하여 입출력을 통합 관리하는 CPersonManager 클래스를 작성한다. (20%)
– private 멤버로 CList<CPerson*, CPerson*> m_aPersonList를 가짐
– 소멸자는 모든 CPerson을 리스트에서 제거함
– Add 함수는 CPerson을 리스트에 추가함
– Remove 함수는 CList의 Find를 이용하여 동일한 CPerson이 존재하는지 확인 후 있으면 그것을 제거함
– RemoveAll 함수는 모든 CPerson을 리스트에서 제거함
– GetTotalNumberOfPeople 함수는 리스트에 존재하는 CPerson이 몇 명 있는지를 알려줌
– GetPersonList 함수는 리스트를 돌려줌
– Show 함수는 리스트에 존재하는 모든 CPerson의 Show()를 사용하여 모든 Person, Student, Faculty의 내용(즉, 이름, 아이디, 전화번호, 주소 등등)을 출력함
5. main.cpp에서 CPersonManager 목록에 10개 이상의 CPerson, CStudent, CFaculty를 추가하고 난 후, 다음을 수행한다. (20%)
– CPersonManger의 GetTotalNumberOfPeople 함수 사용하여, 리스트에 몇 명의 Person이 존재하는지 출력
– CPersonManger의 Show 함수 사용하여, 리스트에 있는 모든 Person, Student, Faculty의 내용(즉, Person들의 이름, 아이디, 전화번호, 주소 등등)을 출력
– CPersonManger의 Remove와 Show 함수를 사용하여, 각각 한 두 명의 Person, Student, Faculty를 리스트에서 지우고 난 후, 리스트에 있는 모든 내용을 출력
– cin으로 CPerson, CStudent, CFaculty 정보를 입력받은 객체를 생성 후, 리스트에 있는 모든 내용을 출력
실습숙제1 답안예시
WIN32 Console Program Using MFC Classes
.NET2005
- 메뉴에서 File->New->Project->Visual C++ 템플릿->Win32->Win32 Console Application를 선택한 후 “프로젝트 이름(예를 들어, Console)”을 적고 확인버튼을 누른다.
- Console Application과 (Add common header files for)MFC을 선택하고 Finish버튼을 누른다.
MFC Utility & Collection Class demo
MFC Console Program (MFC Utility & Collection Class 비템플렛 예제)
1214643777.cpp
MFC Console Program (MFC Collection Template Class 템플렛 예제)
1395304735.zip
Array/List/Map/Tree 자료구조 선택가이드
http://minjang.egloos.com/482401
MFC Collection Class
http://msdn.microsoft.com/en-us/library/942860sh(VS.71).aspx
COLLECT Sample: MFC Collection Class Demo
http://dis.dankook.ac.kr/lectures/hci07/entry/COLLECT-Sample-Illustrates-MFC-Collection-Classes