
・オブジェクト指向のメリットってなんですか?
・カプセル化だ!とよく叫ぶ人がいますけど、カプセル化が嬉しい人って正直技術者でもなんでもないのでは?
ただ、臭いものに蓋してるだけですよね。そもそもカプセル化って別にオブジェクト関係なく、関数作ってそれをコンパイルするか中間言語にトランスパイルでもすれば誰も触らないわけだから(別に、振る舞いを変えなければ変更も容易)。
・僕的にメリットとしては、型として使えることだと思うけれど、これをより強調するならオブジェクト指向より、クラス指向と言いたい。そう思いませんか?
・名前空間も立派な発明だけど、これもやっぱりオブジェクト指向とはあんまり関係ない。
・継承や抽象化できるというのも型として最終的に使えるメリットがあるからこそって認識でそこに含まれてるんだけど、
・ネットの人ってなんか、オブジェクト指向の抽象化の意味よく分かってないよね?
・まあ、ひとつあげるとしたら遅延評価(と並列処理可能)くらいか?でも実行速度の話って結局なんも本質的じゃない気がする
・オブジェクト指向の偉さって何?クラス指向は偉いと思うけど
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も見ています
-
プログラミング言語についてc++に空白あると同じ文字を再度繰り返して処理しないといけないので2倍動作
C言語・C++・C#
-
近年誕生したプログラミング言語
その他(プログラミング・Web制作)
-
プログラミング言語について
その他(プログラミング・Web制作)
-
-
4
python エラー
その他(プログラミング・Web制作)
-
5
プログラミングを学ぼうと思います。 1ヶ月程度である程度習得できる言語は何ですか?ブラウザ上でアプリ
その他(プログラミング・Web制作)
-
6
プログラミングのやり方ざっくりでいいから教えて
その他(プログラミング・Web制作)
-
7
プログラミングの進学について
その他(プログラミング・Web制作)
-
8
pythonについて
その他(プログラミング・Web制作)
-
9
今ってプログラミング言語は何が中心?
C言語・C++・C#
-
10
プログラマーに向いている人の特徴や性格は何がありますか?
その他(プログラミング・Web制作)
-
11
Win11で作業を自動化したいです。どんなソフトがありますか?教えて下さい。単にマウスで特定の場所を
その他(プログラミング・Web制作)
-
12
HLMT、CSSについて相談です。 私は今までずっと自身のサイトで以下のような総称ファミリーを使って
その他(プログラミング・Web制作)
-
13
pythonでAmazonのほしいものリストをローカル保存するスクリプト書いたら一部しか保存できぬ!
その他(プログラミング・Web制作)
-
14
Pythonでの文字列からfloatへの変換エラー
その他(プログラミング・Web制作)
-
15
フロントエンドエンジニアをしていますが、スキルアップのための転職、異動は3年目では早すぎますか? 今
その他(プログラミング・Web制作)
-
16
c++の勉強方法を教えてくださいプログラミングをやった事がなく1から勉強を始めようと思います1日1時
C言語・C++・C#
-
17
アセンブリ言語について。
その他(プログラミング・Web制作)
-
18
Cのプログラムからアクセスできないファイル名の一括変更方法
C言語・C++・C#
-
19
アセンブラーの命令についてです。
その他(プログラミング・Web制作)
-
20
プログラミングに興味があるのですが、作りたいものはありません。 ゲーム機とかパソコンの中身(ソースコ
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現について
-
配列とオブジェクトの違い
-
PHP4、PHP5 1ファイル複数クラ...
-
require_onceについて
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
「クラウドにアップロード」」...
-
apacheで拡張子を省略してアク...
-
csvファイルをMySQLにインポー...
-
デバッグの仕方・・・
-
makefile でファイルをコピーす...
-
.phpと.incファイルの違いはな...
-
【エクセルVBA】メール送信前に...
-
.phpファイルが、表示されない
-
英語圏で作成したPHPの日本語化
-
webroot以外の画像の表示
-
ファイルサイズがpost_max_size...
-
PHP file_get_contents 503 ser...
-
mysql複数レコードをまとめて削...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
phpのクラスにて別ファイルの変...
-
class定義のphpをファイル分割...
-
クラス
-
外部ファイルのクラスのインス...
-
PHP4、PHP5 1ファイル複数クラ...
-
ラッパークラスって何ですか?
-
phpファイルは細かく分けてたく...
-
「PDOxceptionオブジェクト」?...
-
phpでオブジェクト指向と呼べる...
-
クラスが配布されているサイト
-
'_'(アンダースコア)の使い方...
-
PHP5.2.6でのDOMDocumentのload...
-
クラス内でメソッド呼ぶ際、thi...
-
配列とオブジェクトの違い
-
・オブジェクト指向のメリット...
-
ユーザー定義関数とクラスの違...
-
プログラムにも慣例みたいなも...
-
PHPのCOMを使ってプログラミン...
-
ソースファイルの分け方について
おすすめ情報