유튜브에 무료 동영상 강의를 업로드하였습니다.
도서 관리 프로그램에서 관리할 도서 정보를 클래스로 정의합시다.
도서 번호, 제목, 내용, 이미지, 출판일을 멤버로 합니다.
클래스 이름은 Book으로 하며 멤버 필드, 생성자, 멤버 필드 접근자와 설정자를 제공합니다.
직렬화를 제공하기 위해 CObject 클래스에서 파생하며 Serialize 메서드를 재정의합니다.
그리고 CArchive 참조를 입력인자로 받는 생성자도 제공합니다.
![Book 클래스 다이어그램](https://ehpub.co.kr/wp-content/uploads/2023/09/Book-클래스.png)
Book.h
#pragma once
class Book:public CObject
{
int no;
CString title;
CString content;
CString image;
COleDateTime pubdate;
public:
Book(int no, CString title, CString content, CString image, COleDateTime pubdate);
Book(CArchive& ar);
int GetNo();
CString GetTitle();
CString GetContent();
CString GetImage();
COleDateTime GetPubdate();
void SetTitle(CString title);
void SetContent(CString content);
void SetImage(CString image);
void SetPubdate(COleDateTime pubdate);
virtual void Serialize(CArchive& ar);
};
Book.cpp
도서 정보를 입력받는 생성자에서는 멤버 필드를 설정하는 기본 작업을 수행합니다.
Book::Book(int no, CString title, CString content, CString image, COleDateTime pubdate)
{
this->no = no;
this->title = title;
this->content = content;
this->image = image;
this->pubdate = pubdate;
}
멤버 필드의 값을 반환하는 접근자 메서드와 설정하는 메서드도 정의합시다.
특별한 내용은 없습니다.
int Book::GetNo()
{
return no;
}
CString Book::GetTitle()
{
return title;
}
CString Book::GetContent()
{
return content;
}
CString Book::GetImage()
{
return image;
}
COleDateTime Book::GetPubdate()
{
return pubdate;
}
void Book::SetTitle(CString title)
{
this->title = title;
}
void Book::SetContent(CString content)
{
this->content = content;
}
void Book::SetImage(CString image)
{
this->image = image;
}
void Book::SetPubdate(COleDateTime pubdate)
{
this->pubdate = pubdate;
}
CArchive 참조를 입력인자로 받는 생성자에서는 Serialize를 호출합니다.
Seialize 메서드에서는 저장을 위한 것인지 로딩을 위한 것인지에 따라 출력 혹은 입력을 수행합니다.
Book::Book(CArchive& ar)
{
Serialize(ar);
}
void Book::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
ar<<no;
ar<<title;
ar<<content;
ar<<image;
ar<<pubdate;
}
else
{
ar >> no;
ar >> title;
ar >> content;
ar >> image;
ar >> pubdate;
}
}
다음은 Book.cpp 전체 소스 코드 내용입니다.
#include "pch.h"
#include "Book.h"
Book::Book(int no, CString title, CString content, CString image, COleDateTime pubdate)
{
this->no = no;
this->title = title;
this->content = content;
this->image = image;
this->pubdate = pubdate;
}
int Book::GetNo()
{
return no;
}
CString Book::GetTitle()
{
return title;
}
CString Book::GetContent()
{
return content;
}
CString Book::GetImage()
{
return image;
}
COleDateTime Book::GetPubdate()
{
return pubdate;
}
void Book::SetTitle(CString title)
{
this->title = title;
}
void Book::SetContent(CString content)
{
this->content = content;
}
void Book::SetImage(CString image)
{
this->image = image;
}
void Book::SetPubdate(COleDateTime pubdate)
{
this->pubdate = pubdate;
}
Book::Book(CArchive& ar)
{
Serialize(ar);
}
void Book::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
ar<<no;
ar<<title;
ar<<content;
ar<<image;
ar<<pubdate;
}
else
{
ar >> no;
ar >> title;
ar >> content;
ar >> image;
ar >> pubdate;
}
}