JAVAのプログラムの作成の仕方



◇-JAVAのプログラムの作成の仕方-sakura(2/26-11:19)No.2058
 ┣Re:JAVAのプログラムの作成の仕方-やまふみ(2/26-15:53)No.2072
 ┗Re:JAVAのプログラムの作成の仕方-やまふみ(2/27-16:35)No.2117
  ┣Re:JAVAのプログラムの作成の仕方-o2ka(2/27-22:29)No.2136
  ┗Re:JAVAのプログラムの作成の仕方-Cher(2/28-11:29)No.2180

▲このページのトップに戻る
2058JAVAのプログラムの作成の仕方sakura 2/26-11:19

メーカー名:関連性なし
OS名:WindowsXp
パソコン名:忘れました
ソフト名:JAVA
--
こういうことをここで質問していいのかわかりませんが、誰かJAVAに関
して詳しい方がいらっしゃいましたら教えて下さい。

以下のプログラムは、「introduction to java」という本に載っていたコン
ストラクタの使い方の例なのですが

、よくわかりません。

以下にわからないことを書きますので教えて下さい。

1 1行目から40行目と42行目から56行目の2つのクラスに分かれて
いますが、どうして1行目からの
クラスが先に記述されているのですか?PL/IやCOBOLをやってきた
ぼくとしては、42行目
から56行目の方がメインルーチンで1行目から40行目の方がサブルーチ
ンのように思うので、
逆に書かれていた方がわかりやすいのですが。

2 26行目から1つ目のコンストラクタがありますが、どうしてコンスト
ラクタがないといけない
のかわかりません。コンストラクタはインスタンスに初期値を与える働きを
すると本には書いてある
のですが、この意味がわかりません。そもそもインスタンスとはなにかがよ
くわかりません。本には
オブジェクトと同じものと書いてあるのですが。クラスは設計図でインスタ
ンスはこの設計図に基づいて
作られた実体だと本には書いてあるのですが、この意味がよくわかりませ
ん。JAVAでは、クラスが
プログラムの基本だと本には書いてあるのですが、この2つのクラスはどう
違うのですか? public class Prg5_02
とはなんですか?JAVAにおけるプログラム作成の流れがよくわかりませ
ん。

3 26行目に、「String n」とありますが、これは例えば、「String na」
でもいいのでしょうか?

4 44行目にmainとありますから、コンピュータはここからプログラムを
実行していくのですか?

5 プログラムの処理の流れは本には以下のように書かれているのですが。

 46行目で、mem1というインスタンス変数を宣言し、mem1によって参照さ
れるインスタンスが
 作成されます。「 mem1によって参照されるインスタンスが作成されま
す。」の部分がよくわからない
 ですし、インスタンスって何?という感じです。
 
 ここで次のコンストラクタが働きます。
  Member(String n , int nmb , int ag , double h , double w)
{
name = n;
number = nmb;
age = ag;
height = h;
weight = w;
}
これがどういう意味なのかさっぱりわかりません。ある本には「コンストラ
クタは特殊なメソッドだ。」
と書かれてあったのですが、よくわかりません。
そもそも、「new Member("東 あかね",1,16,165.0,58.0)」の意味がわかり
ません。

まことにお手数ですが、このプログラムの最初から最後まで、処理の流れを
書いて下さるとありがたいのですが。

よろしくお願い致します。





1:class Member
2:{
3: // フィールド
4:  String name;
5:  int number,age;
6:  double height,weight;
7:
8:  // showメソッド
9:  void show()
10: {
11: System.out.println("番号は" + "number" + "です。");
12: System.out.println("名前は" + "name" + "です。");
13: System.out.println("年齢は" + "age" + "です。");
14: System.out.println("身長は" + "height" + "です。");
15: System.out.println("体重は" + "weight" + "です。");
16: }
17: // calcメソッド
18: int calc()
19: {
20: // 肥満度の計算
21: double fatness = weight / ((height/100) * (height/100)
* 22) * 100 - 100;
22: return (int)fatness;
23: }
24:
25: // 1つ目のコンストラクタ
26: Member(String n , int nmb , int ag , double h , double w)
27: {
28: name = n;
29: number = nmb;
30: age = ag;
31: height = h;
32: weight = w;
33: }
34: // 2つ目のコンストラクタ
35: Member(String n , int ag)
36: {
37: name = n;
38: age = ag;
39: }
40:}
41:
42:public class Prg5_02
43:{
44: public static void main(String arg[])
45: {
46: Member.mem1 = new Member("東 あかね",1,16,165.0,58.0);
47:
48: mem1.show();
49: int fatness = mem1.calc();
50: System.out.println("あなたの肥満度は" + fatness + "%で
す。");
51:
52: Member mem2 = new Member("西 和弘",18);
53:
54: mem2.show();
55: }
56:}

▲このページのトップに戻る
2072Re:JAVAのプログラムの作成の仕方やまふみ 2/26-15:53
記事番号2058へのコメント
>46: Member.mem1 = new Member("東 あかね",1,16,165.0,58.0);

「会員番号1番 東あかね!
16才でぇ〜〜〜す。えっとぉ、身長は165センチでぇ、
体重は、ウフフッ、いわなきゃダメ? 58キロなんですぅ。
ちょっと太目かなぁ??? えっやだぁ、肥満度なんて計算してるのぉ」
ってことだと思いますが。
(ふざけているようでふざけてないですよ。)

ちなみに私もCOBOL系しかやったことがない昔の人間で、
JAVAなんて組んだことないですが、
上の説明を読んで組めそうな言語だなと思いました。

コンストラクタ・インスタンスなどという目新しい単語に惑わされなければ、
どのプログラミング言語にも出てきそうな概念が説明されているだけだと思いますが。

おそらくJAVAをちゃんと組んだことがある人から、
きちんとしたレスはつくと思います。

▲このページのトップに戻る
2117Re:JAVAのプログラムの作成の仕方やまふみ 2/27-16:35
記事番号2058へのコメント
ありゃりゃ、他のレスなかなかつかないですね。
少し「人頼み」の様子が強い感じがするせいもあるかも知れませんよ。
まるきり素人さんならともかく、
何かの言語を仕事でやったことがあるなら、
「基礎はあるんでしょ。後は独学でね」とほおっておかれる業界ですからね。
手取り足取り教えてもらえるのは新人さんだけ。

いま持っている本の説明が理解できないのなら、
自分に理解できるレベルの本を探すのも自分ですべきでしょう。

ちなみに、「どうして1行目からのクラスが先に記述されているのですか?」とか
「26行目から1つ目のコンストラクタがありますが、
どうしてコンストラクタがないといけないのかわかりません」といった質問は、
新しい言語に接する際に、悩んではいけない部分な気がします。
それはこの言語を記述する際のルールでしかない部分でしょう。
この言語はこういう順番で記述していくことになっているにすぎないと思います。

コンピュータにおいて違うOSを使ったり、
新しい言語を覚えたりすることは、
新しいルールが支配する世界になじむことだと考えています。

車の運転が右ハンドルの国から左ハンドルの国に引越しして、
そのことを「どうして」といってもしょうがないですよね。
左ハンドルとその交通法規に慣れるしかない。

>PL/IやCOBOLをやってきた
>ぼくとしては、42行目
>から56行目の方がメインルーチンで1行目から40行目の方がサブルーチ
>ンのように思うので、
>逆に書かれていた方がわかりやすいのですが。

といった前に習得した言語と比較して考える、
というか、「前の言語はこうだった」的思考から逃れないと、
新しいルールの支配する世界にはなじめないですよ。

▲このページのトップに戻る
2136Re:JAVAのプログラムの作成の仕方o2ka 2/27-22:29
記事番号2117へのコメント
>ありゃりゃ、他のレスなかなかつかないですね。

レス付けようとしたら、DNSがコケてたのか何なのか・・・
「パソ困」に繋がらなくなっていました。


>ちなみに、「どうして1行目からのクラスが先に記述されているのですか?」とか
>「26行目から1つ目のコンストラクタがありますが、
>どうしてコンストラクタがないといけないのかわかりません」といった質問は、
>新しい言語に接する際に、悩んではいけない部分な気がします。
>それはこの言語を記述する際のルールでしかない部分でしょう。
>この言語はこういう順番で記述していくことになっているにすぎないと思います。

HTMLの影響が強い言語なんだな、と思いました。

でも、1〜8は、どう見ても宣言部でしょう?
ここは、従来の言語と変わりがないと思います。

>コンピュータにおいて違うOSを使ったり、
>新しい言語を覚えたりすることは、
>新しいルールが支配する世界になじむことだと考えています。

>「前の言語はこうだった」的思考から逃れないと、
>新しいルールの支配する世界にはなじめないですよ。

わかりにくければ、わかりそうな表現に自分で置きかえてみるとか・・・。

:そもそもインスタンスとはなにかがよくわかりません。
:本にはオブジェクトと同じものと書いてあるのですが。
:クラスは設計図でインスタンスはこの設計図に基づいて
:作られた実体だと本には書いてある

クラスはアンケート用紙で、インスタンスはアンケート用紙に答える人
みたいなイメージかな?

:そもそも、「new Member("東 あかね",1,16,165.0,58.0)」の意味がわかり
:ません。

新規に作成するメンバー(実体)ってことですね。
オブジェクト指向言語特有の記述の仕方ですね。
Javaの参考書だけでワケワカラナイなら、C++の参考書も見て
オブジェクト指向での考え方に慣れていくしかないでしょうね。

C++の方が、歴史の長い言語なので 参考書もこなれて来ているでしょう。

▲このページのトップに戻る
2180Re:JAVAのプログラムの作成の仕方Cher 2/28-11:29
記事番号2117へのコメント
クラスやインスタンス、参照についてきちんと説明する自信が
ないので、とりあえず紹介だけ……。

2chで参考書や学習ページを紹介するスレッドが
常に存在するので参考になると思います。あんまり荒れてないし。

推薦図書/必読書のためのスレッド PART2
http://pc.2ch.net/test/read.cgi/tech/1010312992/l50

お勉強ページ 勝手にリンク 第2版
http://pc.2ch.net/test/read.cgi/tech/967778156/l50

良いもの・有名どころは当然早い段階で紹介されるので、
推薦理由とか見るために過去ログから見るのが吉。
……ちょっとヒマがいるけど。

A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言