カプセル化(英語: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:ifygL6bT795デフォルトの名無しさん
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種類がある
872デフォルトの名無しさん
2018/10/17(水) 15:32:27.26ID:lTftiJN1 2/29日生まれの人は4でわらないとね
873デフォルトの名無しさん
2018/10/17(水) 16:00:02.67ID:K4tsdk4L >>871
一番問題になる学教法にならうべきじゃないんかな。
前日に歳を取る、ただし前日の24:00を使用する。表記や概念的には、って感じで。
だから、4/1生まれは4/2生まれと学年が違う。4/1生まれは、3月中に歳をとってるから。
一番問題になる学教法にならうべきじゃないんかな。
前日に歳を取る、ただし前日の24:00を使用する。表記や概念的には、って感じで。
だから、4/1生まれは4/2生まれと学年が違う。4/1生まれは、3月中に歳をとってるから。
874デフォルトの名無しさん
2018/10/17(水) 16:02:31.73ID:aR4OF1u3 誕生から1年経過することに1つ年を取るというのが定義であって
誕生日なんて全く関係ありませんよ。人間のクズども。
誕生日なんて全く関係ありませんよ。人間のクズども。
875デフォルトの名無しさん
2018/10/17(水) 16:08:03.45ID:DrCNXevb 学校教育法17条 「保護者は、子の満六歳に達した日の翌日以後における最初の学年の初めから・・・」
876デフォルトの名無しさん
2018/10/17(水) 16:09:22.06ID:t+3zMNmx 年齢の扱いをどうするかは法律で強制されているわけじゃないので
システムによって異なってもOK
だからどういう実装でも公平な実装であれば問題ないといえる。
例えば20歳おめでとうキャンペーンで、20歳になっていなくても
その月に20歳の誕生日を迎える人を対象にしても良いわけだ
だから何が正解かを議論することに意味はない
仕事の話をするなら
年齢の計算はどうしましょうか?と客に仕様を聞くべきか
年齢の計算はこのようにしますがよろしいですか?と客に仕様の確認するべきか?
そういったことを考えたほうが良い
システムによって異なってもOK
だからどういう実装でも公平な実装であれば問題ないといえる。
例えば20歳おめでとうキャンペーンで、20歳になっていなくても
その月に20歳の誕生日を迎える人を対象にしても良いわけだ
だから何が正解かを議論することに意味はない
仕事の話をするなら
年齢の計算はどうしましょうか?と客に仕様を聞くべきか
年齢の計算はこのようにしますがよろしいですか?と客に仕様の確認するべきか?
そういったことを考えたほうが良い
877デフォルトの名無しさん
2018/10/17(水) 16:10:12.75ID:t+3zMNmx ふ、無能共にマジレスしてしまったぜw
878デフォルトの名無しさん
2018/10/17(水) 16:11:46.81ID:4yuTjZOF 式の間違い云々よりも、皆ageはただの例示であることは前提とした上でOOPでどう表現するかの話をしてたのに
いきなり実装に踏み込んでくる思考が謎い
いきなり実装に踏み込んでくる思考が謎い
879デフォルトの名無しさん
2018/10/17(水) 16:15:47.15ID:DrCNXevb Personインスタンスのageのゲッターで計算しとく。
Personインスタンスが無い時にも年齢の計算が必要になったら、クラスメソッドにしてPersonのゲッター内部から使う
Personインスタンスが無い時にも年齢の計算が必要になったら、クラスメソッドにしてPersonのゲッター内部から使う
880デフォルトの名無しさん
2018/10/17(水) 16:18:57.58ID:t+3zMNmx プロパティが優れているのは
ageのように、
年齢?そんなものオブジェクトのフィールドにしておけばいいだろ?
え?生年月日から計算するようにしたい?
なら、そのフィールドをプロパティにして計算して返すだけだな
とクラスのインターフェースを変えることなく
実装を関数に変更できるところにある
ageのように、
年齢?そんなものオブジェクトのフィールドにしておけばいいだろ?
え?生年月日から計算するようにしたい?
なら、そのフィールドをプロパティにして計算して返すだけだな
とクラスのインターフェースを変えることなく
実装を関数に変更できるところにある
881デフォルトの名無しさん
2018/10/17(水) 16:32:11.49ID:DrCNXevb 年齢じゃなくてBMI値の計算にしようぜ
882デフォルトの名無しさん
2018/10/17(水) 16:33:10.53ID:t+3zMNmx >>881
俺もこれ見たよ
肥満の指標・BMIは営利目的で生まれたもので医学的根拠がない?「何を信じれば」と驚愕の声や「そやろな」と納得の声など #初耳学
https://togetter.com/li/1275152
俺もこれ見たよ
肥満の指標・BMIは営利目的で生まれたもので医学的根拠がない?「何を信じれば」と驚愕の声や「そやろな」と納得の声など #初耳学
https://togetter.com/li/1275152
883デフォルトの名無しさん
2018/10/17(水) 16:48:54.97ID:DrCNXevb >>882
いやw年齢だとシンプルすぎるかなと思っただけw
いやw年齢だとシンプルすぎるかなと思っただけw
884デフォルトの名無しさん
2018/10/17(水) 16:59:07.49ID:cz0N+1z5885デフォルトの名無しさん
2018/10/17(水) 17:15:22.09ID:K4tsdk4L >>876
まあ、わかってて公平な実装と、それで良いと思ってるけど漏れがある実装は、仕様と不具合と大きく異なるけどね。
>>878
ほんといつも、半角さんがでしゃばった上に間違うからこんな事になる。
でもAgeはオブジェクトのプロパティとしては俺はおかしいと思うよ。
環境によって刻々と変わったり、恣意的に変えられる値は、オブジェクトとオブジェクトの演算で出るべきだと思う。
環境オブジェクトなり、指定時刻オブジェクトなりの、時刻を表すオブジェクトと、Personを組み合わせて、初めてAgeが出るんだし。
Personを含む生年月日があるオブジェクト.ageAt(時刻オブジェクト point)で年齢オブジェクトが出るなら理解できる。
まあ、わかってて公平な実装と、それで良いと思ってるけど漏れがある実装は、仕様と不具合と大きく異なるけどね。
>>878
ほんといつも、半角さんがでしゃばった上に間違うからこんな事になる。
でもAgeはオブジェクトのプロパティとしては俺はおかしいと思うよ。
環境によって刻々と変わったり、恣意的に変えられる値は、オブジェクトとオブジェクトの演算で出るべきだと思う。
環境オブジェクトなり、指定時刻オブジェクトなりの、時刻を表すオブジェクトと、Personを組み合わせて、初めてAgeが出るんだし。
Personを含む生年月日があるオブジェクト.ageAt(時刻オブジェクト point)で年齢オブジェクトが出るなら理解できる。
886デフォルトの名無しさん
2018/10/17(水) 18:34:11.00ID:K4tsdk4L 言い換えると、オブジェクトのプロパティはそのオブジェクトだけで表現可能なものに縛ったほうが良いと思う。
887デフォルトの名無しさん
2018/10/17(水) 18:41:50.33ID:JdG8Y6gT 誕生日はプロパティにしてもよく、年齢は日付けに依存するから関数か
888デフォルトの名無しさん
2018/10/17(水) 18:58:38.46ID:DrCNXevb 特定の日時の年齢が必要になったら
getAgeからgetAgeAt呼べばいいだけやん
言語によっていろいろやり方あるけどね
getAgeAt(Date.Today)しか書かれてないプログラムとかマヌケじゃん
既存クラスにメソッド追加できる言語なら
最終的にはDateにyears_between何ちゃら書く事になりそうだが
getAgeからgetAgeAt呼べばいいだけやん
言語によっていろいろやり方あるけどね
getAgeAt(Date.Today)しか書かれてないプログラムとかマヌケじゃん
既存クラスにメソッド追加できる言語なら
最終的にはDateにyears_between何ちゃら書く事になりそうだが
889デフォルトの名無しさん
2018/10/17(水) 19:05:52.01ID:MwWLHD/k それで言ったらPersonオブジェクトがどういう扱いなのかによってもAgeがプロパティか関数か違いそうだな。
データベース的な一回表示するだけだったら関数でも良いけど、ゲームやSNSのアバター的なのだったら、ステータス表示するたびに計算してたら無駄が多い。
誕生日イベントでもない限り1日くらいは1歳違う程度は許容されるなら、オブジェクト作成時(ログイン時)に計算して結果をAgeに入れるだけとか、誕生日イベント発生時に計算して入れるだけとかした方がよくないか?
モバイルゲームとかなら尚更。
データベース的な一回表示するだけだったら関数でも良いけど、ゲームやSNSのアバター的なのだったら、ステータス表示するたびに計算してたら無駄が多い。
誕生日イベントでもない限り1日くらいは1歳違う程度は許容されるなら、オブジェクト作成時(ログイン時)に計算して結果をAgeに入れるだけとか、誕生日イベント発生時に計算して入れるだけとかした方がよくないか?
モバイルゲームとかなら尚更。
890デフォルトの名無しさん
2018/10/17(水) 19:07:22.09ID:pcmrmHBT お前らQiitaでも喧嘩してんのかよwwwww
891デフォルトの名無しさん
2018/10/17(水) 19:21:58.46ID:QBZICbug くだらねー議論してないで業務エキスパートに年齢の扱いを聞いてこい
それが答えだ
それが答えだ
892デフォルトの名無しさん
2018/10/17(水) 19:41:36.97ID:lTftiJN1 バッチが日付またぐけど開始した日で計算したいとなると「当日」をそういう扱いにするようにプログラム書くんだろうがインターフェースを変更する必要は無さそうだな
893デフォルトの名無しさん
2018/10/17(水) 19:45:33.46ID:e5Vejsh/ プログラミング系の文章は長いのが多いw
Qiitaも無駄に長いし
Qiitaも無駄に長いし
894デフォルトの名無しさん
2018/10/17(水) 19:48:24.97ID:MwWLHD/k そらそうよ。
一体何に細かく指示してると思ってんの。
それに比べれば全然短いわ。
一体何に細かく指示してると思ってんの。
それに比べれば全然短いわ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「老後は都会生活が便利」投稿に地方民が猛反論「電車の待ち時間がムダ」「荷物を車で運べない」★2 [七波羅探題★]
- 鈴木農水相「自由にコメ作れば価格が暴落する」おこめ券はコメ価格に「ほとんど影響なし」 [Hitzeschleier★]
- 【本】日本の「移民大国化」が止まらない…最新データが示す"永住型の労働移民は世界3位"という衝撃の現実 (是川 夕氏) [少考さん★]
- 【MLB】ヤクルト・村上宗隆、ホワイトソックスと2年総額53億で合意! 背番号は5 米報道…低迷チームが白羽の矢、短期契約★2 [冬月記者★]
- 【卓球】福原愛が再婚と妊娠を衝撃告白 2021年に不倫疑惑騒動、離婚も…信頼できる“パートナー”だった知人男性と入籍 [Ailuropoda melanoleuca★]
- 立民・岡田克也氏「国民の感情をコントロールしていかないと」、日中議連発言は「侮辱」保守党・有本香氏に怒 ★4 [nita★]
- 【悲報】高市早苗、完全に詰む「利上げに積極的な姿勢を取らなくては円安が止まらないが財政拡張と金融緩和を唱えてしまった」 [856698234]
- 全国の水道水PFAS検出マップ・・・とんでもない汚染地域が見つかる😱・・・・・・ [441660812]
- 高市早苗「すでに物価高対策の約束は果たした。」「スピード感持って取り組めたと思う。」 [153490809]
- オートハイビーム、アイドリングストップ←これ導入したやつら
- 貧困日本人さん、セルフレジで100%オフ節約術を開始してしまう・・・😲 [441660812]
- 【画像】こんなにかわいいパンダ、日本人はいらないとのことw [271912485]
