タグ

C++とクラス設計に関するyowanoのブックマーク (3)

  • C++11時代におけるクラスの書き方 - イグトランスの頭の中

    記事は、C++11 Advent Calendar 2011 : ATNDの2日目の記事です。 C++のclassは様々な使い方ができます。後発のほかの言語ではいくつもの概念に分かれているものも、C++ではすべてclassということもあります。 そこで、C++でclassを定義する際も、classと一括りにせず、自分がいったいどんなclassを書こうとしているのか明確に意識するとよいのではないだろうかと考えました。そのために、私なりのclassの分類をまとめ、この記事を書くことにしました。 これは、各々のプログラミング言語の経験により違いが出ることと思います。異論もあると思いますので、ご自身でも考えてみるとよいと思います。 以下、この記事では4種類に分類しています。 1つ目は「オブジェクト指向プログラミング (OOP) を実現するクラス」です(長いので以下OOPクラスと略します)。 vi

    C++11時代におけるクラスの書き方 - イグトランスの頭の中
    yowano
    yowano 2014/12/25
    クラスを、OOPクラス、インターフェース、Mix-in、データ抽象の4つに分けて考え、C++11でのそれぞれの書き方に関する解説。
  • C++クラスの書き方が面倒くさい訳 - すたんだーどっ☆あいおーっ!

    Cが全然分からないころの話。 javaのように1クラス1ファイルに書かないのはなんで? メンバがポインタばっかりなのはなんで? という疑問を持ちながらコーディングしてるともやもやして嫌でした。 もやもやがいやなのでjava風に書いていたら当然のように詰まりました。 ポインタじゃなかったらメモリが大変なことになるだろうが! というのは最もなんですけど、じゃ小さいプログラムならありなのか?スマートポインタ使えばいいのか?と言うとそうでもない。 今日書いてみたいのは、クラスは相互参照がめんどくせぇから分割しろ。そして同じ理由でメンバ変数はポインタにしとこうぜ、というお話。 相互参照の解決 AクラスがBクラスを使って、BクラスがAクラスを使う。 こういう状態を相互参照とか相互includeとか言うと思う。 javaは何でもないことだけど、C++はこれを簡単には許してくれない。 相互参照の解決方法に

    C++クラスの書き方が面倒くさい訳 - すたんだーどっ☆あいおーっ!
    yowano
    yowano 2014/01/30
    前方参照、循環インクルード、不完全クラスのあたりの面倒な話のまとめ。
  • 相互の関係性をうまくモデリングする : あんちょこ

    さてさて、std::mapの解説も終わったところで命の双方向の関係性について書こう。前回はポインタで相互に連結しようとして問題にぶち当たった。今回は総当り表のような構造をclassの外部に持たせることを考えてみよう。 まずは関係を表すRelationshipクラスを定義する。 //Relationship.hpp #ifndef INC_RELATIONSHIP_HPP #define INC_RELATIONSHIP_HPP #include <map> #include <string> #include "Person.hpp" enum Relation{ None, Friend, Teacher, Student }; std::string toStr(Relation); class Relationship{ public: void registerRelation(

    相互の関係性をうまくモデリングする : あんちょこ
  • 1