お願いします。言語は問いません。
オブジェクト指向言語じゃなくても
オブジェクト指向の話であれば問題ありません。
オブジェクト指向の活用方法を教えて下さい
■ このスレッドは過去ログ倉庫に格納されています
2014/03/25(火) 21:44:07.66ID:AtcH5MLU
247デフォルトの名無しさん
2014/04/11(金) 13:07:20.58ID:xNOhzDQj なんか面白いんだろうな...
俺には理解できないけど
俺には理解できないけど
248デフォルトの名無しさん
2014/04/12(土) 12:55:19.47ID:5P9XNUOV プログラマはソースのコピペを恐れないでください。誰でも最初は初心者で、
しかも誰もが成長するとは限らないのです。
成長を強いるオブジェクト指向が、万人の解決策になり得ないのは明らかです。
コピペこそが、初心者からベテランまで、万人の解決策となり得るのです。
第一、grepすらできないソースをメンテナンスできるはずありません。
コピペによるプログラミングは、複雑に絡まったバージョン依存問題を解決する
という、潜在的なポテンシャルがあります。
大体、オブジェクト指向を推進する人は、協調性がない人が多く、共同で作業す
るには向いていないのです。冗談のセンスすらありません。
しかも誰もが成長するとは限らないのです。
成長を強いるオブジェクト指向が、万人の解決策になり得ないのは明らかです。
コピペこそが、初心者からベテランまで、万人の解決策となり得るのです。
第一、grepすらできないソースをメンテナンスできるはずありません。
コピペによるプログラミングは、複雑に絡まったバージョン依存問題を解決する
という、潜在的なポテンシャルがあります。
大体、オブジェクト指向を推進する人は、協調性がない人が多く、共同で作業す
るには向いていないのです。冗談のセンスすらありません。
249デフォルトの名無しさん
2014/04/12(土) 17:13:54.61ID:1eEiGLxS 全部反対のことを言っていると見抜けば
>>248が言っていることに納得できるはずw
>>248が言っていることに納得できるはずw
250デフォルトの名無しさん
2014/04/12(土) 17:19:09.23ID:f/RHrroc なんか面白いんだろうな...
俺には理解できないけど
俺には理解できないけど
251デフォルトの名無しさん
2014/04/13(日) 10:45:23.58ID:839g2ruV ここで僕らは「良いソフト部品は、有名なのだけだ」という原則に立ち戻る必要があるだろうね。
誰も使ってない、メンテナンスもされない俺様オブジェクト部品を使うくらいなら、コピペの方がましな
んだよ。宣言型か関数型が使えるならその方がいいし、使えなければテストの自動化で乗り切る
しかないと、もう10年も前からいわれて続けているわけだ。
research.microsoft.com/en-us/um/people/blampson/70-SoftwareComponents/70-SoftwareComponents.htm
誰も使ってない、メンテナンスもされない俺様オブジェクト部品を使うくらいなら、コピペの方がましな
んだよ。宣言型か関数型が使えるならその方がいいし、使えなければテストの自動化で乗り切る
しかないと、もう10年も前からいわれて続けているわけだ。
research.microsoft.com/en-us/um/people/blampson/70-SoftwareComponents/70-SoftwareComponents.htm
252デフォルトの名無しさん
2014/04/13(日) 10:51:49.05ID:oaa109sw うん、まったくだ。
有名なソフトは良い。
有名じゃなくても良いソフトはまれにあるけど、
多くの、つまり何万、何十万とある無名なソフトはクソでしかない。
有名なソフトは良い。
有名じゃなくても良いソフトはまれにあるけど、
多くの、つまり何万、何十万とある無名なソフトはクソでしかない。
253デフォルトの名無しさん
2014/04/13(日) 11:22:22.91ID:2QOmxkhr ストラウストラップが「オブジェクト指向というのは継承と再利用なんだよ!」ってやったせいで
えらい風評被害やな。
単にクラスというCでの関数に代わる単位の取り回し方法だから
Objective-C辺りじゃ継承…めんどいから使わない
NSObjectってクラスの基本的ふるまいを持った基底クラスから
テキトーなクラス作って、その中に使えるクラスぶち込んで
メッセージ(メソッド)オーバーライドでふるまい変えて使う。
クラスとは単にレゴブロックみたいなパーツ扱い。
えらい風評被害やな。
単にクラスというCでの関数に代わる単位の取り回し方法だから
Objective-C辺りじゃ継承…めんどいから使わない
NSObjectってクラスの基本的ふるまいを持った基底クラスから
テキトーなクラス作って、その中に使えるクラスぶち込んで
メッセージ(メソッド)オーバーライドでふるまい変えて使う。
クラスとは単にレゴブロックみたいなパーツ扱い。
254デフォルトの名無しさん
2014/04/13(日) 11:38:57.62ID:Vp4hM6j5 >NSObjectってクラスの基本的ふるまいを持った基底クラスからテキトーなクラス作って
継承してるじゃないの。
むしろC++の方が継承なしのパーツ扱いが多いんじゃないの。
継承してるじゃないの。
むしろC++の方が継承なしのパーツ扱いが多いんじゃないの。
255デフォルトの名無しさん
2014/04/13(日) 11:54:36.21ID:j71fNHt+ いわゆるObjectクラスが必要な理由って何かあるの?
256デフォルトの名無しさん
2014/04/13(日) 12:17:57.96ID:2QOmxkhr Objective-Cはとにかくクラスの実体ありきで
言語的にひな型からインスタンスを作るんじゃなくて
起動時に存在するファクトリクラスにallocとinitを送って
クラスに"自分のインスタンスを作らせる"から
すべてのクラスはallocやinit、retainカウント、deallocを受け付け管理する
NSObjectを継承していないとクラスとして存在しえないので…
言語的にひな型からインスタンスを作るんじゃなくて
起動時に存在するファクトリクラスにallocとinitを送って
クラスに"自分のインスタンスを作らせる"から
すべてのクラスはallocやinit、retainカウント、deallocを受け付け管理する
NSObjectを継承していないとクラスとして存在しえないので…
257デフォルトの名無しさん
2014/04/13(日) 15:02:09.06ID:Vp4hM6j5 動的な言語だとだいたいObjectクラスが必須だよね
258デフォルトの名無しさん
2014/04/13(日) 15:38:34.94ID:j71fNHt+ >>256
別にObjectじゃなくても言語仕様でやればいいじゃんと思うんだけどそれじゃマズイことってあるのかな
別にObjectじゃなくても言語仕様でやればいいじゃんと思うんだけどそれじゃマズイことってあるのかな
259デフォルトの名無しさん
2014/04/13(日) 15:55:24.32ID:BqlLq9pK 動的な言語でも本来はObjectなんて要らない。
Smalltalk-80だってnilのサブクラスを作れたし。
Smalltalk-80だってnilのサブクラスを作れたし。
260デフォルトの名無しさん
2014/04/13(日) 16:04:45.61ID:oaa109sw 値の型が動的なのと
変数の型が動的なのとを
区別つけろよ。アホ。
Objectが必要なのは変数に型があって
値の型が動的な場合なだけだ。
変数に型があるが、そこで記述された型だけではなく
互換性がある型を入れられる。
そういう言語でどんな型にも互換性があるのがObject型だ。
変数に型がない言語ではどんな値でも入れられるから
Objectは要らない。変数にはどんな型でも入れられる
とはいうものもコードは互換性がある型を入れてないと
結局正しく動かないんだけどなw
変数の型が動的なのとを
区別つけろよ。アホ。
Objectが必要なのは変数に型があって
値の型が動的な場合なだけだ。
変数に型があるが、そこで記述された型だけではなく
互換性がある型を入れられる。
そういう言語でどんな型にも互換性があるのがObject型だ。
変数に型がない言語ではどんな値でも入れられるから
Objectは要らない。変数にはどんな型でも入れられる
とはいうものもコードは互換性がある型を入れてないと
結局正しく動かないんだけどなw
261デフォルトの名無しさん
2014/04/13(日) 16:17:49.14ID:Vp4hM6j5 値の型が動的ってどういう事?
さっきまでStringだったけど今みたらIntに変わってたわ!みたいな?
さっきまでStringだったけど今みたらIntに変わってたわ!みたいな?
262デフォルトの名無しさん
2014/04/13(日) 16:24:02.51ID:oaa109sw 変数の型は固定なんだよ。
この変数は、Numeric型みたいに。
でもNumeric型って書いてあっても
その値は実はInt型だったりFloat型だったりと
Numeric型に互換性がある型に変わっていたりする。
変数の型は固定なのに値の型は違う。
それに対して、変数に型が決まってない言語があるの。
変数に型が書いてないなら変数aにどんな型でも入れられる。
この変数は、Numeric型みたいに。
でもNumeric型って書いてあっても
その値は実はInt型だったりFloat型だったりと
Numeric型に互換性がある型に変わっていたりする。
変数の型は固定なのに値の型は違う。
それに対して、変数に型が決まってない言語があるの。
変数に型が書いてないなら変数aにどんな型でも入れられる。
263デフォルトの名無しさん
2014/04/13(日) 16:26:13.02ID:Vp4hM6j5 Objectって全部に共通の動作を定義するために使われてるよね普通は。
例えば、自分の型を返すとか。
例えば、自分の型を返すとか。
264デフォルトの名無しさん
2014/04/13(日) 17:45:48.17ID:CtgsENNt 値が型情報持ってない言語は一応あるね、C言語とか
あれは変数側にしか型がない
あれは変数側にしか型がない
265デフォルトの名無しさん
2014/04/13(日) 18:03:36.88ID:BqlLq9pK >>261
SmalltalkではさっきまでByteStringだったオブジェクトが今みたらWideStringだったぜとか普通
SmalltalkではさっきまでByteStringだったオブジェクトが今みたらWideStringだったぜとか普通
266デフォルトの名無しさん
2014/04/13(日) 18:07:49.11ID:+sscY2hT267デフォルトの名無しさん
2014/04/13(日) 18:54:15.96ID:BqlLq9pK 全部に共通の動作なんてものが必要なうちはダメだな
268デフォルトの名無しさん
2014/04/13(日) 19:10:20.98ID:wSq/pgWA >>267
ダメな理由書いてみ
ダメな理由書いてみ
269デフォルトの名無しさん
2014/04/13(日) 19:31:38.05ID:Vp4hM6j5 >>265
それは参照してるオブジェクトが変わったんじゃないの?
それは参照してるオブジェクトが変わったんじゃないの?
270デフォルトの名無しさん
2014/04/13(日) 20:05:02.79ID:+sscY2hT 共通の動作がなければ、てんでばらばらって事じゃんw
271デフォルトの名無しさん
2014/04/13(日) 20:31:47.78ID:yhlLeWxx >>269
Smalltalkではbecome:というメソッドで
ポインタレベルでのオブジェクトの差し替えが可能なんで
| x y |
x := y := 'abc'
x become: 3.14.
y. "=> 3.14 "
これを応用してオブジェクトの型の変更も容易なんですよ
Smalltalkではbecome:というメソッドで
ポインタレベルでのオブジェクトの差し替えが可能なんで
| x y |
x := y := 'abc'
x become: 3.14.
y. "=> 3.14 "
これを応用してオブジェクトの型の変更も容易なんですよ
272デフォルトの名無しさん
2014/04/13(日) 20:36:46.47ID:1ZgLAbLW273デフォルトの名無しさん
2014/04/13(日) 20:46:56.28ID:+sscY2hT274デフォルトの名無しさん
2014/04/13(日) 20:50:21.03ID:Vp4hM6j5 >>271
Smalltalkよくしらないから適当言語だけど...
x = "x"; y = "y"; z = y;
の状態で
y become: x;
とやったら、
zの指してるオブジェクトは"x"になるって事?
Smalltalkよくしらないから適当言語だけど...
x = "x"; y = "y"; z = y;
の状態で
y become: x;
とやったら、
zの指してるオブジェクトは"x"になるって事?
275デフォルトの名無しさん
2014/04/13(日) 20:59:39.25ID:BqlLq9pK276デフォルトの名無しさん
2014/04/13(日) 21:09:17.21ID:1ZgLAbLW よく知らない三連星ワロタ
>>275
なるほどそういう意図ですか
1. nillはUndefinedObjectのインスタンス
2. UndefinedObjectはObjectの継承している
3. Objectはnilを継承している
こうかな?
となると全てのクラスの共通となる祖先が存在してるんで
不要論として出すのはやっぱおかしくないですか?
>>275
なるほどそういう意図ですか
1. nillはUndefinedObjectのインスタンス
2. UndefinedObjectはObjectの継承している
3. Objectはnilを継承している
こうかな?
となると全てのクラスの共通となる祖先が存在してるんで
不要論として出すのはやっぱおかしくないですか?
277デフォルトの名無しさん
2014/04/13(日) 21:15:34.64ID:TiAwmeQu 知れば知る程Smalltalkのウンコさが身にしみる
278デフォルトの名無しさん
2014/04/13(日) 21:40:50.80ID:+sscY2hT proxyパターンと共通の動作にどういう関係があるのかわからん。
279デフォルトの名無しさん
2014/04/14(月) 01:52:57.81ID:QEqaYkvm >>258
>別にObjectじゃなくても言語仕様でやればいいじゃんと思うんだけどそれじゃマズイことってあるのかな
いま、C++とかがそこに起因する泥沼に嵌ってるけど
オブジェクトクラスの側は言ってしまえば実装だしライブラリだから
将来に動作を変更されるうるし、実際に変更されるけど
言語仕様はもう一段上のルールだから変更が実に困難だという…
>別にObjectじゃなくても言語仕様でやればいいじゃんと思うんだけどそれじゃマズイことってあるのかな
いま、C++とかがそこに起因する泥沼に嵌ってるけど
オブジェクトクラスの側は言ってしまえば実装だしライブラリだから
将来に動作を変更されるうるし、実際に変更されるけど
言語仕様はもう一段上のルールだから変更が実に困難だという…
280デフォルトの名無しさん
2014/04/14(月) 01:57:18.83ID:QEqaYkvm281デフォルトの名無しさん
2014/04/14(月) 19:01:11.23ID:9oXXilb1282デフォルトの名無しさん
2014/04/14(月) 20:50:15.58ID:2o5NlHiv283デフォルトの名無しさん
2014/04/14(月) 21:32:49.46ID:1BzKypQe > 3. Objectはnilを継承している
それが真であれば、Objectはnilの特徴を持っていないといけない。
Objectはnilではないので、これは間違い。
それが真であれば、Objectはnilの特徴を持っていないといけない。
Objectはnilではないので、これは間違い。
284デフォルトの名無しさん
2014/04/14(月) 21:40:20.78ID:KfO5hauH285デフォルトの名無しさん
2014/04/14(月) 21:41:56.76ID:kBF05cIr Rubyだと
・nil は Nilクラスの唯一のインスタンス
・NilクラスはObjectクラスから派生したサブクラス
$ irb2.0
irb(main):001:0> nil.class
=> NilClass
irb(main):002:0> NilClass.superclass
=> Object
Smalltalkは知らん
・nil は Nilクラスの唯一のインスタンス
・NilクラスはObjectクラスから派生したサブクラス
$ irb2.0
irb(main):001:0> nil.class
=> NilClass
irb(main):002:0> NilClass.superclass
=> Object
Smalltalkは知らん
286デフォルトの名無しさん
2014/04/14(月) 22:20:14.96ID:2o5NlHiv >>283
あ、そうなんですか
Wikipediaに
> 基本的な派生元となるObjectやProtoObjectは、それらから派生したUndefinedObjectのインスタンスオブジェクトであるnilを継承しており再帰関係を持つ。
と書いてあったんでそういうものだと思ってました
あと
Object isKindOf: nill
が true を返すのはなんででしょう?
あ、そうなんですか
Wikipediaに
> 基本的な派生元となるObjectやProtoObjectは、それらから派生したUndefinedObjectのインスタンスオブジェクトであるnilを継承しており再帰関係を持つ。
と書いてあったんでそういうものだと思ってました
あと
Object isKindOf: nill
が true を返すのはなんででしょう?
287デフォルトの名無しさん
2014/04/15(火) 04:06:44.72ID:wLbFOpnz >>285
つまりnilとNilは別々のオブジェクトであり、
NilがObjectのサブクラスであることとnilは何の関係もない、
ということだね。
>>286
つまりnilとUndefinedObjectは別々のオブジェクトであり、
UndefinedObjectがObjectのサブクラスであることとnilは何の関係もないし、
nilはクラスではないし
Squeak4.4ではObject isKindOf: nilはfalseだし、
Object new isKindOf: nilもfalseだし、
仮にtrueになる処理系があっても、nilはクラスではないからnilはObjectの基底クラスではない、
ということだね。
つまりnilとNilは別々のオブジェクトであり、
NilがObjectのサブクラスであることとnilは何の関係もない、
ということだね。
>>286
つまりnilとUndefinedObjectは別々のオブジェクトであり、
UndefinedObjectがObjectのサブクラスであることとnilは何の関係もないし、
nilはクラスではないし
Squeak4.4ではObject isKindOf: nilはfalseだし、
Object new isKindOf: nilもfalseだし、
仮にtrueになる処理系があっても、nilはクラスではないからnilはObjectの基底クラスではない、
ということだね。
288デフォルトの名無しさん
2014/04/15(火) 18:46:18.65ID:4TC7MUH1289デフォルトの名無しさん
2014/04/15(火) 20:46:27.61ID:d1+oXg+5 >>287
>つまりnilとNilは別々のオブジェクトであり、
nil はインスタンスでありNil はクラスだから、別々のオブジェクトってこと
>NilがObjectのサブクラスであることとnilは何の関係もない、
Nil と Object とは「サブクラス-スーパークラス」という継承関係であり、
Nil と nil とは「クラス-インスタンス」というインスタンス化関係であり、
二種類の関係をごっちゃにしてはいけない、ってこと
>つまりnilとNilは別々のオブジェクトであり、
nil はインスタンスでありNil はクラスだから、別々のオブジェクトってこと
>NilがObjectのサブクラスであることとnilは何の関係もない、
Nil と Object とは「サブクラス-スーパークラス」という継承関係であり、
Nil と nil とは「クラス-インスタンス」というインスタンス化関係であり、
二種類の関係をごっちゃにしてはいけない、ってこと
290デフォルトの名無しさん
2014/04/15(火) 21:07:45.24ID:d1+oXg+5 >>286
>> 基本的な派生元となるObjectやProtoObjectは、
>>それらから派生したUndefinedObjectのインスタンスオブジェクトである
>>nilを継承しており再帰関係を持つ。
Rubyの場合
・ClassクラスのスーパークラスはModuleクラスである(継承関係)
・ModuleクラスのスーパークラスはObjectクラスである(継承関係)
・ObjectクラスはClassクラスをインスタンス化したオブジェクトである(インスタンス化関係)
$ irb2.0
irb(main):001:0> Class.superclass
=> Module
irb(main):002:0> Module.superclass
=> Object
irb(main):003:0> Object.kind_of?(Class)
=> true
結果として、各クラス間の関係は「循環的」に定義されることになる
ただしRubyコミュニティでは、それを(その循環関係)を「再帰的」と呼ぶ事はない
Smalltalkは知らんけど、おそらく、そのWikipediaの著者が
継承とインスタンス化をごっちゃに理解しているんじゃないかと思われ
>> 基本的な派生元となるObjectやProtoObjectは、
>>それらから派生したUndefinedObjectのインスタンスオブジェクトである
>>nilを継承しており再帰関係を持つ。
Rubyの場合
・ClassクラスのスーパークラスはModuleクラスである(継承関係)
・ModuleクラスのスーパークラスはObjectクラスである(継承関係)
・ObjectクラスはClassクラスをインスタンス化したオブジェクトである(インスタンス化関係)
$ irb2.0
irb(main):001:0> Class.superclass
=> Module
irb(main):002:0> Module.superclass
=> Object
irb(main):003:0> Object.kind_of?(Class)
=> true
結果として、各クラス間の関係は「循環的」に定義されることになる
ただしRubyコミュニティでは、それを(その循環関係)を「再帰的」と呼ぶ事はない
Smalltalkは知らんけど、おそらく、そのWikipediaの著者が
継承とインスタンス化をごっちゃに理解しているんじゃないかと思われ
291デフォルトの名無しさん
2014/04/15(火) 21:25:46.27ID:POAb9xNt >>288
GNU Smalltalk は名前から受ける印象と違って
単なるファンお手製の勝手実装なうえに、
Smalltalk としてもかなりの変わり種なので
あれを元に Smalltalk がどういうものか学ぶのはちょっと問題が。
できれば VisualWorks 、悪くても Squeak/Pharo で
試すようにするのがよいと思います。
(これらの処理系はそれぞれ独自の進化を遂げてはいますが、
いちおう古典的 XEROX Smalltalk-80 からの直系の派生物で、
その名残を多く残しています)
GNU Smalltalk は名前から受ける印象と違って
単なるファンお手製の勝手実装なうえに、
Smalltalk としてもかなりの変わり種なので
あれを元に Smalltalk がどういうものか学ぶのはちょっと問題が。
できれば VisualWorks 、悪くても Squeak/Pharo で
試すようにするのがよいと思います。
(これらの処理系はそれぞれ独自の進化を遂げてはいますが、
いちおう古典的 XEROX Smalltalk-80 からの直系の派生物で、
その名残を多く残しています)
292デフォルトの名無しさん
2014/04/15(火) 22:39:29.15ID:4TC7MUH1 >>290
https://www.ogis-ri.co.jp/otc/hiroba/technical/Squeak4/S4-5-4_1.html
http://pharo.gforge.inria.fr/PBE1/PBE1ch14.html
を読んでみましたが
1. ObjectクラスはObject class(メタクラス)のインスタンス
2. Object class(メタクラス)はClassクラスを継承している
3. ClassクラスはClassDescriptionクラスを継承している
4. ClassDescriptionクラスはBehaviorクラスを継承している
5. BehaviorクラスはObjectクラスを継承している
って事で、Wikipediaの言う再帰関係は成り立ちますね
nilの存在は謎のままですが
間違ってたら教えて下さい
>>291
情報ありしゃす!
勉強はGNU以外でやります
https://www.ogis-ri.co.jp/otc/hiroba/technical/Squeak4/S4-5-4_1.html
http://pharo.gforge.inria.fr/PBE1/PBE1ch14.html
を読んでみましたが
1. ObjectクラスはObject class(メタクラス)のインスタンス
2. Object class(メタクラス)はClassクラスを継承している
3. ClassクラスはClassDescriptionクラスを継承している
4. ClassDescriptionクラスはBehaviorクラスを継承している
5. BehaviorクラスはObjectクラスを継承している
って事で、Wikipediaの言う再帰関係は成り立ちますね
nilの存在は謎のままですが
間違ってたら教えて下さい
>>291
情報ありしゃす!
勉強はGNU以外でやります
293デフォルトの名無しさん
2014/04/15(火) 22:48:36.35ID:8/R6vbb5 大量のベクトル演算をオブジェクト指向で行うのはいい考えではありませんでした。
パフォーマンスが話になりません。
あらためてオブジェクト指向の活用方法が知りたいです。
パフォーマンスが話になりません。
あらためてオブジェクト指向の活用方法が知りたいです。
294デフォルトの名無しさん
2014/04/15(火) 22:56:10.29ID:TDL51eos あたりまえやないかw インラインでやれ。
295デフォルトの名無しさん
2014/04/16(水) 05:01:31.46ID:ZBBb0DXo >>292
それはmeta cyclicというのであってrecursionとは全く別だよ
それはmeta cyclicというのであってrecursionとは全く別だよ
296デフォルトの名無しさん
2014/04/16(水) 08:21:50.02ID:A1GSn+hc >>295
http://upload.wikimedia.org/wikipedia/commons/f/f9/Smalltalk_80_metaclasses.svg
を拝借するとrecursionはどの部分になりますか?(または当て嵌まらない、とか)
MetaclassとMetaclass classがrecursion?
と言うかmeta cyclicとrecursionは定義はどこを調べればいいんでしょうか
あー分かんなくなってきた
http://upload.wikimedia.org/wikipedia/commons/f/f9/Smalltalk_80_metaclasses.svg
を拝借するとrecursionはどの部分になりますか?(または当て嵌まらない、とか)
MetaclassとMetaclass classがrecursion?
と言うかmeta cyclicとrecursionは定義はどこを調べればいいんでしょうか
あー分かんなくなってきた
297デフォルトの名無しさん
2014/04/16(水) 17:33:35.89ID:ZBBb0DXo298デフォルトの名無しさん
2014/04/16(水) 18:10:12.53ID:A1GSn+hc299デフォルトの名無しさん
2014/04/17(木) 03:03:07.59ID:g3SPX8xq isKindOf:等のクラス階層へのアクセスを使わない限りにおいて、
全てのクラスは基底クラスから継承したインスタンス変数やメソッド等を取り込むことで
nilからの継承による実装に置き換えることが出来るのはOK?
全てのクラスは基底クラスから継承したインスタンス変数やメソッド等を取り込むことで
nilからの継承による実装に置き換えることが出来るのはOK?
300デフォルトの名無しさん
2014/04/17(木) 06:51:39.99ID:XZy5mn+7 >>299
はい、続けて下さい
はい、続けて下さい
301デフォルトの名無しさん
2014/04/17(木) 07:01:46.34ID:g3SPX8xq302デフォルトの名無しさん
2014/04/17(木) 07:48:37.17ID:XZy5mn+7303デフォルトの名無しさん
2014/04/17(木) 09:46:27.34ID:g3SPX8xq >>302
いいえ、nilにObjectと同じ能力があるなんて誰か言ってるのですか?
いいえ、nilにObjectと同じ能力があるなんて誰か言ってるのですか?
304デフォルトの名無しさん
2014/04/17(木) 19:48:33.36ID:XZy5mn+7305デフォルトの名無しさん
2014/04/18(金) 02:02:31.47ID:3m4Hm4jr 今更な反応だけど
メソッドチェーンのデバッグどうのこうのは
パワーアサートである程度解決できるんじゃね
テストとデバッグを同一視すんなとか言われそうだけど
そこはなんやかんやで
メソッドチェーンのデバッグどうのこうのは
パワーアサートである程度解決できるんじゃね
テストとデバッグを同一視すんなとか言われそうだけど
そこはなんやかんやで
306デフォルトの名無しさん
2014/04/19(土) 11:19:09.69ID:fQ1JDqwN みんなモデリングツール使ってる?
307デフォルトの名無しさん
2014/04/19(土) 15:25:11.54ID:7lbU/Cwq UMLは手書きのノートに万年筆で描いてるけど?
308デフォルトの名無しさん
2014/04/19(土) 15:25:52.03ID:7lbU/Cwq ああ、もうすぐ司法試験なんだよなぁ・・・
今年も申し込みしてねーや。
仕事辞めたいわ
今年も申し込みしてねーや。
仕事辞めたいわ
309デフォルトの名無しさん
2014/04/19(土) 15:28:51.08ID:oGrzc7nx ぜひ弁護士資格を取って人売り屋を訴えてやってください。
310デフォルトの名無しさん
2014/04/19(土) 15:32:20.57ID:7lbU/Cwq 弁護士より裁判官志望なんだけどな。
知財専門の裁判官やるわ。
知財専門の裁判官やるわ。
311デフォルトの名無しさん
2014/05/02(金) 02:53:15.17ID:sB1UFa5X 裁判官になるのはある意味、終身刑になるようなもの
仕事にやりがいはないし、趣味、嗜好、信仰の類は一切行えない
どうしてもやりたいというなら止めないが、いいもんじゃないぞ
仕事にやりがいはないし、趣味、嗜好、信仰の類は一切行えない
どうしてもやりたいというなら止めないが、いいもんじゃないぞ
312デフォルトの名無しさん
2014/07/11(金) 14:24:19.29ID:u5XcYD/q 確かに日本語ネイティブじゃないと解り難い表現ではある
313デフォルトの名無しさん
2014/10/15(水) 02:03:28.04ID:fxqbNGWP 急にスレが死んだ
314デフォルトの名無しさん
2014/10/16(木) 17:21:37.89ID:MhzmuNOz315デフォルトの名無しさん
2014/10/18(土) 12:18:53.66ID:/oNwCDSd 似たようなものさ‥Linus が GC の存在を受け入れるわけがない
316デフォルトの名無しさん
2014/10/18(土) 15:46:58.25ID:7/IQKq91 そりゃ、カーネルやドライバレベルの開発でGC付きの言語環境は要らんわ。
OOPの話題でリーナス発言を引き合いに出すのは的外れすぎる。
OOPの話題でリーナス発言を引き合いに出すのは的外れすぎる。
317デフォルトの名無しさん
2014/11/05(水) 13:15:41.31ID:QbWIQhdw OOPって結局、こういう考え方すれば分かりやすくなりますよって例でしかないからな
その考え方を前提に置けば、こういう表現ができますよって利点はいろいろな実装があるけど
完全性や効率性を犠牲に、可読性を上げて保守性や再利用性、試験性なんかを上げましょうってそういうものだと思うんだけど
その考え方を前提に置けば、こういう表現ができますよって利点はいろいろな実装があるけど
完全性や効率性を犠牲に、可読性を上げて保守性や再利用性、試験性なんかを上げましょうってそういうものだと思うんだけど
318デフォルトの名無しさん
2014/11/05(水) 20:29:01.97ID:NM+61D3j OOPって結局、…でしかないからな
という奴って、OOP以外にも関数型言語でもアジャイルプロセスでも受託ビジネスでも
みーんな「結局、…でしかないからな」とわかったような気になるだけで
実際には何も身についてないんだよなw
という奴って、OOP以外にも関数型言語でもアジャイルプロセスでも受託ビジネスでも
みーんな「結局、…でしかないからな」とわかったような気になるだけで
実際には何も身についてないんだよなw
319デフォルトの名無しさん
2014/11/05(水) 23:26:57.45ID:UbfQ7xJO オブジェクト指向は愚かな考え。排便メソッド2 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1415122540/
http://peace.2ch.net/test/read.cgi/tech/1415122540/
320デフォルトの名無しさん
2014/11/06(木) 08:17:55.90ID:WCLQna6c321デフォルトの名無しさん
2014/12/15(月) 00:00:56.39ID:Ovh10mZl カプセル化 ポリモーフィズム 継承を理解して設計出来る人って実際、何人に一人ぐらいに感じる?
322デフォルトの名無しさん
2014/12/15(月) 09:52:17.25ID:z8CdksSX ひとそれぞれ解釈違うからなんとも言えん
323デフォルトの名無しさん
2014/12/15(月) 11:05:06.23ID:cy4sFuPq カプセル化&オブジェクト化の行き先は関数型プログラミングじゃないの?
324デフォルトの名無しさん
2014/12/15(月) 12:54:30.82ID:t6/tpY1X 絶対違う
325デフォルトの名無しさん
2014/12/15(月) 15:09:37.42ID:2aP18QTz326デフォルトの名無しさん
2014/12/17(水) 11:09:29.57ID:N1jNpsSg ポリモーフィズムは分かりやすいんだけどカプセル化がいまいちわからない
ゲッターセッター書いて何になるの?ってレベルの理解しかないから優しく教えて
ゲッターセッター書いて何になるの?ってレベルの理解しかないから優しく教えて
327デフォルトの名無しさん
2014/12/17(水) 11:58:16.14ID:qGVIuFRu328デフォルトの名無しさん
2014/12/17(水) 13:49:16.52ID:dSysfVHr カプセル内では、他のオブジェクトの定義を知らなくても済むように書く。
閉じたオブジェクトにすればいい。
閉じたオブジェクトにすればいい。
329デフォルトの名無しさん
2014/12/17(水) 17:36:45.21ID:FGZvKMUK >>326
基本的にそのクラスのメンバーはそのクラス内でいじられることを保障するため。
基本的にそのクラスのメンバーはそのクラス内でいじられることを保障するため。
330デフォルトの名無しさん
2014/12/17(水) 18:56:34.51ID:qGVIuFRu 実装を隠す
→知らなくても使えるように設計する
→使い方さえ変えなければいい
→中は変え放題、新しい使い方も追加放題
>>329
よくあるサンプルみたいに全メンバアクセッサ実装してるようなクソクラスだと
その原則破るための効果の方が強くなってしまうからなぁ
クラスの中から≠クラスファイルの中から
クラスの中から=クラス機能の中から
→知らなくても使えるように設計する
→使い方さえ変えなければいい
→中は変え放題、新しい使い方も追加放題
>>329
よくあるサンプルみたいに全メンバアクセッサ実装してるようなクソクラスだと
その原則破るための効果の方が強くなってしまうからなぁ
クラスの中から≠クラスファイルの中から
クラスの中から=クラス機能の中から
331デフォルトの名無しさん
2014/12/17(水) 19:24:20.07ID:N1jNpsSg 327-330
いろいろありがとう
公開したいとこだけ公開すりゃいいのね
いろいろありがとう
公開したいとこだけ公開すりゃいいのね
332デフォルトの名無しさん
2014/12/17(水) 19:38:57.10ID:y3DoL19d 極論を言えば「公開」したら負けなのがカプセル化
333デフォルトの名無しさん
2014/12/17(水) 21:14:17.50ID:lLmQTo2M >>326
getter-setter をかましておけば、なにかのときに簡単に監視やフックを追加できる
getter-setter をかましておけば、なにかのときに簡単に監視やフックを追加できる
334デフォルトの名無しさん
2014/12/17(水) 22:00:02.25ID:adMFmMY0 >>333
ちょっとした用途ならリフレクションから呼べば良いじゃん
機能として提供する必要が出来たならそんな直接参照するような裏ワザ使わないで継承するなり追加するなりしようよ
影響が外に広がらないようにカプセル化して直接参照する手段を封じるんだから
直接参照できるセッターやゲッターつけたら保証できなくなるじゃん
ちょっとした用途ならリフレクションから呼べば良いじゃん
機能として提供する必要が出来たならそんな直接参照するような裏ワザ使わないで継承するなり追加するなりしようよ
影響が外に広がらないようにカプセル化して直接参照する手段を封じるんだから
直接参照できるセッターやゲッターつけたら保証できなくなるじゃん
335デフォルトの名無しさん
2014/12/17(水) 22:40:02.99ID:lLmQTo2M >>334
リフレクションは悪、コンパイル時に検出できるエラーがリフレクションにすると検出できなくなってしまう‥
まあ何でもかんでもsetter-getter で公開してしまうのはどうかと思うが(ましてやプロパティを公開してしまうのは最悪)
リフレクションは悪、コンパイル時に検出できるエラーがリフレクションにすると検出できなくなってしまう‥
まあ何でもかんでもsetter-getter で公開してしまうのはどうかと思うが(ましてやプロパティを公開してしまうのは最悪)
336デフォルトの名無しさん
2014/12/18(木) 15:10:59.93ID:ZOTu6c+H おいおいインスタンスにアクセサなかったら、
そいつの状態を変えたりモニターしたりどうやるんだよ。
そいつの状態を変えたりモニターしたりどうやるんだよ。
337デフォルトの名無しさん
2014/12/18(木) 15:18:48.22ID:hbsgKLA0 >>336
状態をモニタするのは「モニタする」メソッドでやるべきじゃね?
状態を変えるなら、状態を変えるメソッドを通すべきだと思うし
もちろん、カプセル化の観点から見たら、の話ね
何か目的があってカプセル化を崩すなら、それはそれだろうし
状態をモニタするのは「モニタする」メソッドでやるべきじゃね?
状態を変えるなら、状態を変えるメソッドを通すべきだと思うし
もちろん、カプセル化の観点から見たら、の話ね
何か目的があってカプセル化を崩すなら、それはそれだろうし
338デフォルトの名無しさん
2014/12/18(木) 15:31:32.87ID:ZOTu6c+H いやそのためのメソッドがsetter/getterだろうと。
339デフォルトの名無しさん
2014/12/18(木) 16:01:52.60ID:a38PRbZq340デフォルトの名無しさん
2014/12/18(木) 22:10:35.29ID:nYq1QBRW >>339
>>335 はプロパティをフィールドと混同している気がする。
フィールドを公開するのが最悪、なら納得できるもん。
>>338
setter/getterはあくまで、結果としてそうなるだけのものだよ。
あくまで例えばの話だけど setLeft(), setRight(), setWidth() という3つのsetterがあったとして、
内部データは「left,right」でもいいし「left,width」でも「center,width」でも
「center,half_width」でもいい、もっと言えば「width,right」でも構わない。
まあよほど処理上の都合がないかぎり最後のを選ぶ人は少数だと思うけど、
どれが単純なsetter/getterになるのか、どれが違うのかは外からは分からない。
そして、それは分からなくていいものだと思うよ。
状態が最初にあって、それを見たり弄ろうと思うとsetter/getterになっちゃうけど
まずそのオブジェクトで何をしたいのかを考えて、それを実現するための内部構造と考えると
自然とカプセル化されてくもんじゃないかな。
>>335 はプロパティをフィールドと混同している気がする。
フィールドを公開するのが最悪、なら納得できるもん。
>>338
setter/getterはあくまで、結果としてそうなるだけのものだよ。
あくまで例えばの話だけど setLeft(), setRight(), setWidth() という3つのsetterがあったとして、
内部データは「left,right」でもいいし「left,width」でも「center,width」でも
「center,half_width」でもいい、もっと言えば「width,right」でも構わない。
まあよほど処理上の都合がないかぎり最後のを選ぶ人は少数だと思うけど、
どれが単純なsetter/getterになるのか、どれが違うのかは外からは分からない。
そして、それは分からなくていいものだと思うよ。
状態が最初にあって、それを見たり弄ろうと思うとsetter/getterになっちゃうけど
まずそのオブジェクトで何をしたいのかを考えて、それを実現するための内部構造と考えると
自然とカプセル化されてくもんじゃないかな。
341デフォルトの名無しさん
2014/12/18(木) 22:32:07.68ID:ZOTu6c+H >>340
いやだからアクセサでオブジェクトの状態を変える・モニターするのは別に普通だろと言ってるの。
いやだからアクセサでオブジェクトの状態を変える・モニターするのは別に普通だろと言ってるの。
342デフォルトの名無しさん
2014/12/18(木) 22:55:00.66ID:CbZTNJ5S Entityにgetsetつけてるのって何も考えてないとしか思えない
343デフォルトの名無しさん
2014/12/18(木) 23:22:15.68ID:rHvMFTQj 状態変更やモニタするメソッドの名前をgetやsetにするのは自由だけど・・・命名規則的にそれってどうなの?
それに当然モニタリング機能を提供すべき責任を負ってるクラスだけだからな
状態を変更するメソッドならバリデーションや整合性チェック、状態変化に伴う動作まで含めて一つの完結した機能として定義すべきかな
状態変化監視するならオブザーバパターンで、JavaならpropeatyChangeListenerとか
実装して受け取るべきだと思う
もしくは監視用ステータスオブジェクトを返す感じとかか?
それに当然モニタリング機能を提供すべき責任を負ってるクラスだけだからな
状態を変更するメソッドならバリデーションや整合性チェック、状態変化に伴う動作まで含めて一つの完結した機能として定義すべきかな
状態変化監視するならオブザーバパターンで、JavaならpropeatyChangeListenerとか
実装して受け取るべきだと思う
もしくは監視用ステータスオブジェクトを返す感じとかか?
344デフォルトの名無しさん
2014/12/18(木) 23:28:53.90ID:ZOTu6c+H ああ、俺が言ってるのは単純にプロパティの事だよ。
345デフォルトの名無しさん
2014/12/19(金) 00:08:44.41ID:Z5vGYKdT こういう説明はどうだろう?
NG:状態変数を取得するために状態変数取得メソッドを作った
OK:状態取得メソッドを作ったので保管場所として状態変数を作った
少なくとも設計段階でデザインするべき物かな
そうやってデザインの結果として一部にクラスに、
結果的に単純プロパティのような形の実装になった物が出来るの悪いことではないと思う
NG:状態変数を取得するために状態変数取得メソッドを作った
OK:状態取得メソッドを作ったので保管場所として状態変数を作った
少なくとも設計段階でデザインするべき物かな
そうやってデザインの結果として一部にクラスに、
結果的に単純プロパティのような形の実装になった物が出来るの悪いことではないと思う
346デフォルトの名無しさん
2014/12/19(金) 00:25:25.61ID:kXOboZoh 始めからプロパティとして定義するものもあれば、
プライベート変数を後からプロパティに変更する事もあれば、
プロパティだったものをプライベート変数に変更する事もあるよ。
プライベート変数を後からプロパティに変更する事もあれば、
プロパティだったものをプライベート変数に変更する事もあるよ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 [蚤の市★]
- 【熊本】園児に強制性交か 保育所勤務の男を逮捕「性的な欲望が我慢できなかった」警察は余罪を調べる [七波羅探題★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【サッカー】上田綺世の活躍は「一過性」 15戦18発も…オランダ英雄は懐疑的な姿勢「確信に至っていない」 [ゴアマガラ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ [597533159]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ180
- 🏡
- 韓国政府、高市早苗の「竹島領土」発言にブチギレwwwwwwwwwwwwwwww [834922174]
- 高市早苗「竹島は日本領土」 [834922174]
