課題kadai9の感想とコメント


●感想。何かをクラス化するとき、どういったときにクラスとした方が良いか、とか、あるクラスの責務はどこからどこまでにするのがよいか、というような話を今、授業で扱っているソースを例にしてお話してもらえるとうれしいです。また、何かのプログラムを作ることを想定したときの、分析→(UMLも使った詳細な)設計 のところの具体的な話も聞きたいです。
難しいですね。この授業では到底できないところです。後半少し触れますが、わかってくるまでには長い年月を要します。本授業では、設計レベルのUMLが読め、Javaで実装していく作業をやっています。分析は、後期の「オブジェクト・モデリング」を受講してください。
<感想> スケルトンを理解するまでに時間がかかったが一度理解してからは、驚くほど簡単に実装できて気分がよかった。しかし、書いたプログラムの量がとても少なかったので実は今でも何処か間違っているかもと不安だったりする。実際のところどうなのだろうか?
だいじょうぶそうです。
C言語のポインタを知っていたので理解しやすかったです。考え方が少し難しいが,慣れてしまえば便利だということがわかりました。削除するときに無駄なメモリが残ってしまいますが何か支障は起きないのですか?
その疑問については、来週お話しします。
displayメソッドを書くだけだが、そのために全体のプログラム自体を理解せねばならず、ずいぶん時間がかかった。だが連結リストという考えかたをすれば挿入や削除が本当に手早くできる。違うプログラムを考えるときの参考になりそうだとおもいました。
全体のプログラムがわからなければ課題はできないはずです。時間がかかるのは仕方ないですね。
javaでポインタが出てくるなんて知りませんでした。今までの課題の中では難しかったです。発展課題の方は、思ったように動くのですが、削除したitemがメモリから消えてないような気がします。
その疑問については、来週お話しします。
 コメントが多くわかりやすくて助かります。今回の課題ではリストの構造は理解できたのですが、プログラムを理解するのにちょっと悩みました。リストで最後に挿入するオブジェクトの中のnextは次のオブジェクトのアドレスのようなものを指すのではなくただ空を指すところが少し悩みました。連結は挿入が行われてからするんですね。(プリントに書いてあったので聞き逃したようです)発展課題の方はまた後日送らせていただきます。
nullというのは、空をさすと思ってください。そして、何も入れてない状態は、やっぱり空なんです。
〆切後に発展課題を提出したら、どうなるんでしょう?前回の課題をやる時間がなかったので、今回の発展課題をがんばろうと思ったのですが、いつも通り時間切れです。とりあえず、課題だけ提出します。
発展課題は、1週間ぐらいかかっても評価しています。
◎感想エレガントですねぇ。連結リスト。ところで、やけに簡単な課題だったのですが、これでいいのでしょうか。何か間違ってますか?
そうですか?商品管理ならば、もっとエレガントなHashtableというデータ構造があります。本授業では取り上げませんが、教科書の先読みをしてみたら?
6月6日が期限の第7回課題の提出者リストをウェブで見ると、私は期限遅れになっていますが、手元のメーラーの送信記録では、 "Date: Wed, 6 Jun 2001 21:53:11 +0900" となっていて、ちゃんと送った記憶もあります。期限遅れの人が他の週に比べて多いし、何かの間違いではないですか?
申し訳ありません。確認いたします。
この授業を受けるたびにひとつひとつ知識が増えていきとてもありがたいです。次回も期待しています。
ご期待に添えられるようがんばります。
これまでよりも簡単にできました ただ発展課題は途中で分からなくなってしまいました。
そうですか。今回はかなり難しいと思ったんですがね。
とうとう採点の方法と 今後の予定がわかったので とりあえず気合入れようか迷っております。
こちらも、迷っています。
なんとなくできましたが、なにかを追求されたらきっと答えられません。たまにわからないな、と思って焦りますが、今日数学基礎で微分の話を聞いたとき、わからなすぎて内臓が嫌な感じになったのに比べれば、楽に理解できる気がします。
微分にくらべれば、、、プログラミングは論理の組み立てですからね。むしろ文系の方が得意なはずなんです。
まさかJavaにもポインタの概念が出てくるとは思いもしませんでした。オブジェクト指向と相まって、非常にわかりづらいです、、、
来週は、本当のオブジェクト指向です。
やっぱりコンパイルが通って実行できたときの瞬間は最高ですね?。発展課題もやりたかったですが、手が回りませんでした。 教材をダウンロードできるようになったのが大変助かっています。前は写すだけで実習時間が終わってしまっていたのが、プログラムの意味を理解する時間に当てられます。
最高です。あと、バグを見つけた瞬間もたまらないです。
カレタ。というか、コンパイルがとおらないです。 could not find the main method. Program will exit. というアラートがでてきてしまいますし、 java.lang.NoSuchMethodError:mainとか出てきます。。どうやら間違ってるのがVendingMachineMainっぽいんです。なんで????ちゃんと写したのに。。なので、一体どんなことになってるのかさっぱりわかりません。とりあえずやりたかったことを書いておきます。要素ごとに表示したかったので、連結リストの最初の要素だったら表示したあとに次に進める、連結リストの途中の要素もまた表示後に次に進める、最後の要素だったら表示後ループを抜けるといったプログラムにしたかったんです。連結リストを使って表示っていうのは、、こんなことなんでしょうか?ソースを見る限りだとそんなかんじに見えませんかねぇ?とりあえず、一体何が原因でコンパイルがとおらなかったんでしょう?やっぱりMainちゃんがおかしいんですかねぇ??
ええと、ソースの問題ではありませんね。Main自体が見つからないそうです。環境の設定がおかしいのでは?
クラスを作り変えたり、プロジェクトを新しく作ったりすると、今まで動いていたプログラムが動かなくなったりするので困ります。今回も、発展課題9のために前回の課題のファイルたちを新しい発展課題9というプロジェクトに移すと今まで普通に動いていたItemMainが、突如エラーを出すようになってしましました。何もいじってないのにどうしてかわからず、結局発展課題は時間切れです。Jビルダーは便利だけれど、重すぎてすぐパソコンが止まるし、使っているうちに今回のようなよくわからないことが起こるので苦手です。
難しいですね。こちらとしては、慣れてくると思っていたのですが、この時期になってもまだみんな大変そうにしていますね。TAがお手伝いするので、何とか克服してください。
ソースは全てテキスト形式のファイルに添付しました。 よろしくお願いします。
了解しました。
プログラミングがとても苦手で、考えるだけで膨大な時間が掛かってしまいます。途中なのですが、締切時間なので、ひとまず送ります。(また送ります) 今日SAの方に教えていただいた「クラスの説明」は、よくわかりました。初歩的な質問ばかりですが、頑張りますので、また教えてください。それでは。
膨大な時間をかける努力を買いますので、考えたことを書いてくれれば評価します。
プログラムの仕組みを理解するのに時間がかかったが理解できれば実装をするのは簡単だった。
そうですか?理解できても実装できない人もいますよ。
ポインタの意味を何となく理解したつもりでいましたが、いざ課題をやる段階になったら中々分かりませんでした。 分かっていなかったのは、nextの部分でした。「次の要素への参照」の意味を理解したとたん全てが分かりました。 SAに質問して、そのSAの解説を聞いて「意味を理解した」と言った友達に3回くらい繰り返し説明してもらい、やっと分かりました。 ちなみに、友達はかなり怒っていました。
何故怒っていたのですか?きになるなあ。
リンクでつながっている構造は初めてなので,紙にリンクが入っているという略図を用意してじっとにらまないと,なかなかプログラムが浮かんでこなかった.
じっくり考えてみましょう。
以前に、C言語でリスト構造を勉強したときはいまいちピンとこなかったが、今回つっかえてたことがわかったような感じがしてよかった。
実装できれば、おそらく理解できてます。
課題そのものはそれほど難しくは無かったが、  授業の内容は大分難しくなってきた。
そうですね。これから飛ばしますよ。
課題のItemInfo.javaと、発展課題ItemQueue.javaにも挑戦しました。よろしくお願い致します!
了解です。
回は難しかった。特に last.next = insertList; last = insertList; のところは難しかった。まぁ、その分わかった時は嬉しかったけど。しかし、自分で書けるかというと、ちょっと無理ですね。とりあえず理解できただけで、満足しています。(自分に甘い;^^)
理解できていれば、ちょっと時間をかければできるはずです。
感想リンクリストなら配列の個数を予め定めておく必要がない、それだけで配列よりも使い勝手が良いと感じた。慣れれば配列よりもシンプルで美しいのでは。
そうですね。シンプルなのは配列なきがしますが、、、
感想:今日は体調が悪くて3限のみで早退してしまいました。体がつらい時にはプログラミングはつらいです。本当に。でも一応がんばりました。厳しかったです。
くれぐれも、体調を悪化させないようにね!
感想: 今回のテーマだったポインターがどのような物であるのかは(説明しろといわれると難しいですが)、理解できたと思います。しかしながら、それをどのようにすれば書けるようになるのかに対する説明が欲しかったです。というよりも正直毎回思うのですが、授業前半で理念を説明してもらうのはいいのですが、それを実際に書くにはどのようにして書けばよいのか、どのようなソースだったらそのようになるのかに対してもっと説明して欲しいと感じます。時間的な都合など様々な制約があるがゆえに現在の形に落ち着いているのだとは思いますが、プログラミングの具体的な書き方をもっと教えて欲しいと思います。
プログラミングの具体的な書き方も十分説明しているはずですが、、、今回も、ソースを動かして見せてみましたが、、何処がいけませんか?是非教えてください。
感想:ポインタの考え方は、すごく便利でおもしろいと思った。    普通の課題をやったときは結構わかったつもりだったけど、    発展課題の方をやってみたら何がなんだかわからなくなってきてしまった。
どうですね。時間をかけないと難しいかもしれません。ひまなときに遊んでみてください。
既に何回か休んでしまっているので、これからは発展課題も頑張りたいです。それと、今回の発展課題についてですが ItemQueueのremobeメソッドがnullを返すとNullPointerExceptionが出るので ItemMainのほうを直しました。提出したのはItemQueueだけですがそれでよかったでしょうか。
直し方はそれが一番シンプルでよいと思います。そう書いてくれれば、だいたいどう直したかはわかるので、もし、主張したいことがあれば、直したところも送ってください。
今までの配列で無駄を感じていたので連結リストという考え方には感動しました。
先人の知恵ですね。
今までオブジェクトの中の配列の中身を入れ替えしていたのがメモリになったということで混乱したメモリの概念がちょっと良く分からなかった。
もう一度pptを見てしっかり復習してください。
今回のポインタの説明はわかりやすく納得できました。連結リストの概念も理解できたのですが実装するとなると難しいなと感じました。
ポインタを知ってないと、結局きちんとしたプログラムってかけないんですよねー!
今回の課題はSearchを書き換え、特定のところで終了せず、最後まで行くようにし、その度に内容を表示するようにしました。 感想 第8回の書き換えが難しく、わかりませんでした。
特定のところで終了しないのは何故ですか?
今回の授業は祖母がの告別式に出席してたために出られなかったのですが(ごめんなさい!)、パワポを読んだところめちゃくちゃ     わかりやすくて驚きました(お世辞抜きで!)。課題はこんなんでいいのかわかりませんがよろしくお願いします。あと、復習のため    に昔の課題の回答例を第三回のようにアップしてくれるとうれしいです。
解答例は適宜授業で配っています。サービスでWebに載せるときもあります。
今回の内容なのですが、実際ポインタが何であるか、連結リストの理屈みたいなものはわかるのですが、実際に実装されたコードを見ると何が何やらわかりません。多分、オブジェクトが何であるかがいまいち掴めていないためだと思いますが。
そうですね。この授業は、毎回の積み重ねが非常に重要なので、毎回しっかりものにしないと、大変ですよ。
今回の発展はオブジェクト指向プログラミングをやっているような感じがしました。(リストの機能をmainを変えずに、メソッドのみ変えるという意味で)
そうですね!これぞクラス設計の妙!来週はさらに発展します。
今回の発展課題課題は、ちょいと難しい、というより全面的な書き換えが必要でJAVA 初心者の私には少し困難でした。やはり必修課題の難易度を高め、発展課題こそスケルトンを渡して欲しいです。
スケルトンがないから、発展課題なんです。やってることは必修課題とほぼ同じなんです。
今回の連結リストというデータ構造は大変面白かった。
今回の感想を見ていると、データ構造に興味がある人が多くて、びっくりしています。そんなにおもしろいですかねぇ。
今回は、内容が難しいとの事でしたが、はっきりいって全くその通りに私は感じました。。参照って考えれば考えるほどややこしい概念ですね。基本問題分だけとりあえず提出致します。。
今回はなかなかわかりにくくてむずかしかったです
了解しました。ですが、オブジェクト・プログラマーにはさけて通れない道ですので、是非ものにして欲しいです。
今回は発展課題までやることができました。配列よりも融通が利くデータ構造のように感じました。
配列とリストでは、どちらが融通が利くというのは無いと思います。そのときに応じて、最適なほうを選択すべきです。双方の利点欠点を抑えておく必要がありますね!
今回は必修のほうはすぐにできたのですが、発展の方で、削除した結果を返すとき、何を返すかを迷いました。
そうですね。そこは配列とちょっと違いますからね。よくリストを頭に描いて、試行錯誤してください。
今回連結リストという考え方を学びましたが、初めてのことで難しかったです。   でも今までの私の中にはこういった考え方はなかったので興味深かったです。
これからも、はじめてだらけです、、、がんばってください。
今週の課題は,すごく簡単だったうえに、実際linked listとはあまり関係のない内容だったので, 最初恐る恐る取り掛かったので,やってみてから少し拍子抜けしました。 後,searchなり、deleteなり、プログラム実行時に、何が行われているか分かったほうがいいと思ったので, 実行開始や終了の文、実行の内容を加えました。
すごく簡単、、、すばらしいですね。発展課題に挑戦してください。
今日の課題は楽でしたが、ポインターがJAVAにもあるとは思ってなかったために、授業中に少し驚きました。
そうですね。そう思ってる人が多いのですが、実はほとんどポインターなんです。
今日は大岩先生の某授業でタッチタイピングのテストを受けて手を   見過ぎと言われて落とされました。そして、今日は大岩先生に   タッチタイピングの重要性をかなり教え込まれました。これからは   javaだけでなくタッチタイピングにも力を入れていこうと思います。
タッチタイピングはプログラミングを勉強する上で一番大切な技術です。(先生より)
最後の最後にキモの授業がかたまってるのが、なんとなくコワイ。
私もです。がんばらねば。
試行錯誤していたら出来たという感じです。 今はきちんと理解できています。おそらく。 displayのところだけですけど最初から何も無い場合に その旨表示されるようにしておきました。
試行錯誤が重要です。そのご、何故できなくて、何故できたかを把握してください。そこまでやって、ついにものになります。
事前にリストの説明を受けていたせいか、課題があっという間に終わってしまって、書いたソースが正しいのか少し疑ってしまいました。実行結果が同じなので正しいでしょう。 ListObjectの中にListObjectがあるというのは理解できていると思うのですが、考えるとややこしいです。深く考えないようにしてはだめですか?
ListObjectの中にはListObjectは無いんです。(参照ですからね)是非深く考えてください!
実際に検索の速度にどの程度の差が出るのかが気になった。
来週やりますです。
授業で説明された、「変数とオブジェクトのメモリ割り当ての方法の違い」がとても分かりやすかったのでよく理解できました。そこがきちんと分かるとリンクドリストの実装は思ったより簡単にできました。
そうですね。そこをわかった人とわからなかった人で差が出ています。
親切にSAの方に教えていただき、 授業内容を今までに無く理解しました。 これからもがんばります。
そうですか。今回は一番難しいはずなんですけどね、、、、
先週学んだスタックとキューのようにプログラムを速く、安定して動かす工夫にはいろいろあり、どうすれば早くなるのか良く考えられている事を知った。それでプログラムはソースが短い事だけでなく、上記のようなことのほうが重要であるように思えた。それにしても僕には連結リストなど思いつく能力は絶対無いとも感じた。
安心してください。私にもありません。
知識が確実に増えてきているのを感じます。
プログラムは知識ではありません。できるようになって、初めて意味があります。がんばってください。
発展まで手を出せました。連結リストを使った削除はリストのポインタを変えるだけで、その削除したいデータは結局メモリ上に残っているように思えるんですけど… どうなんでしょうか?そうだとすると取り扱うデータが膨大になった時に削除データが増えてしまい軽視できなくなると思いました。 発展課題は思ったよりも簡単でした。でも、回を重ねるごとに明らかに難しくなっています。最後までついていけるか分かりませんが頑張ります。スケルトンを配る形式はプログラムを目で追えてとてもよいと思います。これからも是非続けてください。
来週削除の妙について捕集します。
発展をやらせるための課題みたいですね。
うふふ。そうですね。発展ができれば、リストは完璧です。
必須課題と発展課題を間違って同じプロジェクトで実行しようとして少し手間取りました。
プログラム以外のところで手間取るのは、ちょっと心外ですが、私たちは、「環境を整える」ところからがプログラミングだと考えていますので、がんばってください。
連結リストの使い方では、やはりポインタがいまいち実感が湧かないというか、難しいですね。
そうですか、ではどういう例がいいですか?アイディアをください!