オブジェクトの指向勉強法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sato
記事: 12
登録日時: 11年前

オブジェクトの指向勉強法

#1

投稿記事 by sato » 11年前

オブジェクト指向を習得したいと思っているのですがどのような方法が良いのでしょうか。
一応C++でカプセル化、継承、ポリモーフィズムなどの考え方やクラスに関する文法は理解しましたが、オブジェクト指向の本質の部分を理解したとはいえない気がしています。
オブジェクト指向の考え方に関する本もよみましたが、理屈は分かってもどこからてをつけて良いのかわからず実際にコードにすることができません。
今はWebサイトなどを参考にしながらSTGを作っているのですが、とりあえずプログラムを書いていくしかないのでしょうか(STGはオブジェクト指向を理解するという意味ではあまり適切でないという気がしなくもないですが)。
また、最近デザインパターンという分野の存在も知りました。これもオブジェクト指向の本質を理解する上で重要な技術なのでしょうか?

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

Re: オブジェクトの指向勉強法

#2

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

私も仕事でオブジェクト指向を全面的に使ってチームで組んだことがなかったので個人的に修行中です。
デザインパターンと言うには、よくあるオブジェクト指向のコードパターンを整理・カテゴライズしたものでオブジェクト指向における有名アルゴリズムのようなものです。
つまり、だいたいこんなパターンが良く使われるよねって物なので、知っていれば便利です。
ただ、オブジェクト指向の本質かというと言うと?です。

> 今はWebサイトなどを参考にしながらSTGを作っているのですが、と

どっかを参考にしていると、なぜこうするのかを考えるのを飛ばしてしまう恐れが有るので、すごく簡単なものを極力こだわって自力だけで作ってみてください。
STGが目的よりもオブジェクト指向なんですよね? そちらに注力すべきだと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: オブジェクトの指向勉強法

#3

投稿記事 by ISLe » 10年前

オブジェクト指向の考え方に関する本を読んだ後、ウェブサイトを参考にすると疑問だらけになりませんか?
参考にしているウェブサイトはオブジェクト指向とは無関係な内容なのでしょうか。

たくさんコードを書いてひたすら効率を追求すれば自然に行き着くものだと思いますけど。
シューティングゲームでもなんでも。

超絶右留斗羅天才プログラマー
記事: 44
登録日時: 11年前

Re: オブジェクトの指向勉強法

#4

投稿記事 by 超絶右留斗羅天才プログラマー » 10年前

小学生でもゲームが作れるようにと開発されたscratchで楽しくオブジェクト指向を覚えられます。
http://itpro.nikkeibp.co.jp/article/COL ... 19/371081/

オブジェクト指向を覚えるには、オブジェクト指向になっているものを触るのが一番早いと思います。
ただの超絶右留斗羅天才プログラマーです。同人ゲーム制作進捗度:7%

アバター
usao
記事: 1887
登録日時: 11年前

Re: オブジェクトの指向勉強法

#5

投稿記事 by usao » 10年前

「オブジェクト指向」ってよく聞く言葉だけど
具体的には何なの?っていうか どうしたらそれに該当して,どうしたらそれに該当しないの?っていうあたりが
私は かなりぼんやりしている感じ.

 オブジェクト指向じゃない
 ----------------------------- ←こんなはっきりした境界線があるのかどうかが?
 オブジェクト指向です

何をしたら「オブジェクト指向を勉強」していることになるのだろうか?(概念というか哲学的な何か?)

アバター
shiro4ao
記事: 224
登録日時: 13年前
住所: 広島

Re: オブジェクトの指向勉強法

#6

投稿記事 by shiro4ao » 10年前

むずかしいことはわかりませんが自分なりのオブジェクト指向の解釈としては
整理術のひとつだと思ってます

コードを書いていくとどんどん量が増えてごちゃごちゃして来ました
なので処理ごとにカタマリで切り分けて整理しようとしました
これが関数です。関数というカタマリで整理して行ったら
今度は関数が増えすぎてごちゃごちゃしてきました。
なので関数の種類ごとにまとめて管理しようと思いましたそれがオブジェクトなのかなと。

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: オブジェクトの指向勉強法

#7

投稿記事 by YuO » 10年前

オブジェクト指向と言っても,大きく分けるだけで
  • メッセージベースのオブジェクト指向 (Smalltalk)
  • クラスベースのオブジェクト指向 (C++)
  • プロトタイプベースのオブジェクト指向 (Javascript)
と,それぞれまったく違う特性を持っています。
継承や多態がオブジェクト指向に必須かと言われると,そうとも言えないですし,
カプセル化は抽象データ型で達成できて,それは構造化プログラミングの延長ですし……。
# とはいえ,分厚い「オブジェクト指向入門」ではADTに結構なページを割いていますが。

源流に立ち返るのであれば,オブジェクト指向の本質はメッセージパッシングなんでしょうけれども,C++ではまったく本質的でない事柄になります。
なので,あんまり「オブジェクト指向とは何か」を難しく考えるのはやめて,
C++であるならクラスベースのオブジェクト指向における特性である,
カプセル化やそのベースとなる抽象データ型について考えたり,それを考慮に入れて作ってみるとよいかと思います。

まぁ,このカプセル化に情報隠蔽を含むのか,どこまでの隠蔽を含むのか,とか,書籍でも定義がバラバラなので,面倒なところではありますが……。
ref) カプセル化、情報隠蔽、データ隠蔽 - ぐるぐる~

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: オブジェクトの指向勉強法

#8

投稿記事 by ISLe » 10年前

オブジェクト指向言語の機能を使うことが即ちオブジェクト指向、ではないですよね。

コード:

#include <iostream>
struct Foo {
	int n;
	Foo(int n) : n(n) {}
	void print() {
		for (int i=0; i<n; i++) {
			std::cout << i << std::endl;
		}
	}
};
struct Bar {
	int n, i;
	Bar(int n) : n(n), i(0) {}
	operator bool() {
		std::cout << i++ << std::endl;
		return i < n;
	}
};
int main(void)
{
	Foo foo(10);
	Bar bar(10);

	foo.print();
	while(bar);

	return 0;
}

sato
記事: 12
登録日時: 11年前

Re: オブジェクトの指向勉強法

#9

投稿記事 by sato » 10年前

オブジェクト指向とは~だ。とはっきり言ってしまえるようなものは無いんですね。

今までは複雑なことを考えすぎて、混乱してしまっていたのかも知れません。

効率が良く、分かりやすいプログラムを自分で考えながら少しずつ経験を積んでいきたいと思います。

ただの屍のようだ

Re: オブジェクトの指向勉強法

#10

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

オブジェクト指向とは、大きな塊を小さな部品にわけてアプローチすることだと思います。
メリットといえば、コードの簡潔化、保守・拡張しやすい。デメリットといえば完全なオブジェクト指向では効率とメモリ容量がけっこう失われる。
そのうえでC++による汎用(ジェネリック)プログラミングの習得をお勧めする、きっといい勉強になると思います。

Poco
記事: 161
登録日時: 13年前

Re: オブジェクトの指向勉強法

#11

投稿記事 by Poco » 10年前

sato さんが書きました:オブジェクト指向を習得したいと思っているのですがどのような方法が良いのでしょうか。
また、最近デザインパターンという分野の存在も知りました。これもオブジェクト指向の本質を理解する上で重要な技術なのでしょうか?
「アジャイルソフトウェア開発の奥義」は読まれました?
私はこの本に書かれていることがオブジェクト指向(設計)の本質だと思っています。
この本では、オブジェクト指向の原則について述べており、その原則からデザインパターンを導出しています。
一読の価値はあります。

sato
記事: 12
登録日時: 11年前

Re: オブジェクトの指向勉強法

#12

投稿記事 by sato » 10年前

オブジェクト指向を扱った技術というのにもいろいろなものがあるようですね。デザインパターンも含めてオブジェクト指向を扱った技術というのにも手を出してみようかと思います。オブジェクト指向とは何なのかと考えるよりも間接的にアプローチしていけば、少しづつそれが見えてくるような気もします。

みなさん様々な回答ありがとうございました。これから参考にさせていただきます。

閉鎖

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