ページ 1 / 1
いろいろなオブジェクト指向
Posted: 2011年5月17日(火) 17:29
by dic
とある人とプログラムについて、オブジェクト指向について話ていると
どうも話が合わないので、いろいろ考えていました
そこで、wikiを参考にするとオブジェクト指向といっても、これもまた枝分かれのように
いろいろ手法があることがわかりました
そこで、私がほとんどの場合につかっているのが
http://ja.wikipedia.org/wiki/%E3%82%AA% ... 7%E5%90%91 より
クラスベース方式 -- クラスを定義し、それを元にインスタンスを生成する方式である。継承ベースともいう。
プロトタイプベース方式 -- 既存のインスタンスを元に、新たなインスタンスを生成する方式である。インスタンスベースともいう。
Mixin方式 -- さまざまなオブジェクトの原型を組み合わせて一つのオブジェクトを構成する方式である。
のひとつであって、とある型もこのうちのひとつでした
双方ともに違うやり方でやっているので、一緒にするのが困難というか、いちから組みなおし状態です
いろいろ参考にもなりましたし、よりいろいろな考え方を取り入れたいと思っているので
この上の3つの方法で、構成されているオープンソースなものを知っている方はいないでしょうか?
参考にするくらいなので、あまり大規模でなく小規模のものがいいです
Re: いろいろなオブジェクト指向
Posted: 2011年5月17日(火) 18:24
by softya(ソフト屋)
そもそも概念的にC++では実現ができないものがあるのですが、
>この上の3つの方法で、構成されているオープンソースなものを知っている方はいないでしょうか?
>参考にするくらいなので、あまり大規模でなく小規模のものがいいです
3つとも実装している言語という意味でしょうか?
[追記]
>双方ともに違うやり方でやっているので、一緒にするのが困難というか、いちから組みなおし状態です
dicさんの周囲であったことはこちらでは把握しようがないのですが、この文と下の文が繋がっていません。
なにかアドバイスが必要ということなのでしょうか?解説をお願いします。
Re: いろいろなオブジェクト指向
Posted: 2011年5月17日(火) 18:45
by dic
>>softyaさん
説明不足ですいません
聞きたいことは
オブジェクト指向にも色々やりかたがあり
1.クラスベース方式 -- クラスを定義し、それを元にインスタンスを生成する方式である。継承ベースともいう。
2.プロトタイプベース方式 -- 既存のインスタンスを元に、新たなインスタンスを生成する方式である。インスタンスベースともいう。
3.Mixin方式 -- さまざまなオブジェクトの原型を組み合わせて一つのオブジェクトを構成する方式である。
の3つの方法があるとwikiにはあります
この方法を使っているソースコードを公開されているサイト、ソフトなどを紹介してもらいたい
ということです
もちろん、上の3つの方法を組み合わせたりして使っているのもあると思いますが
参考のため、できるだけシンプルなものを紹介してくれると助かります ということです
オープンソースとは、ソースコードを公開しているソフトウェアのことだけを指しています
GPLなどライセンスに関することは・・・よくわかっていません
問題にならないもの という意味合いです
Re: いろいろなオブジェクト指向
Posted: 2011年5月17日(火) 18:49
by softya(ソフト屋)
3つを同時に実装している言語に付いては私は思いつきませんし、私の拙い知識ではC++ではそのまま実装できないと思います。
なので実現できる機能を持った言語の質問ですかとお聞きしましたが、なにか特定の言語で実現したのでしょうか?
[参考]
プロトタイプベースは言語仕様の問題なのでC++としては根本的に出来ないのですが、こんな事です。
「プロトタイプ(prototype)によるJavaScriptのオブジェクト指向:CodeZine」
http://codezine.jp/article/detail/222
C++でスカラ変数の利用を禁止してすべての変数のクラスを作り継承すれば似たようなことは出来なくもない?
「C++ で ruby 風 Mix-in - みねこあ」
http://d.hatena.ne.jp/minekoa/20070810/1186752546
で、dicさんの聞きたい意図が見えてきません。こんな事を聞きたいわけではないと思うのですが?
Re: いろいろなオブジェクト指向
Posted: 2011年5月17日(火) 20:21
by dic
>>softyaさん
オブジェクト指向で、いろいろ手法があって、ソースの書き方などもいろいろあるようですが
その基本を覚えこんで、その実践例を見てみたいということです
どういった場合にどういった、手法が有効なのか、デザインパターンがありますが
どういったときに使うのか、実際に使われているものを見てみたいということです
一般企業のソースコードは見れないので、オープンソースで活動してて、デザインパターンなどを
もちいて作られているソフトウェアのソースコードを見たいので、ご存知でしたら紹介をということです
言語を書いてませんでした C/C++です
ほかの言語もわかるにはわかるのですが、応用まではわからない状態です
完璧をもとめすぎ・・・かもしれないですね
Re: いろいろなオブジェクト指向
Posted: 2011年5月17日(火) 21:52
by softya(ソフト屋)
dic さんが書きました:>>softyaさん
オブジェクト指向で、いろいろ手法があって、ソースの書き方などもいろいろあるようですが
その基本を覚えこんで、その実践例を見てみたいということです
どういった場合にどういった、手法が有効なのか、デザインパターンがありますが
どういったときに使うのか、実際に使われているものを見てみたいということです
一般企業のソースコードは見れないので、オープンソースで活動してて、デザインパターンなどを
もちいて作られているソフトウェアのソースコードを見たいので、ご存知でしたら紹介をということです
言語を書いてませんでした C/C++です
ほかの言語もわかるにはわかるのですが、応用まではわからない状態です
完璧をもとめすぎ・・・かもしれないですね
もう一度書きますが、「クラスベース方式」、「プロトタイプベース方式」、「Mixin方式」は言語の
クラスオブジェクト指向の実装方式の話ですので、オブジェクト指向の使い方やデザインパターンの話とは別です。
(1)根本的にC++は、「クラスベース方式」であって「プロトタイプベース方式」、「Mixin方式」ではありません。この理解はよろしいですか?
(2)今までの話の流れからすると、オブジェクト指向的な書き方、デザインパターンの実用例を見たいとしか読み取れないのですが違いますか?
(3)なので、「プロトタイプベース方式」、「Mixin方式」にこだわることは出来ないし、拘る必要はないと考えます。違いますのでしょうか?
話が通じていない気がしますので(1)(2)(3)を明確にyes/noでお答え願います。
Re: いろいろなオブジェクト指向
Posted: 2011年5月17日(火) 22:12
by たいちう
> 双方ともに違うやり方でやっているので、
> 一緒にするのが困難というか、いちから組みなおし状態です
『とある人とdicさんとで、オブジェクト指向の話をしているはずだが、
話がかみ合わない。dicさんなりに調べてみたところ、
オブジェクト志向にも種類があって、その種類が違っているのが、
原因のようだ。』
とdicさんは考えているようですが、2人の話がかみ合わないのはおそらく、
一方または双方のオブジェクト指向に対する理解不足でしょう。
一緒にするのが困難と言うのも、一方または双方の作りが悪かったり、
リファクタリングのスキル不足だと思います。
Re: いろいろなオブジェクト指向
Posted: 2011年5月18日(水) 08:27
by dic
>>softyaさん
1.yes
2.yes (実用例をみたい)
3.yes
>>たいちうさん
なるほど お互いにオブジェクト指向について理解が足りていない可能性もありますね
Re: いろいろなオブジェクト指向
Posted: 2011年5月18日(水) 12:36
by softya(ソフト屋)
とりあえず、私もオープンソースでデザインパターンを多用している例は知らないので、デザインパターンの実例が書いてあるサイト(Java)をご紹介します。
「事例で学ぶデザインパターン -INDEX-」
http://www.ogis-ri.co.jp/otc/hiroba/tec ... index.html
「サルでもわかる 逆引きデザインパターン 第1章 はじめてのデザインパターン はじめに」
http://www.nulab.co.jp/designPatterns/d ... ns1-1.html
「ニュース検索 - japan.internet.com デザインパターンの使い方」
http://japan.internet.com/search?p=0&s= ... 8%A1%BA%F7
あと基本的なことですが、次のようなことが守られているかも大事だと思います(C++)
「EffectiveC++入門」
http://www002.upp.so-net.ne.jp/ys_oota/effec/index.htm
あとお互いにオブジェクト指向設計レベルでどの様な話し合いが行われたのかが気になるところです。
Re: いろいろなオブジェクト指向
Posted: 2011年5月19日(木) 01:47
by ISLe
C++で書かれているRubyインタプリタのソースコードを読むというのはどうでしょう。
Rubyの言語仕様を勉強するだけでもカルチャーショックを体験できると思いますけど。
Re: いろいろなオブジェクト指向
Posted: 2011年5月19日(木) 08:32
by dic
>>softyaさん
リンク先 参考にさせてもらいます
>>ISLeさん
Rubyの言語仕様ですね
いっぺんカルチャーショック受けてきます
いっぺんには見切れないので
ひとまず解決とさせてもらいます