1. 設計思想:なぜクラスを作るのか?

関連するデータと操作を一つの部品(クラス)にまとめることで、コードの見通しが良くなり、安全かつ簡単に使えるようになります。下の図は`BitcoinExchange`クラスの設計図です。

class BitcoinExchange

public:

void loadDatabase(...)
void processInputFile(...)

private:

std::map _exchangeRates;
bool isValidDate(...)
bool isValidValue(...)

2. 技術選択の核心:なぜ`std::map`か?

`std::map`(平衡二分探索木)の採用が、このプログラムの性能を決定づけました。その`O(log N)`という圧倒的な検索効率を、非効率な線形探索`O(N)`と比較してみましょう。

3. 堅牢なプログラムの作り方

良いプログラムは予期せぬ事態にも壊れません。このプログラムでは、C++の重要な原則を用いて堅牢性を確保しています。カードに触れて詳細を確認してください。

リソース管理の自動化 (RAII)

オブジェクトの寿命とリソースの寿命を一致させる設計原則。

なぜ安全?

例外が発生してもデストラクタが呼ばれ、メモリやファイルが自動で解放されるため、リソースリークを防ぎます。

コピーの禁止

高コストなデータを持つオブジェクトのコピーをコンパイルレベルで禁止。

なぜ重要?

巨大な`std::map`の意図しない複製を防ぎ、深刻なパフォーマンス低下を未然に回避します。

4. 品質の証明:テスト戦略

プログラムの正しさと効率は、網羅的なテストによって証明されます。各テストがどのような目的を持つのか、タブを切り替えて確認しましょう。