オブジェクト指向システムの設計 174 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/09/26(火) 07:20:38.98ID:qu+DPehL
前スレ
オブジェクト指向システムの設計 172
http://mevius.2ch.net/test/read.cgi/tech/1467992113
オブジェクト指向システムの設計 173
http://mevius.2ch.net/test/read.cgi/tech/1502182334/

類似スレ
手続き型システムの設計 1
http://mevius.2ch.net/test/read.cgi/tech/1500282714
2017/10/28(土) 22:33:02.48ID:/Db+MOdS
思いこみって怖いな
2017/10/29(日) 21:04:57.30ID:YXSJDIox
>>779
そりゃBASIC構文だからな
BASIC構文でラムダ式とか記述に無理がある
2017/10/29(日) 22:10:12.67ID:8/yZ+26E
VBってまだサポートされてんだっけ
Coreになってからさっぱり話題にならなくなったけど
2017/10/29(日) 22:16:42.10ID:4sjZmv7g
JavaScript併用しなければならないWeb開発だと文法違い過ぎるから敬遠されるだろうね
2017/10/30(月) 07:04:36.23ID:s8k71vXD
VBは言語の問題でなく使う奴が糞

8割がスマートUIを書きモダンな設計を読みにくいと一蹴する

4重ループにカウンタ現役
2017/10/30(月) 07:11:07.87ID:s8k71vXD
VBAはオブジェクト指向が出来るように近代化して欲しいと思ったけどVBAごときでオブジェクト指向導入する規模とかヤバそうだから現状維持と緩やかな死が良いね
2017/10/30(月) 07:17:28.85ID:s8k71vXD
ER図とクラス図が似てくるのは危険な匂いしてますか?

正規化した物理設計レベルじゃ違うけど外仕レベルじゃ同等になっちゃう
2017/10/31(火) 03:29:44.56ID:mdHqu73h
>>787
RDBMSの最適化進めてくと違ってこないか
後からクラスだけ変えるのもあるし
2017/11/01(水) 17:29:31.91ID:qqAk/1TW
>>788
内部設計になってDBの正規化始めると確かに違います
ただ外部設計ではほぼ同じになるのでER図とクラス図に差が無いんです
ER図要るのかこれってなるので世間様はどう折り合い付けてるのか気になりまして
2017/11/01(水) 19:42:14.01ID:4uxV0O6/
データベースは実装の奥底にあるものなので設計では何も決めない
データベースなしの状態で動くところまで実装してようやく、そろそろ永続化の実装考えようかって話が始まる
2017/11/01(水) 23:11:58.08ID:DVi/8EkI
>>789
そのDB使う他のアプリケーションには必要だろう
2017/11/02(木) 06:51:48.84ID:lwOkXqsb
異なるアプリでデータベースを共有するの迷惑
APIを用意してくれ
2017/11/02(木) 18:50:34.87ID:XzNKC0MY
マイクロサービスか
やりたいけど構築するのが面倒だ
誰か代わりに作ってくれ
794デフォルトの名無しさん
垢版 |
2017/11/03(金) 00:25:37.71ID:g9SR2OMf
クラス依存症は、だいたいのところファンクションという概念すら理解できていないのが9割
クラスに格納されたデータという名詞的実体に安堵しているだけで
プログラムを書く才能も、システム設計する能力もないやつが
好き勝手にクラス図をかいて、ぼくのさいっきょなクラスチームを作るだけなんだよなあ

だから僕の考えたクラス構成という話題は出ても
そのクラスがどのように通信するかっていう話をオブジェクト指向信者は語らないの

なぜならばそのメッセージングを実装できないから
そのすばらしいクラスが単なるデータの塊でしかないことを
自分で書いた壮大な物語でカプセル化し、他人から見えなくしたいから

カプセル化って偉大だよなあ?
電卓やじゃんけんすら実装できないひ弱な自分を壮大なクラス図を書けばごまかせると錯覚できちゃうんだから
795デフォルトの名無しさん
垢版 |
2017/11/03(金) 00:39:25.54ID:T1BwLucT
VB.Netはもう20年ほど前に完全に移行しているんだけどなぁ
VB馬鹿にするやつがどれだけオブジェクト指向理解してんのか疑問だな
2017/11/03(金) 01:01:02.20ID:EKwPnWZh
>>792
それならオブジェクトをシリアライズして保存した方が楽かな
キーは要るけど
2017/11/03(金) 01:02:36.32ID:EKwPnWZh
オブジェクトでプールして必要に応じて永続化してくれるようなサービスでもういいな
2017/11/03(金) 02:56:41.30ID:9CXEo34m
>>794
さすがに時代錯誤な感じ

今どきのメジャーな言語は
ほとんどクラス持ってるぞ
Java、C#、C++、Python、Ruby、PHP……
2017/11/03(金) 09:36:22.11ID:khFcMPIR
>>798
PHPをそこに並べる違和感
2017/11/03(金) 10:39:58.84ID:r8BoLq9w
間違ってないんだから問題ないだろ。

あとついでに無名クラスを持っている言語
PHP、・・・

クロージャーを持ってる言語
PHP、・・・

トレイトを持ってる言語
PHP、・・・

ジェネレータを持っている言語
PHP、・・・
801デフォルトの名無しさん
垢版 |
2017/11/03(金) 11:12:35.69ID:CFYOACkT
PHPは最先端の言語だからな。だからこそ、バカには使いこなせない。
のに、バカがこぞって使うからクソ言語扱いされている。
2017/11/03(金) 11:32:59.46ID:11xKh3l5
PHPといえばPHP3だから仕方がない
803デフォルトの名無しさん
垢版 |
2017/11/03(金) 11:53:34.15ID:OuG6RHrP
10年経ったことにも気づかない引きこもりがいる板だからな
10年前に見かけた与太を今日話すことに違和感をおぼえる知能もない
プログラミングできるわけじゃないから、技術的な話にも初心者の質問にも応えられない
「ただ」「昔見かけたもの」を「書く」だけ
2017/11/03(金) 20:34:02.69ID:gWq7s/sI
>>795
VB6のコードをそのままVB.NETに移植する仕事を何度したことか
2017/11/03(金) 20:37:17.28ID:gWq7s/sI
C系やる奴はPHPやJAVAもやってるけどVB使いはVBしかできないケースが多い
2017/11/03(金) 20:43:59.17ID:CsNI9L5l
>>804
ゴミを移植してゴミを作る仕事
2017/11/03(金) 23:15:38.46ID:+QQUmgGP
>>795
> VB.Netはもう20年ほど前に完全に移行しているんだけどなぁ
VB.netのリリースは2001年(16年前)なんだが...

> VB馬鹿にするやつがどれだけオブジェクト指向理解してんのか疑問だな
人の心配する前に自分の認知症の心配した方がいいぞ w
808デフォルトの名無しさん
垢版 |
2017/11/03(金) 23:36:33.86ID:lQ0XoM3e
四捨五入してみろ
2017/11/03(金) 23:38:47.21ID:r8BoLq9w
0年になった
810デフォルトの名無しさん
垢版 |
2017/11/04(土) 08:50:40.41ID:KxJ3WBAq
20年ほど前じゃない16年前だ <- これアスペすぎるだろ
2017/11/04(土) 08:56:19.44ID:/k8c/hp8
プログラマは基本アスペと考えてよい
2017/11/04(土) 12:02:51.50ID:sTeHaJ1X
>>810
20と16の区別もつかなくなってるのか w
2017/11/04(土) 12:16:47.10ID:gO0rp64l
Math.Round(16 / 10) * 10
2017/11/04(土) 12:19:19.48ID:fdoXNWBH
8進数の20は10進数の16
すなわち、20=16、とな
2017/11/04(土) 12:25:24.71ID:2EHXQrQJ
>>814
天才
2017/11/04(土) 12:33:11.68ID:ENl7xTTM
>>814
なら020って書かなきゃね
817デフォルトの名無しさん
垢版 |
2017/11/04(土) 12:51:55.25ID:zD8APvjd
ヒント:8進数。
2017/11/05(日) 19:58:02.68ID:B4RjlPFm
VBとCOBOLはいまさら覚えたくねえなぁ
C系と記述が違うのに先進性は無いとか鬱になる
2017/11/05(日) 22:07:38.20ID:CePAYm1Z
嫌なら使うな
820デフォルトの名無しさん
垢版 |
2017/11/06(月) 03:30:04.80ID:2Q/sT7xS
ヤフーブログの https://blogs.yahoo.co.jp/kamyu_2010 にデザパタ解説を発見した。
2017/11/06(月) 03:38:11.03ID:tjV5ukzM
分かりにくい解説だな
マルチポストする前に文章を見直せ
2017/11/06(月) 06:54:06.00ID:+zcozLzP
これはひどい
2017/11/08(水) 23:53:37.92ID:lvw6xF65
>>820
デザパタじゃなくてデザインパターンな
2017/11/10(金) 07:29:56.57ID:wtQgej54
>>823
ペチパーやドザーみたいな愛称だろアスペか
2017/11/10(金) 19:33:33.06ID:i2VZEM66
>>824
アスペじゃなくてアスペルガー症候群な
2017/11/10(金) 22:43:26.83ID:Mfymh77r
>>825
文脈的に、アスペルガー症候群じゃなくてアスペルガー症候群患者な
2017/11/10(金) 22:53:19.54ID:hftGMpVC
>>825-826
これがアスペルガー症候群患者なんだな
828デフォルトの名無しさん
垢版 |
2017/11/10(金) 22:57:56.01ID:7i6+bCDW
>>827
ガチアスペルガー症候群患者乙
2017/11/10(金) 23:30:07.23ID:Ww/tyRwt
どうやったらこんなつまんないレスを返せるんだよ...
重症やな w
830デフォルトの名無しさん
垢版 |
2017/11/10(金) 23:31:12.69ID:8c9+Jy54
どうやったらこんなつまんないレスを返せるんだよ...
重症やな w
831デフォルトの名無しさん
垢版 |
2017/11/10(金) 23:34:23.55ID:x9Tf8I1u
>>827
ガチアスペルガー症候群患者乙

>>823
>>824
>>825
>>826

>>827
2017/11/10(金) 23:43:05.04ID:hftGMpVC
ガチとか低能過ぎるやろ
833823
垢版 |
2017/11/11(土) 00:14:54.76ID:xhBZikg9
>>825は俺じゃねぇからな
2017/11/11(土) 00:30:35.12ID:lcuwgMKR
ガチじゃなくてガチンコな
2017/11/11(土) 00:42:07.97ID:Sl8bQtQ2
ガはいらなくない?
836デフォルトの名無しさん
垢版 |
2017/11/11(土) 01:09:18.75ID:QwHnz2ZY
>>832
オッサンか?
2017/11/11(土) 01:17:31.05ID:TdmokUpS
ひょっとしてガチが若いとか思ってるんじゃないよな w
838デフォルトの名無しさん
垢版 |
2017/11/11(土) 01:21:19.20ID:QwHnz2ZY
若いと思ってるっつーか実際若いしな
ガチとか使う奴=低脳、バカっぽいって発想がオッサンぽい
2017/11/11(土) 04:47:12.59ID:TdyG/ulQ
アスペ指向スレッドの会話 174
2017/11/11(土) 09:58:35.10ID:TdmokUpS
>>838
ごめん、どうみてもお前の方がおっさんだよ ww
2017/11/11(土) 10:09:10.57ID:Lx/BUCVW
http://i.imgur.com/sWco4kY.jpg
2017/11/11(土) 11:01:18.10ID:Zi5KnTyx
アスペクト指向プログラミングってのは具体的にどんなのかよく分からんわ
興味ないから
2017/11/11(土) 13:24:33.88ID:n/0UZzMc
興味ないなら知る必要ない
844デフォルトの名無しさん
垢版 |
2017/11/11(土) 18:10:49.46ID:QwHnz2ZY
>>840
え?おまえって未成年か何か?
2017/11/11(土) 18:34:36.42ID:TdmokUpS
もうそのレスがおっさん臭い w
846デフォルトの名無しさん
垢版 |
2017/11/11(土) 18:52:46.73ID:EGHwL5V1
おっさんは嫌いかい?
847デフォルトの名無しさん
垢版 |
2017/11/11(土) 18:53:43.53ID:EGHwL5V1
おっさんは知識と経験と優しさでできています
残りの9割は脂肪です
2017/11/11(土) 19:41:06.94ID:nQmTPzFJ
おっさんは別に嫌いじゃないけど>>838みたく勘違いしてる奴はキモい
2017/11/11(土) 21:36:07.55ID:TdyG/ulQ
オッサン指向ガチムチな設計 174
850デフォルトの名無しさん
垢版 |
2017/11/12(日) 11:03:42.20ID:hG4wTZ8S
おっさん煽りでスレ消化して楽しいんだろうか
851デフォルトの名無しさん
垢版 |
2017/11/12(日) 11:10:51.09ID:H0u2BwIs
アスペ志向プログラミング。
2017/11/12(日) 13:09:56.66ID:CLpxq670
>>849
ホモはお帰りください
2017/12/05(火) 13:42:11.58ID:x/Ziu4N3
やっぱり青木 淳いいな
若い時に心酔して、経験積むうちに忘れていたが
ようやく言わんとすることが分かつて来た
854デフォルトの名無しさん
垢版 |
2018/01/04(木) 13:45:00.27ID:rLoh+wxC
2ちゃんねる自体、どこかの機能でデザインパターンつかわれてるの?
855デフォルトの名無しさん
垢版 |
2018/01/05(金) 18:43:53.01ID:kDZQv7Ud
>>854
つこてるマメがちがうよ
856デフォルトの名無しさん
垢版 |
2018/01/27(土) 22:10:53.07ID:FKF1aZVQ
クラス図とER図の違いって継承関係が
あるかないかだと思ってるんだけど、
DBのテーブルって継承はないわけじゃん、
継承とか知識レベル/操作レベルってDB設計的には
どう対応するの?
857デフォルトの名無しさん
垢版 |
2018/01/28(日) 07:50:43.37ID:JtfoYsxK
いや、>>856が知らないだけで、ERモデリング技法にも
継承に相当するサブセット(部分集合)の表現は存在している
明らかに欠けているのはメソッド(ストアドプロシージャ)かな
2018/01/28(日) 08:06:43.20ID:9retBgHA
CRUDは外部的だね

データ保護に対しては各種制約を設けるしかない

それらを言語側で埋めるのがORマッピングだったりDAOパターンだったり
859デフォルトの名無しさん
垢版 |
2018/01/28(日) 20:53:59.18ID:iKmgvq7C
>>857
いやそれは分かったが実際のテーブルはどうするんだよ
親クラスと 子クラスA 子クラスBのテーブル全部別々に
作るの?
ここでいいう親子は継承の親子関係のことで
外部キーでの関連のことではないものとする。
2018/01/28(日) 21:10:28.78ID:LAVjxJs1
考え方次第かな?

一つのテーブルに全カラム持たせるか差分情報だけのテーブルを連結するか
2018/03/31(土) 13:51:12.70ID:O6Ruc86y
オブジェクト指向の考え方を教えてください

指定した2点を通る線を描画するプログラムを作ろうと思っています。
・色
・線の太さ
こんなプロパティを持つクラス「DrawLine」を考えています。

さらにこのクラスを継承を用いて
・2点間のみ線を引く線分クラス
・2点を通る直線クラス
・2点のうち片方を始点に持つ半直線クラス
を派生させようかと思っています。

これとは別に描画のインターフェースを担うクラス「LineInterface」を用意しようと思っています
・線を引く
・線を消す
・2点の位置を変更を受け付ける
・色の変更を受け付ける
・線の太さの変更を受け付ける
・線分、直線、半直線の変更を受け付ける

さて、ここで疑問なのですが、インターフェースを担うクラス「LineInterface」は
内部に色や線の太さ、線分・直線・半直線の状態を記憶するbool値型のフラグ
ないしはenum型の値(線分・直線・半直線)を持つべきでしょうか?

最初はこの手のフラグには頼らない設計を心がけてみました。
色、線の太さ、線分・直線・半直線、これらの状態が変更されるたびに
クラス「DrawLine」のインスタンスを作成し直せばいいと思ったからです。
ただすぐに壁にぶち当たりまして、たとえば色を変更しようと思いクラス「DrawLine」の
インスタンスを作り直そうと思ったとき、それが線分クラスなのか半直線クラスなのか
直線クラスなのかは状態を記録しておかないと判断できないことに気付きました。
インターフェースクラスには最低限の内部状態はbool値enum値フラグとして保持しておくべきでしょうか?
862デフォルトの名無しさん
垢版 |
2018/03/31(土) 14:36:01.69ID:c97ae/y4
筋が悪い
2018/03/31(土) 15:08:51.89ID:jo8oJ0bD
まず>>862を先に読んで「もっと何か具体的に言ってやれよw」と思ったが
その後>>861を頑張って読んだら、言いたい事は既に>>862に書いてあった
2018/03/31(土) 15:12:00.87ID:O6Ruc86y
出直してきまつ(´;ω;`)ウゥッ
865デフォルトの名無しさん
垢版 |
2018/03/31(土) 15:19:37.25ID:bjBtCztz
なぜか観てしまう!!サバイバル系youtuberまとめ
http://tokyohitori.hatenablog.com/entry/2016/10/01/102830
あのPewDiePieがついに、初心YouTuber向けに「視聴回数」「チャンネル登録者数」を増やすコツを公開!
http://naototube.com/2017/08/14/for-new-youtubers/
27歳で年収8億円 女性ユーチューバー「リリー・シン」の生き方
https://headlines.yahoo.co.jp/article?a=20170802-00017174-forbes-bus_all
1年で何十億円も稼ぐ高収入ユーチューバー世界ランキングトップ10
https://gigazine.net/news/20151016-highest-paid-youtuber-2015/
おもちゃのレビューで年間12億円! 今、話題のYouTuberは6歳の男の子
https://www.businessinsider.jp/post-108355
彼女はいかにして750万人のファンがいるYouTubeスターとなったのか?
https://www.businessinsider.jp/post-242
1億円稼ぐ9歳のYouTuberがすごすぎる……アメリカで話題のEvanTubeHD
https://weekly.ascii.jp/elem/000/000/305/305548/
専業YouTuberがYouTubeでの稼ぎ方具体的に教えます。ネタ切れしない方法は〇〇するだけ。
https://www.youtube.com/watch?v=Co9a9fHfReo
YouTubeで稼げるジャンルは〇〇動画です。YouTube講座
https://www.youtube.com/watch?v=_Nps8xb5czQ
866デフォルトの名無しさん
垢版 |
2018/03/31(土) 15:23:11.79ID:c97ae/y4
test
2018/03/31(土) 15:28:08.71ID:vu/Huc/I
長文書いてしまう人はもうちょっと図や箇条書きして考えまとめた方がいいな
868デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:04:12.88ID:fnj+62QA
とりあえずC#で書くとこんな感じか

class abstract LineBase{
 public float width{get; private set;}
 public Color color{get; private set;}
 public Point start{get; private set;}
 public Point end{get; private set;}

 // 初期値をセット
 public LineBase(引数){}
 public LineBase(LineBase instance){}

 // 共通メソッドを実装
 public void SetWidth(int width){}
 public void SetColor(Color col){}
 public void SetPoint(Point start, Point end){}
 public void Eraser(){}

 public virtual void Draw(){} // 仮想メソッド
}

class SegmentLine: LineBase{
 public SegmentLine(引数): base(引数){}
 public SegmentLine(LineBase instance): base(instance){}
 public overrider void Draw(){} // 線分の描画処理を実装
}

class StraightLine: LineBase{
 public SegmentLine(引数): base(引数){}
 public SegmentLine(LineBase instance): base(instance){}
 public overrider void Draw(){} // 直線の描画処理を実装
}
869デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:07:03.50ID:fnj+62QA
>>861
何のクラスかは正直どうでもいい
こんな感じで基底型のインスタンスをコンストラクタに渡してコピーしとけ

// 線分クラスを生成
LineBase segment = new SegmentLine(初期値を渡す);

// 線分のデータで直線クラスを生成
LineBase straight = new StraightLine(segment);
2018/03/31(土) 16:42:41.66ID:O6Ruc86y
>>869
最初線分を描いて、途中で気が変わってやっぱり直線を描きたいな、となったときは
インスタンスsegmentを消去したのち、インスタンスstraightを選択してDraw()を実行する
という理解でよろしいでしょうか?

さらにその状態で色を変えたいときはインスタンスstraightを選んだまま色を変えるということでしょうか?

インスタンスsegmentとインスタンスstraight、いま選んでいるのはどちらか?という情報は
どこかに格納しておくべきでしょうか?
2018/03/31(土) 19:12:42.71ID:NUZUQ+fU
>>861
・線の引き方の違いを継承で実装する
・線のデータをフラグで持つ

特にこの二点はオブジェクト指向として筋が良くない

・線の引き方はメソッドで実装
・データはフラグじゃなくオブジェクトで渡す

こっちの方がオススメ
2018/03/31(土) 19:51:14.18ID:O6Ruc86y
>>871
クラス「DrawLine」は単純なDraw()メソッドは廃止して代わりに

DrawStraightLine()…直線を描画するメソッド
DrawSegmentLine()…線分を描画するメソッド
DrawHalfLine()…半直線を描画するメソッド

を実装し、インターフェースからクラス「DrawLine」には

・2点の情報が格納された構造体
・色、線の太さの情報が格納された構造体

を渡す。

という理解でよろしいでしょうか?

ちなみにインターフェース上では線の引き方はフラグ等で格納しておいても構いませんか?
ユーザーがインターフェースに対して
SetSegmentLine()
などの命令を実行したらそれに応じてbool値に記憶させておくというのが常道でしょうか?
2018/04/01(日) 03:19:52.65ID:qrIxuUzF
>>872
前半はそう。継承を使うのはダメじゃないんだけど
継承を使いこなすのは非常に難しいので
慣れるまではメソッドをたくさん生やす方が分かりやすい


後半はフラグとかいらない
そういう発想がまだないんだろうけど
デザインパターン勉強するとよく分かる

オブジェクトの生成と使用を分けて
なるべく値の設定を生成の一回だけで済ますと
フラグの不整合のバグが減ってソフトが安定する
これがオブジェクト指向を使うメリットのひとつ

特にオブジェクトが常に動き回るゲームとかじゃなくて
作図ソフトだったら基本的に一度オブジェクトを作ったら
そのまま静的な図になるから位置は不変データにして
もし位置を修正するときにはオブジェクトを再生成する

なんでそうするかっていうとフラグがバラバラ増えていくと
どこで値を変更したのか不明で後でメンテが困難になってくるから
できる限り生成時に一括で設定するようにするの
2018/04/01(日) 11:40:58.30ID:eiVy9NnE
>>873
こんな感じでどうでしょうか。

インターフェースを担うクラス「LineInterface」から
実際に線を描画するクラス「DrawLine」に向けて
新たに以下のような3番目のクラス「Information」を作成し、このインスタンスを投げようかと思います。
クラス「Information」には2点の位置座標、色、線の太さ、半直線か直線か線分かの情報が格納されています。

Class Information
{
public:
  double x1, y1, x2, y2;
  int color;
  int lineWidth;
  bool leftExtendFlag, rightExtendFlag;


};

線を描画するのに必要な情報は全てこのクラスに格納・隠蔽します。
ユーザーから線に関する新たな情報を受け付けたら
2018/04/01(日) 11:44:40.29ID:eiVy9NnE
あ、失礼。途中で書き込んでしまいましたorz

ユーザーから線に関する新たな情報を受け付けたら
クラスInformationに用意した専用メソッドを通してメンバ変数にデータがセットされます。
直接メンバ変数を操作するわけではないので(bool型のフラグを直接いじることはない)
安全面でも良いかと

このインスタンスを受け取った「DrawLine」クラスはメンバ変数を直接読み込み(publicで
宣言したのでアクセス可能)、線を描画します。
書き換えはせず、新たなデータを受け取とるたびに「DrawLine」クラスのインスタンスを
新規に作成しようと思います(なのでデータはコンストラクタで受け取るのみ)。

こんな感じでオブジェクト指向になるでしょうか?
876873
垢版 |
2018/04/01(日) 20:00:03.25ID:qrIxuUzF
>>874
>>875
細かいこと言うと第三のクラス名はまだしも「LineInfo」とかだろうね
実用ソフトだと「Line」だけじゃなく「Box」とか「Circle」とか増えてくから

細かいとこでキリがないけど
でもそれで組んでみればいいんじゃないの

OOPの要点を一言でいうと疎結合にすることで
ゴチャゴチャするようだったらまた設計を見直していく
2018/04/01(日) 22:44:15.70ID:eiVy9NnE
>>876
> 細かいとこでキリがないけど
> でもそれで組んでみればいいんじゃないの

了解しました、この方向で組んでみます

> OOPの要点を一言でいうと疎結合にすることで
> ゴチャゴチャするようだったらまた設計を見直していく

プログラムに関する本はちまたに溢れかえっているんですが
オブジェクト指向の設計に関する本ってなかなか見かけませんね
学ぶだけでなく説明する方も難しいのかもしれません>オブジェクト指向
2018/04/01(日) 23:09:11.53ID:qrIxuUzF
>>877
>オブジェクト指向の設計に関する本
探せばいっぱいあるよ

でも本格的なのはたいてい翻訳書で
分厚くて高くて難しいから読むの大変だとは思う
2018/04/01(日) 23:15:35.41ID:eiVy9NnE
>>878
そうでしたか、本屋さん行って見ます(´・ω・`)ノ
2018/04/01(日) 23:54:31.59ID:voVzLJKC
>>877
多分そもそもオブジェクト指向を「学ぶもの」と思っている時点で間違い。
あれは悟るものだ。

>>861
おそらくOOPの練習なのだろうけど、そもそも題材も悪い。
オブジェクトの切り方は例えば .NET でも見てみればいいでしょ。
Graphicクラスに全部メソッドが付いている。
https://msdn.microsoft.com/ja-jp/library/system.drawing.graphics(v=vs.110).aspx
というか、線分と半直線と直線を別のオブジェクトにする意味が分からない。
余計使いにくくなるだけだ。何をどう抽象化(共通化)すべきなのか、全く分かってない。

ただな、OOPを「初心者」が理解するのは不可能なんだよ。
心は>>873に書いてあるとおりだが、要するに、

・なかなか複雑になってメンテが辛くなってきた物を、多少なんとかするもの

であって、
初心者が組める範囲で複雑になることなんてあり得ないから、理解しようがない。
だから、「頭でっかち」方式で最初に学ぶのはかなり無理。
デタラメでもいいからやってみて、
自分で「ああこういう事をすると苦労するのか」と地雷を全部踏んでみれば納得するだろうし、
おそらくそっちの方が早い。そうしているうちに上達もするだろうし。

OOPで一番重要なのは「分割」だ。(粗結合化)
ところが初心者が組める規模では「分割」する必要なんてないから、
初心者は常に「継承」をこねくり回して練習しようとするが、それは明確な間違いだ。
それをいくらやっても意味がない。
「分割」しないと手に負えない規模の物を早く組めるようになり、
それを上手く「分割」出来るように努力することだ。
ここら辺の話は「プログラミング言語C++」に書いてある。
(今のOOPはC++作者が再定義したものだから当然ではあるが)
2018/04/01(日) 23:59:53.19ID:eiVy9NnE
>>880
了解しました
とにかく書いてみます(`・ω・´)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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