オブジェクト指向の勉強中です。
クラスを使っているプログラム例題が欲しいです。
実用的で分かりやすいのをください。

A 回答 (1件)

C++ でしょうか、Javaでしょうか?それとももっと他の言語なのでしょうか?


# もっともJavaでは無いと思いますが^^;
それとももっと抽象的な話でしょうか?
あまりに雲をつかむような質問で、的をはずしているのかも知れませんが、

C++ てしたら配列の変わりに vector を、char の配列の変わりに string を使ってみると良いと思います。
使い方の感じがつかめるのではないでしょうか?
#include <vector>
#include <string>
比較的新しいコンパイラであれば、これらのヘッダが有るはずです。

また、様々な方がクラスライブラリ等と呼ばれる、一連の機能を持ったクラスを提供されているので、興味の有りそうなものを見付けて、使ってみると良いと思います。

使ってみないことには、なかなか設計はできません^^;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。質問の仕方が悪いでした。C++です。一度締め切ってもう一度質問しようと思います。ありがとうございました。

お礼日時:2001/10/16 21:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qオブジェクト指向のプログラミング言語の勉強法について

オブジェクト指向のプログラミング言語の勉強法について

お尋ねします。
iPhoneアプリを作ってみたいと思い、最近プログラミングの勉強を始め、C言語の入門書を一通り熟読しました。そして、次にオブジェクト指向の言語を勉強しようと思っているのですが、iPhoneアプリの開発に用いる言語は「Objective-C」で、他にも開発に使用できる言語として、「C++」や「Java」などいくつかあると聞き、どれから勉強すればいいのか迷っています。
Objective-CとC++やJavaでは、技術的(表現力?)に大きな差はあるのでしょうか?それとも、Objective-Cだけでも十分なのでしょうか?

そのほか、まだC言語を勉強したばかりでわからないことが多いのですが、ゲームアプリの開発にどのような知識が必要なのか、また効率のよい学習順序、お勧めの書籍など助言を頂ければ幸いです(__)


ちなみに、
・プログラミングの経験は全くありません。
・はじめはシューティングなど動的なゲームアプリを作ろうと思っています。
・妥協せず、基礎からきちんと勉強したいと思っています。

オブジェクト指向のプログラミング言語の勉強法について

お尋ねします。
iPhoneアプリを作ってみたいと思い、最近プログラミングの勉強を始め、C言語の入門書を一通り熟読しました。そして、次にオブジェクト指向の言語を勉強しようと思っているのですが、iPhoneアプリの開発に用いる言語は「Objective-C」で、他にも開発に使用できる言語として、「C++」や「Java」などいくつかあると聞き、どれから勉強すればいいのか迷っています。
Objective-CとC++やJavaでは、技術的(表現力?)に大きな差はあるのでしょう...続きを読む

Aベストアンサー

iphoneアプリを作るならObjective-Cのみです。
先月辺りの規約改定でiphoneアプリの開発環境はapple純正(有料)に制限されました。(個人的には良いことと思ってません。)そこで使用できる言語はObjective-Cだけだったと思います。(確認してください)

先の方も言っているように、まずはどんな形でも動作するものを作るところから始めてください。正直いきなりシューティングはハードルが高いです。

Objective-Cの書籍を買って読みつつサンプルプログラムを動作させつつ一冊終えた辺りで開発環境を購入するぐらいで良いのではないでしょうか。

言語としてのC, C++, JavaはC<=C++<<Javaで左の方がよりハードウエア寄りです。JavaのみでOSは作成できません。アプリを作るならJavaの方が楽です。要するに向き不向きがあるので何をしたいかに拠ります。

オブジェクト指向がきちんとわかれば、C++もJavaも扱いは似たようなものです。
基礎からきちんと勉強するのであればまずは書籍を一冊きっちり終わらせましょう。がんばってください。

iphoneアプリを作るならObjective-Cのみです。
先月辺りの規約改定でiphoneアプリの開発環境はapple純正(有料)に制限されました。(個人的には良いことと思ってません。)そこで使用できる言語はObjective-Cだけだったと思います。(確認してください)

先の方も言っているように、まずはどんな形でも動作するものを作るところから始めてください。正直いきなりシューティングはハードルが高いです。

Objective-Cの書籍を買って読みつつサンプルプログラムを動作させつつ一冊終えた辺りで開発環境を購入するぐ...続きを読む

Qオブジェクト指向について

C#でプログラミングをしているのですが、オブジェクト指向を一切使わずに作っています。

作っていくにしたがってツールが重くなってきたのですが、オブジェクト指向を使ってい書いたほうがアプリケーションは軽くなりますか?

Aベストアンサー

描画のやり方がまずいとか、スレッドにすべき部分をしていないとかじゃないでしょうか。
オブジェクト指向と速度には直接の関係はありません。
ただ、ちゃんとオブジェクト指向できる人は、大抵プログラムの設計や最適化もちゃんと出来ると思います。

Qオブジェクト指向

 C++ではクラスがありますが、このクラスで「公開(public)」「非公開(private)」キーワードがあります。クラスが変数を持つ場合、どういった変数を公開にしておき、どういった変数を非公開にしておくべきでしょうか。
 Setなんたら()、Getなんたら()というメンバ関数を大量につければ一応変数は全部privateでもできるようですが・・・。なんか非効率的な気がします。

Aベストアンサー

変数を基準に考えてるのではオブジェクト指向になりません。オブジェクトの中でどのような操作が行われているかは、外からすれば気にしないで良いように設計するべきです。
オブジェクトが外に公開するのは、その操作(実装で言えばメンバ関数)です。どのような操作をそのオブジェクトは提供するか、という視点で考えてみてください。

例えば複素数クラスであれば、
 ・足し算可能
 ・掛け算可能
 ・コピー可能
 ・偏角・絶対値取得
 ・Re・Im取得
などを使えれば十分でしょう。このように、使用させる操作だけ公開しておけば、中の変数が(x,y)で管理されていたとしても(r,θ)で管理されていたとしても外から見れば関係ありません。

基本的には、内部の変数そのものは外からタッチさせないものです。

Qオブジェクト指向の利点と欠点

オブジェクト指向についてある程度勉強しました。そしてだいたいのプログラムの組み方は分かってきました。しかし、まだまだはじめたばかりなので実際のところ利点と欠点がわかりません。オブジェクト指向の原理はだいたいわかりますが、多分経験が不足している状態です。カプセル化や継承、多様性...を使うことで度のようなメリット、デメリットがあるのか具体的に教えてください。

Aベストアンサー

方法論について細かい利点や欠点を語るのは無理があります。
そういう話が出来るのは、もっと具体的な話になってからです。
勉強中ということなので、カプセル化、継承、多態など
要素毎の利点はすでに理解されていると仮定して・・・。

よく言われているところでは、
規模の小さいものを作るのには向いてません。
規模の大きいものを作るに向いています。
また設計が重要です。全てを決定すると言ってもよいです。
設計さえ上手く行けば、あらゆる変更に柔軟に対応出来ます。
その代わり設計は難しいですし、設計を生かすために実装技術も
色々勉強しなくてはならないでしょう。

方法論に根ざした深遠な議論に興味がないなら、
とりあえずライブラリを使ってみることをお勧めしますよ。
MFCはお勧めしません。WindowsやるならBorlandのOWL等。

C++ではSTL,Javaなら各種コレクションなどのライブラリは、
多態や隠蔽がどのように活用されて
使いやすいインターフェイスを提供してくれるかという優れた見本になります。

Qオブジェクト指向 集約の実装について

例えば、
学校クラス--学年クラス--学級クラス--班クラス

というクラスがあった場合、それぞれのクラスには集約といわれる関連があると思いますが、この場合の実装は一般的にどのようにされているのでしょうか。

自分の考えでは、

class Gakko
{
vector<Gakunen> GakunenObj;
};

class Gakunen
{
vector<Gakkyu> GakkuObj;
};

class Gakku
{
vector<Han> HanObj;
}

class Han
{
void ShowName();
}

このように学校クラスが消えれば内包される学年クラス・学級クラス・班クラスも消える必要があるので、オブジェクトの寿命を親のクラスと同じにするため、各クラスに子クラスのインスタンスを持たせています。

この方法だと班の名前を表示したい場合、

Gakko Obj;

Obj.GakunenObj[a].GakkuObj[b].HanObj[c].ShowName();

といった感じでアクセスすることになると思います。

ただ、こんな長たらしいプログラムコードを見たこともありませんし、実際は通常の関連としてクラスのポインタを持たせた方がいいでしょうか。

突っ込みどころ満載ですが、よろしくお願い致します。

例えば、
学校クラス--学年クラス--学級クラス--班クラス

というクラスがあった場合、それぞれのクラスには集約といわれる関連があると思いますが、この場合の実装は一般的にどのようにされているのでしょうか。

自分の考えでは、

class Gakko
{
vector<Gakunen> GakunenObj;
};

class Gakunen
{
vector<Gakkyu> GakkuObj;
};

class Gakku
{
vector<Han> HanObj;
}

class Han
{
void ShowName();
}

このように学校クラスが消えれば内包される学年クラス・学級クラス・...続きを読む

Aベストアンサー

>この方法だと班の名前を表示したい場合、
>Gakko Obj;
>Obj.GakunenObj[a].GakkuObj[b].HanObj[c].ShowName();
>といった感じでアクセスすることになると思います。

上記の例の場合、直接Hanに対してアクセスするのではなく、
Gakko Obj;
... Gakko の中身生成 ...

const Gakunen& GakunenObj = Obj.Gakunen[a];
const Gakku& GakkuObj = GakuenObj.GakkuObj[b];
const Han& HanObj = GakkuObj.HanObj[c];
HanObj.ShowName();

のような流れになると思います。

また、個人的にはGakkoオブジェクトから直接班の名前を参照する、という状況自体が間違っているのだと思います。
大概「どこのクラスのどこの班の名前だけを表示する」という状況は余りなく、学年単位、クラス単位で処理を行うことが多いと思います(そのためにクラスが別になっているわけですし)。
なので、オブジェクト指向的には、「班の名前を表示する」というのが実は「その学校に所属している班の一覧を表示する」という処理の一部だとしたら、Gakkoクラスに所属している班の一覧を表示するというメソッドを実装するのがより正しいと思います。

>この方法だと班の名前を表示したい場合、
>Gakko Obj;
>Obj.GakunenObj[a].GakkuObj[b].HanObj[c].ShowName();
>といった感じでアクセスすることになると思います。

上記の例の場合、直接Hanに対してアクセスするのではなく、
Gakko Obj;
... Gakko の中身生成 ...

const Gakunen& GakunenObj = Obj.Gakunen[a];
const Gakku& GakkuObj = GakuenObj.GakkuObj[b];
const Han& HanObj = GakkuObj.HanObj[c];
HanObj.ShowName();

のような流れになると思います。

また、個人的にはGakkoオブジ...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報