質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

6回答

9060閲覧

クラス設計についての考え方を要約すると?

matsumoto

総合スコア590

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

0グッド

3クリップ

投稿2016/01/13 04:52

プログラミングをする上でクラス設計は必須です。
では、プログラムを作成する上でクラス設計を考える観点はなんですか?の質問に何と答えますか?
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

オブジェクト指向プログラミングにおけるクラス設計であると仮定してですが、
こちらのページの内容が、私には大変参考になっています。

アークシステムさん「本には書いてないオブジェクト指向本には書いてないオブジェクト指向」
http://www.arksystems.co.jp/closeupit/object_oriented/

「第3章 :クラスの見つけ方 > 1クラスにするもの」
によれば、クラスにするにふさわしい対象は
0. 物
0. 結果(生成物?)
だけ、だそうです。
(ほかに「アプリケーションプログラムそのものを具現化するクラス」として、「プログラムクラス」「メインクラス」。これらは処理系や環境にひも付きなので設計で新たに考慮する事項ではないですね。「レイアウトクラス」は前述の「物クラス」の類)

アンチ例は「ファイル送信クラス」「データ受信クラス」「ログ制御クラス」「メッセージ表示クラス」「従業員管理クラス」など...

屁理屈を考えず思い切って倣ってみたところ、クラス設計で迷うことはほぼ無くなりました、私の場合は。

投稿2016/01/13 06:28

編集2016/01/13 07:31
hsk

総合スコア728

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラミングをする上でクラス設計は必須です。

関数型言語などのこともたまには思い出してください。


「このクラスは何である」と責務を考えることじゃないですかね

クラスベースオブジェクト指向以外の言語でも、
「このモジュールは何である」
って考えるのが設計ということでは

投稿2016/01/13 05:24

編集2016/01/13 06:51
ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

別に必須ではないかと思います。
手続きでも充分通用する場面が多いです。

とりあえずクラス設計をするときに意識するのは

MVCとかですかねー。

  • Model(データ)
  • View (画面)
  • Controller(ロジック)

これらがちゃんと分かれてることでしょうか。
他にもMVPや、MVVCとかいろいろ思想があるので、しらべてみてください

投稿2016/11/08 04:20

shotakeu

総合スコア386

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラミングをする上でクラス設計は必須です。

いえ、そんなことはありません。モジュール化、構造化設計は必要ですが、それが必ずしもオブジェクト指向である必要はないと思います。

では、プログラムを作成する上でクラス設計を考える観点はなんですか?の質問に何と答えますか?

各モジュールの強度が高く、モジュール間の結合度が低くなるように設計すべきです。
参考:モジュールの強度と結合度

オブジェクト指向におけるクラス設計を行う場合は、モジュールが情報的強度を持つように設計するべきだと思います。
また、オブジェクト指向を考えるときには、実体を表現するクラス設計よりも委譲のためのインタフェース設計のほうが重要かつ難易度が高いと思います。

投稿2016/11/08 04:10

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

オブジェクト指向は必須ではないです。

実際、C, アセンブラはオブジェクト指向じゃないし。

観点... データと処理を一まとめにし、データごとに役割分担。

でしょうか。

投稿2016/11/08 03:15

BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

プログラムを作成する上でクラス設計を考える観点はなんですか?

生産性を上げるにはどのようなクラス設計すれば良いかですね。
まずはざっくりターゲットをモデル化し、そのモデルをクラスに分解し、クラス間I/Fを検討します。
そして、クラスの実装を設計してます。

クラス設計に絞ると具体的には主に下記を考えてます。
0.データ構造とメソッドをできるだけモデルに沿って設計することで理解しやすく心がけてます。
0.メンテナンス工数を減らすため、同じことを2度書かないよう努力してます。(クラス的にはポリモーフィズムを重宝してます。)
0.名称をできるだけ解りやすく付けます。(意外に時間をかけてますが、まだまだです。)
0.各クラスを使う際にミスしにくいよう、内部データ/メソッドはprivateやprotectedにします。
まだ他にもあると思いますが、今思いつくのはこんなところです。

投稿2016/01/13 12:45

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問