・オブジェクト指向のメリットってなんですか?
・カプセル化だ!とよく叫ぶ人がいますけど、カプセル化が嬉しい人って正直技術者でもなんでもないのでは?
ただ、臭いものに蓋してるだけですよね。そもそもカプセル化って別にオブジェクト関係なく、関数作ってそれをコンパイルするか中間言語にトランスパイルでもすれば誰も触らないわけだから(別に、振る舞いを変えなければ変更も容易)。
・僕的にメリットとしては、型として使えることだと思うけれど、これをより強調するならオブジェクト指向より、クラス指向と言いたい。そう思いませんか?
・名前空間も立派な発明だけど、これもやっぱりオブジェクト指向とはあんまり関係ない。
・継承や抽象化できるというのも型として最終的に使えるメリットがあるからこそって認識でそこに含まれてるんだけど、
・ネットの人ってなんか、オブジェクト指向の抽象化の意味よく分かってないよね?
・まあ、ひとつあげるとしたら遅延評価(と並列処理可能)くらいか?でも実行速度の話って結局なんも本質的じゃない気がする
・オブジェクト指向の偉さって何?クラス指向は偉いと思うけど
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
① カプセル化
オブジェイト指向以前から有るもの。
昔は外部には関係ない、内部実装を外部へ隠す方法が無かった。
一度ソースをコミッ卜すると誰がどう使うかわからず、変更には多大な労力がかかった。カプセル化は大きなシステムを多人数で作るとき、労力を激減してくれる仕組み。
② 抽象化と実装
一連の機能の共通性を分析し、インターフェースとしてくくり出したもの。
機能をプラグインとして実装したりなどの大きな効用も有るが、モジュール間の依存性を激減させ、メインテナンスをとても楽にする効用が大きい。
ある程度大きなモジュール(コンポーネントやしイヤー)のインターフェ一スを定義してからものを作れということ。
DIと組み合わせると泣きたい程メンテが楽になる。
是非いっぺんがっつり試してみて欲しい。
③オブジュクト指向設計
オブジェクト志向は設計時の分割統治の為に、設計を分割して行く為の手法。責任による分割と処理の分散化が特徴。
オブジェクト指向の肝はここなんだけど質問に言及がないのが寂しい。
ここにいっぺんどっぷり浸からないとオブジェクト指向は解らんです。
端っこの道具の話は肝が解った後でやるべき。
No.4
- 回答日時:
私が認識している範囲内でのお話になりますが・・・。
オブジェクト指向のメリット
・状態と振る舞いを定義づけて、一貫した状態と振る舞いを
管理できること。
・インターフェースや継承関係などによって管理された範囲を
崩さずより細かなオブジェクトを構成できること。
・様々な原則(DRY、KISS、YAGNI、SOLIDなど)を適用した
ものと、オブジェクト指向を用いず可能な範囲の原則を適用した
ものでは、オブジェクト指向の方が管理コストが低い。
(実装コストが低いとは言っていない)
・カプセル化
臭いものに蓋をするという意見については、それはそう、と思います。
コンパイルしようがしまいが、コンパイルされた成果物を利用して
新たなアプリケーションを作ろうが、臭いものに蓋がされているからこそ
必要最小限のルールやAPI仕様ドキュメントが策定されていれば、
構造を破壊するような不正な操作を防ぎ、余計な具体的実装を
理解する必要がありません。
・クラス指向
オブジェクトの考え方として状態と振る舞いがあるわけなので、
別にオブジェクト指向と呼ばれることに違和感を覚えません。
クラスはオブジェクトを構成する考えの中の1つにしか過ぎません。
・名前空間
オブジェクト指向とは関係ありませんね。
言語仕様によってマチマチですが、要は『同名の命令をバッティング
させたくない、ミスを誘発させたくない、分類ごとにカテゴライズ
したい』という考えから生み出された先人の知恵です。
これは名前空間がなかった時でも、人間がモジュール名などを工夫して
やっていたことなので、それの延長ですね。
・継承や抽象化
継承、カプセル化、多態性はオブジェクト指向のメリットです。
・ネットの人
人によるんじゃないですか。
スーパーエンジニアに出会ってないだけで。
・遅延評価と実行速度
言語仕様の問題なので、オブジェクト指向の思想自体とはなんら
関係ないと思います。
並列処理も。
言語自体のパフォーマンスとオブジェクトの構成によって左右される
ので、とにかくスピードが最重要視される場面や組み込み系などでは、
低水準言語や比較的コンピューターに近い高水準言語を選定すること
もありますね。
・偉さ
別に偉くはありません。
様々な悩みを解消すべく定義され、考えが素晴らしいから
広く定着したのです。
もちろん、それを否とするシチュエーションだってあります。
古くはモジュール、サブルーチン、構造化プログラミングから始まり、
今では別な視点としてコンポーネント指向などもあります。
オブジェクト指向というか、例えばクラスを使ってるだけで、
その中身がガタガタなら、それはオブジェクト指向ではありません。
色々な考えや原則を組み合わせて構築していくだけなので、
オブジェクト指向に偉いもなにもありません。
No.3
- 回答日時:
プログラム改修をする際に、影響範囲を限定的にすることができる
プログラム改修を頻繁に定期的にしないことがわかっているプログラムであればオブジェクト指向のメリットが減る
設計や各開発者とのルール決めが必要になるので費用やスケジュールにデメリットが増える
理想主義と現実主義との対決
No.2
- 回答日時:
オブジェクト指向で設計したシステムを
オブジェクト指向言語で実装すれば、
設計と実装の間にある食い違い(ギャップ,ミスマッチ)を
ある程度吸収できるでしょう。
そのため具体的なメリットとしては、
大規模システム開発時の実装コスト削減効果かと思います。
例) オブジェクト指向の設計図
https://ja.wikipedia.org/wiki/UML
No.1
- 回答日時:
一口にオブジェクト指向といっても人によって言っていることにバラツキはあるし、言語の実装も色々でそれぞれにかなり違う。
それぞれに出てくる背景もあるので歴史を含めて幅広くみておかないと理解が難しいですね。それで型(抽象データ型)とか型継承や、遅延評価なんかはどちらかというと関数型言語に属するパラダイムだと思う。並列処理もそうかな。
オブジェクト指向としては型だけでなく実装も含めた継承とかメソッドのオーバーライド(上書き)ですね。これによってプログラムコードの再利用がし易くなるのがメリットです。
オブジェクト指向というけどクラスの特徴だろうというのはその通り。クラスはオブジェクトのテンプレートなのでこれがオブジェクト指向です。クラス指向という言い方は聞かないですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java オブジェクト指向プログラミングの実践本を紹介してください 3 2022/09/19 04:56
- その他(プログラミング・Web制作) 過剰なオブジェクト指向脳からの脱却について 8 2024/05/19 23:56
- その他(プログラミング・Web制作) オブジェクト指向プログラミングにおいて Aというクラスと Bというプロパティ(ゲッターとセッターはこ 1 2024/05/16 19:35
- その他(Microsoft Office) vb.net オブジェクト指向について。 vb.netってどうしてフォームに処理書く前提になってるん 1 2024/04/16 19:04
- C言語・C++・C# プログラミング言語の制作方法について 2 2023/12/18 09:09
- Visual Basic(VBA) Excel VBA オブジェクトマクロ 使用指定について お詳しい方教えてください。 共通エクセルフ 2 2023/03/14 17:26
- JavaScript オブジェクト配列の各メンバを任意の式で評価して、その評価値が最大のオブジェクトを返す関数はありますか 2 2023/05/20 15:02
- その他(コンピューター・テクノロジー) ChatGPT ExcelVBAの精度は3.5と4で違いはある? 1 2023/04/21 21:00
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- その他(プログラミング・Web制作) インターフェースとトレイトってどっちが正義なんですか? インターフェースを利用するとそのクラスのよう 1 2024/07/26 16:50
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
【お題】 ・存在しそうで存在しないモノマネ芸人の名前を教えてください
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
あなたは何にトキメキますか?
「きゅんとした〜♪」 と思う瞬間ってありますよね。 それは恋愛だったり、推し活だったり、映画のワンシーンだったり……。
-
【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
【お題】 ・急に朝起こしてきた母親に言われた一言とは?
-
マイクロソフトがvbを捨てたのは何故ですか C#は変数の型指定ひとつとっても最近の主流とはかけ離れて
その他(プログラミング・Web制作)
-
近年誕生したプログラミング言語
その他(プログラミング・Web制作)
-
プログラミング言語について
その他(プログラミング・Web制作)
-
-
4
逆コンパイルと逆アセンブルの違いはなんですか
C言語・C++・C#
-
5
文系のSE志望です。プログラミングを今から習得したいのですが、初めて学ぶのにオススメの言語があれば教
その他(プログラミング・Web制作)
-
6
プログラマーは誘惑にさらされる人生?
その他(プログラミング・Web制作)
-
7
Pythonのコードエラーについてです。
その他(プログラミング・Web制作)
-
8
IF文、条件分岐の整理方法
Visual Basic(VBA)
-
9
python エラー
その他(プログラミング・Web制作)
-
10
CPUが16bitでも32bitOSでコンパイルしたコード(例えばintが4バイトと定義されている)
C言語・C++・C#
-
11
0 == False はいいけど
C言語・C++・C#
-
12
プログラミング言語についてc++に空白あると同じ文字を再度繰り返して処理しないといけないので2倍動作
C言語・C++・C#
-
13
プログラマーに向いている人の特徴や性格は何がありますか?
その他(プログラミング・Web制作)
-
14
プログラミングを学ぼうと思います。 1ヶ月程度である程度習得できる言語は何ですか?ブラウザ上でアプリ
その他(プログラミング・Web制作)
-
15
これて逆じゃないですか?
C言語・C++・C#
-
16
趣味レベルでプログラミングをしたいのですがいいコミュニティとかないのでしょうか? 大抵の人はプログラ
その他(プログラミング・Web制作)
-
17
Win11で作業を自動化したいです。どんなソフトがありますか?教えて下さい。単にマウスで特定の場所を
その他(プログラミング・Web制作)
-
18
プログラミングの進学について
その他(プログラミング・Web制作)
-
19
アセンブリ言語について。
その他(プログラミング・Web制作)
-
20
AIの登場でプログラマーたちが解雇されていますが
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php、可変プロパティ名について
-
「クラス関数」「メンバ関数」...
-
phpのクラスにて別ファイルの変...
-
【PHP】privateな静的メソッド...
-
フレームワークの拡張について
-
FTPコマンドでディレクトリごと...
-
フォントの色を変えるには?
-
【WordPress】メディアの一覧出力
-
移動元のURLを変数に取りたい
-
ツリーメニューを縮小させたい
-
makefile でファイルをコピーす...
-
PHPで複数ファイルのダウン...
-
a.phpにあるアクセスカウンター...
-
PostMail
-
拡張子php画像をjpg画像等に変...
-
ボタンのクリック数を合計保存...
-
PHPのif文でその処理を途中で抜...
-
AN HTTPDでPHPが動かない
-
フォームで戻った際に入力済み...
-
phpでファイルを読み込んで保存...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
phpのクラスにて別ファイルの変...
-
PHP4、PHP5 1ファイル複数クラ...
-
class定義のphpをファイル分割...
-
ラッパークラスって何ですか?
-
乱数のライブラリについて
-
'_'(アンダースコア)の使い方...
-
データベースで値をインクリメ...
-
Smartyの変数について
-
クラスと関数群のうまい使い方
-
クラス内でメソッド呼ぶ際、thi...
-
外部ファイルのクラスのインス...
-
php インスタンスとオブジェク...
-
配列とオブジェクトの違い
-
クラス
-
・オブジェクト指向のメリット...
-
PHPフレームワーク理解に役立つ...
-
関数定義の関数名の前にある&(...
-
ユーザー定義関数とクラスの違...
-
phpで$chars{$num};とした場合...
おすすめ情報