- PR -

James Gosling のSortDemoについて

投票結果総投票数:6
Windows 2 33.33%
Linux 1 16.67%
Mac OS 3 50.00%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
matsumoto
会議室デビュー日: 2004/09/27
投稿数: 5
投稿日時: 2004-09-27 11:13
現在Javaを勉強中なのですが、SortDemoについての練習課題に取り組んでいたところ、以下の事がよく分かりません・・・。アドバイスお願いします。

(1)ソートに関するプログラムをコンパイルするだけで、SortAlgorithm.javaとSortItem.javaもコンパイルされてしまう理由。

(2)SortAlgorithmというクラスのある理由

(3)アップレット上で古い線を消すのに使われている手法

(4)赤い線と青い線の意味

(5)いくつものアップレットが同時に進行しているのはJAVAではどのような手法が使われているか

(6)交換された二つの要素を緑にするにはどのようにすればよいか。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-09-27 11:54
unibon です。こんにちわ。

JDK(J2SDK) に付属の demo\applets\SortDemo のフォルダにあるサンプルのことですよね。
たしかに、ソースコードに
コード:
 * @author James Gosling


と書かれていますね。なんだかちょっと笑ってしまいます。
JDK に付属するサンプルは、古いし、あまりキレイに書かれていないので、初心者の学習用にはそれほどは向いていないと思います。とは言っても、標準で付属するものだし、歴史的な経緯もあるので、やはり見たほうが良いのでしょうけど。

> (1)ソートに関するプログラムをコンパイルするだけで、SortAlgorithm.javaとSortItem.javaもコンパイルされてしまう理由。

「ソートに関するプログラム」とは何を指されているのでしょうか?
SortItem.java のことでしょうか?SortItem がその中で SortAlgorithm を使っているから SortAlgorithm もコンパイルされるです。というと簡単な仕組みのように見えますが、実際はちょっと仕組みが複雑でして、要は javac コマンドが make の機能を併せ持っていて、依存関係を追ってくれているからです。

#長くなるので、ひとまずここまで。
matsumoto
会議室デビュー日: 2004/09/27
投稿数: 5
投稿日時: 2004-09-27 12:13
説明不足ですみません・・・。
ソートに関するプログラムとは、今回は3つでQSortAlgorithm.java , BiDirBubbleSortAlgirithm.java , BubbleSortAlgorithm.javaです。

その3つの中でextends SortAlgorithmという記述があるからですか?
またSortAlgorithmの中にsetParent(SortItem p)という記述があるからコンパイルされるのですか?
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-09-27 13:39
引用:

ソートに関するプログラムとは、今回は3つでQSortAlgorithm.java , BiDirBubbleSortAlgirithm.java , BubbleSortAlgorithm.javaです。

その3つの中でextends SortAlgorithmという記述があるからですか?


その通りです。
extendsというのはJavaでは継承を表すキーワードですが、継承の仕組みは理解されて
いますか?継承するということは、サブクラス(or インタフェース)にとっては
必然的にスーパークラス(or インタフェース)の情報が必要になりますから、
サブクラス(or インタフェース)のコンパイルと同時にスーパークラス
(or インタフェース)のコンパイルも行われます。

unibonさんがおっしゃる様にこのようなクラス(or インタフェース)間の依存性の
チェックは、コンパイラjavacが自動的に行ってくれます。
matsumoto
会議室デビュー日: 2004/09/27
投稿数: 5
投稿日時: 2004-09-27 14:53
なるほど!
ではprivate SortItem parent;という記述でSortAlgorithmはSortItemuを継承したということですか?

[ メッセージ編集済み 編集者: matsumoto 編集日時 2004-09-27 15:09 ]
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-09-27 16:32
引用:

ではprivate SortItem parent;という記述でSortAlgorithmはSortItemuを継承したということですか?


それは違います。単にメンバとして参照を持っているだけです。
ただ、依存関係はあるので、これを元にコンパイラが参照先のクラスを
連鎖的にコンパイルするのでしょうね。
matsumoto
会議室デビュー日: 2004/09/27
投稿数: 5
投稿日時: 2004-09-27 16:37
単にメンバとして参照を持っているだけ

というのはどうゆうことでしょうか??SortItemにかかれている関数は使えるということですか?
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-09-27 22:21
これ以上は、Javaの基礎の基礎になってしまいます。
私が個別にここで説明するよりも、@ITさんの記事で良いのがありますよ。

・Eclipseではじめるプログラミング(3)
http://www.atmarkit.co.jp/fjava/rensai3/eclipsejava03/eclipse03_1.html

まずは掲示板より、こういった記事をよく読んで基礎を勉強される方が良いと思いますよ

スキルアップ/キャリアアップ(JOB@IT)