| 授業方針・テーマ |
本授業では,ソフトウェアを「実際に動作するプログラム」として構成するために必要な要素と考え方を学習する.ソフトウェア設計論が,要求定義や設計といった開発の上流工程を主な対象とするのに対し,本授業では,プログラミング,コンパイル,クラス設計,ライブラリ利用などの下流工程に焦点を当てる.
具体的には,C言語およびC++言語を用いて, •プログラムがどのように分割・結合されて実行ファイルとして構成されるか •クラスやデータ構造をどのように組み合わせてプログラム全体を構成するか を段階的に理解することを目標とする.
また,単に文法や個別の技術を学ぶのではなく,どのように書けば,拡張しやすく,保守しやすいソフトウェアになるか,という観点から,実装段階における設計判断の考え方を身につける. |
習得できる知識・能力や授業の 目的・到達目標 |
ソフトウェア構成に関する以下の知識・能力を修得する.
•C/C++プログラムがどのようにコンパイルされ,オブジェクトファイルや実行ファイルとして構成されるかを理解するとともに,分割コンパイルやライブラリ化の意味を説明できるようになる. •メモリ管理,ポインタ,クラス設計を踏まえた安全で可読性の高いプログラム構成を理解し,保守性を意識した実装ができるようになる. •オブジェクト指向プログラミングの基本概念(カプセル化,継承,多態性)をC++のクラス設計として具体的に説明・実装できるようになる. •標準テンプレートライブラリ(STL)やテンプレートを用いて,再利用性の高いプログラムを構成する考え方を理解する. •例外処理や乱数生成など,実装段階で頻繁に用いられる処理技術を理解し,適切な場面で選択・利用できるようになる. •複数のクラスやデータ構造を組み合わせてプログラム全体を構成し,機能単位で整理されたソフトウェア構造を設計できるようになる.
|
授業計画・内容 授業方法 |
第1回 講義の概要説明 第2回 C言語の基礎とコンパイル過程 第3回 C言語のメモリとポインタ 第4回 構造体と動的メモリ確保 第5回 C言語によるオブジェクト指向的設計 第6回 C++入門 第7回 クラスとオブジェクト 第8回 継承と仮想関数 第9回 演算子の多重定義 第10回 リスト構造の実装 第11回 ジェネリックプログラミングとSTL 第12回 例外処理と安全なソフトウェア設計 第13回 乱数生成とシミュレーション基礎 第14回 総合的プログラム構成の考え方 第15回 まとめ
各回の授業において,サンプルプログラムを実際に動かしながら説明する. |
| 授業外学習 |
各回の授業で説明した内容を復習し,理解を確かなものとする.特にサンプルプログラムを動かしてみて,授業の内容を理解できているか確認することが望ましい. |
| テキスト・参考書等 |
(テキスト)開講時に指定する.あるいは,授業中,kibacoを用いて資料を配付する. (参考書)特に指定しないが,必要に応じて授業中に紹介する. |
| 成績評価方法 |
演習課題(50%),期末試験(40%),平常点(10%) |
質問受付方法 (オフィスアワー等) |
質問・連絡等がある場合は,takahiro.m@tmu.ac.jpまでメールを送ってください. |
特記事項 (他の授業科目との関連性) |
C言語あるいはC++を用いるプログラミング演習の科目を受講していることが望ましい. 授業中にPCを持参して,実際にサンプルプログラムを動かしながら授業の理解を深めることが望ましい. |
| 備考 |
|