カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。
偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。
オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。
https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96
探検
オブジェクト指向ってクソじゃね?
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/08/24(金) 13:32:09.36ID:ifygL6bT772デフォルトの名無しさん
2018/10/12(金) 17:19:28.65ID:5jm0P0/q オブジェクト指向信者もDI信者も同じ臭いがするね
【Java】DIコンテナって本当に便利か?
http://mevius.5ch.net/test/read.cgi/tech/1219242206/
次は何を担ぐのやら
外国で流行って育っていくのだから、それなりのメリットはあるんだろうけど、なぜか仕事では恩恵にあずかったことはない
【Java】DIコンテナって本当に便利か?
http://mevius.5ch.net/test/read.cgi/tech/1219242206/
次は何を担ぐのやら
外国で流行って育っていくのだから、それなりのメリットはあるんだろうけど、なぜか仕事では恩恵にあずかったことはない
773デフォルトの名無しさん
2018/10/12(金) 20:33:03.38ID:4mK9L0RW 設計のセンスの無い奴はどんな流行が来たって糞な設計しか出来ないんだよなぁ
センスがある奴はなんとなくどんな流行のスタイルでもこなして来るからなぁ
センスがある奴はなんとなくどんな流行のスタイルでもこなして来るからなぁ
774デフォルトの名無しさん
2018/10/12(金) 20:41:34.47ID:CecLyO81 どーでもいーけどコーディングの事設計てゆーのいーかげん恥ずかしくね?w
775デフォルトの名無しさん
2018/10/12(金) 20:45:43.93ID:4mK9L0RW は?
設計はコーディングじゃねーよw
四角い箱描いて矢印や電線で繋げて遊ぶ奴だぞ。
設計はコーディングじゃねーよw
四角い箱描いて矢印や電線で繋げて遊ぶ奴だぞ。
776デフォルトの名無しさん
2018/10/12(金) 20:45:57.27ID:SyXP90mj ある一定以下に対して理解できるような教範が出てこない
だから一部の人しか使えないようになってる
結局は出来る人の間で持て囃されるだけになってしまう
この何か新しいやり方を創造するのと一般に使えるようにする
というのは本来両輪なんだけど
普通以下の人達が使えるようになる教範を作る
というのはかなり難しい上に
それをやる人には余りメリットがないから
なかなか出てこない
だから
オブジェクト指向プログラミングにしても
関数型プログラミングにしてもその他の技術にしても
広く(普通程度以下)使われるのは難しいし
このスレのタイトルみたいな感想を持つしかなくなる
後は自分が出来るけど他の人が出来ないままのほうが出来る人には得だから妨害する
みたいなのが居るくらいだろうかねぇ
だから一部の人しか使えないようになってる
結局は出来る人の間で持て囃されるだけになってしまう
この何か新しいやり方を創造するのと一般に使えるようにする
というのは本来両輪なんだけど
普通以下の人達が使えるようになる教範を作る
というのはかなり難しい上に
それをやる人には余りメリットがないから
なかなか出てこない
だから
オブジェクト指向プログラミングにしても
関数型プログラミングにしてもその他の技術にしても
広く(普通程度以下)使われるのは難しいし
このスレのタイトルみたいな感想を持つしかなくなる
後は自分が出来るけど他の人が出来ないままのほうが出来る人には得だから妨害する
みたいなのが居るくらいだろうかねぇ
777デフォルトの名無しさん
2018/10/12(金) 20:48:39.65ID:4mK9L0RW あー電線繋げては遊ばないわ、危ないしw
点線の間違いだわ。
点線の間違いだわ。
778デフォルトの名無しさん
2018/10/12(金) 21:12:49.59ID:CecLyO81 ガチでわかっとらん奴やったw
779デフォルトの名無しさん
2018/10/12(金) 21:17:29.38ID:mCoAwEvP780デフォルトの名無しさん
2018/10/12(金) 21:21:05.43ID:xVyRtSc0 少なくともこのスレにいるような低学歴知恵遅れのドカタには
オブジェクト指向言語を適切に使いこなせない
オブジェクト指向言語を適切に使いこなせない
781デフォルトの名無しさん
2018/10/12(金) 21:27:17.84ID:d1sPni1g 少なくともこのスレにいるような低学歴知恵遅れのドカタには
オブジェクト指向言語を適切に使いこなせない
オブジェクト指向言語を適切に使いこなせない
782デフォルトの名無しさん
2018/10/12(金) 22:41:19.80ID:F7y/wInK >>772
テストしたことないのかい?
テストしたことないのかい?
783デフォルトの名無しさん
2018/10/12(金) 23:12:30.21ID:xVyRtSc0 日銀短観のDIは便利
池沼あげのDIはtraitsなみにウンコくさい
池沼あげのDIはtraitsなみにウンコくさい
784デフォルトの名無しさん
2018/10/13(土) 10:26:58.14ID:YNebL+WU 今時DIも使いこなせない人材とか組織にとってのリスクでしか無いよ
あっちこっち結合しまくったクソコードを社内リポジトリにばらまくとか悪夢そのものじゃん
あっちこっち結合しまくったクソコードを社内リポジトリにばらまくとか悪夢そのものじゃん
785デフォルトの名無しさん
2018/10/13(土) 10:58:13.65ID:H4Y+M12v DI使っても結合しまくったくそコードはくそのままだ
業務分析の時点でコケて役割分担がぐちゃぐちゃなんだからDI導入したって解決しない
業務分析の時点でコケて役割分担がぐちゃぐちゃなんだからDI導入したって解決しない
786デフォルトの名無しさん
2018/10/13(土) 21:25:17.45ID:YNebL+WU >>785
DIを使わないから業務分析の時点でコケて役割分担がぐちゃぐちゃになるのでは?
設計者にDIを学習させてDIを使う前提で設計させればそのあたりの分担がキレイになるように意識して設計するようになるよ
DIを使わないから業務分析の時点でコケて役割分担がぐちゃぐちゃになるのでは?
設計者にDIを学習させてDIを使う前提で設計させればそのあたりの分担がキレイになるように意識して設計するようになるよ
787デフォルトの名無しさん
2018/10/13(土) 22:13:29.66ID:An0DfPZD >>786
それで成功した例なんてあんの?
それで成功した例なんてあんの?
788デフォルトの名無しさん
2018/10/13(土) 22:15:51.44ID:L3Dj2/gz cのたくさんの構造体にいっぱい変数や関数ポインタもたせて
それ入力にして処理するのと同じ
それ入力にして処理するのと同じ
789デフォルトの名無しさん
2018/10/13(土) 22:29:25.59ID:HA3RUpZg DIはたしかにきれいな設計になるが、めんどくて工数がかかる。
作業者にはYAGNIのほうが優先度高いから勝手に採用できない
だからそういうのはトップエンジニアが最初に管理方針としてきめとくもんだ
末端のプログラマーに責任押し付けるのは酷
作業者にはYAGNIのほうが優先度高いから勝手に採用できない
だからそういうのはトップエンジニアが最初に管理方針としてきめとくもんだ
末端のプログラマーに責任押し付けるのは酷
790デフォルトの名無しさん
2018/10/13(土) 22:38:19.49ID:HA3RUpZg 今のDIはめんどすぎる
既存コードをいじらないで中身をすげかえる
もっと楽な方法はないものか
既存コードをいじらないで中身をすげかえる
もっと楽な方法はないものか
791デフォルトの名無しさん
2018/10/13(土) 22:42:51.86ID:An0DfPZD DIは言語自体に組み込まれるべきもの
高級言語はどんどん高級になるべきだが
ガベコレ搭載あたりで停滞してしまったからね
本来はDIやデザインパターンやユニットテストや
フレームワークまで高級言語の仕様に含めなきゃいけない
高級言語はどんどん高級になるべきだが
ガベコレ搭載あたりで停滞してしまったからね
本来はDIやデザインパターンやユニットテストや
フレームワークまで高級言語の仕様に含めなきゃいけない
792デフォルトの名無しさん
2018/10/13(土) 22:44:08.09ID:L3Dj2/gz インターフェースを決め打ちにしたテンプレート作る間抜けな作りと
大してかわらないからな
大してかわらないからな
793デフォルトの名無しさん
2018/10/13(土) 22:48:54.83ID:c+yfSqJ1 使用者との合意の無いインターフェースほどクソなモンは無い
独りよがりで考えたものは全部クソなので誰にも見られないうちに捨てて欲しい
独りよがりで考えたものは全部クソなので誰にも見られないうちに捨てて欲しい
794デフォルトの名無しさん
2018/10/13(土) 22:54:18.52ID:An0DfPZD 逆に言えば使用者との合意のあるインターフェースは問題ない
ということになってしまう。
ということになってしまう。
795デフォルトの名無しさん
2018/10/13(土) 22:59:41.42ID:c+yfSqJ1 >>794
もちろんそうだろ
もちろんそうだろ
796デフォルトの名無しさん
2018/10/13(土) 23:21:29.03ID:An0DfPZD797デフォルトの名無しさん
2018/10/13(土) 23:38:37.37ID:L3Dj2/gz クソが余計なことをして
余計にクソなコードを生産するサイクルが途絶えることはない
余計にクソなコードを生産するサイクルが途絶えることはない
798デフォルトの名無しさん
2018/10/13(土) 23:45:30.90ID:An0DfPZD SEが余計なことをして
クソコードを量産することになるのは
よくある話だな
クソコードを量産することになるのは
よくある話だな
799デフォルトの名無しさん
2018/10/14(日) 11:01:28.22ID:RzJcTIeH DIを使わないと結合部分に余計なコードが入り乱れて大変なんだよな
800デフォルトの名無しさん
2018/10/14(日) 12:27:39.55ID:mBxOrkWE え?どんなコードが入るの?
ありえないのに
ありえないのに
801デフォルトの名無しさん
2018/10/15(月) 20:24:46.22ID:vo4hBZ/w なあ、おまえのクラス内に公開変数作って、そいつをインクルードして関数呼び出し時にポインター参照で指定するなんてインターフェス、誰が言い出したの?
しかも各関数は自前のその公開変数を直接参照して動いてるし。
こんな中途半端なやり方するなら、最初から隠蔽しちゃってくださいよ。
しかも各関数は自前のその公開変数を直接参照して動いてるし。
こんな中途半端なやり方するなら、最初から隠蔽しちゃってくださいよ。
802デフォルトの名無しさん
2018/10/15(月) 20:30:03.66ID:1WHouwEf ごめん自分のデータクラスを全クラスの共通IFにする自信がなかった
803デフォルトの名無しさん
2018/10/15(月) 21:16:54.08ID:E6pr56BO 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
804デフォルトの名無しさん
2018/10/16(火) 03:09:47.94ID:ou8fzFot この記事拍手の数すげぇな。まだ伸び続けてる
Goodbye, Object Oriented Programming
https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53
Goodbye, Object Oriented Programming
https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53
805デフォルトの名無しさん
2018/10/16(火) 07:54:43.79ID:Z3LiiLXa 誰か和訳してよ
806デフォルトの名無しさん
2018/10/16(火) 07:57:35.98ID:Z3LiiLXa オブジェクト指向を厚く語るヤツは
お勉強いまいちのヤツが多くて信用できないけど、
さらっとオブジェクト指向で書いたようなライブラリを公開してるヤツが
高学歴というわけでもない不思議な業界だよね
お勉強いまいちのヤツが多くて信用できないけど、
さらっとオブジェクト指向で書いたようなライブラリを公開してるヤツが
高学歴というわけでもない不思議な業界だよね
807デフォルトの名無しさん
2018/10/16(火) 08:20:25.22ID:Jp8CUHhN Banana Monkey Jungle Solution
まで読んだ
まで読んだ
808デフォルトの名無しさん
2018/10/16(火) 09:47:48.81ID:hiAtkD1Q Elm最高まで読んだ
809デフォルトの名無しさん
2018/10/16(火) 10:44:44.96ID:KsONw+2K 結局関数プログラミングが良い
って書いてある様に見えるけど
オブジェクト指向に対して何がどう良いのかは書いてないように見える
オブジェクト指向の問題点の指摘自体は有ってるように思えるけど
そもそもそういう使い方をするものじゃない
って気がするなぁ
現実世界とどうたらこうたら
こういう書き方をする人は自分からみてほぼ間違えている様に見える
騙された
って書いて有るけど
オブジェクト指向ってそんなに劇的に何かが壮大に変わるわけじゃないんだけど
その辺を誤解しているかオブジェクト指向を宣伝している奴がそもそも捕らえ違いをしている
そう自分には感じる事が多いなぁ
って書いてある様に見えるけど
オブジェクト指向に対して何がどう良いのかは書いてないように見える
オブジェクト指向の問題点の指摘自体は有ってるように思えるけど
そもそもそういう使い方をするものじゃない
って気がするなぁ
現実世界とどうたらこうたら
こういう書き方をする人は自分からみてほぼ間違えている様に見える
騙された
って書いて有るけど
オブジェクト指向ってそんなに劇的に何かが壮大に変わるわけじゃないんだけど
その辺を誤解しているかオブジェクト指向を宣伝している奴がそもそも捕らえ違いをしている
そう自分には感じる事が多いなぁ
810デフォルトの名無しさん
2018/10/16(火) 10:49:18.08ID:hiAtkD1Q 現実世界とマッピングさせようとしたらそりゃ上手くいかんし
バナナモンキージャングルになるわな
あほくさ
バナナモンキージャングルになるわな
あほくさ
811デフォルトの名無しさん
2018/10/16(火) 11:00:52.85ID:sVO7hlJ7 アクセス修飾子について分かりやすい説明しているサイトない?
privateからゲッター → セッターの理由がわかんないんだよな。
publicとの違いがなんなのか
privateからゲッター → セッターの理由がわかんないんだよな。
publicとの違いがなんなのか
812デフォルトの名無しさん
2018/10/16(火) 11:06:30.91ID:HqnwAz6t813デフォルトの名無しさん
2018/10/16(火) 11:07:25.98ID:HqnwAz6t ゲターもせターもパブリクーにするなら
アクセサーとフィールドの違いはない
アクセサーとフィールドの違いはない
814デフォルトの名無しさん
2018/10/16(火) 11:39:32.23ID:8J+M5yKD あとから処理をフックできるぞ!
815デフォルトの名無しさん
2018/10/16(火) 11:40:12.83ID:Ul6KAhVk setget時にログ出したいときに一括でできるぐらいか?
816デフォルトの名無しさん
2018/10/16(火) 13:06:07.08ID:GbK/byr7 >>811
わかんないなら使わなくていいよ
用もないのにゲッターセッターを用意しろってのは間違って広まった悪いスタイルだ
多態したいとか、書かれてるようにログを取りたいとか、アクセサがあるとインスペクタで値が見えて便利とか
なんか用事がある時だけでいい
わかんないなら使わなくていいよ
用もないのにゲッターセッターを用意しろってのは間違って広まった悪いスタイルだ
多態したいとか、書かれてるようにログを取りたいとか、アクセサがあるとインスペクタで値が見えて便利とか
なんか用事がある時だけでいい
817デフォルトの名無しさん
2018/10/16(火) 13:22:26.52ID:sVO7hlJ7818デフォルトの名無しさん
2018/10/16(火) 14:20:20.47ID:cFNbEHw0 言語仕様で何とでもなるものにいちいちゲッターセッター付けるの無駄じゃね?
819デフォルトの名無しさん
2018/10/16(火) 14:59:03.86ID:8J+M5yKD それがプロパティなわけだが
ゲッターセッターと機能が重複しててほぼシンタックスシュガーで邪魔
ゲッターセッターと機能が重複しててほぼシンタックスシュガーで邪魔
820デフォルトの名無しさん
2018/10/16(火) 15:33:44.68ID:pkWZobMJ 今時まだゲッターセッターなんて無意味なもん書いてる奴いんのか。
821デフォルトの名無しさん
2018/10/16(火) 16:52:45.97ID:nQomBRvE セットなんちゃらって書く場面を考えると
なにかの状態遷移を伴うケースが大抵である
だとしたら、それを具体的に示す関数を書くべきなのでは
初期化が不便だというのもなんか違う
設定するメンバの組み合わせは決めておくべきではないか
それに併せて初期化関数を用意するだけ
なにかの状態遷移を伴うケースが大抵である
だとしたら、それを具体的に示す関数を書くべきなのでは
初期化が不便だというのもなんか違う
設定するメンバの組み合わせは決めておくべきではないか
それに併せて初期化関数を用意するだけ
822デフォルトの名無しさん
2018/10/16(火) 17:08:05.58ID:JHQMnpCL823デフォルトの名無しさん
2018/10/16(火) 17:10:16.39ID:JHQMnpCL824デフォルトの名無しさん
2018/10/16(火) 18:13:44.49ID:AosmVSTK いつもクラスの例にでてくるPersonクラスはNameとAgeを持ってるけどあれ適当だよな
Ageは不変じゃないからいつの時点のAgeなのかもわからん
本来は誕生日を持っておいてAgeが必要なときにいつの時点の年齢が欲しいかを引数で与えて計算すべきなんだよな
Ageは不変じゃないからいつの時点のAgeなのかもわからん
本来は誕生日を持っておいてAgeが必要なときにいつの時点の年齢が欲しいかを引数で与えて計算すべきなんだよな
825デフォルトの名無しさん
2018/10/16(火) 18:57:36.52ID:PnSVhV/K 言われたらそうだなw盲点だった
826デフォルトの名無しさん
2018/10/16(火) 19:03:13.54ID:JHQMnpCL そこででてくるのがプロパティだよ
ageは属性かメソッドかといったら属性だろ?
一見属性にアクセスしているようで、内部では
いろんな処理を行って値を返す。
それがプロパティ
ageは属性かメソッドかといったら属性だろ?
一見属性にアクセスしているようで、内部では
いろんな処理を行って値を返す。
それがプロパティ
827デフォルトの名無しさん
2018/10/16(火) 19:04:22.70ID:JHQMnpCL828デフォルトの名無しさん
2018/10/16(火) 19:12:47.50ID:AosmVSTK829デフォルトの名無しさん
2018/10/16(火) 19:22:26.29ID:AzP++FB2 状態状態ってよく悪者にされるけどOOPの肝はのへんににあると思う
#include <iostream>
struct logger {
std::ostream *out;
logger() : out(0) {}
void p(const char *s) {
if (out) *out << s << std::endl;
}
};
void f(logger &l) {
l.p("foo");
l.p("bar");
}
int main() {
logger g;
f(g);
g.out = &std::cout;
f(g);
g.out = &std::cerr;
f(g);
return 0;
}
ログの有効無効なんかをこうやって切り替えるのって
そんなに悪いこと?
#include <iostream>
struct logger {
std::ostream *out;
logger() : out(0) {}
void p(const char *s) {
if (out) *out << s << std::endl;
}
};
void f(logger &l) {
l.p("foo");
l.p("bar");
}
int main() {
logger g;
f(g);
g.out = &std::cout;
f(g);
g.out = &std::cerr;
f(g);
return 0;
}
ログの有効無効なんかをこうやって切り替えるのって
そんなに悪いこと?
830デフォルトの名無しさん
2018/10/16(火) 19:24:41.24ID:GbK/byr7 Delphiなら配列の構文で引数付きプロパティを扱えたりするが
そんなことするぐらいならpersonからはbirthdayだけ見せて
今何歳かなんて呼び出し側で勝手に計算しやがれって思うわw
そんなことするぐらいならpersonからはbirthdayだけ見せて
今何歳かなんて呼び出し側で勝手に計算しやがれって思うわw
831デフォルトの名無しさん
2018/10/16(火) 19:26:14.38ID:OiVT6sa2 読み取りのプロパティは冪等であるべきじゃないの?
832デフォルトの名無しさん
2018/10/16(火) 19:27:08.86ID:JHQMnpCL Nameも不変じゃないし身長体重性別だって不変じゃない
商品の値段も不変じゃない
不変のものなってまず無いだろう。
つまりは、オブジェクトの状態の過去のスナップショットを
オブジェクト自身に持たせるのが正しい設計かという話
商品の値段も不変じゃない
不変のものなってまず無いだろう。
つまりは、オブジェクトの状態の過去のスナップショットを
オブジェクト自身に持たせるのが正しい設計かという話
833デフォルトの名無しさん
2018/10/16(火) 19:30:01.71ID:GbK/byr7834デフォルトの名無しさん
2018/10/16(火) 19:33:44.42ID:JHQMnpCL835デフォルトの名無しさん
2018/10/16(火) 19:34:54.98ID:AosmVSTK 話がずれてる
本質が理解されてないらしい
本質が理解されてないらしい
836デフォルトの名無しさん
2018/10/16(火) 19:35:57.94ID:JHQMnpCL837デフォルトの名無しさん
2018/10/16(火) 19:37:46.55ID:AosmVSTK 誕生日だけが提供されていたらコードのあちこちで年齢を出すメソッドが別々に書かれるかもしれない
同じ処理が複数で書かれてそれも同じ処理とも限らない
ロジックが散らばるのはよくないからクラスが持つべきではないかと思う
同じ処理が複数で書かれてそれも同じ処理とも限らない
ロジックが散らばるのはよくないからクラスが持つべきではないかと思う
838デフォルトの名無しさん
2018/10/16(火) 19:38:15.60ID:eMqRZshQ 大小比較のアルゴリズム自体を引数で渡したり、
オブジェクト指向っぽくてエレガントに見えはするけど、
一般プログラマには可読性低いなー
と思ったり。
一昔前のオブジェクト指向設計が売りの会社たちは、
オナニー会社として、まるで奮わなかったもんな
やっぱ適正レベルってもんが大事だよね
オブジェクト指向っぽくてエレガントに見えはするけど、
一般プログラマには可読性低いなー
と思ったり。
一昔前のオブジェクト指向設計が売りの会社たちは、
オナニー会社として、まるで奮わなかったもんな
やっぱ適正レベルってもんが大事だよね
839デフォルトの名無しさん
2018/10/16(火) 19:40:14.57ID:GbK/byr7840デフォルトの名無しさん
2018/10/16(火) 19:41:53.17ID:eMqRZshQ C++はベターCとして、文字列いじるときとか楽できればいいんじゃね?
でもmallocとかメモリ管理が面倒だから、C#やJavaに流れるよね
要員確保できるもの
でもmallocとかメモリ管理が面倒だから、C#やJavaに流れるよね
要員確保できるもの
841デフォルトの名無しさん
2018/10/16(火) 19:43:35.70ID:AosmVSTK842デフォルトの名無しさん
2018/10/16(火) 19:43:50.71ID:eMqRZshQ だいたいそういうのは業務共通クラスとしてstaticメソッドてんこ盛りで置いておくよね
843デフォルトの名無しさん
2018/10/16(火) 19:46:28.35ID:JHQMnpCL つーか簡単だろ?
日付クラス。もしくは日付補助クラスに
2つの日付の差を年で返すメソッドを追加する
Personクラスには、誕生日とageプロパティをもたせ
ageプロパティは、誕生日と今日の日付の差を
さっきの年で返すメソッドを呼び出すだけにする
テストは日付クラスのメソッドはそのまま年計算のメソッドのテストを書けばいいし
Personクラスのテストは、単体テストの観点から日付クラスが
外部モジュールになるので年計算のテストは不要(すでにやってる)
年計算のメソッドを期待したとおりの引数で呼び出していることの確認と
返り値をそのまま戻しているかを確認すればいい
特定の年月日の年齢が知りたいなら、誕生日プロパティと特定の日付から
日付クラスの年計算メソッドを呼び出して差を計算するか、
適切な場所があるならそこにメソッドをおけばいい
日付クラス。もしくは日付補助クラスに
2つの日付の差を年で返すメソッドを追加する
Personクラスには、誕生日とageプロパティをもたせ
ageプロパティは、誕生日と今日の日付の差を
さっきの年で返すメソッドを呼び出すだけにする
テストは日付クラスのメソッドはそのまま年計算のメソッドのテストを書けばいいし
Personクラスのテストは、単体テストの観点から日付クラスが
外部モジュールになるので年計算のテストは不要(すでにやってる)
年計算のメソッドを期待したとおりの引数で呼び出していることの確認と
返り値をそのまま戻しているかを確認すればいい
特定の年月日の年齢が知りたいなら、誕生日プロパティと特定の日付から
日付クラスの年計算メソッドを呼び出して差を計算するか、
適切な場所があるならそこにメソッドをおけばいい
844デフォルトの名無しさん
2018/10/16(火) 19:47:01.66ID:JHQMnpCL845デフォルトの名無しさん
2018/10/16(火) 19:47:46.46ID:JHQMnpCL dateクラスに持たせるべきではないというのなら
年齢計算クラスに持たせればいいだけだな
年齢計算クラスに持たせればいいだけだな
846デフォルトの名無しさん
2018/10/16(火) 19:47:59.81ID:GbK/byr7 >>841
すまん、ならdateクラスは撤回する
国にも依るとなると尚更personにも持たせたくないな
単にグローバル関数にするか、いっそそれ用のクラスツリーをでっち上げて後々多態できるようにするか、かなあ
すまん、ならdateクラスは撤回する
国にも依るとなると尚更personにも持たせたくないな
単にグローバル関数にするか、いっそそれ用のクラスツリーをでっち上げて後々多態できるようにするか、かなあ
847デフォルトの名無しさん
2018/10/16(火) 19:48:53.47ID:tUmXldvA >>843
じーちゃん132歳とか出るパターンじゃね?
じーちゃん132歳とか出るパターンじゃね?
848デフォルトの名無しさん
2018/10/16(火) 19:49:01.40ID:JHQMnpCL 国によって年齢計算のアルゴリズムを変えたいというのなら
ストラテジーパターンの出番だなw
ストラテジーパターンの出番だなw
849デフォルトの名無しさん
2018/10/16(火) 19:54:14.32ID:nQomBRvE みんな賢いねぇ
850デフォルトの名無しさん
2018/10/16(火) 20:36:04.05ID:83dvK2wh 俺やったらageプロパティやageオブジェクト作るんじゃなくて
ageクラス作ってpersonのデリゲートメソッドにageクラスオブジェクト返すものを作る。これで年齢とはそもそもなんぞや定義はの面倒な過程の話にも対応出来る
だが書く途中でゲッターですませやとキレだすと思う
ageクラス作ってpersonのデリゲートメソッドにageクラスオブジェクト返すものを作る。これで年齢とはそもそもなんぞや定義はの面倒な過程の話にも対応出来る
だが書く途中でゲッターですませやとキレだすと思う
851デフォルトの名無しさん
2018/10/16(火) 20:39:51.39ID:+sj1AQoJ 普通に考えたら person と基準日を表すオブジェクトから年齢を返す関数を作るってことになると思うんだが。
852デフォルトの名無しさん
2018/10/16(火) 20:42:25.71ID:H029zngb >>850
定義もわからんもの作んなカスwwww
定義もわからんもの作んなカスwwww
853デフォルトの名無しさん
2018/10/16(火) 21:14:56.44ID:83dvK2wh854デフォルトの名無しさん
2018/10/16(火) 22:05:40.03ID:t+SGPyRj もうメンバー変数とメンバー関数が混在するクラスは作るな
関数しかないinterfaceで十分
関数が一つしかないならlambdaでいい
関数しかないinterfaceで十分
関数が一つしかないならlambdaでいい
855デフォルトの名無しさん
2018/10/16(火) 22:35:26.96ID:uJDDS3c2 それ、区別する必要あるの?
856デフォルトの名無しさん
2018/10/16(火) 22:42:29.73ID:H029zngb 正直必要かどうかはわからない
ただおまえが欲しい
だめか?それだけじゃ?
ただおまえが欲しい
だめか?それだけじゃ?
857デフォルトの名無しさん
2018/10/16(火) 22:45:36.90ID:VMcjBADQ その低学歴知恵遅れが作ったメソッドは
うるう年考慮してなさそうで変なバグが入ってそうだわ
2000年10月20日生まれなら
普通にintで
(20181016-20001020)/1000
でしまいだからな
うるう年考慮してなさそうで変なバグが入ってそうだわ
2000年10月20日生まれなら
普通にintで
(20181016-20001020)/1000
でしまいだからな
858デフォルトの名無しさん
2018/10/16(火) 22:48:30.57ID:VMcjBADQ そもそも常識的に
特殊なケースを除いて日付の引き算で
経過年数がかえってくるという発想はないからな
経過日数はあったとしてもな
特殊なケースを除いて日付の引き算で
経過年数がかえってくるという発想はないからな
経過日数はあったとしてもな
859デフォルトの名無しさん
2018/10/16(火) 22:52:46.85ID:VMcjBADQ (20181016-20001020)/10000
こうだな
危ない。。。
こうだな
危ない。。。
860デフォルトの名無しさん
2018/10/16(火) 22:54:43.61ID:VMcjBADQ このとおり、
やっぱりな低学歴知恵遅れが
オブジェクト指向にふれるのは危険
オレぐらいのレベルがないとムリ
やっぱりな低学歴知恵遅れが
オブジェクト指向にふれるのは危険
オレぐらいのレベルがないとムリ
861デフォルトの名無しさん
2018/10/16(火) 23:02:22.64ID:+0KL0EUx 俺の周りじゃあ
バカほど大喜びで使っているよ
バカほど大喜びで使っているよ
862デフォルトの名無しさん
2018/10/17(水) 08:20:36.48ID:K4tsdk4L863デフォルトの名無しさん
2018/10/17(水) 08:22:14.61ID:K4tsdk4L864デフォルトの名無しさん
2018/10/17(水) 09:03:37.20ID:Vm5CNq+z 半角さんを怒らせたら低学歴知恵遅れにされちゃうよ
865デフォルトの名無しさん
2018/10/17(水) 09:56:27.08ID:18gBK5Xa 大抵の場合、正しく理解せずに中途半端な実装してる案件にぶち当たって嫌な思いした奴がここに集うんだろ?
866デフォルトの名無しさん
2018/10/17(水) 10:09:33.91ID:nljGc94P 実装レベルの議論してるやつと設計レベルの議論してるやつ
さらにもーちょい上から俯瞰して物を言ってるやつ
全部ごちゃ混ぜになってて面白いね
さらにもーちょい上から俯瞰して物を言ってるやつ
全部ごちゃ混ぜになってて面白いね
867デフォルトの名無しさん
2018/10/17(水) 12:01:54.30ID:vk6wOayh 自分はプログラムの観点からだけで話してる
上にあった英語の奴もプログラムが主だったなぁ
設計は知らない
話題をスレで分けた方が良いのかねぇ?
上にあった英語の奴もプログラムが主だったなぁ
設計は知らない
話題をスレで分けた方が良いのかねぇ?
868デフォルトの名無しさん
2018/10/17(水) 12:20:31.30ID:BZlH8+Xm 設計レベルの話とかでとらんけどw
869デフォルトの名無しさん
2018/10/17(水) 14:05:39.44ID:K4tsdk4L やっぱ平年の3/1に、うるう年の2/29に生まれた人の年齢が狂うな。
しかしこういう知ったかぶりが、ひどいバグを生んで改修大変になる。
と言うか、これを保存時にやられるとデータ修正ものなので、場合によっては偉いさんが頭下げに行って、出世の道が遠のくパターン。
しかしこういう知ったかぶりが、ひどいバグを生んで改修大変になる。
と言うか、これを保存時にやられるとデータ修正ものなので、場合によっては偉いさんが頭下げに行って、出世の道が遠のくパターン。
870デフォルトの名無しさん
2018/10/17(水) 14:07:46.09ID:18gBK5Xa 設計って、機能ごとに必要な処理をリストアップしたら、そのまんまオブジェクト指向なんじゃね?
871デフォルトの名無しさん
2018/10/17(水) 15:04:16.60ID:fcCyZegY 「誕生日の前日が終了する瞬間(すなわち誕生日をむかえる午前0時00分の直前)
に1歳を加えることになる」の部分の解釈には
前日に1日加えると解釈される場合と
当日に1日加えると解釈される場合の2種類がある
に1歳を加えることになる」の部分の解釈には
前日に1日加えると解釈される場合と
当日に1日加えると解釈される場合の2種類がある
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- H3ロケット8号機打ち上げ失敗、衛星軌道投入できず ★6 [少考さん★]
- 鈴木農相、おこめ券ではコメしか買えないとの誤解が広がっている 食料品などに幅広く使える [Hitzeschleier★]
- 【徳島】「体調が悪くなったら自己責任」と同意書求める 最長1年2か月期限切れ 生活保護受給者に賞味期限切れ食品を支給 徳島市 ★2 [ぐれ★]
- 【爆殺】モスクワ南部で自動車爆弾爆発 ロシア参謀本部陸軍作戦訓練局長ファニル‍・サルバロフ中将が死亡 [ごまカンパチ★]
- 粗品 M―1優勝のたくろうに言及「いい味出てたな」「全員面白かった。さすがM―1」「ただぁ、素人は黙っといて」 [muffin★]
- 「ONE PIECE」尾田栄一郎、原作は「ここからが大変」「僕は歳をとってしまったので最高速度で来年もズッシリドッシリ航海します」 [muffin★]
- 【実況】博衣こよりのえちえちねっこよ24m 🧪🍑 🥟
- 何でも否定から入るおじさんいるでしょ? [916950698]
- えっ、ち
- ゆめちゃん尻いっちゃってるぅ~の🏡
- おさかなさんあつまれえ
- 安倍晋三「いいかい学生さん、トンカツをな、トンカツをいつでも食えるくらいになりなよ」 [592058334]
