質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

解決済

3回答

2829閲覧

Javaのクラス同士のつながりについて

Gogetsu_azusa

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

0グッド

0クリップ

投稿2016/03/12 07:21

こんにちは。Javaの質問です。
2つのクラスがあるんですけど、これらはどのようにつながっているのでしょうか。
(うまく説明できません、言い直すと)
Mainを実行するとStackが利用されます。Mainの中に
Stack tower = new Stack(); という文があるのですが、この文がどのようにしてStackの内容を使っているのでしょうか。


class Stack
{
int volume;
int data[] = new int[5];
void push(int number)
{
if(volume < data.length)
{
data[volume] = number;
volume++;
}
else
{
System.out.println("stack overflow");
}
}
int pop()
{
int value;
if(volume > 0)
{
value = data[volume -1];
data[volume -1] = 0;
volume--;
}
else
{
value = -1;
}
return value;
}
}


public class Main
{
public static void main(String[] args)
{
Stack tower = new Stack();
tower.push(10);
tower.push(20);
tower.push(30);
tower.push(40);
tower.push(50);
tower.push(60);
System.out.println(tower.pop());
System.out.println(tower.pop());
System.out.println(tower.pop());
System.out.println(tower.pop());
System.out.println(tower.pop());
System.out.println(tower.pop());
}
}


気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Stack tower = new Stack();
オブジェクトを生成しています。

Stackというクラスをtowerという名前のオブジェクトにしています。
tower.push(10);
というのはStackクラスのpushというメソッドの引数として10を渡しています。
void push(int number)
10はnumberに入ります。

投稿2016/03/12 08:18

mtmtochus

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gogetsu_azusa

2016/03/12 13:25

分の意味を詳しく教えていただきありがとうございました! あと、初フォロバありがとうございます。^^
mtmtochus

2016/03/12 14:11

自分もかなり初心者ですがこれからがんばりましょう!笑
guest

0

実はこのプログラムでは Main クラスと Stack クラスにはほとんど関係がありません。
というか、Main クラスというものに、実体がほぼありません。

main() メソッドは特殊なメソッドで、一つのプログラムに一つしか存在しません。
記述の都合上クラスの中に記述することになっていますが、
ご質問にあるプログラムのように記述しているクラスを参照も呼び出しもしていないのであれば、
どのクラスに記述されていても動作に違いはありません。

その上、Stack クラスからも Main クラスを参照していませんから、
Main クラスを削除して、Stack クラスを、以下のように書き換えても、
コンパイルエラーも起きなければ、実行結果に違いもでないはずです。

Java

1class Stack 2{ 3 int volume; 4 int data[] = new int[5]; 5 void push(int number) 6 { 7 if(volume < data.length) 8 { 9 data[volume] = number; 10 volume++; 11 } 12 else 13 { 14 System.out.println("stack overflow"); 15 } 16 } 17 int pop() 18 { 19 int value; 20 if(volume > 0) 21 { 22 value = data[volume -1]; 23 data[volume -1] = 0; 24 volume--; 25 } 26 else 27 { 28 value = -1; 29 } 30 return value; 31 } 32 33 public static void main(String[] args) 34 { 35 Stack tower = new Stack(); 36 tower.push(10); 37 tower.push(20); 38 tower.push(30); 39 tower.push(40); 40 tower.push(50); 41 tower.push(60); 42 System.out.println(tower.pop()); 43 System.out.println(tower.pop()); 44 System.out.println(tower.pop()); 45 System.out.println(tower.pop()); 46 System.out.println(tower.pop()); 47 System.out.println(tower.pop()); 48 } 49}

つまり、このプログラムにおけるMain クラスの記述には
Java で 文法エラーを出さずに main() メソッドを記述する以上の意味
は無いです。

従って他のクラスとも意味のある関係といったものもほぼありません。

投稿2016/03/12 08:55

編集2016/03/12 09:06
kozuchi

総合スコア1193

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gogetsu_azusa

2016/03/12 13:24

ありがとうございます。 授業の内容での不明点なので、このような形の質問でした。 でもおっしゃる通りですよね。^^
guest

0

こんにちは、僕は初心者ですが初心者なりのことをいわせてください。
stackというがたにstackというところにあるという情報いれて 変数はtowerなので
tower.push(10)といういみはstackというクラスのなかのメソッドのpushのいんすうに
10をいれてめそっどをじっこうしろといういみです。

投稿2016/03/12 07:47

編集2016/03/12 07:54
tsunod1

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問