ページ数 |
内容 |
書籍修正刷 |
電子書籍訂正 |
発生刷 |
登録日 |
028
下から3行目 |
誤 |
「親クラスを抽象クラスにして共通のメンバ関数として実装しまおう」 |
正 |
「親クラスを抽象クラスにして共通のメンバ関数として実装してしまおう」 |
|
2刷 |
済 |
1刷 |
2009.06.15 |
045
下から3~2行目 |
誤 |
この例では、初めてgetFileMap()を呼び出すときまで変数fileMapの初期化を行ないません。getFileMap()が呼ばれなかった場合には、 |
正 |
この例では、初めてgetFileList()を呼び出すときまで変数fileListの初期化を行いません。getFileList()が呼ばれなかった場合には、 |
|
2刷 |
済 |
1刷 |
2009.03.13 |
050
下から2行目 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
051
図2.4 |
誤 |
― |
正 |
 |
備
考 |
左上隅点線枠内に「ビジターパターン」を追加 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
058
箇条書きの2項目目 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
061
9行目 |
誤 |
さらに、呼び出し側のクラス(関数)に唯一のPrintSpoolオブジェクトを
|
正 |
さらに、唯一のPrintSpoolオブジェクトを |
|
未 |
済 |
1刷 |
2012.08.28 |
065
リスト3.8の20~22行目 |
誤 |
static PrintSpoolRev* getInstance(int idx) { static map<int, PrintSpoolRev*> instances;
map<int, PrintSpoolRev*>::iterator it; it = instances.find(idx); if (it != instances.end()) return (*it).second;
PrintSpoolRev* tmpobj = new PrintSpoolRev(idx); instances.insert(make_pair(idx, tmpobj)); return tmpobj; }
|
正 |
static PrintSpoolRev* getInstance(int idx) { static map<int, PrintSpoolRev*> instances;
map<int, PrintSpoolRev*>::iterator it; it = instances.find(idx); if (it != instances.end()) return (*it).second;
PrintSpoolRev* tmpobj = new PrintSpoolRev(idx); instances.insert(make_pair(idx, tmpobj)); return tmpobj; }
|
備
考 |
字下げの位置を修正 |
|
未 |
済 |
1刷 |
2012.08.28 |
074
図4.2 |
誤 |
+ create() |
正 |
+ create() |
備
考 |
DataObjectクラスのcreate()メソッドに下線を追加 |
|
2刷 |
済 |
1刷 |
2012.07.03 |
078
リスト4.6の2行上 |
誤 |
オブジェクト生成の責任をDataObjectFactoryに負わせますので、DataObjectはリスト4.3の状態に戻します。 |
正 |
オブジェクト生成の責任をDataObjectFactoryクラスに移すので、DataObjectクラスのcreate()メソッドは不要となり、リスト4.7となります。
|
|
2刷 |
済 |
1刷 |
2008.12.26 |
079
リスト4.6の後ろ |
誤 |
― |
正 |
リスト4.7 オブジェクト生成の責任を移した後のDataObjectクラス
【FactoryMethod.h】 class DataObject { public: virtual string getName(int id) = 0; };
|
備
考 |
「リスト4.6」の後ろに「リスト4.7」を追加。以降、84ページまでリスト番号が1ずつずれます。
|
|
2刷 |
済 |
1刷 |
2008.12.26 |
082
リスト番号 |
誤 |
リスト4.7 発展1後のファクトリメソッド
リスト4.8 修正後のDataObjectFactoryクラス
|
正 |
リスト4.8 発展1後のファクトリメソッド
リスト4.9 修正後のDataObjectFactoryクラス
|
|
2刷 |
済 |
1刷 |
2012.07.03 |
083
リスト番号 |
誤 |
リスト4.9 DataObjectFactoryインターフェース
リスト4.10 FileDataObjectFactoryクラス
リスト4.11 DBDataObjectFactoryクラス
|
正 |
リスト4.10 DataObjectFactoryインターフェース
リスト4.11 FileDataObjectFactoryクラス
リスト4.12 DBDataObjectFactoryクラス
|
|
2刷 |
済 |
1刷 |
2012.07.03 |
084
リスト番号 |
誤 |
リスト4.12 DefaultDataObjectFactoryインターフェース
|
正 |
リスト4.13 DefaultDataObjectFactoryインターフェース
|
|
2刷 |
済 |
1刷 |
2012.07.03 |
094
下から3行目 |
誤 |
virtual void makeBase() const { cout << "バースデーケーキ用スポンジ作成" << endl; }
|
正 |
virtual void makeBase() const { cout << "バースデーケーキ用スポンジ作成" << endl; }
|
備
考 |
字下げの位置を修正 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
095
リスト5.6の3~5行目 |
誤 |
virtual CakeBase* CreateBase() = 0; virtual Fruit* CreateFruit() = 0; virtual Decoration* CreateDecoration() = 0;
|
正 |
virtual CakeBase* createBase() = 0; virtual Fruit* createFruit() = 0; virtual Decoration* createDecoration() = 0;
|
|
2刷 |
済 |
1刷 |
2008.12.24 |
096
下から5行目 |
誤 |
デコレーションケーキすべてを入れられる |
正 |
<削除> |
|
未 |
済 |
1刷 |
2012.08.28 |
097
図5.1のDecorationクラス、BirthdayDecorationクラス、XmasDecorationクラスのメソッド
|
誤 |
+ makeDecoration()
|
正 |
+ makeDecoration()
+ makeDecoration(name:string)
|
|
未 |
済 |
1刷 |
2012.08.28 |
098
図5.2 |
誤 |
― |
正 |
 |
備
考 |
<第1刷をお持ちの場合>
・AbstractFactoryクラスのメソッド
誤:+ CreateProductA() 正:+ createProductA()
誤:+ CreateProductB() 正:+ createProductB()
・ConcreteFactory1クラスおよびConcreteFactory2クラスのメソッド
誤:+ CreateFactoryA() 正:+ createProductA()
誤:+ CreateFactoryB() 正:+ createProductB()
・誤:AbstractProductA1 正:ConcreteProductA1
・誤:AbstractProductA2 正:ConcreteProductA2
・誤:AbstractProductB1 正:ConcreteProductB1
・誤:AbstractProductB2 正:ConcreteProductB2
<第2刷をお持ちの場合>
・誤:concreteProductA1 正:ConcreteProductA1
・誤:concreteProductA2 正:ConcreteProductA2
・誤:concreteProductB1 正:ConcreteProductB1
・誤:concreteProductB2 正:ConcreteProductB2
|
|
未 |
済 |
1刷 |
2012.07.05 |
105
リスト6.4の下から3行目 |
誤 |
void writeFile(string outfilename, string modData) { |
正 |
void writeToFile(string outfilename, string modData) { |
|
2刷 |
済 |
1刷 |
2008.12.24 |
107、108
P107「リスト6.8」P108「リスト6.9」「リスト6.10」それぞれの下から2行目 |
誤 |
string TabToCSVFormatter::writeToFile(string outfilename,
|
正 |
void TabToCSVFormatter::writeToFile(string outfilename,
|
|
2刷 |
済 |
1刷 |
2008.12.24 |
109
本文1行目 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
117
箇条書き1項目目と2項目目、リスト7.2の5行目と6行目 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
121
リスト7.7の5行目と6行目 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
121
リスト7.7の下から3行目 |
誤 |
}
delete pMachine;
|
正 |
}
delete it;
delete pMachine;
|
|
2刷 |
済 |
1刷 |
2010.01.05 |
123
リスト7.8の3行目 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
145
7行目 |
誤 |
writeString()をオーバーライドする |
正 |
writeString()をオーバーロードする |
|
未 |
済 |
1刷 |
2012.08.28 |
156
10~11行目 |
誤 |
it += current + 1;
it += current + 1;
|
正 |
it += current + 1; |
|
未 |
済 |
2刷 |
2012.07.05 |
156、160
P.156の最初のコードの中ほど、P.160のコードの後半 |
誤 |
history.erase(it, history.end());
|
正 |
while (it != history.end()) { history.erase(it); delete (*it++); }
|
|
2刷 |
済 |
1刷 |
2009.03.11 |
161
リスト10.4の最後に追加 |
誤 |
― |
正 |
Point* Command::getPoint(){ return point; }
|
備
考 |
CommandクラスにCommand::getPointを追加 |
|
未 |
済 |
1刷 |
2012.08.28 |
163
図10.3のMoveCommandクラスとLineCommandクラスのメソッド(2か所) |
|
2刷 |
済 |
1刷 |
2012.07.04 |
172、174
P.172の図11.1、P.174の図11.2 |
誤 |
(Televisionクラスのメソッド) + tvOff
(Bathクラスのメソッド) + switchOff
|
正 |
(Televisionクラスのメソッド) + tvOff()
(Bathクラスのメソッド) + switchOff()
|
|
2刷 |
済 |
1刷 |
2012.07.04 |
178
最下行 |
誤 |
pEBox->state->showCurrentState(); |
正 |
<削除> |
|
2刷 |
済 |
1刷 |
2008.12.25 |
178
箇条書き1項目目 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
179
リスト12.2の【State.h】 |
誤 |
class EngineBox { public: void up(); void down();
|
正 |
class EngineBox { public: EngineBox(); void up(); void down();
|
|
2刷 |
済 |
1刷 |
2008.12.25 |
186
図12.3 右下のクラス名 |
誤 |
ConcreteSateA
ConcreteSateB
|
正 |
ConcreteStateA
ConcreteStateB
|
|
未 |
済 |
1刷 |
2012.07.27 |
197
図13.8 |
誤 |
― |
正 |
 |
備
考 |
「7:新しい色情報を取得する()」の矢印の起点を「色表現」に修正 |
|
未 |
済 |
1刷 |
2012.11.13 |
216
表15.1のフィールド名 |
|
2刷 |
済 |
1刷 |
2012.07.04 |
216
表15.2のフィールド名 |
|
2刷 |
済 |
1刷 |
2012.07.04 |
220
図15.2 |
誤 |
― |
正 |
 |
備
考 |
・「SetData」クラスを「SaleData」クラスに訂正
・SaleDataクラスのsetDate()とgetId()の間にあった罫線を削除 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
228
図15.4 |
誤 |
― |
正 |
 |
備
考 |
・3本の実線を破線に訂正
・「Subject」の上に「«interface»」のステレオタイプを追加
・「Subject」「+ request()」を斜体から正体に訂正
|
|
2刷 |
済 |
1刷 |
2011.10.27 |
239
リスト16.8の9行目 |
誤 |
pDirector->constract(pBuilder); |
正 |
pDirector->construct(pBuilder); |
|
未 |
済 |
1刷 |
2012.08.28 |
240
図16.1のHomeBuilderインタフェース、ModernHomeBuilderクラス、EuropeanHomeBuilderクラス、JapaneseHomeBuilderクラスのメソッド名
|
誤 |
+getStructure() |
正 |
+setStructure()
|
|
未 |
済 |
1刷 |
2012.08.28 |
245
リスト17.3 下から3行目 |
誤 |
virtual void writeFile(string& str); |
正 |
virtual void writeString(string& str); |
|
未 |
未 |
1刷 |
2015.07.24 |
257
箇条書き1項目目 |
誤 |
getSelectedItem()メソッド |
正 |
getMonth()メソッド |
|
2刷 |
済 |
1刷 |
2011.10.27 |
265
図18.4 |
誤 |
― |
正 |
 |
備
考 |
・MediatorとColleagueの間にある矢印を逆向きに訂正
・ConcretemediatorとConcreteColleagueAおよびBの矢印について、向きを逆にし、線の片端にある白抜きのひし形を削除 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
272
図19.1 |
誤 |
― |
正 |
 |
備
考 |
LightLuggageDeliveryクラス、mediumLuggageDeliveryクラス、およびHeavyLuggageDeliveryクラスのメソッドを次のとおり訂正
誤 + checkLuggage() + deliver 正 + checkLuggage(luggage:Luggage) + deliver(luggage:Luggage)
|
|
2刷 |
済 |
1刷 |
2012.07.04 |
275
図19.2 |
誤 |
― |
正 |
― |
備
考 |
<第1刷をお持ちの場合> ・Deliveryクラスの属性 誤:-successor_ 正:-pSuccessor ・Deliveryクラスのメソッド 誤:+ checkLuggage() + deliver() + handle() + getAcceptance() 正:+ checkLuggage(pLuggage:Luggage) + deliver(pLuggage:Luggage) + handle(pLuggage:Luggage) # getAcceptance(pLuggage:Luggage) ・LightLuggageDeliveryクラス、mediumLuggageDeliveryクラスおよびHeavyLuggageDeliveryクラスのメソッド 誤:+ checkLuggage() + deliver 正:+ checkLuggage(pLuggage:Luggage) + deliver(pLuggage:Luggage) + handle(pLuggage:Luggage) <第2刷をお持ちの場合> ・Deliveryクラスの属性 誤:-successor_ 正:-pSuccessor ・Deliveryクラスのメソッド 誤:+ checkLuggage(luggage:Luggage) + deliver() + handle(luggage:Luggage) + getAcceptance() 正:+ checkLuggage(pLuggage:Luggage) + deliver(pLuggage:Luggage) + handle(pLuggage:Luggage) # getAcceptance(pLuggage:Luggage) ・LightLuggageDeliveryクラス、mediumLuggageDeliveryクラスおよびHeavyLuggageDeliveryクラスのメソッド 誤:+ checkLuggage(luggage:Luggage) + deliver() + handle(luggage:Luggage) 正:+ checkLuggage(pLuggage:Luggage) + deliver(pLuggage:Luggage) + handle(pLuggage:Luggage)
|
|
未 |
済 |
1刷 |
2011.10.27 |
276
図19.3のHandlerクラス |
誤 |
― |
正 |
|
備
考 |
Handlerに属性の枠を追加し、線に「successor」を付加 |
|
未 |
済 |
1刷 |
2012.08.28 |
290
7行目 |
誤 |
pBrWriter->write("localFile¥n"); |
正 |
pBrWriter->writeData("localFile¥n");
|
|
未 |
済 |
1刷 |
2012.08.28 |
291
6行目 |
誤 |
pDbWriter->write("localFile¥n"); |
正 |
pDbWriter->writeData("localFile¥n"); |
|
未 |
済 |
1刷 |
2012.08.28 |
291
リスト20.9の5行目 |
誤 |
virtual writeData(string str); |
正 |
virtual void writeData(string str); |
|
未 |
済 |
1刷 |
2012.08.28 |
291
リスト20.9【Decorator.cpp】 |
誤 |
AbstractDecoratorWriter::CAbstractDecoratorWriter(Writer* pOut) { this->pOut = pOut; } AbstractDecoratorWriter::writeData(string str) { pOut->write(str); }
|
正 |
AbstractDecoratorWriter::AbstractDecoratorWriter(Writer* pOut) { this->pOut = pOut; } void AbstractDecoratorWriter::writeData(string str) { pOut->writeData(str); }
|
|
未 |
済 |
1刷 |
2012.08.28 |
293
図20.8の一番下のコメント |
誤 |
component::operation(); |
正 |
Decorator::operation(); |
|
未 |
済 |
1刷 |
2012.08.28 |
293
図20.8 |
誤 |
― |
正 |
 |
備
考 |
以下は第2刷で訂正済みです
・ConcreteComponentとDecoratorクラスからComponentクラスへの矢印線を実線から破線に訂正
・「Component」の上に「«interface»」のステレオタイプを追加
・「Component」「operation()」を斜体から正体に訂正
以下は第2刷で未訂正、電子版で訂正済みです
・一番下のボックスを、「component::operation();」から「Decorator::operation();」に訂正
|
|
未 |
済 |
1刷 |
2011.10.27 |
299
リスト21.1の5~6行目 |
誤 |
void add(Node* pNode) = 0;
vector<Node*> find(string name); |
正 |
virtual void add(Node* pNode) = 0;
virtual list<Node*> find(string name); |
|
未 |
済 |
1刷 |
2012.08.28 |
299
リスト21.1の下から7~3行目 |
誤 |
list<Node*>& Node::find(string name) { list<Node*>* pResult = new list<Node*>; if (this->getName().compare(name)) pResult->push_back(this); return* pResult; }
|
正 |
list<Node*>* Node::find(string name) { list<Node*>* pResult = new list<Node*>; if (this->getName().compare(name) == 0) pResult->push_back(this); return pResult; }
|
|
未 |
済 |
1刷 |
2012.08.28 |
300
リスト21.2の5行目 |
誤 |
virtual ~File(); |
正 |
<削除> |
|
未 |
済 |
1刷 |
2012.08.28 |
300
リスト21.3の5行目 |
誤 |
virtual ~Directory(); |
正 |
<削除> |
|
未 |
済 |
1刷 |
2012.08.28 |
300
リスト21.3の下から4行目 |
誤 |
list<Node*>* pResult = new list<Node*>;
|
正 |
list<Node*>* pResult = Node::find(name); |
|
未 |
済 |
1刷 |
2012.08.28 |
301
1~8行目(リスト21.3) |
誤 |
if(temp->size() != 0 ) { pResult->merge(*temp); delete temp; } it++; } return result; }
|
正 |
if(temp->size() != 0 ) { pResult->merge(*temp); } delete temp; it++; } return pResult; }
|
|
未 |
済 |
1刷 |
2012.08.28 |
304
コードの下1行目 |
誤 |
visit()メソッドでは、検索対象のディレクトリ(またはファイル)か否かを判断して、
|
正 |
visit()メソッドでは、検索対象のディレクトリまたはファイルの名前が指定されたものかを判断して、
|
|
未 |
済 |
1刷 |
2012.08.28 |
305
図21.2 |
誤 |
― |
正 |
― |
備
考 |
以下のとおり、修正します。
・ライフライン 誤:directory:Node 正:pDirectory:Node 誤:file:Node 正:pFile:Node ・メッセージ 誤:1:find(node,name) 正:1:find(pNode,name) 誤:2:accept(visitor) 正:2:accept(pVisitor) 誤:3:visit(directory) 正:3:visit(pDirectory) 誤:5:accept(visitor) 正:5:accept(pVisitor) 誤:6:visit(file) 正:6:visit(pFile)
|
|
未 |
済 |
1刷 |
2012.08.28 |
306
図21.3のListVisitorクラスのメソッド |
誤 |
+ find(name : String) : String |
正 |
+ list(pNode : Node*) : String |
|
未 |
済 |
1刷 |
2012.08.28 |
318
「22.6 拡張」の5~6行目 |
誤 |
その場合は、オブジェクトのコピーを司る工場の役割を果たすクラスが必要になります。
|
正 |
<削除>
|
|
未 |
済 |
1刷 |
2012.08.28 |
320
リスト22.8の13~16行目 |
誤 |
public: A* pA; protected: virtual Cloneable* clone();
|
正 |
public: A* pA; virtual Cloneable* clone();
|
備
考 |
clone()メソッドの可視性を修正 |
|
未 |
済 |
1刷 |
2012.08.28 |
330
リスト23.7の6行目 |
誤 |
class BillCoinFactory { public: BillCoinFactory();
|
正 |
class BillCoinFactory { public: BillCoinFactory();
|
備
考 |
public:の字下げの位置を修正 |
|
未 |
済 |
1刷 |
2012.08.28 |
330
リスト23.7【Flyweight.cpp】の1行目 |
誤 |
map<int, BillCoin*> BillCoinFactory::coins; |
正 |
<削除> |
|
未 |
済 |
1刷 |
2012.08.28 |
342
リスト24.1の下から14行目 |
誤 |
CCell* pCell = (*it); |
正 |
Cell* pCell = (*it); |
|
未 |
済 |
1刷 |
2012.08.28 |
343
(リスト24.1)12行目 |
誤 |
list<list<CCell*>*>::iterator itCells = stack.begin(); |
正 |
list<list<Cell*>*>::iterator itCells = stack.begin(); |
|
未 |
済 |
1刷 |
2012.08.28 |
343
(リスト24.1)16行目 |
誤 |
list<Cell*>::iterator itCell = (*it)->begin();
|
正 |
list<Cell*>::iterator itCell = (*itCells)->begin();
|
|
未 |
済 |
1刷 |
2012.08.28 |
346
【Memento.cpp】の8行目 |
|
未 |
済 |
1刷 |
2012.08.28 |
347
2行目~(リスト24.3) |
誤 |
void SheetWithMemento::undo() { if (current < 0) return; list<CCellMemento*>::iterator it = stack.begin(); for (int i = 0;it != stack.end(); it++, i++) { if (current == i) break; } CellMemento* memento = (*it); cellList.remove(memento->getNewCell()); if (memento->getOldCell() != NULL) cellList.push_back(memento->getOldCell()); if (current >= 0) current--; }
|
正 |
void SheetWithMemento::undo() { if (current < 0) return; list<CellMemento*>::iterator it = stack.begin(); for (int i = 0; it != stack.end(); it++, i++) { if (current == i) break; } CellMemento* pMemento = (*it); cellList.remove(pMemento->getNewCell()); if (pMemento->getOldCell() != NULL) cellList.push_back(pMemento->getOldCell()); current--;
|
|
未 |
済 |
1刷 |
2012.08.28 |
348
リスト24.4の下から2~1行目 |
誤 |
Cell* CCellMemento::getNewCell() { return pNewCell; }
Cell* CCellMemento::getOldCell() { return pOldCell; } |
正 |
Cell* CellMemento::getNewCell() { return pNewCell; }
Cell* CellMemento::getOldCell() { return pOldCell; } |
|
未 |
済 |
1刷 |
2012.08.28 |
350
図24.4 |
誤 |
― |
正 |
 |
備
考 |
・コメントがどのメソッドに対するものかを明示
・OriginatorからMementoへの線に«create»を付加 |
|
未 |
済 |
1刷 |
2012.08.28 |
350
図24.4、MementoクラスとCaretakerクラスの間 |
|
2刷 |
済 |
1刷 |
2011.10.27 |
354
25.2の2行目~5行目 |
誤 |
指定席は売れ切れの場合は購入できません。指定席がなければ自由席を購入する客がほとんどでですが、指定席がなければ自由席は購入しない客もいます。また、自由席の方をあえて好む客もいます。指定席が入手可能な状況と入手不可能な状況で、客が入手できる切符はどのように変化するでしょうか。 |
正 |
指定席は売り切れの場合は購入できません。指定席がなければ自由席を購入する客がほとんどですが、購入しない客もいます。また、指定席より自由席を好む客もいます。指定席が入手可能な状況と入手不可能な状況で、客が入手する切符はどのように変化するでしょうか。
|
|
2刷 |
済 |
1刷 |
2011.10.27 |
356
(リスト25.2)最後の3つのコンストラクタ呼び出しの引数 |
誤 |
Policy* Policy::preferReservedSeat() { return new Policy(PREFER_RESERVED SEAT); } Policy* Policy::necessaryReservedSeat() { return new Policy(NECESSARY_RESERVED SEAT); } Policy* Policy::preferUnreservedSeat() { return new Policy(PREFER_UNRESERVED SEAT); }
|
正 |
Policy* Policy::preferReservedSeat() { return new Policy(PREFER_RESERVED_SEAT); } Policy* Policy::necessaryReservedSeat() { return new Policy(NECESSARY_RESERVED_SEAT); } Policy* Policy::preferUnreservedSeat() { return new Policy(PREFER_UNRESERVED_SEAT); }
|
備
考 |
引数中のスペースをアンダーバーに修正(3か所) |
|
未 |
済 |
1刷 |
2012.08.28 |
362
リスト25.9【Interpreter.cpp】の1~8行目 |
誤 |
ConditionPolicy::ConditionPolicy( TimeCondition* pCondition, AbstractPolicy* pBodyPolicy, AbstractPolicy* pElsePolicy) { this->pCondition = pCondition; this->pBodyPolicy = pBodyPolicy; this->pElsePolicy = pElsePpolicy; }
|
正 |
ConditionPolicy::ConditionPolicy(TimeCondition* pCondition, AbstractPolicy* pBodyPolicy, AbstractPolicy* pElsePolicy) { this->pCondition = pCondition; this->pBodyPolicy = pBodyPolicy; this->pElsePolicy = pElsePolicy; }
|
備
考 |
・字下げの位置を修正
・「pElsePpolicy」を「pElsePolicy」に修正 |
|
未 |
済 |
1刷 |
2012.08.28 |
363
図25.3 |
誤 |
― |
正 |
 |
備
考 |
AbstractPolicyとConditionalPolicyの間に汎化の線(白抜き矢印)を追加 |
|
未 |
済 |
1刷 |
2012.08.28 |
363
図25.3 下段のクラス名 |
誤 |
PreferReservedPolicy
NecessaryReservedPolicy
PreferNonReservedPolicy
|
正 |
PreferReservedSeatPolicy
NecessaryReservedSeatPolicy
PreferNonReservedSeatPolicy
|
|
2刷 |
済 |
1刷 |
2012.07.04 |
364
3つ目の小見出し |
誤 |
NonterminalExpressionクラス |
正 |
NonTerminalExpressionクラス |
|
2刷 |
済 |
1刷 |
2011.10.27 |
388
第19章 3.の【答】 |
誤 |
Sucssesorリンク。 |
正 |
sucsessorリンク。 |
|
2刷 |
済 |
1刷 |
2011.10.27 |