オブジェクト指向とは?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
マント

オブジェクト指向とは?

#1

投稿記事 by マント » 11年前

以前、このサイトを利用させていただいたビギナーです。
先ほどC++というものを興味本位だけで勉強し始めたのですが
オブジェクト指向というものの考え方で躓いてしまいました。
色々なサイトでクラス、継承、カプセル化などの機能を学習しましたが
イマイチ、メリットが分かりません。
そこで質問させてください。

以前、C言語で自作したインベーダーゲームは色々なサイトで勉強したとおりに、
分かりやすくなるようファイルを分割して制作しました。
私の場合は画面に表示する登場人物ごとに「自機ファイル」「侵略者ファイル」
とソースファイルを分けてそれぞれに関係ある関数をそこに記述していきましたが、
このプログラミング方法はオブジェクト指向プログラミング足り得ますか?

単発質問で申し訳ないのですが、どれだけ調べても分からないのです。
これが分かればオブジェクト指向を理解できそうなのです。
ご教授よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: オブジェクト指向とは?

#2

投稿記事 by softya(ソフト屋) » 11年前

歴史の流れで言うと、ファイルに分割してまとめるというのは構造化プログラミングのモジュール化にあたります。
この構造化プログラミングを更に再利用性を高めるために発展してきたのがとオブジェクト指向です。
1.手続きとデータをまとめることで、オブジェクト単体で全てを内包(クラス・カプセル化)できるようにしたこと。これでより疎結合な状態が作れるようになった。モジュール化をより突き進めたものです。
2.継承と言う仕組みで、中身を知らなくても再利用性を高めたこと。モジュール化の弊害である中身を知らないと機能追加できない問題の一つの答えです。
3.ポリモーフィズムは、関数ポインタを発展させたようなもので違う機能のオブジェクトを1種類のオブジェクトであるかの様に操作できる機能です。
私なりのオブジェクト指向オブジェクト指向言語の解釈であることを書き添えておきます。 ※ すこし訂正しました。

オブジェクト指向設計も含めての話となると、ある一連の仕事を、複数のオブジェクトに対する働きかけと解釈(抽象化)してその仕事をモデリング(単純化して分かりやすくする)ことの話になるので、それはまた別の機会に。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kino

Re: オブジェクト指向とは?

#3

投稿記事 by kino » 11年前

私もオブジェクト指向とオブジェクト指向プログラミングは
興味があり理解を深めたいと思っています

>単発質問で申し訳ないのですが、どれだけ調べても分からないのです。
>これが分かればオブジェクト指向を理解できそうなのです。

ここはオブジェクト指向プログラミングのことですよね

オブジェクト指向自体は
オブジェクト同士を相互作用させるシステムの振る舞いの考え方なので

(オブジェクトとはデータとプログラムを抽象化し
目的とか対象物 として扱うことと思っています)

その振る舞いをさせるためにオブジェクト指向プログラミングがあって
クラス、継承、カプセル化などがあるのではないかと思っています

>メリットが分かりません

オブジェクト化すると再利用や分担がよりしやすいのではないかと

マント

Re: オブジェクト指向とは?

#4

投稿記事 by マント » 11年前

お二人方、御回答ありがとうございます。
オブジェクト指向はやはり深く、難しいですね
(goto文を使うプログラマも構造化を学ぶとき、こんな気持ちを味わったのでしょうかね)

お二人の言葉の中に再利用性という言葉がありますが、
これはライブラリの機能と似ていますか?見当違いでしょうか?
(私はDirectXの関数の中身を知らないが、その機能を使うことが出来る)

また、分担という言葉もありましたが
オブジェクト指向というのは(チームではなく)一人でプログラムを
作成する場合にも有効なものなのでしょうか?

質問がずれてきている気がしますし、初心者を晒してしまっていますが、
これで最後の質問にしますのでよろしくお願いします。
オフトピック
実はファイル分割を用いるプログラミングの時にソフト屋さんの
RPG講座も参考にさせてもらっていました。あの時はありがとうございました。
また、おもしろいコンテンツを期待しております。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: オブジェクト指向とは?

#5

投稿記事 by softya(ソフト屋) » 11年前

>これはライブラリの機能と似ていますか?見当違いでしょうか?
似てますね。汎用化できるかとかライブラリという形にまとめたかの違いでしか無いですよ。

少なくとも1年や半年前のことはだいぶ忘れますよね。ちゃんとカプセル化出来ていれば忘れても問題無いわけです。
あと自分のためにライブラリを作るのはごく普通なことです。

ライブラリじゃなくても共通化出来るものはマトメますよね。こういう時に継承が役立つ場合があります。
継承したほうが良いのか、委譲したほうが良いのかは、そのケース次第ですけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

kino

Re: オブジェクト指向とは?

#6

投稿記事 by kino » 11年前

>また、分担という言葉もありましたが
>オブジェクト指向というのは(チームではなく)一人でプログラムを
>作成する場合にも有効なものなのでしょうか?

分担と書いたのは
他の人にプログラムを説明するときに見やすくしたほうが
いいのではないかなと思って書いたので
一人でも有効かと思います

マント

Re: オブジェクト指向とは?

#7

投稿記事 by マント » 11年前

返答が遅れてしまい申し訳ありません。
お二人方ありがとうございました。

とりあえず昔作ったインベーダーゲームを
再利用性、隠蔽というのを念頭において
オブジェクト指向に書き直しながら勉強してみたいと思います。

ただの屍のようだ

Re: オブジェクト指向とは?

#8

投稿記事 by ただの屍のようだ » 11年前

今更だけど、順番が逆なんです。

オブジェクト指向は 拡張・変更・安全・コンパイル依存性 を重点にするかわりに、効率を度外視しています。
そのために、必要なのはデザインパターンに関する知識とそれを利用した設計図。

次点、ほとんど完成したのち、2:8の仮説(20%のコードが実行時間の80%を占める説)を利用し、コア部分を
高速化・最適化するのがいいソフトの作り方なんじゃないかなと思います。
最も職業プログラマ目指すんなら、見た目動いてれば、中身がif-elseだけでできていようが、問題ありません

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: オブジェクト指向とは?

#9

投稿記事 by softya(ソフト屋) » 11年前

ただの屍のようだ さんが書きました:今更だけど、順番が逆なんです。

オブジェクト指向は 拡張・変更・安全・コンパイル依存性 を重点にするかわりに、効率を度外視しています。
そのために、必要なのはデザインパターンに関する知識とそれを利用した設計図。

次点、ほとんど完成したのち、2:8の仮説(20%のコードが実行時間の80%を占める説)を利用し、コア部分を
高速化・最適化するのがいいソフトの作り方なんじゃないかなと思います。
最も職業プログラマ目指すんなら、見た目動いてれば、中身がif-elseだけでできていようが、問題ありません
申し訳ないですが、いかにもなんでも知っているかの様に意味の分からないこと書き込まないで頂けますか。
※ 議論する気はありません。書き込まないでくださいと言う意味です。

【補足】
初心者を混乱させて迷惑を掛けている自覚を持ってください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ただの屍のようだ

Re: オブジェクト指向とは?

#10

投稿記事 by ただの屍のようだ » 11年前

それではこの書き込みを最後にします。

要するにコードをきれいにするのは趣味の分野に入ります。
きれいなコードよりもさまざまなライブラリ使いこなしたほうがいろんな意味で効率がいいと思います。
企業に行って、まず聞かれるとしたら ”なにができるか?” であって ”コーディング技法をどれほど所持しているか?” ではないです。
自分もIT企業の面接受けたこと何度もありましたが、面接官はどいつも”ポストだけ高いの素人か営業”でした。(←あくまで参考にどうぞ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: オブジェクト指向とは?

#11

投稿記事 by softya(ソフト屋) » 11年前

ただの屍のようだ さんが書きました:それではこの書き込みを最後にします。

要するにコードをきれいにするのは趣味の分野に入ります。
きれいなコードよりもさまざまなライブラリ使いこなしたほうがいろんな意味で効率がいいと思います。
企業に行って、まず聞かれるとしたら ”なにができるか?” であって ”コーディング技法をどれほど所持しているか?” ではないです。
自分もIT企業の面接受けたこと何度もありましたが、面接官はどいつも”ポストだけ高いの素人か営業”でした。(←あくまで参考にどうぞ)
マントさんのために補足しておきます。
大きくは業界によって変わりますが、基本として共同作業である程度綺麗に書けるのは大前提なので聞かれることはないです。
引き継ぎも出来ない・他の人とのレビューも出来ないコードなど問題外です。
あと職場に書き方に合わせられるは仕事を続ける上で絶対必要な事です。個人がどんなポリシーを持っていようと関係ありません。それが仕事です。
ただの屍のようださんは、就職されていませんので職場の実際のことは分かっておられると思えません。
そこをさも知っているかのように書くので、混乱させてしまっていたと思います。
これは、ただの屍のようださんに向けて書いているわけではないで、ただの屍のようださんの返答はご遠慮ください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る