授業計画 | テーマ | 内容 | 授業を受けるにあたって |
第1回目 | ソフトウエアとは? プログラムとは? | 計算動作指令の系列としてのプログラム。電卓による計算手順。計算機の発達にともなうプログラム手法の変遷。機械語、アッセンブラー、高級言語。本講義での勉強方法について:旧来の手続き指向型プログラミング手法で書かれたプログラム例をオブジェクト指向設計手法に基づいたプログラムにJava言語を使用して書き直す。 | 計算機の本質とは何? ソフトウエア、プログラムとは、といった本質的な問題を基本にもどって良く考えておく。特に電卓で何か計算するときにどういった手順で行うのか頭の中で整理しておく。 |
第2回目 | プログラミング言語を使用することのご利益(有用性) | プログラムとアルゴリズムや数値解析との関係。設計手法とプログラミング言語の関係概略。特に構造化プログラミングとオブジェクト指向プログラミングについて。 | 設計手法とプログラミング言語の関係概略、特に構造化2の平方根を筆算で求める手順を考えておく。計算機で2の平方根を求める問題を解く場合どうするか考えプログラムを書いてみる。プログラムを書くところまで具体化できなければ、文章や流れ図でどうプログラム化するかを書く。 |
第3回目 | 手続き指向設計手法とオブジェクト指向設計 | 手続き指向設計手法によるC言語で書かれたテトリスのプログラム例の紹介。C++でオブジェクト指向型に書き換えられた同じテトリスプログラムの実行例およびJavaで書かれたものの実行例の紹介。CおよびC++プログラムでの同プログラムでのグラフィクス処理の説明。 | 教科書を読んで、Java言語の概要を把握しておく。特にC言語との比較を整理しておく。 |
第4回目 | 計算機の基本構造とプログラムによるデータアクセス方式 | データの型、変数、配列 等。 ソーティングプログラムを用いて変数、配列等の実例を示し、C言語で記述した場合と、それをJavaに書き換えた場合を説明。Javaのプログラミング環境に関する説明。 | Cで書かれたテトリスのプログラムをデバッグして実際に動かしてみる。完成したプログラムを課題として提出。 |
第5回目 | 関数による抽象化とデータ指向設計例 | 特にオブジェクト指向型設計で多用される再帰呼び出しに関して階乗計算、全サブストリングや全順列の生成等の例題を使用し説明。 | 第4回で出されたソーティング等の簡単な問題をJavaでプログラムしデバッグしておく。 |
第6回目 | オブジェクト指向設計例1とオブジェクト指向設計の方法論 | 「太陽系のシミュレータ」の能動的データ要素による記述。 オブジェクト(太陽系、太陽、惑星系、地球、月、等)の抽出。クラスの特徴付け。プログラムの実現化、擬似コードによる記述。 | 第5回目で配布された資料「オブジェクト指向設計て、何?」ページ1~15を良く読んでおく。 |
第7回目 | Javaにおけるクラスおよびオブジェクトの実際 | 簡単なプログラム例を使用して、Javaにおけるクラスおよびオブジェクトが実際にどのように定義されどのように使用され機能するかの説明。第7回目までの振り返。 | 教科書を読んでJavaにおけるクラス、オブジェクトの扱いを予習しておく。実際に擬似コードをプログラムに置き換えるにはどのようなことが問題になるかを整理しておく。 |
第8回目 | 中間試験 | | 第7回目までの授業の内容に関して復習し、特にC言語で書かれたプログラムのJava化ができるようにする。また、問題の仕様、あるいはシステムの記述が与えられたとき、それをオブジェクト指向設計にあった形に詳細化し、その中からクラス候補を選択しそれらの特徴付けが行えるようにしておく。 |
第9回目 | オブジェクト指向設計例2 | 「ナイト巡回路」問題の定義。オブジェクト指向設計による問題の記述。問題記述よりクラス候補を見つける。クラス候補よりクラスの粒度、クラス間の相互関係等より5~8程度のクラスを決定する。 | 配布資料の第2部よりページ1~9を良く読んでおく。 |
第10回目 | オブジェクト指向設計例2 | 前回に引き続き、自然言語による各クラスの特徴付けを行う。より正確な図によるオブジェクト指向設計の記述。静的構造図。オブジェクト間の包含、従属、等の関係記述。プログラムの実現化に向けての準備。 | 配布資料の第2部よりページ9~21を良く読んでおく。第9回の説明に沿ってテトリスの問題記述を行いクラス候補を選択しておく。 |
第11回目 | デザインの実現化 | プログラムの始点(安定したオペレーション)の発見。擬似コードによる記述と改良。順次関連するオペレーションの記述および改良を行い必要があればすでに記述したオペレーションに戻って修正を加える。 | 配布資料の第2部よりページ9~21を良く読みなおし具体的にどう実現化してゆくのかその本質を理解できるようにする。 |
第12回目 | 擬似コードでの記述 | デザインの実現化がプログラミングにおける最も重要でかつ難しいところである、前回に引き続き関連するオペレーションの擬似コードによる記述を説明し擬似コードでの記述を完了する。 | すでに説明されたオペレーションに関して実際のプログラムではどう書かれるかを検討する。また、テトリスの課題に関しても擬似コードでオブジェクト化されたオペレーションの記述を行っておく。 |
第13回目 | Javaのソースコードと各オペレーションの擬似コード | 実際にプログラムされている「ナイト巡回路」のJavaのソースコード、と前回までに説明を行った各オペレーションの擬似コードを比較する。 | テトリスのJavaによるプログラムでCから焼き直せる部分はプログラムしておき、問題となる部分を抽出しておく。 |
第14回目 | 必要とするグラフィック・インターフェイス | テトリスのJavaプログラムで必要となるグラフィック・インターフェイスの提示と説明(コードを提示しそれらをどのように各自のプログラムに埋め込んで使用するかの説明)。テトリスの課題に関する質疑応答。 | |
第15回目 | オブジェクト指向設計手法の他のプログラムへの一般化 | 全体のまとめ。課題等、残った質問への説明。 | テトリスの課題を完成させておく。 |