C/C++によるシステムプログラミング基礎
担当教員
授業の到達目標及びテーマ
Javaによるプログラミングの知識を前提として、ポインタを扱うことが可能な言語としてC++を学び、システムソフトウェアの利用・設計・実装に必要なメモリ空間とポインタの基礎を理解する。
授業の概要と方法
Javaの知識を前提としてC++言語のプログラミングの基礎を説明する。ここでは、コンパイラやmakeコマンドの利用に始まり、基本的な文法を理解する。次に、ポインタや演算子などのC++言語固有の機能を学ぶ。 さらにクラス・継承・ストリームI/O・テンプレート等のオブジェクト指向プログラミング技法を学ぶ。さらに、GUI・ネットワーク等のオブジェクト指向ライブラリを利用して基本的な情報システムを設計・実装し、オブジェクト指向によるシステム抽象化を理解する。 講義はプログラミング入門2までの知識を前提として進めるので、受講にはこの科目の単位が取得済みレベルの知識が必要である。
授業計画
| 回 | テーマ | 内容 |
|---|---|---|
| 1 | Javaを前提としたC++文法 | C/C++言語が必要な場面について理解する。さらに、Java言の知識を前提として、C++言語の文法の初歩を理解する。 |
| 2 | データ型とクラス | C/C++のデータ構造について理解する |
| 3 | ポインタの基礎 | ポインタについてその意味と使い方を理解する。 |
| 4 | オブジェクトとポインタ・参照 | オブジェクトとポインタ・参照について理解する。 |
| 5 | 演算子と多重定義 | C++における演算子の多重定義は、後で出てくる継承やテンプレートにおける汎用プログラミングにおいて重要な意味を持つ。ここでは、その演算子の多重定義について理解する。 |
| 6 | 継承 | C++言語における継承とその仕組みやメモリ構造について理解する。 |
| 7 | 仮想関数 | C++言語における継承の核をなす仮想関数について理解する。 |
| 8 | 抽象クラス | 大規模なクラスライブラリの構成などで必須の、抽象クラスについて理解する。 |
| 9 | テンプレート | C++の関数テンプレート及びクラステンプレートについて理解する |
| 10 | ストリームI/O | ストリーム入出力についてプログラミングの側面から理解する。 |
| 11 | 標準ライブラリ | C++の標準ライブラリやSTLについて理解する。 |
| 12 | ライブラリを用いた大規模システムプログラミング | ライブラリや分割コンパイルを用いた大規模なシステムプログラミングについて理解する。 |
| 13 | GUIプログラミングの基礎 | 大規模なオブジェクト指向ライブラリの例としてQtを取り上げ、その基礎を学ぶ。 |
| 14 | GUIプログラミングの応用 | Qtを用いた応用的なプログラミングについて学び、オブジェクト指向抽象化デザインの実例から学ぶ。 |
| 15 | 試験 | 試験を実施する。 |
授業外に行うべき学習活動
講義で課された課題を行う
テキスト
Webからの配付資料による
参考書
C++の初歩的な文法(Javaに類似した部分)については当初の2回に簡単に触れるだけなので、C++言語に関する参考書は必要に応じて各自で使用すること。以下に挙げるもの以外でも構わない。 ・柴田望洋、新版明解C++入門編、ソフトバンククリエイティブ ・粂井康孝、猫でもわかるC++プログラミング、ソフトバンククリエイティブ
成績評価基準
課題と試験による。講義における積極性などの授業への参加度を加味する。
情報機器使用
貸与ノートPCを持参すること
前年度の授業改善アンケートからの気づき
特になし