プログラミング入門2
担当教員
- 藤田 悟、杉江 衛、酒匂 裕、坂本 寛
授業の到達目標及びテーマ
プログラミング入門1ではプログラミング言語に共通する基本的な概念を学習しましたが、本講義のプログラミング入門2では Java の中核的な概念であるオブジェクト指向について学習し、抽象化によるより高度なプログラミング技術を身につけることを目標とします。
授業の概要と方法
「抽象化」の技法は、すでに講義「プログラミング入門1」の範囲でも現れています。メソッドがその一例です。メソッドは、ある作業を一つの単位の仕事としてまとめ、これに名前をつける、というものです。名前とその内容さえ覚えていれば、詳細を覚えていなくてもその仕事を何度でも簡単に行わせることができます。本講義では、オブジェクト指向という、さらに興味深い抽象化の機構を中心に学びます。これは、複雑なデータとそのデータに対する操作を一つの単位にまとめることができる便利な機構です。これを用いることにより、すでに用意された機能同士を組み合わせたり、機能に拡張を加えたりすることが容易となり、大規模なソフトウェアを作成することが容易になります。
講義「プログラミング入門1」と同じく、1回の授業は「(A)説明」「(B)例題」「(C)問題」の3つに分かれます。詳細の進め方は各教員の指示によりますが、共通のオンライン教材を用いて、統一した内容の講義を行います。
(A)新しく学ぶ文法や機能などの知識の「説明」をします。
(B)(A)で学んだことを利用して、「例題」をベースに実際にプログラミングを演習として行ってもらいます。
(C)「問題」として出題されるプログラムを実際に作ってもらうことで、プログラミング技術の体得を目指します。(英作文を行うことに対応します。)問題によっては、レポートとして提出してもらうものもあります。
なお、問題には、必須問題とオプション問題があります。両問題でカバーするプログラミング言語のトピックは同じですが、オプション問題ではより高度なアルゴリズムを題材に演習を行います。
授業計画
前期
| 回 | テーマ | 内容 |
|---|---|---|
| 1 | Javaの基本機能の復習 | 「プログラミング入門1」の範囲で学習したJava言語の基本機能、複合データの復習をする。 |
| 2 | メソッド | パラメータの利用の仕方、再帰メソッドなど高度なメソッドの用い方を学ぶ。 |
| 3 | クラスとインスタンス(1) | 「プログラミング入門1」で学んだ複合データを復習しながら、オブジェクト指向の基本となるクラスとインスタンスについて学ぶ。特に、インスタンス変数の読み書きの方法について学び、演習を行う。 |
| 4 | クラスとインスタンス(2) | クラスとインスタンスの理解を深める。実体と参照、メソッドへの変数の参照渡しオブジェクトの比較などについて学ぶ。 |
| 5 | 表形式データの表現(1) | 表形式のデータを、オブジェクトの配列として表現する方法を学ぶ。表に対するデータ登録、検索、更新の機能を作成する。 |
| 6 | 表形式データの表現(2) | 表形式のデータへのデータ追加機能を作成する。また、ファイルを読み込んで、表形式データに変換する方法を学ぶ。 |
| 7 | インスタンスメソッド | インスタンスに対して、メソッドを定義し、大きなプログラムを分割する方法を学ぶ。インスタンスメソッドの中から、インスタンス変数を参照する方法などを演習する。 |
| 8 | 継承 | 継承は既存のクラスの機能を拡張するための機構である。変数の継承、メソッドの継承の基本を学ぶ。下位のクラスがメソッドをオーバーライドして、挙動を変更するポリモーフィズムの機能を学ぶ。 |
| 9 | コンストラクタ | コンストラクタ、super, equals() などオブジェクト指向の重要な機能を学ぶ。 |
| 10 | インタフェース | 抽象クラスとインタフェースについて学ぶ。オブジェクト階層の最上位にある Objectクラスについても理解を深める。 |
| 11 | クラス変数、クラスメソッド | クラスで共通して利用できるクラス変数、クラスメソッドについて学ぶ。インスタンスを生成するための createメソッドを試作する。 |
| 12 | String, Math クラス | Java の中でよくつかわれる String と Math クラスについて理解を深める。特に、String クラスに用意される様々な文字列操作メソッドを学ぶ。 |
| 13 | コレクション | ArrayList、HashMap を学び、オブジェクトの集合を効率的に管理する方法を習得する。 |
| 14 | 総合演習 | プログラミング入門2で学んだオブジェクト指向の基礎について、総合演習を行う。パッケージ、アクセス権、他のAPIなどについても紹介する。 |
| 15 | 期末試験 | プログラミング入門2で学んだオブジェクト指向の基礎について、期末試験をお実施して、習熟度を確認する。 |
授業外に行うべき学習活動
事前学習として、次回の講義のオンライン教材を予習しておいてください。演習は、例題を実際にキー入力して、理解を深めることを目的としています。自宅学習で演習課題までの作業を完了させておき、授業中には教員による詳しい説明と、発展課題に取り組むことを推奨します。また、講義中に出題された課題については、事後学習の中で必ず完成させてください。課題を解くことが、次の講義のヒントになることがあります。
テキスト
オンライン教材
参考書
結城 浩 著「Java言語プログラミングレッスン」上(Java言語をはじめよう), 下(オブジェクト指向をはじめよう),ソフトバンククリエイティブ, ISBN-13: 978-4797332117(上), 978-4797332124(下).
高橋 麻奈 著「やさしいJava」ソフトバンクパブリッシング, ISBN-13: 978-4797331820 .
キャシー シエラ, バート ベイツ 著「Head First Java‐頭とからだで覚えるJavaの基本」オライリージャパン(第2版), ISBN-13: 978-4873112794 .
成績評価基準
- 授業への積極的参加および課題への取り組み(30%)
- 中間・期末テスト(70%)
情報機器使用
ノートPC持参
ネットワーク利用
前年度の授業改善アンケートからの気づき
自宅学習時間が2時間未満の学生が6割いました。プログラミングは情報科学部の基礎力として重要な科目ですから、予習、復習が重要です。例題、問題の量について、適切な量を提供することを検討しています。
その他
本講義は、プログラミング入門1を前提科目とします。プログラミング入門1の範囲を受講前(春休み)に十分復習をして下さい。
Javaの世界では、便利な道具(部品)が誰でも利用できる形で数多く提供されています。例えば第9回で学ぶJava APIがその例です。絵を描画するための道具、音を鳴らすための道具など、その種類は様々です。本講義では、(1)このような道具を自作できること、(2)道具と道具を組み合わせて、さらに便利な道具を発明できること、この2点を大きな目標として基礎となる知識と技術を身に付けます。これは、コンピュータから無限の可能性を引き出す第一歩につながります。