Object-Oriented Programming

Course Information

College Tokuyama College Year 2022
Course Title Object-Oriented Programming
Course Code 0120 Course Category Specialized / Elective
Class Format Lecture Credits Academic Credit: 1
Department Department of Computer Science and Electronic Engineering Student Grade 5th
Term Second Semester Classes per Week 1
Textbook and/or Teaching Materials 参考図書:小森裕介「なぜ、あなたはJavaでオブジェクト指向開発ができないのか」(技術評論社)、布広永示「Javaオブジェクト指向プログラミング」(オーム社) 、林晴比古「新Java言語入門」(ソフトバンク)
Instructor Shigemura Tetsuji

Course Objectives

1. オブジェクト指向プログラミングの考え方を理解する。
2. UML図でプログラムを理解・設計できるようになる。
3. UML図からJavaプログラムを作成できるようになる。

Rubric

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
1. オブジェクト指向プログラミングの考え方を理解する。継承と多相性が使いこなせる。オブジェクト・クラスとメッセージの関係が分かる。オブジェクト、クラス、メッセージの関係が分からない。
2. UML図でプログラムを理解・設計できるようになる。シーケンス図を用いてプログラムの動きを理解・確認できる。クラス図とオブジェクト図を用いてプログラムの構造を理解・設計できる。クラス図・オブジェクト図が表すものを理解できない。
3. UML図からJavaプログラムを作成できるようになる。シーケンス図を考慮しJavaプログラムを作成できる。クラス図から関連とメッセージパッシングをJavaプログラムにできる。クラス図からJavaプログラムを作成できない。

Assigned Department Objectives

到達目標 B 1 See Hide
JABEE c-3 See Hide

Teaching Method

Outline:
簡単なプログラミング演習を通して「オブジェクト指向プログラミング」の基本的な考え方とUML図を使用したプログラム設計を学習する。
言語はJavaを使用する。GUIビルダーが生成したプログラムコードとIDEの画面を比較しながら、Javaのオブジェクト指向プログラミングを体感する。
なお、GUIビルダーにはEclipseのSwing Designerを使用する。
Style:
講義とプログラミング演習を交互に繰り返しながら授業を進める。
演習時間が十分に確保できないので、毎週1時間程度の時間外演習(UML図の完成、プログラムの完成など)を行うことが必須である。
到達目標をクリアするためには、毎回の演習を完成して理解を深めておく必要がある。
Notice:
最終成績=(中間試験+最終レポート)÷2

Characteristics of Class / Division in Learning

Active Learning
Aided by ICT
Applicable to Remote Class
Instructor Professionally Experienced

Course Plan

Theme Goals
2nd Semester
3rd Quarter
1st オブジェクト指向入門1
幾つかのプログラミングパラダイムとオブジェクト指向を比較する。オブジェクトとメッセージのイメージを掴むために、Javaでそれらをどのように表現するか学ぶ。また、GUIビルダーを用いて動作するプログラムを作成してみる。
【事前事後学習の内容(1時間)】プログラム作成演習
1. いくつかのプログラミングパラダイムがあることを知る。
2. オブジェクトとメッセージがJavaでどのように表現されるか理解する。
3. ボタンからTextAreaにメッセージが送られるJavaプログラムをGUIビルダーを用いて作成できる。
2nd オブジェクト指向入門2
GUIビルダーが出力したプログラムの内容を理解する。また、掴んだイメージの定着を図るために、もう一度、GUIビルダーを用いて動作するプログラムを作成してみる。
【事前事後学習の内容(1時間)】プログラム作成演習
1. Javaでメッセージパッシングがどのように表現されたか、GUIビルダーの出力を説明できる。
2. 少し複雑な例題プログラム(ボタンを押すとパネルの色が変化)をGUIビルダーを用いて作成できる。
3rd オブジェクト図・クラス図1
オブジェクト図、クラス図を紹介する。これまでに作成したプログラムのオブジェクト図とクラス図を描いてみる。内部状態を持った簡単なクラス(現在の色クラス)を、クラス図を先に描いてからプログラムにする。
【事前事後学習の内容(1時間)】クラス図の作成演習
1. オブジェクト同士の関係とメッセージをオブジェクト図、クラス図で表現できる。
2. 現在の色クラスをクラス図で表現できる。
3. 簡単なクラス図からJavaプログラムが作成できる。
4th オブジェクト図・クラス図2
現在の色クラスを2週に作成したプログラムに組込み、ボタンを押す度に色が順番に変化するように改造する。
【事前事後学習の内容(1時間)】プログラム作成演習
1. 前回のクラスを含むプログラム全体をクラス図で表現できる。
2. クラス図からJavaプログラムが作成できる。
5th 集約・継承1
JPanelを継承してパネル中央に円盤を表示するパネルクラスを設計する。前回のプログラムに組込んだアプリ全体を設計する。
【事前事後学習の内容(1時間)】クラス図の作成演習
1. 継承をクラス図で表現できる。
2. 集約をクラス図で表現できる。
6th 集約・継承2
前回設計したプログラムを実装する。
【事前事後学習の内容(1時間)】プログラムの作成演習
1. 継承・集約を含むクラス図からJavaプログラムを作成できる。
7th カプセル化
現在の色クラスを継承して「リセット機能付きの現在の色クラス」を作成する。継承されることを考慮したクラスの適切なカプセル化を考える.
【事前事後学習の内容(1時間)】クラス図とプログラムの作成演習
1. 自作のクラスを継承して機能追加・変更ができる。
2. 継承されることを考慮したクラスの設計について考察できる。
8th MVCモデル
実用的な例として、カラー画像をグレースケールに変換した上で表示する、GUIを持った画像表示アプリを作成する。MVCモデルを意識した設計例(クラス図)を理解しプログラムを作成する。
【事前事後学習の内容(1時間)】クラス図とプログラムの作成演習
1. MVCモデルを意識したクラス図を理解できる。
2. カラー画像クラスを継承してグレースケール画像クラスを作成できる。
4th Quarter
9th シーケンス図
画像表示アプリを実装する。また、アプリの動作を理解するためにシーケンス図を描いてみる。
【事前事後学習の内容(1時間)】シーケンス図の作成演習
1. 画像表示アプリを完成させ動作させることができる。
2. 画像表示アプリのシーケンス図を描くことができる。
10th 中間試験 ここまでの内容の理解を確認する。
11th 多相性
「画像表示アプリ」をフィルタ機能を持った「画像処理アプリ」に改造する。新しい種類の画像フィルタを容易に追加できるようなプログラム構造にするために多相性を用いる。
【事前事後学習の内容(1時間)】クラス図の作成演習
1. 多相性の利点が理解できる。
2. アブストラクトクラスの役割が理解できる。
3. 画像処理アプリのクラス図を理解できる。
12th 演習
シーケンス図を描いて動作を確認した後、画像処理アプリを実装する。
【事前事後学習の内容(1時間)】シーケンス図とプログラムの作成演習
1. 画像処理アプリのシーケンス図を描ける。
2. 画像処理アプリをクラス図から実装できる。
13th 多重継承とインタフェース
画像処理アプリのアブストラクトクラスは実装を含まないのでインタフェースに置き換え可能である。多重継承とインタフェースについて考える。
【事前事後学習の内容(1時間)】クラス図とプログラムの作成演習
1. アブストラクトクラスとインタフェースを比較して利点・欠点を考察できる。
14th 演習
画像処理アプリのフィルタをインタフェースを用いたクラス図に書換えた後で実装する。
【事前事後学習の内容(1時間)】クラス図とプログラムの作成演習
1. インタフェースを用いたクラス図を描くことができる。
2. 実装を含まないアブストラクトクラスをインタフェースに書き換えることができる。
15th 最終レポートの作成と提出
【事前事後学習の内容(1時間)】レポートの作成
画像処理プログラムの設計に用いたドキュメント(UML)と完成したプログラム含む最終レポートを提出する。レポートの内容を総合的に評価し期末試験の代替とする。
16th まとめ 提出されたプログラムとドキュメントについて、簡単なレビューを行う。

Evaluation Method and Weight (%)

中間試験最終レポートTotal
Subtotal5050100
基礎的能力000
専門的能力5050100
分野横断的能力000