ちょこっとクラスについてわかってきた

白鳥(しらとり)
記事: 6
登録日時: 11年前

ちょこっとクラスについてわかってきた

投稿記事 by 白鳥(しらとり) » 11年前

ということでした。

クラスを少しずつ勉強しているのですが、やっぱり覚えることが多いです。
そしてどう使うのかわからないです…

クラスでオブジェクトを作ればいいんですよね…?
それを組み合わせて行って…えとえと…

ちょっとゲーム作ってきます。

アバター
せんちゃ
記事: 50
登録日時: 14年前

Re: ちょこっとクラスについてわかってきた

投稿記事 by せんちゃ » 11年前

一つのプログラムを作るにあたって関連したデータや処理というのは1かたまりになると思うのですが、
クラスというのはそれをまとめた設計図のようなものだと思えばわかりやすいのかなと思います。

例えばゲームを作るんだったら画面に表示される物体は必ずx,y座標を持ちますよね。
このx,yというものがデータで
「描画をする」とか「動かす」が「データに関連した一連の処理」になります。

CODE:

int x[10];
int y[10];

for( int i = 0 ; i x , p->y , img , TRUE );
}

void update(){
	for( int i = 0 ; i < 10 ; i++ ){
		Draw( &pos[i] );
	}
}
みたいな感じで構造体を使い始めます。
でもこれでもそのうち物足りなくなります。
構造体をポインタで渡すのがめんどくせぇってなるわけです。
あとposは外にむき出しになっちゃってるのでどこからでも書きかえられちゃうってのも問題です。
下手な書き方をすればバグの影響範囲が超大きくなります

そう考えると「一連の流れを一まとめにして、そこで完結させたい!」
というニーズもプログラマの間で増えていくわけです。

CODE:

class Vector2{
private :
        int img;
	int x;
	int y;
public :
	void Draw(){
		DrawGraph( x , y , img , TRUE );
	}
};
Vector2 pos[10];
void update(){
	for( int i = 0 ; i < 10 ; i++ ){
		pos[i].Draw();
	}
}
みたいな感じになってきます。
要はクラスというのは単なる方法論の一つでしかないわけなのです。
ニーズに合わせて作られていったサービスでしかないのです。

個人的には原始的なコードを書いてみるのが実は一番クラスを覚える近道のような気がしています

白鳥(しらとり)
記事: 6
登録日時: 11年前

Re: ちょこっとクラスについてわかってきた

投稿記事 by 白鳥(しらとり) » 11年前

せんちゃ さんが書きました:一つのプログラムを作るにあたって関連したデータや処理というのは1かたまりになると思うのですが、
クラスというのはそれをまとめた設計図のようなものだと思えばわかりやすいのかなと思います。

例えばゲームを作るんだったら画面に表示される物体は必ずx,y座標を持ちますよね。
このx,yというものがデータで
「描画をする」とか「動かす」が「データに関連した一連の処理」になります。

あ、なるほど…
座標をまとめた構造体はよく使ってました
でもバグを生み出すほど大きなプログラムは組んだことないので問題なかったです
丁寧な回答ありがとうでした。

ISLe
記事: 2650
登録日時: 14年前

Re: ちょこっとクラスについてわかってきた

投稿記事 by ISLe » 11年前

せんちゃ さんが書きました:個人的には原始的なコードを書いてみるのが実は一番クラスを覚える近道のような気がしています
わたしはC++が無かったときからプログラミングしていたので、C言語でソースコードをまとめる工夫で面倒だったことが楽になる上にコンパイラの支援まで受けられるクラスはとてもありがたいと思いましたね。

そもそもソースコードをまとめて再利用する工夫をしていないとクラスや構造体のありがたみを実感することはないですね。
プログラムの規模は関係ないです。
クラス等を活用する目的のひとつは、最初に数百行で作ったら次は数十行新規に書くだけで作れるようにするといったものです。
簡単なプログラムならもはやコードを新規に書かなくても作れる場合もあります。
小規模なプログラムだし毎回数百行程度コード書くのは問題ないといった感覚でいるとあっという間に追い付けない差ができます。
自分が8本プログラムを作るあいだに相手は256本プログラムを作れるようになっていた、みたいな。
最後に編集したユーザー ISLe on 2014年1月25日(土) 17:04 [ 編集 3 回目 ]