nprogram’s blog

気ままに、プログラミングのトピックについて書いていきます

C++

Decoratorパターンについて

C++

Decoratorパターンは、オブジェクトに付加的な責務を動的に付与します。

Observerパターンについて

C++

Observerとは、英語で観察者を意味します。 Observer パターンとは、状態の変化を観察することを目的としたものですが、どちらかというと「観察」よりも「通知」に重点の置かれたものになっています。 あるインスタンスの状態が変化した際に、そのインスタン…

Strategy Patternについて

C++

[Duch.h] #include <iostream> using namespace std; //QuackBehavior インターフェース class QuackBehavior { public: virtual ~QuackBehavior() {} virtual void quack() const = 0; //純粋仮想関数(派生クラスに) }; //QuackBehaviorインターフェースを実装したQua</iostream>…

デザインパターン入門 (勉強するぞー)

C++

HeadFirstデザインパターンの本のコードのサンプルは、GitHubにあります。 http://www.wickedlysmart.com/headfirstdesignpatterns/code.htmlgithub.com 以下の本を使ってこれから、学習を進めていきたいと思います。 どうぞよろしくお願いいたします。 Head…

品質を向上させるために、テストクラスを記載しよう

C++

このように記載すれば、製品のソースコードと、テストクラスのソースコードを分離できます。 #include "box.h" #include <climits> #include <cassert> #include <iostream> class Test { public: Test() { Run(); } static void Run() { // 正常ケース assert(Test(0,0,0,0)); // 異常ケ</iostream></cassert></climits>…

コードレビューで指摘していただいた箇所まとめ (C++編)

C++

コードレビューで指摘していただいた箇所をまとめて記載したいと思います。 ポリモーフィズムのための基底クラスには、仮想デストラクタを宣言すること。なぜならデストラクタが virtual でない場合、親クラスの型のポインタを delete した際には親クラスの…

自作split関数を用いて、標準入力を、読み出す

C++

プログラムをメモします。 #include <vector> #include <iostream> #define BIG_BUFFERSIZE 1024 using namespace std; template <typename List> void split(const std::string& s, const std::string& delim, List& result) { result.clear(); using string = std::string; string::size_typ</typename></iostream></vector>…

C++で、stdinから文字列を読み込む

C++

C++で、stdinから文字列を読み込む方法をメモします。 /////////////////////// // stdin input example // using cin.getline /////////////////////// #include <iostream> using namespace std; int main() { while(cin) { getline(cin, input_line); cout << input</iostream>…