第4回課題の感想とコメント


ItemType item1 = new ItemType(1001,"コーラ",120); ItemType item2 = new ItemType(1001,"コーラ",120); この時,item1 != item2らしい.というところで,少しはまりました. このページにソースコードをのせなくとも,ソースファイルを動作確認用に使っているのなら,そちらを眺めていただければよいと思うのですが... 大した手間ではないのでいいんですけれども.
そうですね。これは”==”が変数の参照先を比較しているためです。第5回の説明をうけるとこのあたりも理解しやすくなると思います。
  クラスとインスタンスの違いはある程度理解できたが、nullについてはあまり理解 できなかった。そのため課題の二回目のsearchの時に何度もエラーが発生してしまった。 なんとか動くようにはなったが、正しい処理なのかどうかは分からない。
nullとは変数に何も入っていないということです。searchの2回目でエラーが出るということは、削除をすることによってsearchがうまくいかなくなっている。もしくは見つからないときはsearchに問題が発生するということですよね。そのようにエラーの場所を推理してデバッグをする癖をつけてがんばってください。
 クラス、インスタンスを使ったオブジェクト指向プログラミングは、出来上がったソースは整然として見やすいのですが、正しく書くのは大変だと思いました。特に、異なったクラス間で変数や値をやり取りしているので、その変数名を正しく書くのに苦労しました。またインスタンスを生成するためにコンストラクタを宣言してやりますが、これには初期値が入っていないため直接代入や参照をしようとするとエラーになってしまうので前回と同じようには商品管理プログラムは定義できないところもまた厄介でした。しかし書いていくうちに、内容は同じですが前回までのプログラムより拡張性があるように感じました。
目的ごとまとめることができるようになる代わりに手続き指向のプログラムに比べて、処理の流れが順番に記述されないために直感的にはわかりにくくなるかもしれませんね。メソッド呼び出しによる処理の流れの変化に慣れるようにがんばってみてください
 今回の課題は今までと比べてかなり苦労した。しかし、がんばった甲斐があって、今まであいまいにしか分かっていなかった、クラス、インスタンス、コンストラクタ等についての理解が深まったと思う。着々とかっこいいプログラムに向かっていっているのが、とてもうれしく思う。
やはり今までの課題と比べると難易度が高いかもしれないですね。今回の内容は今まで曖昧になっていた点だからだと思います。これからそれをつかっていろいろなことをやっていくのでがんばっていきましょう。
NULLエラーに苦しめられました。テキストには「こういうエラーがありますよ」とだけ書かれていた点には不親切だと思った。「こういうエラーの時は、こう対処したら解決出来ます」ということ、ないし、そのヒント位は書かれていた方が良いと思いました。
NullPointerExceptionですね。このエラーは今日は多分配列の中のnullに対してアクセスしたために起こっていたのだと思います。これは検索などのアルゴリズムが間違っているということですので一般的な解決策はありません。これがでたら何らかのアルゴリズムによるエラーが起きているということなので、nullに関連する部分に注意してデバッグをしてみてください。
そろそろ課題が難しく感じ始めてきた。
そうですね。予習復習などでカバーしてがんばってください。質問等あれば 
そろそろ難しくなってきたかも。でも同時にプログラムを考える事が楽しくなってきたようにも思う。
この授業を通じて自分で作ったプログラムが動くことで得られる達成感を少しでも感じてもらえればうれしいです。でもこの授業で身に付けた技術や考え方を使って自分で何かを作ってみるときっともっと楽しいと思いますよ。
だんだん内容が本格的になってきていて宿題をやるのが精一杯である。今回はプログラム問題で、何回もコンパイルエラーがでてたいへんだった。しかし、それよりも大変だったのは記述問題の4-2だクラスとインスタンスの概念の理解ができていないときつい問題だと思う。一応いろいろ考えて書いたがあっているかなあ
そうですね。クラスとインスタンスの理解ができていないとこれから先の授業がなりつらいかもしれないです。クラスとインスタンスの関係やオブジェクトの使い方などよくふくしゅうしておいてください。
ますますJAVAが使いやすくなりました。オブジェクト指向・・・なるほど。
どんな感じになるほどだったのでしょうか?詳しく書いてくれるとうれしいです
ようやくオブジェクト指向のプログラミングが始まってきて、少し楽しくなってきた。
そうですか。今回は楽しくなってきたという人ときつくなってきたという人がいるみたいですね。このあとの回もがんばってください。
オブジェクトを利用したプログラミングの利点も理解できるが、この程度の長さのプログラムとそのオブジェクトの利用回数だとあまり恩恵を感じられない。また、正直な話、static の説明はちょっとよく分かりませんでした。
これからがんがんオブジェクトを使ってプログラムを書いていくので安心してください。staticに関しては今後また触れる機会があると思うのでそのときにまた。
オブジェクト指向の考え方はプログラミング入門の時にはなぜこうやって書くのかわからなかったが、今回の講義、何より演習を通じてだいぶ理解できた気がする。しかしまだ慣れてなく、SAに聞かないと分からない部分も多々あった。とにかく書きながら練習するしかないと思った。
実際に書いてみることはプログラミングを学ぶ上で非常に重要なことです。いくら勉強しても役に立つプログラムを書くことができなかったら何の意味もないですしね。SAもいろいろ力になってくれると思うのでがんばってください。
クラス・オブジェクトを理解することより、複数のファイル管理が面倒だった

ファイル管理ですか。これから課題が進んでいくと以前の課題を使って次の課題をやるといったこともあるのでファイル管理はしっかりやってください

クラスが入ってきて、やっとJAVAって感じがします。 JAVASCRIPTなどを書いているときに、基本的にクラスを使ってやって色々と部分を指定してやっているのでそれを思い出しながらやるとすごく楽にできました。
JAVASCRIPTは実はjava風なだけで実際にはJAVAではないのは知っていますか?というよりかJAVASCRIPTにclassがあるということを今はじめて知りました・・・いろいろこれから違ってくる部分もあると思いますががんばってください。
クラスごとにファイルを分けられるのがとても便利だと思いました。いままでは変数やメソッドがごちゃごちゃしてしまっていたので、これからはクラスを使って、見やすい、扱いやすいプログラムを作っていきたいと思います。
そうですね。クラスを使うことによって今までよりも明確にプログラムを意味の塊ごとに分けることができるのが最大の利点です。それによって読みやすく扱いやすいプログラムが実現されます。
クラスとインスタンスの違いを列挙しようとしても、どう列挙すればよいのか分からない。分かる範囲内で書いたが、漠然としか分かっていないように思う。プログラムを書くに当たっては何も問題ないのだが…。
”違いといわれてもそもそもぜんぜん違うじゃないか”というようなことを言っている人が結構たくさんいました。確かにそのとおりです。クラスを元にオブジェクトがたくさん作られているという関係がわかってもらえればOKです。
クラスとインスタンスの関係など、全く理解していなかった事に気付きました。まだ、あいまいな部分もあるような気がするので、これから理解を深めていきたいと思います。
これからクラスとオブジェクトを使ってどんどんプログラムを書いていくので徐々に慣れていくと思います。がんばってください。
クラスとインスタンスを習って,かなりプログラムらしくなってきた.プログラムが複雑になってきたので高度なオブジェクト思考が要求されると思う.それについていけるよう努力するのと同時に,きれいなプログラムに仕上げられるよう工夫する余裕を持てるよう頑張りたい.
これからまだまだ複雑になっていきます・・・。何しろ最終的には自動販売機が完成しますから。そうなっても今のシンプルさを極力失わないようにがんばるのが非常に大事なことですね。
クラスの有効な使い方が理解できた。今まではあまりよく考えずにクラスを作っていたがこれからは意味を考えて使えるだろう。
そうですか。それはよかったです。意味のまとまりについて考えることでオブジェクト指向への第一歩が踏み出せると思います
クラスはデータを扱うときに役に立つのかと思っていたので、検索や追加などにもクラスが使えたということに感動を覚えました。改めてコンストラクタは便利だと言うことを感じました。最近ではオブジェクト指向言語が多くなっているのですが実際にクラスをうまく使っているプログラムに出会ったことはありません。これからは使いこなしていきたいと思います。

クラスは属性と操作(メソッド)を意味の塊ごとに集めたものです。今後もっとクラスを便利につかえるようになっていくので期待していてください。

クラスを使って前の課題を書き換えるのにはかなりとまどった。クラスを使って書き換えた結果はかなりメインがかなりすっきりしていて気持ちよく爽快感が得られてとてもいい感じであった。ロック研究会にもこのような爽快感が欲しいと思った
そうですね。ロック研究会にもオブジェクト指向を適用して、それぞれが自立して自分の役割を果たすようなシステムに変えたらどうでしょうか?
コンストラクタを用いたインスタンスの表記の仕方によって、次にくるプログラムが変わってくることがわかった。どれが一番簡潔に、見易く表記できるかをいろいろ考えてみたが、なかなか思うように書けなかった。
コンストラクタでわたすか、後から属性に値を設定するかというのは場合によって悩むところだと思います。基本的に後から変わる予定のないものはコンストラクタで渡すのが一般的かもしれません。ただ変わる予定があるかどうかも場合によるのでやはりそれぞれ考える必要が出てきます。
プログラミング入門ではクラスとインスタンスの違いが良く分からず、ミニプロでもクラスをうまく扱えなかったのですけど、今回の授業を聞いて、クラスの意味がわかってきたので、これからはオブジェクト指向を用いて、綺麗にプログラムを書くようにしたいと思います。
プログラミング入門ではおまじないだった部分がそろそろだいぶ理解できるようになってきたのではないでしょうか?これからはだんだんプログラミング入門では扱わなかった部分もでてくるのでがんばってください。
プログラミング入門のところではよく分からなかったクラスとオブジェクトの違い、使い方といったようなことが、プログラムを書いていくうちになんとなくだけども、理解することができたと思う。
これからの課題をやっていく上で慣れていくと思います。毎週の課題をがんばってください
回を追うごとにプログラミングに幅が出てきていると思う。    その分学習は大変になるかもしれないが、基本を確認しな がら自分の物にしていきたい。
だんだん難しくなって表現できる幅が広がっていきますがそれを自分のものにして使えるようになるのは大変ですよね。本当はこのカリキュラムが終わったら自分で何かを作ってみると一番いいんだと思います。
講義について:今回の講義でプログラミング入門で使っていたときは曖昧だったコンストラクタというものの役割がわかってとてもすっきりしました。また、今回はじめてクラスを別のファイルに保存しても、同じディレクトリーの中にあればメインクラスのあるプログラムを実行するだけで呼び出して使われると知り驚きました。課題について:プログラミング問題の4-1は結構考えてしまいました。はじめ、中身がnullとなっている配列は参照してはいけないということを忘れていて「コンパイルは通るのに何故実行中にエラーが出るのだろう」とかなり悩んでしまいました。そこに気付いた後もsearchメソッドの手直しでは何度か失敗してしまいましたが、そのお蔭でnullというものの扱いが少しわかった気がします。
やはり最初はNullPointerExceptionとお友達になってしまうのはしょうがないかもしれないですね。だんだん慣れていくとどんなところが危ないかについて注意しながらプログラムが書けるようになっていくと思います。
今までの中でいちばん大変でした。クラスとは何たるものかを理解するのに非常に時間がかかりました。2.5時間かかりました。しかし、できたときの喜びは今までで一番でした。
2.5時間ですか・・でもできたときはうれしいといってもらえてよかったです。それがないとプログラミングはつらいですよね。
今まではクラスやオブジェクトをすべて同じファイル内に書き込んでいたので、長々と少し見ずらいプログラムを書いていたが、 今回の授業で意味ごとにプログラムをファイルに分けていくことにより、よりわかりやすいプログラムが書けたと思う。
そうですね。クラスとオブジェクトを導入することでより高い階層で意味の塊ごとに沸けることができるようになりました。それが読みやすいプログラムにもつながってくると思います。
今回から、急激に内容が難しくなった。とりあえずインスタンスは構造体で、メソッドは関数で、という風にC言語に読み換えて理解しています。オブジェクト指向ってなに?
オブジェクト指向とは何でしょうか?一言でいうのは難しいですね。オブジェクト指向の特徴とされる概念がいくつかあるのですがそんな堅苦しいことよりも今は、プログラムをものとしてとらえて意味の塊で扱うことができるという点が一番大事なのだと思います。
今回のクラス/オブジェクトについては,プログラミング入門の授業で説明を受けたが,理解が不十分でした。コンストラクタを使ってインスタンスを生成していく方法など,より分かりやすくプログラムを書いていきたいと思う。
そうですね。これらをうまく使うとプログラムがすっきりして読みやすいプログラムを書くことができると思います。
今回の課題で、クラスを使って、メソッドというオブジェクト単位でのプログラムが書けるようになったと思う。また変数のスコープをわかりやすくするために変数名を変えたりしてみた。
スコープはまだ完全には理解ができていないひとが結構いるようでした。常に変数がどこで有効になっているかを意識しプログラムを書くようにするといいかもしれません。
今回の課題では前回の内容の発展系で比較的簡単にできると思いましたが思わぬところで引っかかってしまい時間がかかってしまいました。私がひっかかってしまったのは配列の中に入っているnullの存在でこれを回避する方法を考えるのに多くの時間を費やしました。 classについては課題を通してようやく、慣れてきたと思います。課題2がコンパイルできる状態になりませんでした。考えましたがどうしてもできなかったので次回の授業で質問させて頂きます。
配列の中のnullにアクセスするプログラムを書いてしまったひとは結構いたみたいですね。そういう時はfor分の中での処理を変数の値の変化とともに順番に追っていくといいかもしれません。for文を何週かしたところでnullにアクセスしているところが見つかるでしょう。
今回の課題は量も多く、しかも難しかったのでとても大変でした。 違うjavaファイルを使ってのプログラムはそれぞれがコンパイルできても変数定義などが間違ってると errorがでるので、慎重にやるべきと感じた。
だんだん量が増えていくので毎回の課題をきちんと管理して前回のソースを変更していくような感じにするといいかもしれませんね。
今回はかなり難しかったです。 コンパイルはできても、エラーがでてしまいかなり苦労しました。 商品を検索するメソッドもクラスを使う場合、nullを意識しなければ いけないということがわかりました
そうですね。今回はintではなかったためにnullの扱いがポイントになっていたようです。がんばってください。
今回はクラスとインスタンスについて学んだが、オブジェクトという考え方が初めて具体的に提示され、いよいよオブジェクトプログラミングらしくなってきたなという感じがした。今回はプログラミング入門でもやっていたためか比較的すんなりと理解することが出来たが、JavaTipsのNullPointerException に関する説明は発生する条件だけが書いてあるだけで、何の解決法も記されていなかったので、そこだけは少しわかりにくかった。
NullPointerは決まった解決策があるわけではなく基本的にプログラムのアルゴリズム的なバグが原因です。for文の処理の流れを地道に追って、nullにアクセスしている部分を探しましょう。
今回は意外に楽でした。
もうすこし丁寧にコメントをつけるといいと思います。ブロックコメントも有効に使いましょう。
今回は今までのに比べてかなり複雑で難しいプログラミングだった。プログラム事態はそんなに難しくはなかったが、一つのプログラムを分けて書くというところに今までにないやり方を発見した。でも完成できたときはうれしかったです。
そうですか。これからも今までにない新しい概念が登場するので楽しみにしていてください。
今日から、さらに難しくなって、困っています。もっとゆっくりおねがいします。
どのあたりがむずかしかったでしょうか?詳しく書いてくれるとうれしいです。
残念無念。もっと基礎を学びます。例外処理についても調べます。しかし、削除したあと、ちゃんとシフトしているのに…。何故でしょう?
シフトはちゃんとできています。削除メソッドが削除対象のItemTypeを探すときにどのような場合を”見つからなかった”と扱っているのかについて考えてみましょう。ちなみにこのプログラムは配列の中を最後まで見て対象がなかったら”見つからなかった”と扱っていますよね?
時間に余裕があったので、表示結果を見やすくするために少し内容を変えてみた。クラス、オブジェクトを使うことでより解りやすくなったと思う。
そうですか。いろいろ自分なりに工夫してもらえると採点しているほうも楽しいです。がんばってください。
宿題にかかる時間が増え、そろそろレベルが上がってきた感じがする。商品追加時に配列がいっぱいだった場合や配列の数をnにするなど、ちょっと汎用性を持たせる工夫をしてみた。
配列の大きさを変数で管理するのはいいアイデアですね。ただnという名前はちょっと・・・。いろいろ考えてみましょう。
情報処理Ibcでも「クラスはオブジェクトの雛形で、たいやきの型と実際のたいやきの関係と同じ」と習ったのですがなんのことかさっぱり判りませんでした。しかし今回の講義と演習でばっちり理解出来ました。概念の説明だけではなくて、実際にクラス/オブジェクトを利用しなければならない課題を解いてみてやっと理解することが出来ました。前回の課題がクラス/オブジェクトを利用することでとても綺麗で見易くなり、クラス/オブジェクトを利用する利点をきちんと理解することが出来ました。 SFCに入ってから3年間何回聞いても理解出来なかった「オブジェクト志向」と言う言葉の意味がやっと判って来て感動してます。この授業と教材に1年生の時に出会えてればと思うと悔しいです。この授業のおかげでプログラミングの授業が最近本当に楽しくて仕方がないです。今後の授業が非常に楽しみです。
喜んでもらえてとてもうれしいです。これからの授業も期待を裏切らないようにがんばります。ちなみに僕も3年になるまでさっぱりオブジェクト指向の意味がわかりませんでした。2年ぐらいでこの授業を受けたかったとたまに思います。
前回の引数の話がよくわかってなかったせいか、検索や削除のメソッドで多少手間取りましたが、クラス/インスタンスについてはわりと理解できたように思います。これからさらに難しくなるみたいなので、遅れないよう頑張ります。
だんだん難しくなるのですでにやった内容についてはがんばってく復習などして理解していくようにしてください。ただ底までの内容が理解できていれば無理なことはないのでがんばってください。
体調が悪く、授業に出ることができなかったため、理解するのに苦労しました。クラスはプログラミング入門で、自分で本で読んだときには小さいものしかつくっていないかったためメソッドで充分だったのでたくさんファイルができて少しわかりにくいという印象を受けました。でも、大きくしかもわかりやすいためには必要なんでしょう。多分。今回はエラーを直すのにいちばん苦労した回でした。

これからいやでもクラスとオブジェクトに関してはその必要性を感じると思うので大丈夫です。処理が複雑になると思わぬところでエラーが出てその解決に苦労したりします。処理の流れを追ってみて、根気よくデバッグしましょう。

段階を追って説明されているので、無理なくクラス・インスタンスの概念が理解できたように思う。個人的に商品種類の名前が表示されない事にはモヤモヤとしていたので、今回名前・価格が記述できるようになったのは嬉しかった。その管理がクラス単位で簡単に出来たのはもっと嬉しかった。

毎回ちょっとづつもやもやして次の回でそれを解決する概念を学んでその有用性を感じてもらうのがこの授業のポイントです。これからもがんばってください。

同じ意味のことを書くプログラミングでもオブジェクトを使うことにより、より簡単に書くことができてわかりやすかった。しかし、何個もプログラムを書くのは提出がいちいちめんどうでたいへんだったのでできればもっと簡単な方法にして欲しいと感じた。
ファイルの数はこれからどんどん増えていくので課題の提出については考えてみようと思います。
突然難易度が上がったように思いました。単純によくわからなくなり、本当に悩みました。今回は友人にアドバイスをもらい完成しました。ファイルをつくって置いておけばその仕事をしてくれるということは、つまり分業の会社をつくることのようなのかなと思いました。プログラム的には見やすくなっているはずなのに、頭の中はだんだんこんがらがってきているように感じています。些細なことに気づけないのはややこしく考えすぎだからなのか?と思いました。
オブジェクトという”もの”同士が結びついて一つの処理をするということは今までの手続き試向のプログラムに比べて現実世界に近いということが言えると思います。そうやってものごとを意味のまとまりでまとめることで理解しやすくすることができるはずです。ですからだんだん慣れていくことで新しいことが出てきたことに対する混乱やプログラムそのものに対する不慣れも解消していくのではないでしょうか?何かわからないことなどあればSAにも積極的に聞いてみてください。
僕は、クラスやインスタンスを使ってプログラミングを何回か書いてきたが、それらが一体どういうもので、どのように使うのかということは考えたことがありませんでした。しかし、このように授業で詳しく違いや利点を考えみて今まで分からなかったことや曖昧にしていたことを理解できました。クラスを使って書いたプログラミングと前の回で書いたプログラミングを比べるとだいぶすっきりして、見やすくなった印象があります。おそらく、クラスを使うとプログラミングが整理整頓されて、構造が分かりやすくなるからだとおもいます。同時に、クラスを使うことによって、メソッドを意味ごとに分類をする必要があるのでプログラミングの構造を始めにしっかりと頭に入れ、取り掛かる必要があると感じました。
意味ごとのまとまりにわけて扱うことができるのがクラスを使う最大の利点であると思います。ItemTypeクラスのオブジェクトは実際に一つの商品種類とつながっているというのがポイントですね。