トップページ⇒prog
181コメント60KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001ひろゆきNGNG
卒論用のjavaアプリケーションを作り始めたのですが、
早速詰まってしまいました。。。
どうぞ、よろしくお願い致します。。。
0002ひろゆきNGNG
いま、詰まっているのは、、、
アプリケーションで、フレームをつくって、ボタンとラベルを配置していて、
ボタンを押すと、フレームの中を背景色で塗りつぶして、
ボタンとラベルを消すというのをやりたいのですが、、
消し方がわからず困ってます。。。(;;)
0003衝撃君.NGNG

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

0005名無しさんNGNG
パネルの中のボタンやラベルを消したいなら、

panel.remove(button);

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


00071ですNGNG
消したいオブジェクトが追加されてるパネルなんだから、

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

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


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

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

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

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

ただ、やはりオブジェクト指向やスコープなどの概念の理解が先
だと思う。いくら急いでいるからって、こんな状態で無理にプログ
ラムを作ろうとしても、いつまでたっても完成しないんじゃないかな。
とりあえず、入門書の熟読と、それに沿った簡単なプログラムの
作成が先だと思います。
C++プログラマからの讒言でした。
0027>25NGNG
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 内のどこからでも参照できる。
002827NGNG
それと・・・

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

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

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

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

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

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

>「お願いします」「うまくいきません」 は「禁句」に??
これだもんなあ。(笑)
004111NGNG
言葉足らずですみませんでした。
要するにJAVAの変数には、値をコピーするプリミティブ型と、オブジェクトのポインタを渡すオブジェクトの両方があるんだということを言いたかったんです。
0042ジャワハウスMLはNGNG
fj的ルールだからね。郷に入ればなんとかだよ。
0043オブジェクト指向PはNGNG
デザインパターンから入ると理解しやすいと思います、ハイ。
0044名無しさんNGNG
私もミリ秒関係で悩んでるのですが、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を使って何とかしようとしてるんだけど。。

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

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

からして、0.1秒単位の精度があれば十分なんじゃないかな?
0048ひろゆきNGNG
あ、、そんなに厳密じゃなくても、いいんです。
どうせおいらの卒論だし、、、1000mでプログラムしましたって
言い張れば、教授は納得してくれますし、、、
0049なんにしてもNGNG
がんばってくだされ
0050名無しさんNGNG
やっぱり今の段階から即製OOプログラマはつらいよ。

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

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

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


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

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


0066衝撃君.NGNG
>65
なんか最近の学生さんはとにかくねこもしゃくしーもJavaなのよ。

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

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

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

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

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

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

#Javaの場合、コーディング規約で定められてなかったか?
0088ひろゆきNGNG
あ、、、、mmaをアップするのわすれてました。。。

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

0089ひろゆきNGNG
http://www.2ch.net/rei2.java
http://www.2ch.net/mma.java
後ほど大文字にかえますー。

009078NGNG
ふと気づいたがなんで
import java.applet.*;
なんてしている?
Applet使っているようには見えないがよけいなimportはバグの元だぞ

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

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

0092えっとNGNG
このプログラムって、スレッドどこでスタートさせてるの?
009378NGNG
独ス@∀javaってなんか書き方、@∀Cっぽいんだよなう髟阡サ
setSizeにsuper.っているかなう髟阡察ト
しかしこのプログラムで卒論になるの?
なんか入門書のプログラムまんまじゃん

>92
ここでいっているスレッドの意味は?
単に起動という瘢陲海箸覆餝ei2のmainだと思う瘢陲韻ノ
009492NGNG
>93
java.lang.Thread の方です。
0095ひろゆきNGNG
プログラムは実験のために必要なんです。
だから、これができないことには、なにもはじまらない。。。
009678NGNG
ごめん93ばけてるね
>92
使ってないのでは?

>95
がんばってくださいね
でもJAVAって他言語より敷居は低いと思うよ
009794NGNG
>96

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

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

とにかく、ソースのインデントくらいはきちんとやったほうが
いいと思うよ。見づらくてしょうがない。
010678NGNG
何とかしてやりたいが見づらすぎる
ちょっと解読に時間がかかりそうだ
105が言ってるがインデントくらいしてくれ

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

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

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

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

見にくいソースですいませんです。。
011378NGNG
おめでとう!
仕事(Javaのプログラム)が終わった後に気分転換に見てました
おお、しばらく見ないうちに見やすくなってる(笑)
0114ひろゆきNGNG
一個つくってみると、なんとなく、理論が頭に入ってきたです。
オブジェクト指向ってなんなんかなど。。
未だに、インターフェイスがなんのためにあるのかよくわかってませんが、、
0115ひろゆきさんってNGNG
まだ大学生なの?同い年か。
0116めでたいNGNG
これで2chもServletで書き直されて、かなり軽くなるんですね :-)
0117>116NGNG
重くなるの間違いじゃないの?
0118>116NGNG
重くなるの間違いじゃないの?もしくは変わらない。
011978NGNG
>114
多重継承が出来ないからその代わり…というのがまず第一
会社などではinterfaceだけ決めて一部のオブジェクトを
外注に出すという使い方ができる(^^;

>118
今のJAVAVMってかなり軽いぞ
さてはアプレットしか知らないな?
0120んー^^: >119NGNG
多重継承代わりが第一ですか…

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

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

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

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

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

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

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

0127名無しちんNGNG
あのー、今日初めてこのスレッド読んだんで、遅いツッコミかもしれ
ないですが…

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

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

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

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

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

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

0140名無しちんNGNG
最初、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票、かな?
0141ひろゆきNGNG
いやぁ、、おいらの修得度までいれると、、
MSX-BASICでやれとかいわれちゃいそうなんで、、、
140の名無しさんがいう、1の純粋なパフォーマンスの差でみたら
どれだけ違うのかしりたいです。
0142名無しさんNGNG
Cによるものはともかく、mod_perlとServletに関してなら、
今出てるJAVA PRESS(Vol.9)のサーブレットの記事に
簡単なベンチマークでの速度比較出てるよ。
おおまかな参考にはなるのでは。

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

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

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

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

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

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

あなたの言いたい事は、要はこういう↓ことかな?
http://developer.java.sun.com/developer/technicalArticles/RMI/rmi/
0156ひろゆきNGNG
やっと、卒論が終わりました。
ご協力いただいたみなさん。ありがとうございました。
ということで、早速、serveletの本を買ってきました。
2chサーブレット計画始動ということで、、、
いつになるやら、、、
0157すとーるまんNGNG
> ひろゆき氏
オープンソースにしません?
効率的に開発できるかも
0158ひろゆきNGNG
一人では、たぶん無理なので、オープンソースでやろうと思ってますが、
今回のスクリプトは、レンタル掲示板をやるときに、
流用する可能性大なので、商用として、
おいらが使う可能性もあるということをご考慮頂きたいです。
ですから、「金儲けの片棒担いでられるか」という場合は、
気をつけてくださいです。。。
ただ、スクリプト自体は、GNUライセンスみたいな感じで配ろうと思ってます。
0159名無しさんNGNG
いいな、ひろゆきさん。どんどんお金持ちになっていきそう。
0160名無しさんNGNG
ただのパクリ男が成長したもんだ。
0161名無しさんNGNG
目指せインターネット長者
Chance it! の管理人は月600万の収入だそうです
0162名無しさんNGNG
どうでもいいけど、卒論って・・・・。
ひろゆきは、(自称)アメリカの大学に留学中だったんじゃないの。
やっぱ、あれはウソ?
0163ひろゆきNGNG
留学は9月に終わって、4ヶ月で無理矢理卒論しあげたですよ。
食ってく手段がないので、レンタル掲示板でもやろうかと
おもってますです。。。
2ch自体でお金儲けするきはないですけどね。
0164名無しさんNGNG
がんばって儲けろ。
0165>160NGNG
君は何か勘違いしていないか?
君は「ひろゆき」氏が元「あめぞう」氏であることを
きちんと認識して話しているのか?
0166>165NGNG
おまえも勘違いしてるんじゃないのか?
0167名無しさんNGNG
やった!食ってく手段がないってのは就職しないって事ですね。
2ちゃんねるも存続。めでたい。
0168>166NGNG
「あめぞう」時代は、愛媛だか香川だかで高校教師をやっている
30代中盤の眼鏡をかけたデブ、という濃密なキャラ設定があり、
それに合わせられた“本人の写真”も流れていたからな。
“彼”の不在を実感できない気持ちは分からぬではないが……。
0169名無しさんNGNG
 
0170おもしろいNGNG
展開になってきたな
0171>ひろゆき氏NGNG
中央大学って聞いたんですけど、
めちゃイケで有名になったヨモギダくん知ってます?
0172あげNGNG
あめぞう=ひろゆきの根拠を述べよ。
まさか、住所ですか?怪しいとは思ったけど・・・
0173>172NGNG
みんな冗談かましてるだけだよ。
ひろゆき氏は帰国後OFFにも出てるんだし。
個人情報は、かつて敵対していた田中三郎が色々暴いたね。
0174名無しさんNGNG
159
0175>173NGNG
自分で公表したんしょ。
0176>175NGNG
父親の職業とか自分で公表してないことも色々ばらしてたよ。
0177ひろゆきNGNG
うーんと、うちの宿舎は税務員宿舎ってとこで、
地図みれば、職業わかります。。
0178遅いレスですがNGNG
おいらもPerl育ちですが、Servletに一票。

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

0180>179NGNG
怪しさ大爆発で、ここにハウジングたのんだらどーでっしゃろ?
http://www.iod.co.jp/

0181ひろゆきNGNG
怪しすぎ(;;)
武蔵野CATVのバックボーンはいくつなんだろう、、、
■ このスレッドは過去ログ倉庫に格納されています