立方体の表面積と体積を計算するクラスの作成(Java)

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

立方体の表面積と体積を計算するクラスの作成(Java)

#1

投稿記事 by たかし » 11年前

大学の課題で以下のような問題が出されました。

立方体をあらわすクラスCubeを定義し、インスタンス変数を初期化するコンストラクタと、立方体の表面積および体積を計算するインスタンスメソッドを作りなさい。
インスタンス変数としては、立方体の中心の3次元座標x,y,zおよび1辺の長さmとしなさい。このクラスをインスタンス化し、メソッドを呼び出す例を作りなさい。

私が疑問に思ったのは「立方体の中心の3次元座標x,y,z」というところです。
立方体の体積と表面積を求める場合、1辺の長さがあれば立方体の中心の座標は使わないと思うのですが、x,y,zはどこで使うのでしょうか?
インスタンス変数の初期化をするコンストラクタで使うだけですか?
問題がいまいち理解できていません。

とりあえず以下が私の作ったプログラムです。

コード:

class Cube
{
	int m;
	int x,y,z;
	
	void Cube()
	{
		m=0;
		x=0;
		y=0;
		z=0;
	}
	
	
	int surface(int m)
	{
		int S1,S6;
		
		S1=m*m;
		S6=S1*6;
		
		return (S6);
	}
	
	int volume(int m)
	{
		int V;
		
		V=m*m*m;
		
		return (V);
	}
	
}

class report31
{
	public static void main(String[] args)
	{
		Cube cube1 = new Cube();
		
		System.out.println("表面積は、"+ cube1.surface(3) +"です。");
		System.out.println("体積は"+ cube1.volume(3) +"です。");
	}
}
問題の意図と違うことをしていたら教えてください。
よろしくお願いします。

アバター
海Sea
記事: 102
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: 立方体の表面積と体積を計算するクラスの作成(Java)

#2

投稿記事 by 海Sea » 11年前

インスタンス変数を初期化するコンストラクタと、立方体の表面積および体積を計算するインスタンスメソッドを作りなさい。
⇒このクラスをインスタンス化し、メソッドを呼び出す例を作りなさい

というのが問題の根幹ですので、解答としては、間違っていないと思います。
今後この問題の発展系として座標を移動する問題が
出題される可能性もあるかもしれません。
今回の場合、3Dプログラミングの基礎一歩手前のように思えます。

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

Re: 立方体の表面積と体積を計算するクラスの作成(Java)

#3

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

この場合気になるのは、
> インスタンス変数を初期化するコンストラクタ
って所です。

ここで引数付きのコンストラクタで初期化しなくて良いのか?って事でしょうね。
コンストラクで1辺の長さmを初期化しておけば、他のメソッドで渡す必要がないですから。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Rag
記事: 8
登録日時: 12年前

Re: 立方体の表面積と体積を計算するクラスの作成(Java)

#4

投稿記事 by Rag » 11年前

コンストラクタで辺の長さを渡すなら体積、表面積を求めるメソッドで引数が不要になりますね。
メンバ変数のmとメソッド引数のmを混同する可能性があるので引数に接頭辞などを付けるか
メンバ変数の方を使うときはthisを付けるなどした方が良いと思います。
ついでにメンバ変数にはprivateを付けておくと良いかもしれません。

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

Re: 立方体の表面積と体積を計算するクラスの作成(Java)

#5

投稿記事 by ISLe » 11年前

「メソッド」という言葉は、単なる関数とは違って、対象となるオブジェクトに対する操作であることを意味します。

「インスタンスメソッドを作りなさい」という設問は、「立方体をあらわすクラスCubeを定義」するだけでなく、実際にそれを使って立方体をあらわし、そのオブジェクトに対する操作とすることが要求されていると考えられます。

たかし
記事: 48
登録日時: 11年前

Re: 立方体の表面積と体積を計算するクラスの作成(Java)

#6

投稿記事 by たかし » 11年前

皆さん、アドバイスありがとうございます。
皆さんのアドバイスではコンストラクタで辺の長さmを渡して初期化することよいとのことでしたので、以下のようなプログラムを作りました。

コード:

class Cube
{
	private int m;
	private int x,y,z;
	
	Cube(int m, int x, int y, int z)
	{
		this.m=m;
		this.x=x;
		this.y=y;
		this.z=z;
		System.out.println("立方体の中心の座標を("+this.x+","+this.y+","+this.z+")にしました。");
		System.out.println("立方体の1辺の長さは"+this.m+"です。");
		
	}
	int surface()
	{
		int S1,S6;

		S1=m*m;
		S6=S1*6;
		
		return (S6);
	}
	
	int volume()
	{
		int V;
		
		V=m*m*m;
		
		return (V);
	}	
}
class report31
{
	public static void main(String[] args)
	{
		Cube cube1 = new Cube(3,1,4,6);
		
		System.out.println("表面積は、"+ cube1.surface() +"です。");
		System.out.println("体積は"+ cube1.volume() +"です。");
	}
}

一応これで解決ですかね。
皆さんありがとうございました。
また、質問したときはよろしくお願いします。

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

Re: 立方体の表面積と体積を計算するクラスの作成(Java)

#7

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

オブジェクトとして、これですっきりしたと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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