レポート抜粋(7/6)

<テーマ>

以下の設問に答えて下さい。

  1. クラスとインスタンスの実例を挙げて下さい。
  2. プログラムの再利用性を高める差分プログラムを可能にするのは、オブジェクト指向のどのような機能ですか?

なお、上の記述を行った上で、いつものように興味を持った点や講義の感想、そして前回のレポートに対するコメント(意見や感想)を付加しても結構です。


T.クラスとインスタンスの実例(いずれも回答より抜粋)

A.適切な例

  1. ★クラス→テレビ
     ※プロパティ
      高さ・幅・奥行き・画面サイズ・画面材質 etc.
     ※メソッド
      電源ON/OFF・チャンネル変更 etc.
    ★インスタンス→20インチ液晶テレビ
  2. クラスがサッカーチーム、インスタンスがFCバルセロナ、ACミランなど
  3. クラスを(惑)星とすると、インスタンスは地球や火星といったものに当てはめられる。
  4. 東芝製のパソコンというクラスの中のDynaBookSSというインスタンス。

B.スーパークラスとサブクラスの関係と捉えた方が(より)適切な例

※ 青字がコメントです。

  1. クラス:動物
    インスタンス:犬、鳥、人間、猫 → 犬、鳥などは、動物クラスを継承してできるサブクラスと捉えた方が良い。
  2. クラス:犬
    インスタンス:ダックスフント、柴犬、チワワ、パピヨン、トイ・プードル →良く考えた例。一般例としてはこれでも受け入れられるが、犬クラスを継承してできるサブクラスと捉えた方がより適切。インスタンスとしては、例えばタローという柴犬とジローというチワワが1匹ずついた場合、それぞれが柴犬クラスおよびチワワクラスのインスタンスになる。
  3. クラス=乗り物
    インスタンス=自動車、飛行機、新幹線
           (乗り物ごとの速度や乗客数などの実例) →乗り物クラスを継承してできるサブクラスと捉えた方が良い。そして例えば自動車クラスのインスタンスはトヨタカローラなど。
  4. クラスには人や車などがある。人(クラス)には日本人とアメリカ人やイタリア人というインスタンスがある。→良く考えた例だが、人クラスを継承してできるサブクラスに日本人、アメリカ人クラスがあると捉えた方がより適切。そして日本人クラスのインスタンスとして太郎、アメリカ人のインスタンスとしてJohn等がいる、と考えれば良い。

C.その他の例(誤解等)

※ 青字がコメントです。

  1. 大学の学部と学科の関係が当てはまる。例を挙げるとすれば、札幌学院大学の人文学部の中に人間科学科、英語英米文学科、臨床心理学科とそれぞれが存在する。その関係がクラスとインスタンスの関係に当てはまるのではないだろうか。→クラスとインスタンスの関係ではない。学科は学部クラスの構成要素と捉えられる。学部クラスのインスタンスは、社会情報学部や人文学部など。
  2. クラス)車
    インスタンス)タイヤ、エンジン、オイル → 上と同じくクラスとインスタンスの関係ではない。タイヤ等は車の構成要素

U.感想

A..クラスの継承に関して

  1. 今回の講義を受けて、オープンソースのこれからの重要性というのがさらに高まったと思います。多くの人が自分の使いやすいようにカスタマイズし、さらに別の人がより使いやすくとまさに典型的な再利用であると感じました。一種のクラスの継承みたいなものであるとも思いました。
  2. 差分プログラムの利便性の良さに感心しました。ひとつ上のクラスと同じ式を書くのではなく、代わりに「super.」を使うことで見やすく、また簡単にできるようなっている。こういう差分プログラミングをうまく利用できれば、洗礼されたプログラミングを書くことが出来ると思います。ただ、差分プログラミングのデメリットはあるのですか?多用した場合、何か不都合なことが起こりますか?

B.ソフトウェア危機に関して

  1. ソフトウェアの開発技術は日々進歩していると思いますが、それを扱う人間が追いついていなければ意味がない(危険である)というのは納得です。
    ユーザーはより使いやすくて分かりやすいソフトウェアを要求しますが、開発者の側はユーザーが望む程度の使いやすさでのソフトウェア開発をしなければならないので、より作業は過酷なものになるのが容易に想像できます。
  2. 今日の授業を受けて、改めてソフトウェア危機というものを感じました。ソフトウェア危機に当てはまるかはわかりませんが、過去にプログラマーのデスマーチについての話を聞いたことがあります。大変過酷なもので、常にPCと向き合って作業を続けるといったような内容でした。それを考えると自分達はそのような苦労の元で作られたソフトウェアを、何の苦労もなく使っています。ソフトウェア製作者に感謝の気持ちを持たなければいけないような気がします。

C.カプセル化がもたらす危うさについて

  1. 今回の授業をきいていて素直に思ったことは、世の中のあらゆるものが、複雑になってしまっていて、ものの内面が、「カプセル化」されて、わからなくなっているということです。機械の中身にしても、どうなっているかは、わからないけど、使用、利用することはできます。そう考えると、開発者と、利用者の差(距離)が離れているんだなぁ、と感じました。

D.全般的な感想

  1. 今回の講義で去年からずっとクラス定義の理解に苦しんでいました。しかし、今回の講義でクラスの仕組みを簡単に説明してもらってわかるようになってきました。また、何かの機会でクラスのプログラムをやるときにはテキストの意味などが以前よりもわかるようになっていると思う。そして、オブジェクト指向のプログラミングというものに関心ももてました。今まで、当たり前のようにやっていた形式がここまで素晴しいものだったとは知りませんでした。過去の人間が考え、努力した末の結果がオブジェクト指向のプログラミングなんだなと感じました。
  2. 大学に入学して、何かの講義のシラバスに掲載されていたのが、オブジェクト指向との出会いだった。オブジェクト指向に関するメールマガジンをちょっとは読んでみたものの、途中で挫折しほったらかしになっていた。だが、今日になってやっと理解することができた。
     オブジェクト指向は、プログラムの拡張が容易になることもその利点の一つであるが、クラスごとにプログラムの仕組みを教えていけば、プログラミング初心者にとって、取っ付きやすいのではないだろうか
  3. 今まで見たどのテキストよりも、オブジェクト指向ということについての説明がわかりやすかったです。
  1. 今回興味を持ったのはオブジェクトの拡張性、特にスーパ(疑似)変数と差分プログラムの部分です。プログラムはただ拡張していけばいいというものではありません。拡張した分だけプログラムの大きさは膨れ上がるわけですから、大きすぎてどこにどのメソッドがあるのかなどがわからなくなっては修正するのにとても大変だし時間もかかります。削れるところは削って無駄な部分をなくして、プログラム自体をスリムにすることが必要です。その点で、再利用性がある差分プログラムは非常に効率的だと思いました。

前回のレポートへのコメント

A.(U.その他 E.質問−1)「ソフトウエアの需要が生産を超えていると言うことは、もしかしたら色々な人が新しいソフトウエアを開発していく時代になるのではないでしょうか?」について

  1. すごく興味を持ちました。確かに現状ならそういう時代になる可能性もあります。しかしある程度の知識がないとソフトウェアの開発は出来ませんから、学校教育でプログラムの勉強をしない限りは実現は厳しいと思います。
  2. 「色々な人が新しいソフトウエアを開発していく時代になるのではないでしょうか?」ってコメントがあったので個人的な考えを書いてみる。 そんな時代がくる可能性ってのはあると思う。 各個人の物作り意欲にも依存してくるとは思うのだが、現状、「こんなソフトがあったらいいのにな」というのは結構あるものだ。「こんなソフト」までいかなくても「こんな機能」ってのは絶対あるはず。 その時に、「誰も作ってないみたいだから作ってしまおう」となればソフトウェア開発者は増えていくだろう。色んな人というのは、主に我々の世代とそれ以降の人たちだと思う。 皆がいろんな事に疑問をもてるようになったら、いい時代が来るかもしれないなぁ。

B.LOGOの日本語化について

  1. 日本語化でソフトが重くなり、CPUの負担が大きくなると書いていましたが、LOGO言語は児童教育用言語なので分かりやすさを重視するべきだと思います。ソフトの重さやCPUの負担の点で日本語化に反対するのは少し論点がずれているような気がします。確かに軽快に動作する方が学習しやすいとは思いますが。
  2. 今日の講義で思ったことはLOGOの日本語についで、日本語の場合は漢字・ひらがな・カタカナなどの字数表現が多いので、ソフトウェア的にもCPUに負担もかかってしまいおもくなるとい共感しました。プログラム言語は、あえて英語表記のままでもいいと思います

C.その他

  1. T.構造化プログラミングについてのA−3の意見に共感を持ちました。私も、プログラミングは決められた順番にしなくてはいけないと思っていたのでGO TO文の重要性を知ることが出来た。もし、GO TO文がなければ、プログラミングの際、入力し忘れたと分かっても、それを修正するのに大変な労力がかかり、(記述段階では)非常に効率の悪いプログラミングになってしまう。しかし、それを解決したのがGO TO文であり、しかも理解しやすい(記述時に使いやすい)という利点が、GO TO文の魔力と称される理由であると思った。
  2. 今回、生徒が見ることができる講義スライドの中で、レポートのテーマを「講義内で発表する」としたのは前回のレポート(全般的な感想3)があったからでしょうか? それとも、もともとこの問題について考えていて、たまたま今回実行したということでしょうか? まあ両方だと思いますけども。
     確かに不公平ですよね。うん、不公平だ。しかし、不公平という観点で指摘をするのはあまり賛同はできません。権利の主張は大切ですが、もう少しうまい言い方のほうがみんなが納得すると思います。たとえば、同じ意見に対する理由でも「学校に来ないで出席扱いにするのでは、本当の理解とはいえないのでしょうか、履修者は自分でこの授業を取ったのでありそれなりの責任が生じるのでは、というわけで何か対策を打っていくことも大学での学習という点では必要なのでは」とかね。
    まあ、自分としてはどちらでもいいのだけれど。不公平という観点では議論が発展しないと思います。ある程度、正当性を持たせた意見だと反論も少なくなるし、もし反論があったとしても、それは意見としてとても深いものだと思うし。まあいいかあまりこの授業に関係ないかもしれないですし。でも私は大切だと思います。