初心者のよるjavaアプリケーション

このエントリーをはてなブックマークに追加
1ひろゆき
卒論用のjavaアプリケーションを作り始めたのですが、
早速詰まってしまいました。。。
どうぞ、よろしくお願い致します。。。
2ひろゆき:1999/11/11(木) 01:53
いま、詰まっているのは、、、
アプリケーションで、フレームをつくって、ボタンとラベルを配置していて、
ボタンを押すと、フレームの中を背景色で塗りつぶして、
ボタンとラベルを消すというのをやりたいのですが、、
消し方がわからず困ってます。。。(;;)
3衝撃君.:1999/11/11(木) 02:06

ボタンとラベルを消すんじゃなく、取り除くんじゃだめすか?
java.awt.Container#remove(Component c);
4ひろゆき:1999/11/11(木) 02:20
ありがとうございます。。
使い方がよくわからないのですが、、、
パネルを使ってるので、
java.awt.Container#remove(ps2);//ps2はパネルの名前です。
こういった感じでいいのでしょうか?

5名無しさん:1999/11/11(木) 04:13
パネルの中のボタンやラベルを消したいなら、

panel.remove(button);

だよ。パネル自体を消したいなら、さらにその上位のコンテナから消す。衝撃君が書いたのは、ドキュメント用の文法でそのまま書いてもコンパイラを通らないよ。
6ひろゆき:1999/11/11(木) 05:09
Panel.remove(d);
とボタンの名前をいれても、static参照はできないと
怒られてしまうのですが、、、


71です:1999/11/11(木) 05:43
消したいオブジェクトが追加されてるパネルなんだから、

パネル名.remove(消したいオブジェクト);

Panel.remove(d);
これじゃ何からdを削除したいのかわからないよ。


8名無しさん:1999/11/11(木) 05:46

悪い。1じゃない。
9ひろゆき:1999/11/11(木) 06:04
あ、、そういうことですか、ありがとうございますー。
10ひろゆき:1999/11/11(木) 06:16
あ、、ものすごく初歩的かもしれませんが、
rei2{ というメソッド内で、ps2というパネルを設定していて、
そこでは、ps2.remove(d)でけせたのですが、
他のメソッドからps2.remove(d)をけそうとすると、
未定義な変数と怒られてしまいます。
どこかのメソッドの変数指定する方法はあるのでしょうか?
11やれやれ:1999/11/11(木) 06:53
メソッドの中で宣言したオブジェクトは、そのメソッドの中でしか使えません。
こういうオブジェクトをローカルオブジェクトと言います。

普通はフレームクラスの最初の部分にグローバルオブジェクトとして宣言します。
こうすると、フレームクラスの中のすべてのメソッドから参照できます。
これはクラスの基本だし、変数が宣言した関数内でしか使えないのは基本中の基本です。
この程度のことがわかってないってことはオブジェクト指向なんて全くわかってないのと同義だと思いますが。
一度最初から入門書を読むことをおすすめします。
12ひろゆき:1999/11/11(木) 07:06
う、、、やっぱりやばいですよね。。
一応、「独習java」という本は読破したのですが、
自分でコーディングしてみないことには概念がよくわかってなくて、、
変数にpublicで宣言するんでしたっけ、、
ちょっと読み返してみます。ありがとうございますー。
13名無しさん:1999/11/11(木) 07:12
11の口調はきついが、言ってることは真実かも。
オブジェクト指向の概念を理解してないと、Javaで
まともなプログラムを作ることは不可能に近いと思う。
14ひろゆき:1999/11/11(木) 07:21
一応、概略は理解したつもりだったんですが、、
パネルって変数だったんですね、、(^^;;
imageとかも変数として扱われてるんでしょうか?
15衝撃君.:1999/11/11(木) 08:19
ひろゆき、どうも今からオブジェクト思考の勉強なんて無理
めだ。今の君に大事なのはさっさと卒論書くことだろ?Java
なんてやめて得意のPerlで作ることを薦める。

じゃ、死期と言って木間ー巣。
16オブジェクト指向と言うよりは:1999/11/11(木) 11:01
10からすると、構造化というか、それを支援するブロックとスコープの
対応も飲み込めていないみたい。
これじゃJavaはおろか、CやPASCALですら無理じゃ?
17>16:1999/11/11(木) 11:06
でも、いちおうPerlにもスコープの概念があるよね。
ひょっとして、2chの掲示板のスクリプトも、すべて
グローバル変数を使っているとか。
でも、なにはともあれ掲示板のスクリプトを書き上げ
たのはすごい。
(おいらは作ったことがないから、よく分からないけど。)
18>17:1999/11/11(木) 11:48
だから、スレッド壊れたりするんじゃないのか?
誰かデバッグしてやってよ>2chのCGI
19>18:1999/11/11(木) 12:15
俺も2chスクリプトの公開に賛成ヽ( ̄ー ̄)ノ
公開当初はスクリプトを解析して荒らすヤツも現れるだろうが、
バグ取りに協力する者も多く現れるはず。
結果、2chスクリプトは今よりも改善されると思うが。
20これ:1999/11/11(木) 12:41
http://member.nifty.ne.jp/m-yutaka/jdi/index.html
なかなか良さげなんだけど
なんか動かないものが2つ程。。。
バージョンアップまで待つか
21ひろゆき:1999/11/11(木) 13:30
>今の君に大事なのはさっさと卒論書くことだろ?Java
>なんてやめて得意のPerlで作ることを薦める。
卒論の実験用プログラムをくまなきゃいけないんですよぉ(;;)
cgiだと実現できない部分があって、あえなく他の言語に手をだしてるわけなんです。。
Panel をpublic宣言する方法がわかりません。。。
public ps2 = new Panel(); とかじゃないですよね。。。。

22え?:1999/11/11(木) 13:42
ひろゆきの専攻って心理学でしょ?
なんでプログラム書かないといけないの?
23ひろゆき:1999/11/11(木) 13:51
心理学といっても、認知心理学ってやつで、
実験をしなきゃいけないんですよ。
おいらがやろうとしてるのは、「色のメモリスパン」というやつで、
人間は色をどのように記憶するのかというものです。
んで、そこで、ランダムな色を数個提示して、
それを時系列順に色をクリックで選んで貰うというプログラムを
作らなきゃいけないんですね。。。
24ひろゆき:1999/11/11(木) 13:56
んで、ミリ秒単位で表示間隔を制御するのと、
色がついた正方形をクリックするとアクションが起こるようにしたいので、
cgiだと、実現できないんですよね。。。
25ひろゆき:1999/11/11(木) 14:23
う、、どなたか、、ここのところを、、、
Panel をpublic宣言する方法がわかりません。。。
public ps2 = new Panel(); とかじゃないですよね。。。。
26名無しさん:1999/11/11(木) 15:03
Javaは知らんが、ひろゆきが困っているようなので。
外してたらすまん。細かい所は間違ってると思うので、適宜
読み替えてくれ。
rei2というメソッドが定義されているクラス名を仮にayanami2と
おくと、そのクラス定義部で、
public class Ayanami2 {
public Panel ps2;
(rei2などのメソッドの定義...)
}
と定義しておいて、rei2内で
ps2 = new Panel();
というふうにパネルの実体を作成すれば、同じオブジェクト内の
全メソッドから、ps2を参照できると思う。
早いはなしが、ps2の定義をrei2というメソッドではなく、その
一つ外の、ayanami2というクラス定義部でやればいいんじゃないかと。
public宣言をしておけば、Ayanami2クラスのオブジェクトを参照して
いる他のオブジェクトからも、rei2を読むことができます。

ただ、やはりオブジェクト指向やスコープなどの概念の理解が先
だと思う。いくら急いでいるからって、こんな状態で無理にプログ
ラムを作ろうとしても、いつまでたっても完成しないんじゃないかな。
とりあえず、入門書の熟読と、それに沿った簡単なプログラムの
作成が先だと思います。
C++プログラマからの讒言でした。
27>25:1999/11/11(木) 15:06
import java.awt.*;

public class test extends Frame
{
 private Button button;

 public test() {
  setLayout(null);

  button = new Button("ボタン");
  button.setBounds(100@` 100@` 100@` 100);
  add(button)

  show();
 }
}

この場合、button が test 内のどこからでも参照できる。
2827:1999/11/11(木) 15:19
それと・・・

>Panel をpublic宣言する方法がわかりません。。。

public宣言ってのは、宣言したクラス以外のクラスからでも
アクセスできるっていう意味だよ。
だから、通常の変数はprivateにしといた方が良いと思う。
29ひろゆき:1999/11/11(木) 15:33
ありがとうござます。
上位概念のところで定義して、そこを消すようにすればよかったんですね。。
入門書を読んだのですが、実際にコードをつくってみないと、
よく分からない気がして、作り始めたものの、、
アプレットのサンプルはいっぱいあるのですが、
アプリケーションのサンプルがあまりなくて、
困っていました。
じわじわ一歩づつすすんで、完成までこぎつけたいとおもってるんですが、、
お手数かけますです。。。
30ひろゆき:1999/11/11(木) 15:45
はい。privateで設定しました。。
変数の宣言の違いもいまいちわかってなかったもので、、
ありがとうございます。
3126:1999/11/11(木) 15:54
>ミリ秒単位で表示間隔を制御するのと

ってあるけど、Javaってそのような精度でリアルタイム制御できる
のかな? もちろん、環境にもよるだろうけど。
32ひろゆき:1999/11/11(木) 16:20
sleepがミリ秒単位で止まれるかと、、
perlのcgiだとサーバーを通すので、
アプリケーションのjavaのほうがマシかと、、
それと、perlでミリ秒で止める方法をしらないというのも、、
33名無しさん:1999/11/11(木) 18:01
>アプレットのサンプルはいっぱいあるのですが、
>アプリケーションのサンプルがあまりなくて、
>困っていました。

今書かれているような部分だと、
アプリケーション例でもアプレット例でも
大して変わりは無いように思うがのお。
34ひろゆき:1999/11/11(木) 21:37
でへへ、、似たようなアプリがあれば、
ちょっとした変更だけで、逃げ切れるかなとおもってたんですが、、
3511:1999/11/11(木) 23:23
>パネルって変数だったんですね、、(^^;;
違います。パネルはパネルクラスからインスタンスしたオブジェクト。
変数とオブジェクトの区別がついていないようでは、JAVAでGUIプログラムをするのは難しいよ。
オブジェクトとは何か?というのを実感できるようになると楽にプログラミングできるようになるよ。確かに一見CやPerlのいわゆる変数と同じに見えなくもないが、ここが重要。
36Javaをやるなら:1999/11/11(木) 23:26
37変数ってことで:1999/11/12(金) 00:55
いいと思うけどね >35

細かいこと言えば、パネルクラスのオブジェクト(インスタンス)への
参照を保持している変数ってところか。
まあ変数には変わりは無い。
38sleep:1999/11/12(金) 01:15
確かにJavaとしての仕様としてはミリ秒単位で指定できるけど、
どのプラットフォームで動かすかは知らないけど、
PCってことにしてしまうと、
結局、実際に動作する際の最小分解能は55mSecじゃないかな。
まあJVMの実装次第だろうけど、55mSec単位である可能性は
かなり大きいと思う。

それと、sleepって「最低そんだけの時間寝る」ってだけで、
指定時間経過後に遅滞無くすぐに実行再開ってのは保証されてないよ。
39ひろゆき:1999/11/12(金) 01:17
>変数とオブジェクトの区別がついていないようでは
今日1日だけでも、だいぶわかってきました。どうもです。
ジャワハウスの過去ログを読んだのですが、、
レベルが高すぎるような、、(^^;;;;
ひとまず、、がんばるのみですね。。
4026:1999/11/12(金) 01:35
おれも、先日ジャワハウスMLに参加したんだけど、
参加した当日に、どうでもいいことで、熱いフレームが
勃発したんだよね。かなり寒い気持ちになった。

>「お願いします」「うまくいきません」 は「禁句」に??
これだもんなあ。(笑)
4111:1999/11/12(金) 01:47
言葉足らずですみませんでした。
要するにJAVAの変数には、値をコピーするプリミティブ型と、オブジェクトのポインタを渡すオブジェクトの両方があるんだということを言いたかったんです。
42ジャワハウスMLは:1999/11/12(金) 01:54
fj的ルールだからね。郷に入ればなんとかだよ。
43オブジェクト指向Pは:1999/11/12(金) 05:23
デザインパターンから入ると理解しやすいと思います、ハイ。
44名無しさん:1999/11/12(金) 07:41
私もミリ秒関係で悩んでるのですが、Win系は特に駄目みたい
以下ジャワハウスの投稿から無断転載

>>さて、System.currentTimeMillis() の精度ってどのくらいのものでしょうか?

>昔作ったcurrentTimeMillisの精度測定プログラムを動かしてみました。
>FreeBSD JDK1.1.7 1mS
>Soraris2.6(86) JDK1.1.6 1mS
>Windows95 JDK1.1β3 1000mS(昔測った)
>Windows98 JDK1.1.7 50〜60mS
>WindowsNT4.0 JDK1.1.8 10mS
>WindowsNT4.0 JDK1.2.1 10mS

一番多く使われてるOSの精度が一番悪い。
TimerクラスってのもあるけどこれもWin98だと精度が全然だめ。
私の場合はJNIを使って何とかしようとしてるんだけど。。

45ゆきねに☆彡:1999/11/12(金) 09:44
>38、44
そうそう。 PC/ATはタイマー用のICにi8253が載っていて、その動作周波数
×任意の数で割り込みがかかってたような…。 で、ちょうどキリのいい数
字となると、せいぜい1/200秒くらいまでしか駄目だったような記憶がありま
ます。 そのうえ、Timerなんて使った日にゃ本当にイベントの取りこぼしな
く動いてくれるかとか、余計なとこで時間を潰してるんじゃないかと不安で
使いたくないけどなあ。
WindowsネイティブなアプリにしてGetTickCount使うとか、計測用のボードで
も入れた方が、javaでtimerよりは安心できるような気が…。
46ゆきねに☆彡:1999/11/12(金) 09:50
>23
認知心理学で色が云々って懐かしいなあ。
学生時代に、ピラミッドをお好きな色で構成していくとか、呈示した色に
対する印象を聞くなんてプログラムをアルバイトで作ってました。
47名無しさん:1999/11/12(金) 10:39
厳密にミリ秒単位での動作ってのはムリがあると思うけど、

>んで、そこで、ランダムな色を数個提示して、
>それを時系列順に色をクリックで選んで貰うというプログラムを

からして、0.1秒単位の精度があれば十分なんじゃないかな?
48ひろゆき:1999/11/12(金) 14:35
あ、、そんなに厳密じゃなくても、いいんです。
どうせおいらの卒論だし、、、1000mでプログラムしましたって
言い張れば、教授は納得してくれますし、、、
49なんにしても:1999/11/12(金) 17:45
がんばってくだされ
50名無しさん:1999/11/13(土) 03:51
やっぱり今の段階から即製OOプログラマはつらいよ。

Directorとか適当なオーサリングツールでごまかせないのか?
51ひろゆき:1999/11/14(日) 11:35
director、、高そう。。
フラッシュだと、データの書き込みができないので、、、
52>51:1999/11/14(日) 19:55
Liteなら15K円。あんまし機能ナシ
53>ひろゆきさん:1999/11/15(月) 00:50
大掲示板を作った実行力を かなり尊敬してます。卒論頑張って下さい
54名無しさん:1999/11/15(月) 02:10
人の流れを「パクッ」といただく能力にはたけてるね。
55ひろゆき:1999/11/15(月) 03:52
急がば回れということで、IDGコミュニケーションズの「Javaのからくり」という本を
薦められて、立ち読み45分の末、購入しました。
コンストラクタとメソッドの違いがようやくわかってきたような。。。
56> 55:1999/11/15(月) 07:14
うーん、私もその道通りました。
CからC++へ移るとき、暫くOOPの概念だけを理解するのに
時間をかけました。

とりあえず、OOPは、めったやたらとデータにアクセスできないように、
関連性のある変数とメソッドをまとめてやる、と捉えておいて良いんじゃないかなあ?

でもなんでswing使わないんですか?
57ひろゆき:1999/11/16(火) 03:49
買った本がswingではなかったという理由だけで、
swingではないのですが、swingの方がよさそうな気も、、
処理速度としては、どうなんでしょうか、、
swingと普通のawtのどちらがお勧めなんでしょうか?
58単純なアプリだったら:1999/11/16(火) 03:59
awtだよ。見栄え、機能重視だったらswing。
awtのほうが軽くて、swingは重い。
awtより、swingのほうが複雑。
ただし、一度憶えてしまえばawtよりswingコンポーネントのほうが使いやすい。


59名無しさん:1999/11/16(火) 17:24
60衝撃君.:1999/11/16(火) 18:00
JDK1.2や1.3betaと速いCPUと沢山のメモリがあれば、swingも結
構使えます。とにかくやたらとメモリ食います。swingは一見複
雑ですが、一度概念を覚えてしまうと非常に使いやすく、もう
他のGUIに移るの嫌になりますな。MFCって何脱毛?
61ゆきねに☆彡:1999/11/16(火) 18:26
衝撃君に同感。
もうAWTにゃ戻れないし、MFC? ぷぷっ、って感じです。
Pentium Pro 180MHzのマシンでSwing使った開発をやってたので、
今のマシンだと全然ストレス感じません。
62あの、:1999/11/16(火) 23:29
「オブジェクト指向って何それ?」なMFCとでは最初から…(笑)
63ひろゆき:1999/11/17(水) 04:50
動きのところから、じわじわと作り始めているのですが、
thread.sleepを入れるには、tryとcatchを使わなければいけないようなので、
tryとcatchを入れたとたんに以上に重くなってしまいました。。
http://www.2ch.net/rei2.java
いったい、、何が原因なんでしょうか、、
わかる方、いらしたらお願いしますです。。。
64java初心者:1999/11/17(水) 05:50
paintメソッドにsleepをいれるのはありなの?
RunnableをImplementして、run()メソッドで
thread.sleep(1000)
paint()
ってな感じにしたら?tryとcatchはいるけど・。

65えらそうでゴメン:1999/11/17(水) 06:01
つーかつーかつーかさぁ
VBで書いたらいかんのん?
オブジェクト指向がなんなのか分かってないのにプログラム
書き始めるのはいかがなもんかと。。
JAVAって現在のところどうしてもWebで公開したいものか、
今までの手続き型プログラムには将来がないと気がついた人が
構造にこだわって書くもんっしょ。
俺はそういう信念なんだが。


66衝撃君.:1999/11/17(水) 15:14
>65
なんか最近の学生さんはとにかくねこもしゃくしーもJavaなのよ。

学生さんの場合、プログラミング自体の勉強も兼ねていること
が多いのでVBよりJavaで勉強したほうが筋がよくなるとは思う。

でもVB=かっちょわりー、Java=かっちょいいというブランド
イメージでナニゲに選択しているような気もする。
67java初心者:1999/11/17(水) 15:30
>66
う!・・・・・
68名無しさん:1999/11/18(木) 03:17
try@` catch入れたらって、
入れないソースをコンパイル・実行できて
それと比較して重くなったとでも?
って無理だよな。
69名無しさん:1999/11/18(木) 06:17
なんかJAVAって互換性が悪いように思ったんだけど。
JDK1.6で作ったプログラムがJAVA2じゃ動かなかったよ。
GUI使ってる奴。
70JDK1.6なんて:1999/11/18(木) 12:47
無いよ、まだ(笑)

というのはさておき、1.1.6で作ったのが動かないってなら
oldjavaコマンドは試してみた?
71>69:1999/11/18(木) 13:12
訳あって、JDK1.0.2で作成されたプログラムを
Java2のコーディングスタイルに変更しました。
大変でしたよ・・・
72>71:1999/11/18(木) 14:13
おんなじ言語とは言えないね・・・それじゃ。
7371:1999/11/18(木) 16:02
>72
イベント処理系なんかが全く別物なんですね。
標準クラスのメソッド名も変更されていたり。
旧コードでもコンパイル自体は出来るんですが、
警告がガンガン出て来るんですね。
74ひろゆき:1999/11/18(木) 17:19
だいぶ、、どうにかなってきましたです。
runnableでスレッドを走らせたほうがよかったのかなと考えつつ。。
http://www.2ch.net/rei2.java
VBとJAVAだと、開発環境の予算が違うので、、、、
あと、、VBをいまさら覚えてもなぁ、、と。。。
75>74:1999/11/18(木) 21:25
あと数年はJAVAより稼ぎ口が多そうだけど。
76名無しさん:1999/11/18(木) 21:30
>あと数年はJAVAより稼ぎ口が多そうだけど。
そのかわり安くて大規模で納期の短い、悲惨な話が
多いような気がします。
77seven:1999/11/18(木) 22:50
すみません、77もらいっす。
pure-javaって、どうなるんでしょうね
78>74:1999/11/18(木) 23:17
普通FlameにActionListenerをimplementするコードは書かないと思うが…
Listener使うときって別のクラスにしないか?

実害はないが配列の宣言は
Object[] o= new Object[a];
↑こういう書き方が正しいらしい
79ひろゆき:1999/11/19(金) 02:22
オブジェクト思考がわかってなかったので<今もあやしいですが、
ひとつのクラスで完結させちゃおうと、同じクラスにいれちゃいましたです。
わけたほうがよさそうですねぇ。。。
80名無しさん:1999/11/19(金) 05:43
じゃあさ、JAVA2で作ったプログラムって、JDK1.1.Xで動くの?
特にSwing関係は無理そうだけど、JAVA2がサポートされてないプラットホームって多いじゃない。そんな中でJAVA2使ってプログラムしていいのかなあって思ったりして。
8178:1999/11/19(金) 06:52
>80
動かないと思ったほうがいいです
上位互換と思ってください
でもJAVA2とJDK1.1.Xって洗練度が全然違うんだよなあ
WinとSolarisで使うならJAVA2でしょう
LinuxのPre2を使ったがGUI関係でよくフリーズします
82後ろ向けの:1999/11/19(金) 07:29
互換性って欲しいか?

ちなみにSwingだけならJDK1.1.*用のがあるからOK。
問題はコレクションとか、やっと行われたStringBufferの
機能強化部分とか、各クラスに加わった便利そうなメソッド
とか、その他挙げきれないJAVA2以降の部分だわな。
ま、JAVA自体まだ3@`4年ていどじゃないの、
1@`2年後に期待するわ、わし。
8378:1999/11/19(金) 18:21
無名インナクラスも初心者ならあまり使わないほうがいいですよ
クラスの概念の理解の妨げになる
84ひろゆき:1999/11/19(金) 19:33
http://www.2ch.net/rei2.java
やっと、テストができるようになりました。。ふぅ、、
後は、これをループさせて、、、
8578:1999/11/19(金) 20:29
>84
これって動くか?
コンパイルとおらんような気がする
class mmaってどこにある?
クラス名の先頭小文字で書くのは止めたほうがいい
86初心者A:1999/11/20(土) 04:00
>クラス名の先頭小文字で書くのは止めたほうがいい
ですね。大文字の方がなんかでっかいきがするし(笑)
87大文字:1999/11/20(土) 07:54
気がするって…

Javaに限らず、C++どころかCでさえ
型名は先頭大文字がお行儀の良い人の間での確立した慣習よ:-)

#Javaの場合、コーディング規約で定められてなかったか?
88ひろゆき:1999/11/20(土) 10:24
あ、、、、mmaをアップするのわすれてました。。。

え、、、クラスの名前って大文字にしなきゃいけないんですか。。
勉強不足でしたー。。

89ひろゆき:1999/11/20(土) 10:25
http://www.2ch.net/rei2.java
http://www.2ch.net/mma.java
後ほど大文字にかえますー。

9078:1999/11/20(土) 12:12
ふと気づいたがなんで
import java.applet.*;
なんてしている?
Applet使っているようには見えないがよけいなimportはバグの元だぞ

あと前にも言ったがActionListerのimplementをclass rei2でやるのはやめろ
Object指向の理解の妨げになるようなコードになるぞ

private Color colors[] = new Color[6];

private Color[] colors = new Color[6];
に書き直せ
上でもコンパイルはできるがはっきり言って間違いだ
Cとの互換性のためにあるそうだが初心者の誤解を招くので
何で禁止しないのか謎だ
91ひろゆき:1999/11/22(月) 01:38
「独習java」というテキストに、frameをextendsして、Actionlistenerを
inmplementsする例があったので、そのままぱくったのですが、まずかったのでしょうか。。
アドバイスどうもです。さっそくなおしてみました。
http://www.2ch.net/Rei2.java
http://www.2ch.net/Mma.java

92えっと:1999/11/22(月) 10:27
このプログラムって、スレッドどこでスタートさせてるの?
9378:1999/11/22(月) 12:28
独ス@∀javaってなんか書き方、@∀Cっぽいんだよなう髟阡サ
setSizeにsuper.っているかなう髟阡察ト
しかしこのプログラムで卒論になるの?
なんか入門書のプログラムまんまじゃん

>92
ここでいっているスレッドの意味は?
単に起動という瘢陲海箸覆餝ei2のmainだと思う瘢陲韻ノ
9492:1999/11/22(月) 13:39
>93
java.lang.Thread の方です。
95ひろゆき:1999/11/22(月) 13:48
プログラムは実験のために必要なんです。
だから、これができないことには、なにもはじまらない。。。
9678:1999/11/22(月) 17:16
ごめん93ばけてるね
>92
使ってないのでは?

>95
がんばってくださいね
でもJAVAって他言語より敷居は低いと思うよ
9794:1999/11/22(月) 17:28
>96

Thread.sleep(1000);
ってあるから・・・
9878:1999/11/22(月) 19:11
>97
それは実行中のメソッドを一時停止させるものです
単にそこで1秒待ってるだけですね
99ひろゆき:1999/11/23(火) 03:47
あい、、色を一秒表示して、0,5秒間をあけて、
また一秒表示するというのに、thread.sleepをつかってます。
93番はなんてかいてあったんでしょうか、、

100ひろゆき:1999/11/23(火) 07:16
変数が足せるのに、0に戻らないという妙なエラーで困ってます。。。
jyunという変数なんですが、ひととおり、色を表示して、正誤判定をして、
もう一巡という形にしたいのですが、jyunという変数が0にもどらないのです。
そこらじゅうに、jyun=0;といれたのですが、0に戻っていません。
jyun=他の変数; というコードもないのに、なぜこんなエラーがでるんでしょうか、、、、
101ひろゆき:1999/11/23(火) 07:23
http://www.2ch.net/Rei2.java
あ、ソースわすれました。。。
102ひろゆき:1999/11/23(火) 08:00
103ひろゆき:1999/11/23(火) 17:38
ただ、ループさせたいだけなのに、
どうしてこんなにむづかしいんでしょ。。。
1041人の質問スレッドで:1999/11/23(火) 18:59
レス数100突破。さすがひろゆき。
105名無しさん:1999/11/23(火) 19:56
テスト開始のボタンを押すと、jyunの値はいったん0に戻り、
その後jyunの値が増えた後に、画面にjyunの値が表示されてる
ようだけど、それじゃだめなの?

とにかく、ソースのインデントくらいはきちんとやったほうが
いいと思うよ。見づらくてしょうがない。
10678:1999/11/23(火) 21:19
何とかしてやりたいが見づらすぎる
ちょっと解読に時間がかかりそうだ
105が言ってるがインデントくらいしてくれ

コメントも欲しいな
何をしようとしているかが分かればバグの特定は容易になるぞ
この程度のプログラムなら解読は難しくないが
そこにバグがある場合それがバグなのか仕様(笑)なのかは作者しかわからない

それからそこらじゅうにjyun=0なんて入れるな
入れたい場所というのが分からないようではプログラムなんて出来んぞ
ついでに変なバグがあとで出ることになるであろう
107ひろゆき:1999/11/23(火) 23:14
す、、すいません。
見やすいソースにがんばってしてみます。
ありがとうございます。
108ひろゆき:1999/11/24(水) 03:26
http://www.2ch.net/Rei2.java
http://www.2ch.net/Mma.java
あれぇ、、、わかりやすくするために、ひとつのメソッドを分割してたりしたら、
エラーがなくなってました。。
やはり、わかりやすくするのって、重要なんですね。。しみじみ・・・

109名無しさん:1999/11/25(木) 01:18
JavaScriptでやっちゃえば?
110ひろゆき:1999/11/25(木) 06:30
http://www.2ch.net/Rei2.java
http://www.2ch.net/Mma.java
ついに、完成しました!というか、動作するようになりました。
みなさん、本当にありがとうございますです。
結局、、オブジェクト思考から程遠いプログラムですが、、
徐々にいじっていきたいとおもうです。

111とりあえずおめでとう!:1999/11/25(木) 06:33
22日のソースを自分なりにいじってたんですが,設計って難しいですな
112ひろゆき:1999/11/25(木) 09:02
基本的な、設計の仕方がわからないので、
いきあたりばったりで、動けばOKみたいになってしまったです。
まぁ、、それが目的なんですが、時間があったら、
classごとに分けて、オブジェクト指向に走ってみたいです。。

見にくいソースですいませんです。。
11378:1999/11/25(木) 20:01
おめでとう!
仕事(Javaのプログラム)が終わった後に気分転換に見てました
おお、しばらく見ないうちに見やすくなってる(笑)
114ひろゆき:1999/11/30(火) 21:07
一個つくってみると、なんとなく、理論が頭に入ってきたです。
オブジェクト指向ってなんなんかなど。。
未だに、インターフェイスがなんのためにあるのかよくわかってませんが、、
115ひろゆきさんって:1999/11/30(火) 22:35
まだ大学生なの?同い年か。
116めでたい:1999/12/01(水) 00:53
これで2chもServletで書き直されて、かなり軽くなるんですね :-)
117>116:1999/12/01(水) 15:28
重くなるの間違いじゃないの?
118>116:1999/12/01(水) 15:28
重くなるの間違いじゃないの?もしくは変わらない。
11978:1999/12/02(木) 22:03
>114
多重継承が出来ないからその代わり…というのがまず第一
会社などではinterfaceだけ決めて一部のオブジェクトを
外注に出すという使い方ができる(^^;

>118
今のJAVAVMってかなり軽いぞ
さてはアプレットしか知らないな?
120んー^^: >119:1999/12/03(金) 07:56
多重継承代わりが第一ですか…

あたしも言語の理論上のことを深く解っているわけじゃ
ないので、明確に反論できませんが、そんな便法的な面
が第一というような軽いものでしょうか、あれは。
12178:1999/12/04(土) 00:27
>120
>あたしも言語の理論上のことを深く解っているわけじゃ
>ないので、明確に反論できませんが、そんな便法的な面
>が第一というような軽いものでしょうか、あれは。
便法的面じゃないですよ全然
はっきり言って言語設計の根本にかかわる大問題だと思いますが
122確かに:1999/12/04(土) 02:25
(設置)理由と、結果(として持った性質)の順序が逆くさいな
>多重継承できないクラスの代わりが第一
123自分も:1999/12/05(日) 05:11
インタフェースの使い方はわかりますが、
何のためにあるのかがわかりません。
詳しい人教えてプリーズ。
124C++という:1999/12/05(日) 13:43
けっこう古いやつでは出来ないわけだが、
近頃では、実装の継承と型の継承は別に考えよーぜ、
ってことらしい。型というか外から見た振舞いというか。
実際、ベースクラスについ実装を盛り込んで、後で
ベースクラス作成時には考えてなかった新たなクラス作ろうって
ときに、邪魔になったり無駄になったりってのはちょくちょく
ある。俺の先の見通しが悪いだけかもしれんけど。
こういうことは多重継承かどうかは関係無い。

で、classでも全部のメソッドがabstractでインスタンスデータも
持たないようにすれば良いようなものだけど、でもclassだけだと
つい実装盛り込んでしまってもコンパイラは何も気にしてくれない。
interfaceだと「これは振舞いの定義だけだ」ってのをコンパイラにも
判るほど明確にできる。

たぶん、実装を含まないと仕様上明確にできれば、多重継承というか、
振舞いの面を合成しても、あまり困ったことにはならないと判断
されたんじゃないかな。
こうしてしまえば、実装を含むかもしれないclassは多重継承禁止に
してしまえる。

つまり近傍の流れで言われている、多重継承の面で言えば、
・classが多重継承できないから、その代わりにinterfaceを
 用意。
ではなく、
・interfaceというものを導入したおかげでclassの多重継承を
 禁止できた。

と見る方が良い。
違いは微妙だけど、文章に表された因果は、んー逆と言えば逆かな。
125名無しさん:1999/12/05(日) 14:57
C++でも、すべてのメソッドが純粋仮想関数であるようなクラスを
作れば、interfaceと同じことができますね。
(Javaみたいにきれいな記法ではないけど)
多少手段は異なりますが、オブジェクト指向でいう抽象クラスの実現と
いう点では、同じですよね。
126そう:1999/12/06(月) 00:47
そう、わしも124の1行目には「おやぁ?」と思ったが、
後に続く部分を読めばまあ、そういうプログラマの
意識に頼ることの無い、言語の機能としてのレベルの
話として読んであげたよ。

>で、classでも全部のメソッドがabstractでインスタンスデータも
>持たないようにすれば良いようなものだけど、でもclassだけだと

使われている用語はJava寄りだが、
"interface"などというものを使わない場合を
述べておるので、C++にも当てはまるだろうて。

127名無しちん:1999/12/06(月) 09:25
あのー、今日初めてこのスレッド読んだんで、遅いツッコミかもしれ
ないですが…

ひろゆきくん、Perlって、CGI通さなくても動くよ?(^^;; ってそう
いう問題じゃないってか。GUIが欲しいのか…だったら109さんの言う
通り、JavaScriptの方が、Perl育ちのひろゆきくんにはいいかもよ。

あと、誰かがVB勧めてたけど、もし予算下りるんだったら Inprise
が出してるBorlandの"JBuilder"(ややこしいなぁ)あたりを買って、
それ使うのが早いよ、きっと。あれ?もう用は済んだのかな。だったら
ごめん(笑)

あ、interfaceの話の腰折ってごめん。
128名無しちん:1999/12/06(月) 09:59
>124
言ってる事はだいたい賛成、というか、気持ちは伝わってきます。
専門的に言うと…なんだっけ。"fragile base class"問題(名前合っ
てるか自信ない)ってのを解決する手段なんですよね。interfaceって。
それが、124さんが前半で言ってる話だと思います。

>・interfaceというものを導入したおかげでclassの多重継承を
> 禁止できた。
つまり、「多重継承の禁止」はinterface導入の副産物って事ですよね。
確かにそう。でもちょっとツッコミを入れると、interfaceがないと多重
継承を避けられない訳じゃ、ないです。「汎化−継承」の関係を使う代わ
りに、「集約−委譲」の関係を使えばいいのです。C++の文法忘れちゃった
のでJavaっぽく書きますが

class A { public int hoge(); }
class B extends A {}

をやめて、

class B {
A a;
public int hoge(){ return a.hoge(); }
}

と書き直す手法です。mix-inって言われるテクニックは、この方法を
利用しています。ただし、差分プログラミングのメリットは少し損な
われてしまいます。

本気でinterfaceについてもっと深く読みたければ、fj.comp.oopsに
でも行けば、気が狂ったように議論をしてるスレッドを目にする事が
できますよ(笑)
129ひろゆき:1999/12/06(月) 10:04
javascriptだと、データ保存ができないんですよね、、、
130名無しちん(自己レス):1999/12/06(月) 10:39
>専門的に言うと…なんだっけ。"fragile base class"問題(名前合っ
>てるか自信ない)ってのを解決する手段なんですよね。interfaceって。
ちゃんと説明というか、フォローというか、124さんの言い直しという
か。
従来のオブジェクト指向において問題だったのは、クラスを再利用する
為には「継承」が強力すぎたことです。本来、コードを独立した小さなモ
ジュールに分割して、モジュール毎に再利用できる、というのがオブジェ
クト指向のメリットだったはずなのが、実はクラス−サブクラス間の依存
度が大きすぎるので、そううまくはいかないぞ、って事になったんです。
その、クラス−サブクラス間の依存を緩和する為に考案されたのが、
「interfaceの継承(≒型の継承)」と「実装の継承」を分離する事だった
んです。
だから、多重継承の禁止とinterface導入は、本来無関係…とは言い切
れないけど、それが目的だった訳じゃないです。
131名無しちん:1999/12/06(月) 10:54
>129
あ、なるほど。じゃ、データ保存するときだけCGI経由でPerlにお願い
すれば?(笑)
132名無しちん:1999/12/06(月) 11:28
すいません。レスしまくりです。
>125
抽象クラスとinterfaceの役割は、概念的には少し、違うんです。
というより、interfaceは抽象クラスのサブセットと言えるかもしれま
せん。

具体的に言えば、例えば抽象クラスではprotectedなメソッドを定義で
きたりしますが、それは「interfaceの継承」と「実装の継承」を分離
するっていう、interfaceの定義からは許されない事なんです。だって、
protectedなメソッドって、クラス自身の実装の為に用いるメソッドで
しょ?
interfaceは、そのクラスを使う側の為の抽象クラス、とでも言えばい
いんでしょうか。
133ひろゆき:1999/12/06(月) 19:15
えっと、あとインターフェイスの問題もあったんです。
ボタンを使いたくなかったもので、、、

さておき、話が突然とびますが、C++のプログラムをメモリ上に
常駐させることは可能なんでしょうか?
mod_perlやサーブレットはメモリに常駐するために、
処理が早くなると解釈していますが、
そうすると、C++をメモリ上に常駐させるのが、
一番高速な気がするのですが、そんな簡単にはいかないんでしょうか?
134>133:1999/12/06(月) 20:27
いったい何がしたいのか…
135名無しさん:1999/12/06(月) 22:10
>具体的に言えば、例えば抽象クラスではprotectedなメソッドを定義で
>きたりしますが、それは「interfaceの継承」と「実装の継承」を分離
>するっていう、interfaceの定義からは許されない事なんです。だって、

そうか、
だからpublicなメソッドしか許されなかったのか。
やっと納得できた。
136ひろゆき:1999/12/07(火) 06:39
あ、、2chがperlなんですが、そろそろ重いので、
C計画と、サーブレット計画がるのですが、
Cをメモリに常駐させられるなら、そのほうがいいのかな?と、、
137:1999/12/07(火) 11:52
Cを常駐ってのは意味が変ですが^^;)
今どきのマシンはたいていマルチタスクだし^^;)
ちゃちゃはここまでにして。
CGIだと毎回起動するので重たい。
Servlet or mod_perl だと 起動は発生しないので軽い。
C だと java or perl よりも速いので Cで同じようなことが
できれば もっと速い?
って ことだと思います。
WWWサーバーを改造して Cで作ったプログラムと通信するような
仕組みまでを作れば 可能ですが、大変だと思います^^;)
Servlet をお勧めします。
複数のWWWサーバーにて掲示板を運営する場合など
RMIを使えば相互管理も楽ですし^^
138… (116):1999/12/07(火) 13:08
冗談で言ったんだが、(ほぼ)当たりだったんか。
139ひろゆき:1999/12/07(火) 22:23
あ、、すいません。servletやmod_perlのように、
起動しないですむ形でCのプログラムを使うことはできるのか?
ってことです。
servletのほうが現実的みたいですね(^^;

140名無しちん:1999/12/08(水) 07:51
最初、133の意味がわかんなくて、137と138でやっとこさ、わかりまし
た。servletって、JavaのServlet APIの事だったのですね。2chが
Servletで動くようになるのか。かっちょいいなー。

でも本当に考えるべきなのは、Servlet と (CGI経由じゃない)C ではなく、
Servlet と CGI+C なのでは? 比較すべきパラメータは
1.純粋なパフォーマンス(マジで知らないんですが、どっちが速いんでしょう?)
2.ひろゆきさんがコードを書くという前提での両者のパフォーマンス
3.ひろゆきさんの習得速度、というより習得できるかどうか(2chを管理・運用できるレベルまで)
4.ひろゆきさんがコードを書くという前提での工数見積もり
ってくらい(^^;;; まぁ、仕事じゃないんだから3と4は優先度低し(っつ
ーかひろゆきさんの趣味の方が優先度高し)ですけどね。

俺は…正直、どっちがいいか、わかんないす。ひろゆきさんはJavaやり
たそうだけど、過去ログみると悪戦苦闘してるみたいだし…でもやっぱ、
Servletに1票、かな?
141ひろゆき:1999/12/08(水) 23:08
いやぁ、、おいらの修得度までいれると、、
MSX-BASICでやれとかいわれちゃいそうなんで、、、
140の名無しさんがいう、1の純粋なパフォーマンスの差でみたら
どれだけ違うのかしりたいです。
142名無しさん:1999/12/09(木) 00:11
Cによるものはともかく、mod_perlとServletに関してなら、
今出てるJAVA PRESS(Vol.9)のサーブレットの記事に
簡単なベンチマークでの速度比較出てるよ。
おおまかな参考にはなるのでは。

143ひろゆき:1999/12/09(木) 06:15
あ、衝撃君。さんがもってきてもらったのでみましたです。
serveletの方が、プロセスが多いときは早いんですよね。
serveletかCか、、ということになりそうですが、
serveletが無難でしょうか、、、
144名無しさん:1999/12/09(木) 23:52
Servletにしといたほうがいいと思うよ
Cだと気軽にサーバー変えられないから
145名無しさん:1999/12/10(金) 01:12
JAVA標準化に曲がり角。
これからどうなっていくんでしょう。。。
http://java.nikkeibp.co.jp/Java/News99/1209Sun.html
146Linux ユーザ:1999/12/10(金) 03:12
関係ないけど
http://www.changelog.net/tmp.html#j2se-no-blackdown
これも気になる。なにがあったんだ Sun よ。
147マクネリ君.:1999/12/10(金) 06:05
Java(TM)はSunの商品です。オープンソースの人が何か言ってます
けど、元々契約通りです。はい我々はアコギです。IT業界でアコ
ギじゃない企業って生き残れますか?あなたは我々を責めるほど
そんなに慈善家なんですか?

#Linuxの実装はIBMの奴がいいと思うな。
148名無しちん:1999/12/10(金) 07:39
>144
>Cだと気軽にサーバー変えられないから
でも、自分でサーバたてられるならともかく、レンタルサーバやプロバ
イダが貸してくれてるサーバの場合、Javaが入ってなかったり、入って
てもアヤシゲ〜なバージョンのだったりしますよ。一回、俺プロバイダ
のwebサーバでServlet(っぽい事)やろうとしたら、Javaがまともに動
かなくて泣いた事が…

そもそも、ServletってJDKの1.1からでしたっけ?1.2? 1.0…って事は
なかったんじゃないかな…詳しい人教えてちょ。

あ、上は一般論で、ひろゆきさんは自分でサーバ立ててるんだから(です
よね?)、Javaのバージョンさえ気をつければ、問題ないと思うじょ。
149名無しちん:1999/12/10(金) 08:04
って今 javasoft.com眺めてたけど、ServletってRMIに依存してるだ
け(?)みたいだから、JDKは1.1以上…ってことで、いいのでしょうか?
間違ってたらツッコミぷりーず。
150ひろゆき:1999/12/10(金) 08:38
専用サーバーなので、そこらへんは問題ないです。
使い勝手や、おもしろさでいくと、javaなんですが、
処理速度の面でいくと、Cが速そうな気がするんですが、、
どうなんでしょうか??
151名無しちん:1999/12/10(金) 09:03
>150
うーん、これはあくまで俺個人の勝手な推測ですが
掲示板のサーバプログラムなんて、一般のなんとかサーバに比べたら別
に大した事してないんだし、いくら処理速度に違いがあるって言っても
そんな大きな差には、ならないんじゃないでしょうか。それより、20万
アクセスもあるCGIのプロセス起動のオーバーヘッドを削減した方が、
遥かに効果はあると思います。
そもそも、今Perlで動かしてそれなりの速度が出ているんだし、Java
に変えてそれ以上に遅くなる事は、ないと思うんですが。

あと、扱いなれてる人ならともかく、Cで文字列処理をゴリゴリやるの
は、下手にセキュリティホールをたくさん抱え込んでしまいそうで、ち
ょっと恐いです。Javaで書いた方が安全じゃないでしょうか。
152>148:1999/12/10(金) 10:48
レンタルサーバでJavaServlet動かせるところあるの?
教えてくださいませませ。
153名無しちん:1999/12/10(金) 19:37
>152
さぁ…具体的には、知らないっす。
それに、Servletを試してみた訳じゃなくて、RMIです。たまたまプ
ロバイダのwebサーバ覗いてみたらJavaがインストールしてあった
ので試してみたんですけど、なんかJavaのバージョンがアヤシい
やつで、ちーとも動きませんでした。

つーか、ohayou.comなんてどう?(笑)
154>153:1999/12/10(金) 20:01
ServletとRMIってぜんぜんちがうぞ
155名無しちん:1999/12/10(金) 22:27
>154
誰もServletを試したなんて、言ってませんよぅ。
クライアントをAppletにして、RMI経由でサーバ側のオブジェクトと
接続しただけ。

あなたの言いたい事は、要はこういう↓ことかな?
http://developer.java.sun.com/developer/technicalArticles/RMI/rmi/
156ひろゆき:1999/12/19(日) 17:00
やっと、卒論が終わりました。
ご協力いただいたみなさん。ありがとうございました。
ということで、早速、serveletの本を買ってきました。
2chサーブレット計画始動ということで、、、
いつになるやら、、、
157すとーるまん:1999/12/19(日) 21:53
> ひろゆき氏
オープンソースにしません?
効率的に開発できるかも
158ひろゆき:1999/12/20(月) 01:54
一人では、たぶん無理なので、オープンソースでやろうと思ってますが、
今回のスクリプトは、レンタル掲示板をやるときに、
流用する可能性大なので、商用として、
おいらが使う可能性もあるということをご考慮頂きたいです。
ですから、「金儲けの片棒担いでられるか」という場合は、
気をつけてくださいです。。。
ただ、スクリプト自体は、GNUライセンスみたいな感じで配ろうと思ってます。
159名無しさん:1999/12/20(月) 04:55
いいな、ひろゆきさん。どんどんお金持ちになっていきそう。
160名無しさん:1999/12/20(月) 05:18
ただのパクリ男が成長したもんだ。
161名無しさん:1999/12/20(月) 06:18
目指せインターネット長者
Chance it! の管理人は月600万の収入だそうです
162名無しさん:1999/12/20(月) 08:32
どうでもいいけど、卒論って・・・・。
ひろゆきは、(自称)アメリカの大学に留学中だったんじゃないの。
やっぱ、あれはウソ?
163ひろゆき:1999/12/20(月) 08:52
留学は9月に終わって、4ヶ月で無理矢理卒論しあげたですよ。
食ってく手段がないので、レンタル掲示板でもやろうかと
おもってますです。。。
2ch自体でお金儲けするきはないですけどね。
164名無しさん:1999/12/20(月) 09:00
がんばって儲けろ。
165>160:1999/12/20(月) 09:58
君は何か勘違いしていないか?
君は「ひろゆき」氏が元「あめぞう」氏であることを
きちんと認識して話しているのか?
166>165:1999/12/20(月) 10:29
おまえも勘違いしてるんじゃないのか?
167名無しさん:1999/12/20(月) 13:37
やった!食ってく手段がないってのは就職しないって事ですね。
2ちゃんねるも存続。めでたい。
168>166:1999/12/20(月) 13:57
「あめぞう」時代は、愛媛だか香川だかで高校教師をやっている
30代中盤の眼鏡をかけたデブ、という濃密なキャラ設定があり、
それに合わせられた“本人の写真”も流れていたからな。
“彼”の不在を実感できない気持ちは分からぬではないが……。
169名無しさん:1999/12/20(月) 19:27
 
170おもしろい:1999/12/22(水) 10:05
展開になってきたな
171>ひろゆき氏:1999/12/22(水) 10:17
中央大学って聞いたんですけど、
めちゃイケで有名になったヨモギダくん知ってます?
172あげ:1999/12/22(水) 11:13
あめぞう=ひろゆきの根拠を述べよ。
まさか、住所ですか?怪しいとは思ったけど・・・
173>172:1999/12/22(水) 11:40
みんな冗談かましてるだけだよ。
ひろゆき氏は帰国後OFFにも出てるんだし。
個人情報は、かつて敵対していた田中三郎が色々暴いたね。
174名無しさん:1999/12/23(木) 00:44
159
175>173:1999/12/23(木) 04:18
自分で公表したんしょ。
176>175:1999/12/23(木) 04:48
父親の職業とか自分で公表してないことも色々ばらしてたよ。
177ひろゆき:1999/12/23(木) 10:38
うーんと、うちの宿舎は税務員宿舎ってとこで、
地図みれば、職業わかります。。
178遅いレスですが:2000/01/02(日) 18:43
おいらもPerl育ちですが、Servletに一票。

ところで、サーブレットのホスティングは、
http://www.servletcentral.com/common/hosting.dchtml
>152
179ひろゆき:2000/01/03(月) 17:48
サーブレットのホスティングってあるんですねぇ、、、
でも、、高い、、(;;)

180>179:2000/01/03(月) 18:39
怪しさ大爆発で、ここにハウジングたのんだらどーでっしゃろ?
http://www.iod.co.jp/

181ひろゆき
怪しすぎ(;;)
武蔵野CATVのバックボーンはいくつなんだろう、、、