?????????н???
????????????????????????????????????????????????????????????????????????????????????????????????????????????(+)??(-)?????л???????????????
????Java??????????Java????interface????????????????C++????н??????????????????????????????????????????????????麯????????????????????????????????????
???????????????????????????????????????????????????????????????????(????????????????????)?????????????????????????(?????lib?????dll)????????á?????????????????????????????????????????????C++?????????????(????????Java??????Java????jar??????????????????C++??????????????)????????????????????????????????
??????????????????????
???????

???????????????????????????????????????(Document)???????????ж???(Page)?????????ж????????(TextUnit???????????????????λ)?????????е????????????????е?ID?????????????£?
??????????


????
?1 ????????

???????
????????????????????????????Document??Page??TextUnit?????????????????????????????????????????????????????????????????IDocument??IPage??ITextUnit??
??????????Щ???????????.cpp?????.h??????????1???(EBook)???????£?
????????д??????


??
???2: ????????

????????Document??Page??TextUnit???????????IDocument??IPage??ITextUnit???????????????????????????????
???????????
????IDocument.h??
#pragma once
class IPage;
class IDocument
{
public:
virtual ~IDocument(void){}
public:
//---------------------------------------------------------------
//function:
//          GenerateId ??????????????????ID
//Access:
//          virtual  public
//Parameter:
//Returns:
//          int - ????ID
//Remarks:
//          ...
//author:    luoweifu
//---------------------------------------------------------------
virtual int GenerateId() = 0;
//---------------------------------------------------------------
//function:
//          AddPage ?????
//Access:
//          virtual  public
//Parameter:
//Returns:
//          IPage* - ?????????
//Remarks:
//          ...
//author:    luoweifu
//---------------------------------------------------------------
virtual IPage* AddPage() = 0;
};

#pragma once
class ITextUnit;
class IPage
{
public:
virtual ~IPage(void){}
public:
//---------------------------------------------------------------
//function:
//          AddTextUnit ????????????
//Access:
//          virtual  public
//Parameter:
//Returns:
//          ITextUnit* - ??????????
//Remarks:
//          ...
//author:   luoweifu
//---------------------------------------------------------------
virtual ITextUnit* AddTextUnit() = 0;
};
ITextUnit.h
#pragma once
class ITextUnit
{
public:
~ITextUnit(void){}
public:
//---------------------------------------------------------------
//function:
//          GetId ???ID
//Access:
//          virtual  public
//Parameter:
//Returns:
//          int - ????ID
//Remarks:
//          ...
//author:   luoweifu
//---------------------------------------------------------------
virtual int GetId() = 0;
//---------------------------------------------------------------
//function:
//          SetId ????ID
//Access:
//          virtual  public
//Parameter:
//          [in] int id - ??????ID
//Returns:
//          void -
//Remarks:
//          ...
//author:   luoweifu
//---------------------------------------------------------------
virtual void SetId(int id) = 0;
};