講義コード 1412A
講義名 ソフトウェアデザインIII
(副題)
開講責任部署 全体
講義開講時期 春学期
講義区分
基準単位数 1
時間 0.00
代表曜日 金曜日
代表時限 3時限
開講学科 情報処理学科
必選別 選択
履修セメスター 第3セメスター
その他
担当教員

職種 氏名 所属
准教授 ◎ 宮川 幹平 (指定なし)

講義概要
本実習は、Java言語によるプログラミングを取り扱う授業である。
Javaは、学びやすい文法構成を採用しているほか、大規模開発にも対応できるオブジェクト指向言語であり、様々なコンピュータ環境において同じように動作する(Write Once, Run Anywhere)といった特徴を持っている。そのため、コマンドラインアプリケーションやウィンドウアプリケーション、Webアプリケーション、モバイル端末用アプリケーションなど、幅広い分野でJavaが活用されている。
本実習では、上記のような多様な応用分野でのJavaプログラミングに挑むための基盤として、「ソフトウェアデザインII」で学習したJavaの基本文法をベースとして、オブジェクト指向プログラミングの基礎を実践的に学んでいく。
到達目標
・オブジェクト指向プログラミングの基本的な考え方として、クラスの定義、インスタンスの生成と利用、カプセル化のためのアクセス制御、継承とオーバーライド、抽象クラス、インタフェース、多態性の意味と実現方法について理解する。
・ヒープ、スタックとキュー、基本的なグラフを用いたアルゴリズムをJavaプログラムとして実装できる。
履修のポイント及び留意事項
 実習授業であり、1回でも欠席すれば授業に追いつけなくなる可能性がある。欠席分を取り戻すことは学生諸君の自己責任であることに注意されたい。また、プログラミング技術の修得に演習は必要不可欠である。授業時間以外において、課題だけに留まらず、数多くのプログラムを作成することを期待する。なお、テキストは自習に適したものを指定してある。毎回、次回学習する範囲を指示するので、各自予習しておくこと。授業時間にテキストを端から端まで一緒に読む、などといったことは行わない。
講義日程
テーマ内容
第1週JDKによる開発プロセスJavaによる本格的なプログラミングに必要なツールとして、JDKの使い方を理解する。
また、eclipseに代表される開発環境についても紹介する。
その他、Java基本文法に関する復習を行う。
第2週複数のクラスを用いた開発複数のクラスファイルから構成されるJavaプログラムの作成方法について理解する。
パッケージ、名前空間、Java API、クラスローダの意味について理解する。
第3週実践(1)ヒープ及びヒープソートのアルゴリズムを活用した整列プログラムを作成する。
第4週オブジェクト指向:クラスとインスタンスオブジェクトの基本概念とともに、クラス定義とインスタンス生成の方法、フィールドやメソッドへのアクセス方法について学ぶ。
第5週オブジェクト指向:コンストラクタと静的メンバクラス型変数とメモリ空間との関連、コンストラクタ、staticフィールド、staticメソッドについて学ぶ。
第6週オブジェクト指向:カプセル化アクセス制御の意義について確認するとともに、アクセス制御の範囲(private・package private・protected・public)とその指定方法、getter・setterの利用について学ぶ。
第7週実践(2)スタック・キューを実現するクラスを作成する。
第8週オブジェクト指向:継承の基礎継承の概念のともに、子クラスの定義とメモリ上の構成、オーバーライド、finalの意味などについて学ぶ。
第9週オブジェクト指向:継承の制御と抽象クラス継承を活用した開発における問題事例を踏まえて、その解決に有効な抽象クラス、オーバーライドの禁止設定の方法などを学ぶ。
第10週オブジェクト指向:インタフェース
インタフェースの定義と実装方法のほか、インタフェースを用いる効果について学ぶ。
第11週オブジェクト指向:多態性多態性の意味やイメージを理解する。
変数型と代入するインスタンスの型との関係と、呼び出されるメソッドの違いについて理解し、異なる型のインスタンスに対する呼び出し処理の共通化を行う手法について学ぶ。
第12週実践(3)隣接行列・隣接リストを表現するクラス、様々なグラフを表現するクラスを作成する。
第13週実践(4)グラフの深さ優先探索、幅優先探索アルゴリズムを活用したプログラムを作成する。
第14週実践(5)重み付き有向グラフ上の経路探索プログラムを作成する。
第15週まとめと確認これまで学んだことを踏まえた実技課題に取り組む。

他の授業科目との関連
「ソフトウェアデザインI及びII」「アルゴリズム」については履修済みであることを強く推奨する(特に「ソフトウェアデザインII」を履修していない場合は、当該授業で学習するJavaの基本文法を理解していなければならない)。
ソフトウェア開発プロセスに関しては「システムマネジメント」の内容が参考になるだろう。また、オブジェクト指向に関する概念的な内容については「ICT経営論」で学ぶことが出来る。
その他、コンピュータシステムに関する科目群「コンピュータ科学基礎」「コンピュータシステム」「コンピュータネットワーク」「データベース」等は、プログラマとしての基本教養として履修しておくことが望ましい。
評価方法
(1)文法に関する理解度を図る小テストの成績:50%
(2)提示アルゴリズムを実装したプログラムの品質:50%
上記の合計点により評価する。
教科書
スッキリわかるJava入門
インプレスジャパン
ISBN番号
978-4-8443-3086-8
参考図書
明解 Javaによるアルゴリズムとデータ構造 柴田 望洋
ソフトバンククリエイティブ
ISBN-13: 978-4-797345230
オフィスアワー(授業相談)
随時、宮川の研究室に直接訪問して良い。また、Web教材における質問相談フォーラムを活用することを推奨する。
学生へのメッセージ
良いプログラムをたくさん見て、参考にしていってください。また、本やWebに掲載されている知識を、実際に自分で作ってることでわかることもたくさんあります。経験を大切にしましょう。
準備学習の内容
毎回の授業で提示される演習問題については自分自身で挑戦しておくこと。講義「アルゴリズム」の内容をよく確認しておくこと。