STLをいろいろ使ってみようと思います 第3回 list

今回はlistです。 #include <iostream> #include <list> int main() { std::list<int> l; // vector同様push_back()で要素を追加できる l.push_back(1); l.push_back(2); // push_front()でも追加可能 l.push_front(3); l.push_front(4); std::cout << "要素を追加" << std::endl;</int></list></iostream>…

STLをいろいろ使ってみようと思います 第2回 vector(2)

今日もvectorです。 #include <iostream> #include <vector> int main() { std::vector<int> v; for(int i = 0; i < 5; ++i) v.push_back(i); v.erase(v.begin() + 1); // 先頭の次の要素を削除する std::cout << "先頭の次を削除" << std::endl; for(std::vector<int>::iterator it = v.</int></int></vector></iostream>…

STLをいろいろ使ってみようと思います 第1回 vector(1)

第一回はvectorを取り上げたいと思います。まずは基本的な使い方。 #include <iostream> #include <vector> int main() { std::vector<int> v; v.push_back(1); // push_backで要素を末尾に追加 v.push_back(2); v.push_back(3); std::cout << std::endl << "イテレータでアクセス" <</int></vector></iostream>…

STLをいろいろ使ってみようと思います 第0回 はじめに

前回のデザインパターン企画で、毎日少しずつでもなんか書くってのはいいなぁと思ったので続けます。今日からはSTLの簡単なサンプルを書いて使い方を学んでいこうとおもいます。普段vectorや一部のalgorithmの関数は使ったりしますが、"list? deque? よくわ…

C++でデザインパターンを実装していこうよ 第23回 Iteratorパターン

ついに今回でこの企画も最後ですね。最後はIteratorパターンです。なんか理由があってIteratorを最後に持ってきたかというと、そういうわけでもなくて、ないわけでもなくて、、、というのは、IteratorパターンをC++で実装したところでほぼ意味が無いというか…

C++でデザインパターンを実装していこうよ 第22回 Interpreterパターン

興味深くはあるし、学んでよかったとは思うけれど…。自分が個人的に作るソフトに拡張用のスクリプト的なのをつけようとしたら、 http://code.google.com/p/chibi-scheme/ この辺のありもんを使えないかってまず考えるし、 自分でちゃんと作るならもっといろ…

C++でデザインパターンを実装していこうよ 第21回 Commandパターン

コマンドパターンです。アンドゥリドゥにつかえます。というか、呼び出し時と別のタイミングで必要なパラメタを渡しておけて、使うときは何も知らんでもExecute()を呼び出せばオブジェクト側で良い感じに実行してくれるってのがいいってはなしですね。http:/…

C++でデザインパターンを実装していこうよ 第20回 Proxyパターン

今回はProxyパターンです。今回のサンプルだとなんもメリットが無い感じですね。なんしか一枚皮をかぶせることによってオブジェクトの生成のタイミングを遅らせたり、アクセス権を設定したりとかいろいろできるよってことみたいです。汎用的な分抽象的ですが…

C++でデザインパターンを実装していこうよ 第19回 FlyWeightパターン

今回はFlyWeightパターンです。 とってもSingletonっぽいですね。ただ、一度生成したインスタンスをSingletonではインスタンスそのものがstaticとして持っていたのに対し、FlyWeightでは今回のサンプルだとCharacterFactoryがコレクションとして持っています…

C++でデザインパターンを実装していこうよ 第18回 Stateパターン

C#のコードだと.hと.cppに分けるみたいなことはないっぽいので、というかすくなくともサンプルコードではそういうことはないのでなんとなくそれっぽくC++で書いてきて、いままでほぼ問題なかったのでそのままだったんですが、今回はヘッダと分けたほうがよか…

C++でデザインパターンを実装していこうよ 第17回 Mementoパターン

オブジェクトの状態を保存する、ってやつですね。今回のサンプルで微妙なのはname_とかphone_とかがかぶっちゃってるところですね。今回の場合Mementoクラスがただのデータホルダクラスなんだから、SalesProspectクラスのメンバとしてMementoオブジェクトの…

C++でデザインパターンを実装していこうよ 第16回 Mediatorパターン

この企画の良い点は、あんまり考えなくてもコードをC++に書き直してるうちになんとなく"あーそういうことか"ってなるので、仕事が終わってから寝る前にビャってやってしまえる点です。良くない点はあんまり考えないし、わざわざいろいろ調べるほどには元気が…

C++でデザインパターンを実装していこうよ 第15回 ChainOfResponsibilityパターン

今回はChainOfResponsibilityパターンです。たらいまわし的なことでしょうか?まず、Approverクラスの子をSetSuccessor()メソッドで鎖状につなげます。そしたら、その鎖に対してひとつずつ引数として渡されたPurchaseオブジェクトを受け入れるか否かをProces…

C++でデザインパターンを実装していこうよ 第14回 Visitorパターン

今回は、Visitorパターンです。 初めて見たときは完全に"?"でしたが、今見ると少し面白いですね。訪問されるオブジェクト(例ではElementインタフェースの実装であるEmployeeとか)のコレクション(Employees)に、訪問するオブジェクト(IVisitorインタフェース…

C++でデザインパターンを実装していこうよ 第13回 Compositeパターン

今回はCompositeパターンです。要は、"フォルダはフォルダもファイルも一緒くたに格納できるよ"的なことですね。今回はPrimitiveElementは直線とか円とかの単純な図形で、CompositeElementはそれらの単純な図形やそれを組み合わせたCompositeElementを組み合…

C++でデザインパターンを実装していこうよ 第12回 Builderパターン

やっと半分きましたね。今回はBuilderパターンです。オブジェクトの生成に関するパターンとして、すでにAbstractFactoryパターンやFactoryMethodパターンを扱いましたね。これらがどっちかというと、"あるインタフェースのどの実装を実体化するか"的なことに…

C++でデザインパターンを実装していこうよ 第11回 Prototypeパターン

Prototypeパターンは、初めて知ったときもぴんときませんでしたが、いま読み直してもぴんときませんでした。今回の例で言えば、ColorPrototypeインタフェースの任意の子クラスのコピーコンストラクタを、子クラスの種類を知らなくてもclone()メソッドから呼…

C++でデザインパターンを実装していこうよ 第10回 FactoryMethodパターン

適切な実装の集合を実体化するという目的のパターンで、AbstractFactoryとあんまり変わりません。AbstractFactoryは委譲で行っていたことを、FactoryMethodパターンでは継承を使って行っている、と考えて良いんだと思います。「これはAbstractFactory!こっち…

C++でデザインパターンを実装していこうよ 第9回 Singletonパターン

Singletonパターンは非常にわかりやすいんじゃないでしょうか。Modern C++ Designには別の方法を使った書き方みたいなのものってましたね。http://www.dofactory.com/Patterns/PatternSingleton.aspx#_self2今回は普通にstaticなメンバを使った実装です。htt…

C++でデザインパターンを実装していこうよ 第8回 TemplateMethodパターン

初めてデザインパターンを学んだとき、一番理解しやすいと感じたのがTemplateMethodパターンでした。今回の例は http://www.dofactory.com/Patterns/PatternTemplate.aspx#_self2 これです。なんかデータベースへのアクセスをしてますが、書き直したバージョ…

C++でデザインパターンを実装していこうよ 第7回 Observerパターン

http://www.dofactory.com/Patterns/PatternObserver.aspx#_self2 今回のお題は今までの中では一番良い感じかなと思います。株価(Stock::price_)が変わると投資家(Investor)に通知(Notify)が行きます。"株価が変わったら通知がいく"ってのは所謂共通性で、そ…

C++でデザインパターンを実装していこうよ 第6回 Decoratorパターン

まず今回のお題です。 http://www.dofactory.com/Patterns/PatternDecorator.aspx#_self2図書館で借りられるものというLibraryItemクラスから派生しているBookクラスとVideoクラスがあって、これにDecoratorパターンを使ってBorrowable(借りられる)という性…

C++でデザインパターンを実装していこうよ 第5回 AbstractFactoryパターン

"実装ではなく、インタフェースに対してプログラミングする" ってすると、あるインタフェースAの実装が3種類あって、別のインタフェースBの実装が4種類あるけど、一部の組合せのみにしか意味がないみたいなことが多くなります。その組合せを都度指定するん…

C++でデザインパターンを実装していこうよ 第4回 Strategyパターン

"オブジェクト指向のこころ"で3つ目はStrategyパターンでしたね。別にその順にしなきゃならないわけではないのですが、とりあえず今回はStrategyパターンにします。今回のお題は http://www.dofactory.com/Patterns/PatternStrategy.aspx#_self2 です。C++…

C++でデザインパターンを実装していこうよ 第3回 Bridgeパターン

"オブジェクト指向のこころ"をはじめて読んだとき、Bridgeパターンで一度挫折しかけました。「実装から抽象的側面を切り出して、それらを独立して変更できるようにする」"オブジェクト指向のこころ"では、[抽象的側面]がShapeクラス、[実装]がDrawingクラス…

C++でデザインパターンを実装していこうよ 第2回 Adapterパターン

C++

"オブジェクト指向のこころ"で出てくる順番にとりあえず従って、今回はAdapterパターンです。今回も http://www.dofactory.com/Patterns/PatternAdapter.aspx#_self2 をC++に移植していきましょう。https://github.com/TakahashiShuuhei/DesignPatternPracti…

C++でデザインパターンを実装していこうよ 第1回 Facadeパターン

C++

Wikipediaによれば、 "関連するクラス群を使用するための手続きを、窓口となる一つのクラスに集約することにより、プログラムの冗長性を無くすことを目的とする。" http://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3ってことらしい…

C++でデザインパターンを実装していこうよ 第0回 はじめに

デザインパターンの復習していきます。毎回1つのパターンを取り上げて、そのパターンを使えるお題を無理やりひねり出してそれをC++で実装して行こうと思います。 とおもったけど自分で無理やりひねり出すのはやめました。 思ってた以上に思いつかなかったの…

ローカルに保存したはてなダイアリーを検索できるようにした

※ 20121001 追記 Googleデスクトップ検索でしたこんばんは。僕の勤めている会社では、自席からネットにアクセスできません。 ネット専用PCでアクセスして、データを部内サーバに一度保存して、それを自席からダウンロードするという糞システムです。糞システ…

Cygwin上のg++でGoogle Mockを動かす

"実践テスト駆動開発"超良いですね。ということで、C++で使える単体テストフレームワークであるGoogle testとモックフレームワークであるGoogle Mockを使える環境を整えましょうという話になりますね。Cygwin上で動かせるようになれば、あとはどこでも動かせ…