オブジェクト指向って自然な文法だな 3 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/02(日) 16:30:38.65ID:n7h/bBRg
前スレ
オブジェクト指向って自然な文法だな 2
http://echo.2ch.net/test/read.cgi/tech/1490506257/
2017/04/22(土) 00:12:26.79ID:EzjUI0a0
日を跨いだら突然おとなしくなったなぁ
2017/04/22(土) 00:28:58.48ID:OS/5Qg75
>>554
設計で呼び出し元に制限を規定するのであれば、試験仕様書には制限外の呼び出しはNGの試験が用意される
上記を満たす実装はカプセル化と呼ばれるのでは?
2017/04/22(土) 01:06:43.76ID:+5rvIbLJ
>>570
呼ばない
2017/04/22(土) 02:31:18.17ID:IBUJYaHp
>>569
なんかわからんけど、このバカも睡眠という概念がなさそうだな。
2017/04/22(土) 09:50:00.49ID:69jc9pki
>>565
ずれるにしてもほどがある
574
垢版 |
2017/04/22(土) 11:07:46.29ID:HbmQ/gQM
>>568
うーん、ノセられてしもたわ。そもそも論で焼け野原にするのは好ましくはないな。
気をつけよう
575デフォルトの名無しさん
垢版 |
2017/04/27(木) 12:52:25.26ID:FdhNErTM
部品として使う場合、知識が要求されるのが、ちと時代おくれかなー
576デフォルトの名無しさん
垢版 |
2017/05/02(火) 18:17:11.49ID:VYotzEOG
カプセル化、継承、オブジェクト指向設計論に熱が入るやつは
そろそろ自分が動的言語童貞だと熱弁していることに早く気がついたほうがいい
577デフォルトの名無しさん
垢版 |
2017/05/02(火) 18:21:39.30ID:Bg5rWx47
>>576
動的言語が得意な人は、オブジェクト指向にとって大事なことは何だと思うの?
2017/05/02(火) 19:36:25.52ID:S4n1GgbR
Objective-Cって動的言語だったのか
2017/05/02(火) 19:36:57.13ID:S4n1GgbR
てっきりオブジェクト指向言語かと思ってた...ん?
2017/05/06(土) 04:26:04.66ID:gDC1nU6T
それにしても(Javaの)クラスのインスタンス化の勉強がすごく楽しい。
2017/05/06(土) 09:08:09.40ID:QDs+whcb
はい
2017/05/06(土) 09:48:33.69ID:ZTeBEUxt
局所的すぎてわろ
583デフォルトの名無しさん
垢版 |
2017/05/18(木) 13:53:51.24ID:V9vRGfQu
マジでクラスの分け方教えてくれどう分ければいいんだよ
分けたとしてもどのクラスにどうデータ持たせて
クラス間の受け渡しとかどうすんだよ全部ゲットセットでpublicにしてええんか
2017/05/18(木) 15:26:21.38ID:F9Zp5ygI
>>583
データホルダー
計算役
データ管理役
UI仲介役

抽象的だがこんな分け方だろう
2017/05/18(木) 18:10:53.86ID:zzewDZCb
小人さんだと思え。「おまえはこれをやる小人さんだ!」って決めろ。
2017/05/18(木) 18:14:11.48ID:pcJKb7uP
>>583
ゲットもセットも要らない
全部パブリックフィールドでダイジョブです
カプセル化はオブジェクト指向に不要な概念と言っていいでしょう
2017/05/18(木) 19:11:55.79ID:me+sOo3Z
>>583
クラス分けで悩むならグローバル変数なくしてやりすぎなくらいメソッドを細分化してみたらいいよ
2017/05/18(木) 19:53:26.01ID:F9Zp5ygI
>>587
なるほど
2017/05/18(木) 23:04:55.06ID:yt/el+BP
>>583
世の中の仕組みと一緒だ。
社長が部下に指示を出す。
部下は結果を返す。
社長は、別の会社と連携してサービスを広げていく。

全ては機能を有していて、機能同士が連携してより大きな機能を作っていくだけだ。
2017/05/19(金) 02:05:14.71ID:879cm/wV
>>583
日本語的な表現でクラス分けをやるとしたら
「いくつも仕事をしていないこと」というのが目安だろうか

例: 「入力値のバリデーションやる」「設定ファイル読んでパラメータ保持」
怪しい例: 「ユーザー設定をDBから読んでパラメータに基づきUIをイジくって表示する」

数値的な目安が欲しいなら、パブリックメソッドが7以上あったら
そのクラスは複数の仕事を抱えている可能性があるんで、分割を検討する
まあ共通で使うクラスが太ってしまうことはよくあるけど
7ってのは平均的な人間がチラ見でパっと暗記できる事柄のリミット値
591デフォルトの名無しさん
垢版 |
2017/05/19(金) 19:43:17.99ID:7xgwPeWo
>>583
MVCモデルとかアーキテクチャで調べる
依存性の注入で調べる
完全コンストラクタで調べる

この辺り守ってれば自ずと決まる
592デフォルトの名無しさん
垢版 |
2017/05/19(金) 20:11:31.04ID:LqS/uk9i
オブジェクト指向って「学び」がないんだよな
文法が全て同じになって処理のパターンみたいなのが
すべて「名前」で隠蔽されて見えてこない。
処理の委託元のコード追ってもたらい回しにされてる感じで
「実際の処理」がどこにあるのか埋もれてしまってる状態になる。
2017/05/19(金) 21:11:32.92ID:A6bTtmgj
どうやって隠すか
ライブラリ作成側になると学びは多いよ
2017/05/19(金) 22:24:14.23ID:2Tw6P143
>>592
スタックトレースを見るんだ
2017/05/20(土) 06:03:34.30ID:5T5O2UEX
大きなシステムとか組んだ事ないんだろ
596デフォルトの名無しさん
垢版 |
2017/05/20(土) 18:54:10.07ID:urI3JAo7
まあ実際の処理を隠蔽するのがまさに1つの目的だし
たらい回しというか参照辿って芋づるで引っ張れる設計じゃないし、むしろそこがオブジェクト指向のキモだからな
2017/05/20(土) 19:17:55.25ID:mYqGvY+G
実際の処理が見れないと困るケースがもしあれば
設計が既に破綻してるって話だわな
2017/05/20(土) 20:09:39.79ID:1WQ4/ic9
役員が下っ端社員の細かい作業手順を知る必要ないからな。
ちゃんと結果報告が上がってくれば作業手順は他の人間に影響を与えてなければ関係無い。
599デフォルトの名無しさん
垢版 |
2017/05/20(土) 20:38:10.12ID:POVmnKPN
オブジェクト指向は総活躍社会
2017/05/21(日) 01:27:28.98ID:Fqssqcja
>>597
図面的な意味で設計どうこうじゃなくて「なんかバグ出てるのはわかるんだけど
誰が調べても原因がわからん」系の状況じゃね?

継承四連打キメてて3段目で特定のタイミングのみ変数上書きワロスみたいな……
2017/05/21(日) 04:39:36.10ID:bMGEt1tu
>>597
無茶いうな
602デフォルトの名無しさん
垢版 |
2017/05/21(日) 10:57:27.44ID:8IHB32RP
>>600
597じゃないけどそういうのは設計が破綻していると言うと思う
図面の設計て意味じゃなくて作成者のプログラミング設計って意味で
2017/05/21(日) 12:54:25.54ID:W3P4J6B5
世の中のソースコードの90%の多段継承は既に破綻してる、もしくは今後するけどな
つまり仕組みが糞
2017/05/21(日) 17:51:03.66ID:/ema5D/U
>>600
結局、オブジェクト指向ってただ作るだけなら得意なんだけど
正しく作っているか確認することは苦手なんだよね

そりゃあ設計はあるだろうし、設計通りに作られていれば問題ない。
でも設計通りに作られているのかの検証は、より困難になっている。
2017/05/22(月) 12:24:20.53ID:D5FtIlcH
なんか"経理部に領収書出して「清算お願いします」ってシステム"に
延々「経理部が不正やってないとも限らないよね!検証できないよね!」って
無根拠にただ喚いてる奴がいるみたいになってて相手のしようがないんだが、おまえ。
2017/05/22(月) 12:36:09.78ID:396ysVMZ
>>605
アホ
2017/05/22(月) 19:27:44.11ID:VfSiR++X
>>586
カプセル化が一番重要と思ってたんですが違うんですか?
2017/05/22(月) 19:30:22.25ID:+aWzImQa
ソース付のライブラリ使えば?
2017/05/22(月) 20:40:23.17ID:OXuVg63m
>>607
カプセル化が修正の閉鎖をもたらし
インターフェースが拡張の開放をもたらす
両方いる
610デフォルトの名無しさん
垢版 |
2017/05/22(月) 22:48:06.26ID:rXkCxzW6
やっぱりどっちもいらない
611デフォルトの名無しさん
垢版 |
2017/05/24(水) 19:52:46.15ID:E7SQQ2ii
>>607
ゲッタセッタが生えてるプライベートフィールドはパブリックと変わらないってことだろう
要するにそれはカプセル化とは言わない
それやるぐらいならむしろパブリックの方がゲッタセッタの裏で余計なことしてない保証になる
2017/05/24(水) 20:02:53.29ID:MizSfTrk
>>607
俺も重要だと思ってるけどその話題は荒れるので出さないようにしてる
2017/05/24(水) 20:51:58.45ID:0TwgkzQZ
カプセル化の話だとデータの隠蔽のことばかりになってしまうのは残念じゃのう
2017/05/24(水) 22:22:46.76ID:mgEFkV8x
メソッドオーバーライドやインターフェース実装(具体例はJavaのinterface)も一応カプセル化の範疇だろうが
どっちかってと「継承」とか「クラス図」とか「デザパタ」の文脈で話す場合が多いかも
2017/05/24(水) 23:27:44.78ID:krzOkTvb
>>614←こいつわかってなさそう
2017/05/25(木) 00:11:42.62ID:W6ilo8po
詳細を隠し、結合度を弱め、変更に強くする、だっけか?
ただ、まあ面倒い

C#の新しいプロパティ構文がJavaでも使えればいいのにな
2017/05/25(木) 07:20:20.62ID:06hv3Ht1
哲学やると頭腐る
2017/05/25(木) 07:29:05.76ID:iVz5yu8w
最初から?
2017/05/25(木) 14:20:37.34ID:R5hiuhFH
>>611
データの整形はいずれにしても必要なわけで問題はどこで整形するか
クラス外で何カ所も整形の処理書くよりプロパティ内に書いた方がいいよね
2017/05/25(木) 21:00:55.82ID:a5WTl5cb
>>619
ゲッタセッタで公開されたプライベートフィールドと、書式化された文字列を返すプロパティって全然別物じゃんアホなの
2017/05/25(木) 22:16:33.15ID:06hv3Ht1
>>611
SetterGetterの殻に閉じこもってプログラミングする安心感は異常

そんな保障してなんの役に立つ
どのみちオブジェクトを関数の引数にしたら、どこで何されるかわかったもんじゃない

publicにしたら処理をフックすることもできない
へんな値が設定されたときに例外をだすこともできないし
Audio.volumeでボリューム設定なんてこともできないだろう
2017/05/26(金) 12:49:01.87ID:nbqvOpds
セッタゲッタ作って役に立ったこともあるだろうが、無駄にコードが増えただけのこともあるだろう
無条件にやるのはただのバカ。フックいれることが予想される場合にするのはいい
2017/05/26(金) 14:05:46.16ID:tID9m1OJ
>>622
Yes
2017/05/26(金) 15:13:04.21ID:FvwfjnU+
そのクラスのユーザが自分だけじゃない場合は、とりあえず全部privateにして、getter/setter作っといた方がいいね
2017/05/26(金) 16:21:29.95ID:Heb9aC5z
getter,setterを通じて変数に触れるのであればそれはもはやprivateとは言えないと思ってる
2017/05/26(金) 16:22:11.52ID:Heb9aC5z
getterはまだ良いけどsetterは要らないなぁ
2017/05/26(金) 16:37:50.24ID:FvwfjnU+
>>625
> getter,setterを通じて変数に触れるのであればそれはもはやprivateとは言えないと思ってる
言いたいことはわからなくもないが、クライアントコードとそのクラスの接点がsetter/getterであると
保証されていれば、内部構造の変更は自由になるというのが異なる。
2017/05/26(金) 18:31:35.52ID:Heb9aC5z
確かにね
言ってることはよくわかる
だとしてもsetterは用途が限られるように感じてる

それならインスタンス生成時に必要な情報を全部ぶち込んじゃえばいいんじゃね?と最近考えてる
629デフォルトの名無しさん
垢版 |
2017/05/26(金) 19:19:04.64ID:grHVRT/B
class1
{
public int setInt;
public string setStr;
}

class2
{
public int setInt { set; get; }
public string setStr { set; get; }
}

この2つの違い教えて
外のクラスから参照・変更するだけなら同じ扱い?
2017/05/27(土) 10:49:30.96ID:ieplBCy2
>>626
後でconfigの類を入れるとか、setLoggerだとかで
必要になる場面がたまにあるかも

なおPythonでそれやろうとしてプロパティデコレータ使おうとしたら「setだけのデコレータはない」というので
またPythonの俺様仕様か……って閉口した
2017/05/27(土) 10:59:35.13ID:u9alIOxt
setterだけってことは

obj.x = 1 #=> これは出来る
obj.x #=> 例外

になって欲しいってことか?イラネ
2017/05/27(土) 11:03:59.72ID:HaHIN1I5
メンバを個別にセットゲットする需要ってそんなにないだろう?
2017/05/27(土) 11:16:48.16ID:ieplBCy2
>>631
obj.config = user_config

みたいなのだ
setconfig(user_config)でもよろしかろうが、readwriteとreadは機能としてあるけどwriteはない
なんて片手落ちはあんまり想像してなかった
「正しいやり方はwriteイラね」とかマニュアルに書けってよ
2017/05/27(土) 11:58:55.24ID:0+MwcC+M
getter,setterはメソッドなのでクラス中で処理してクラスとして必要な形で出し入れできる
直接さわることとは別物だよ
2017/05/27(土) 12:19:45.90ID:HaHIN1I5
>>634
それはみんな分かってるんじゃないかな
>>583あたりからの流れで、全部のフィールドにゲットセット持たせることの是非を言ってるんだと思う。

フィールド(メンバ変数)が複数あったとして、ゲットセットする需要というか意味があるのは
ごく一部なんじゃないか。
2017/05/27(土) 12:38:09.02ID:ieplBCy2
理想: getter/setterはメソッドとすべき
setterで引数のチェック、getterでoutはコレであってるかのチェックはもれなくやるべし

現実: やらなくてもだいたい例外が飛ぶか動かないかするからわかる
637デフォルトの名無しさん
垢版 |
2017/05/27(土) 12:45:31.51ID:5/vhXFvj
ないとバカが騒ぐから作っておけばいい
こんなつまらん事でわざわざバカにエサを与える必要はない
638デフォルトの名無しさん
垢版 |
2017/05/27(土) 17:30:05.68ID:N4GV+Pp+
ゲッタセッタにフックさせる「かもしれない」をどう受け取るかによるから不毛と言えば不毛
柔軟に拡張できると受け取れば良しとなるし、不要な可能性を残すと受け取れば悪しとなる

個人的には単純にゲッタセッタで命名しといてくれるとインテリセンスでプロパティ探す時楽だからあった方がいい
ただゲッタセッタで命名しときながら裏で全然関係なかったり重い処理してる糞コード書く奴が一定数いるのも現実
2017/05/27(土) 17:46:00.50ID:3Q4GI2w6
クラス設計が下手くそなオブジェクト指向初心者なんだけど、ためになる読み物とかないですかね?
cはある程度書ける
2017/05/27(土) 19:33:03.59ID:g5q+CjXh
構造化プログラミングって何?
2017/05/27(土) 19:54:27.21ID:SDTaiU/Z
>>639
うまいやつに自分が作ったモデル添削してもらえ
一瞬で上級者になるぞ

本はしらん本よみまくったけど結局それだけだとだめだった
2017/05/27(土) 20:24:02.87ID:4M5qtD6v
>>640
ダイクストラ知らないとかゆとりかよ
2017/05/27(土) 20:57:24.04ID:H74RUeqi
老害的罵倒例
2017/05/27(土) 21:35:03.31ID:583uXQeo
>>639
変な意見だけどHaskellを勉強する。
割とマジで。
互いに疎とか、モナドとか高階関数は依存関係解消のヒントになる。
2017/05/29(月) 03:13:17.41ID:vyxh58aI
>>642
自分の言葉で説明して欲しいです。
2017/05/29(月) 08:38:09.71ID:U7XwlEVB
>>645
Wikipediaとか読んで自分でそれをできるようになったがいんじゃない?
2017/05/29(月) 08:44:08.38ID:U7XwlEVB
構造化プログラミングとは
関数、if、whileを使ってプログラムを書くこと

誤解を恐れず言うならswitch、forは邪道です
2017/05/29(月) 11:07:58.25ID:TgEUVyWp
はい次
2017/05/29(月) 12:09:15.00ID:BkgkdtpP
>>648
次はお前の番だよ
2017/05/29(月) 12:10:47.18ID:BkgkdtpP
おらあああ!!さっさと説明してみろや!
2017/05/29(月) 12:11:45.18ID:vyxh58aI
>>647
wiki読んだけど、それぐらいの意図しか汲み取れなかった。

オブジェクト指向では、ポリモーフィズムとか使えるけど、それも結局はクラスでifしてるだけであって、たいして変わらないじゃんと思った。
2017/05/29(月) 12:18:49.21ID:CxTrZaFu
ポリモーフィズムとifが同等って初めて知った
653デフォルトの名無しさん
垢版 |
2017/05/29(月) 12:24:48.88ID:KD+R0FhF
分かるだろ普通w
2017/05/29(月) 12:34:49.38ID:CxTrZaFu
何を基準に普通と言ってるかは知らないけど同じ扱いをしても振る舞いが異なる事だと思ってたからなぁ

ここを見てるとどれだけ自分の頭が固いかよくわかっておもしろい
2017/05/29(月) 19:29:07.89ID:w9I7HLjv
一回、アセンブラからやらせて
自分で自分が書いたスパゲッティをメンテするところからやらせねぇと
なんで生まれてどんなメリットを目指したかわかんねぇんじゃねぇの
ゆとりには
2017/05/29(月) 19:42:05.10ID:CxTrZaFu
知らなくても組めるように発展してんだから意図なんか後から知ればいいんだよ
2017/05/29(月) 20:16:08.98ID:KNNrZWoY
いつまで経ってもオブジェクト指向の意図が理解できない変な人が湧き続けるスレで言うことか。
658デフォルトの名無しさん
垢版 |
2017/05/29(月) 22:18:26.47ID:A34reMmc
オブジェクト指向の意図ってなんだよw
こんなものまで擬人化しないと気がすまんのかお前らw
キモいにも程があるwww
2017/05/29(月) 22:22:54.39ID:nT+AAD4u
オッ
2017/05/29(月) 22:25:41.12ID:w9I7HLjv
ここまで国語力ない奴はじめてみた。
2017/05/30(火) 02:01:38.87ID:KOCwrIWS
>>652
同等じゃないよ

ポリモーフィズムはそもそも参照先が違う
演算によって処理を分けるif文とは全く違う
2017/05/30(火) 02:16:15.25ID:734VgA5Q
>>651
呼び出す側が適宜、相手のインスタンスに「こういう動作して」って派生クラスぶっこむ場合が多いな
まぁ派生元 - 派生先でifしてるって捉え方もできようが
if - elseが下に7コ8コ並んで見難いのよりはマシだろう
663デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:10:33.85ID:cuCpV+Ml
>>658
Objectの言葉の意味の通りじゃん
2017/05/31(水) 17:32:41.97ID:lwNSc7pn
オブジェクト指向開発の理解度を測るために民間団体の主催するJAVA検定を受けようと思うのですが、そもそもここの問題はオブジェクト指向となっているでしょうか

http://www.sikaku.gr.jp/js/jv/img/sample/1/jv1.pdf

過去に構造化プログラムとかクソ味噌言われていたので、オブジェクト指向に造詣の深い皆さんに評価して頂きたいです
2017/05/31(水) 18:37:16.96ID:vzRkDbrn
>>664
やめとけ
2017/05/31(水) 18:46:16.77ID:lqV8qj25
理解度測るならフリーで仕事すればいい
稼いだ金額が理解度
2017/06/01(木) 03:12:10.50ID:TLZ7U8Co
>>664
実務でやるなら、4番のシーケンス図よろしく「N」なんて打ち込ませねぇ
そもそもあんなクソみたいな手数を踏ませるはイカれてるっていうか、ユーザーは怠惰なんス
一手で済ます
たぶんログイン画面でセッション(あるいは何らかの認証情報)を持たすのが前提だあな

っていうか「Fuckyou」とか「let me die」って打ち込んだ時どうすんだね
この図だと未定義だから何してもいいよね、俺だったら「Fuckyou」ってタイプされたら水龍敬ランド出すし
「let me die」ってタイプされたらガルパンのまほお姉さまのエロ同人誌でも表示してやるわさ
……冗談やで?

というくらいなんかアレかも
2017/06/01(木) 03:35:10.17ID:TLZ7U8Co
そしてまさかのNはユーザーの氏名でした、か(今アレって思って見直したら) orz ごめん手抜きした
まあいいや、見直すとして……ああうんお呼びでないか

シーケンス図を(マジメに)見る限り

・初めに二回ポップアップ出す(or二発画面遷移をせよってこと、メソッドが二発あるので)
・ユーザーがNっていれたら、初めに出たのとの同じポップアップを2発やる(displayFirstMess/displayPromptMessをもう一度ぶっぱしてるから)
・imputMessageでユーザーが入力をいれたら
 まずユーザー一覧を表示するのか、「検索方法を指定してください」と出すのかして(displayFirstMessはどうもでっかく二分岐してるのかもしれん、あるいはまた「検索方法を指定してください。」と出すのか)
 そのあとでallDisplayでドカっと下に長い表示を出すのか
 この辺要確認、たぶん書き手はそんなの想像してないと思う
 たぶんGoogle検索のようなのを想定してるはずなので
・ユーザーは表示された従業員名とID突き合わせて入力欄にID打ち込んでEってタイプする
 ここも確認が必要、クリックじゃねぇの?

ああうんこれメインフレーム時代のやり方やで
669デフォルトの名無しさん
垢版 |
2017/06/01(木) 03:36:55.80ID:TLZ7U8Co
あーうん、let me dieって言われたらまほ姉がおっさんにピーされる機能は実装が必要だな
俺以外望んでないけど未定義だからいいよね(実務じゃしないよ、冗談だから)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況