4-3- 基 C++ に関する知識 オープンソースシステムのソースを解読する上で C++ の知識は必須であるといえる 本カリキュラムでは まずオブジェクト指向に関する Ⅰ. 概要理解を深め クラスの扱い方について学習し STL を使用してアルゴリズムとデータ構造を実装する方法を学習する Ⅱ. 対象専

Similar documents
OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 4-3- 基 C++ に関する知識 と IT 知識体系との対応関係は以下の通り 科目名 基本レベル 基 C++ に関すオブジェクト指る知識向

4-1- 基 Java に関する知識 1 独立行政法人情報処理推進機構

4-4- 基スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語を学習し アプリケーション開発の手法を習得する 本カリキュラムでは まずスクリプト言語に位置づけされる Perl PHP Python JavaScript Ruby といった Ⅰ. 概要プログラミング言語の特徴に

ソフトゼミC 第二回 C++の基礎

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

Microsoft Word 基_シラバス.doc

スライド 1

PowerPoint プレゼンテーション

Prog2_12th

(STL) STL 1 (deta structure) (algorithm) (deta structure) 2 STL STL (Standard Template Library) 2.1 STL STL ( ) vector<int> x; for(int i = 0; i < 10;

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

C 言語経験者のための C++ 入門

<基礎領域>

解きながら学ぶC++入門編

Make the Future Java FY13 PPT Template

5 継承とは クラス図 98 7 参照の自動型変換 参照の自動型変換 クラス図の見方 クラス図の書き方 継承 継承してクラスを作る インスタンスの初期化 継承の効果を確認する

Java知識テスト問題

基礎プログラミング2015

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

スライド 1

PowerPoint プレゼンテーション

基礎プログラミング2015

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

02: 変数と標準入出力

JavaプログラミングⅠ

02: 変数と標準入出力

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

Slide 1

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

Microsoft PowerPoint - class2-OperatorOverLoad.pptx

プログラミング基礎I(再)

design_pattern.key

Microsoft PowerPoint - prog03.ppt

プログラミング入門1

PowerPoint プレゼンテーション

基礎プログラミング2015

Microsoft PowerPoint - 09.pptx

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

新版 明解C++入門編

Prog1_15th

Microsoft PowerPoint - lec06 [互換モード]

デザインパターン第一章「生成《

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

Microsoft Word - C言語研修 C++編 3.doc

GEC-Java

Javaプログラマー早期育成ドリル ~コードリーディング編~ 解答

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

PowerPoint プレゼンテーション

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - prog04.ppt

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft PowerPoint - 12.ppt [互換モード]

JAVA入門

プログラミング実習I

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Microsoft PowerPoint - prog09.ppt

C 資料 電脳梁山泊烏賊塾 キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト

情報処理 Ⅱ 2007 年 11 月 26 日 ( 月 )

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - ep_cpp04.ppt

Microsoft PowerPoint - C++_第1回.pptx

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

オブジェクト指向プログラミング・同演習 5月21日演習課題

ML 演習 第 4 回

プログラミング演習 土曜日(Q組)

基礎計算機演習 実習課題No6

Microsoft PowerPoint pptx

2004/11/23 オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),Visual

第2回講義

4-4- 応スクリプト言語に関する知識 コードの作成や修正が容易とされるスクリプト言語のうち 特に Ruby について学習し 応用的なアプリケーション開発の手法を習得する Ⅰ. 概要フレームワークによる Web アプリケーション開発やデータベース操作について学習する Ⅱ. 対象専門分野職種共通 Ⅲ.

5-1- 応開発フレームワークに関する知識 開発フレームワークを利用した Web アプリケーションの実装方法を理 Ⅰ. 概要解する MVC や OR マッピング DIxAOP といった技術を理解する Ⅱ. 対象専門分野職種共通 Ⅲ. 受講対象者 本カリキュラムの 5-1- 基開発フレームワークに関す

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

プログラミングI第10回

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Microsoft PowerPoint - ruby_instruction.ppt

JavaプログラミングⅠ

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft Word - Android_SQLite講座_画面800×1280

スライド 1

6-2- 応ネットワークセキュリティに関する知識 1 独立行政法人情報処理推進機構

Microsoft PowerPoint pptx

C++0x

解きながら学ぶC++入門編

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Prog1_6th

Microsoft PowerPoint ppt

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

2-3- 基 Linux のシステム管理に関する知識 1 独立行政法人情報処理推進機構

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

JavaプログラミングⅠ

コンパイラパッケージ アプリケーションノート:<STLライブラリ V > ユーザーズマニュアル

とても使いやすい Boost の serialization

5-3- 基統合開発環境に関する知識 1 独立行政法人情報処理推進機構

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に

21st Embarcadero Developer Camp T8

リファレンス,配列 例外処理

Transcription:

4-3- 基 C++ に関する知識 1

4-3- 基 C++ に関する知識 オープンソースシステムのソースを解読する上で C++ の知識は必須であるといえる 本カリキュラムでは まずオブジェクト指向に関する Ⅰ. 概要理解を深め クラスの扱い方について学習し STL を使用してアルゴリズムとデータ構造を実装する方法を学習する Ⅱ. 対象専門分野職種共通 Ⅲ. 受講対象者 本カリキュラムの 4-2- 基 C に関する知識 を受講済みであること ま受講前提たは 同等の知識を有すること オブジェクト指向の概念を理解する C++ の概要や C++ プログラミングの基本文法に関して理解する クラスの定義方法とカプセル化を理解する 関数のオーバーロードと演算子のオーバーロードを理解する Ⅳ. 学習目標 継承や抽象クラスとオーバーライドを理解し 多相性を理解する 例外処理 名前空間 C++ でのキャストを理解する C++ でのコンソール入出力やファイル入出力に関して理解する テンプレートや STL を利用したプログラムを理解する Ⅴ. 使用教科書 C++ 実践プログラミング 教材等 Steve Oualline 著 オライリー ジャパン刊 Ⅵ. 習得スキル講義終了後の受講レポート 定量アンケート 知識確認ミニテスト の評価方法演習問題の取り組み状況を総合的に判断して評価を行う Ⅶ. カリキュラムレベル 2( 基本 ) 第 1 回 ~ 第 15 回の構成 2

講座内容 第 1 回オブジェクト指向の概念 ( 講義 + ワークショップ 90 分 ) C++ プログラミングの前提となるオブジェクト指向の概念について学習し オブジェクトの根本的な考え方 と 各種の用語 型による抽象的なデータ操作などについて理解する (1) オブジェクトとは 1 オブジェクトとは ( 属性 操作 関係 アイデンティティ ) 2 クラス ( 内包クラス 外延クラス ) 3 インスタンス (2) オブジェクト指向 1 カプセル化 2 継承 3 多相性 第 2 回 C++ の基本 ( 講義 + ワークショップ 90 分 ) C++ プログラミングの概要として 歴史や特徴について学習する また C++ によるプログラムを開発する 流れについて習得する (1) C++ の説明 1 C++ の歴史 ( 歴史 開発の経緯 適用範囲 ) 2 C++ とオブジェクト指向 3 変数の宣言とスコープ 4 新しいデータ型 (bool 型 const 型 ) 5 参照 ( 関数への参照渡し 戻り値としての参照返し ) (2) C++ による開発の流れ 1 プログラム実行までの流れ (g++ によるコンパイル方法 ) 2 簡単な C++ プログラムの作成 (iostream cin cout など ) 3

第 3 回クラスの定義 ( 講義 + ワークショップ 90 分 ) C++ のクラスの基本的な定義方法と使用方法を学習することで オブジェクト指向プログラミングのカプセル 化技法を習得する (1) クラスの定義 1 クラスと構造体の違い 2 クラスの定義方法 ( メンバ変数 メンバ関数 スコープ解決演算子 ) 3 アクセス指定子とカプセル化 (private public protected) 4 サンプルプログラム (2) オブジェクトの生成と使用 1 オブジェクトの静的生成方法 2 メンバのアクセス方法 ( ドット演算子 アロー演算子 ) 3 オブジェクトの一括代入 4 オブジェクト配列 第 4 回クラスの詳細 ( 講義 + ワークショップ 90 分 ) コンストラクタやデストラクタ 静的メンバ変数や静的メンバ関数といったクラスの詳細な扱い方を理解する また C++ での動的生成やオブジェクトを引数や戻り値で使用したときの注意点を学習する (1) クラスの詳細 1 コンストラクタとデストラクタ (C++ の構造体と共用体 ) 2 this ポインタ 3 静的メンバ変数 ( 定義 初期化 const) 4 静的メンバ関数と const メンバ関数 5 クラスの包含 6 サンプルプログラム (2) 動的生成 1 動的生成 (new 演算子 delete 演算子 ) 2 ポインタによる包含 (3) オブジェクトと関数 1 オブジェクトの仮引数と戻り値 ( 値 ポインタ 参照 ) 2 サンプルプログラム 4

第 5 回関数のオーバーロード ( 講義 + ワークショップ 90 分 ) C++ プログラミングを特徴付ける関数の使用方法と 関数のオーバーロードについて理解し 柔軟なプロ グラミングを行う技能を習得する (1) C++ における関数の特徴 1 引数のない関数 2 デフォルト引数 3 インライン関数 (inline キーワード クラス定義 最適化オプション ) 4 サンプルプログラム (2) 関数のオーバーロード 1 関数のオーバーロードとは ( 引数の型 引数の数 引数の並び順 ) 2 デフォルト引数と関数のオーバーロード ( 曖昧さ回避 ) 3 コンストラクタのオーバーロード ( デフォルトコンストラクタ 初期化子 const メンバ変数 ) 4 コピーコンストラクタ ( デフォルトコピーコンストラクタ ポインタのメンバ変数の注意点 ) 第 6 回演算子のオーバーロード ( 講義 + ワークショップ 90 分 ) 演算子のオーバーロードについて理解する またフレンドについて学習し 演算子のオーバーロードにフレ ンド関数を使用することの利点を理解する (1) 演算子のオーバーロード 1 演算子のオーバーロードとは ( オーバーロード可能な演算子と不可能な演算子 ) 2 演算子のオーバーロードの定義方法 (operator) 3 代入演算子のオーバーロード ( デフォルト代入演算子 コピーコンストラクタとの関係 ) 4 代入演算子のオーバーロードの注意点 ( 自己代入回避 ) 5 二項演算子と単項演算子のオーバーロード 6 関係演算子のオーバーロード 7 添字演算子のオーバーロード 8 サンプルプログラム (2) フレンド 1 フレンドとは ( カプセル化の視点からみた注意点 ) 2 フレンドクラス 3 フレンド関数 ( 二項演算子のオーバーロード ) 4 サンプルプログラム 5

第 7 回継承と多相性 ( 講義 + ワークショップ 90 分 ) C++ における継承の概念と利用方法を理解する また オーバーライドの使用方法を習得し 仮想関数を利 用した多相性の実現方法を学習する (1) 継承 1 継承の定義方法 ( 派生クラス 基底クラス アクセス識別子 ) 2 オーバーライドとは ( オーバーライドの使用方法 基底クラスへのアクセス方法 ) 3 コンストラクタとデストラクタの実行順序 4 基底クラスの初期化 ( 初期化子 ) 5 間接基底クラス ( 派生クラスを継承 ) 6 サンプルプログラム (2) 仮想関数と多相性 1 仮想関数とは ( 基底クラスへのポインタ 仮想関数を使用したときとの違い ) 2 仮想関数の定義 (virtual キーワード ) 3 多相性 ( 多相性を実装していないときとの違い ) 4 仮想デストラクタ (virtual キーワード 仮想デストラクタを使用していないときとの違い ) 第 8 回抽象クラス 多重継承 ( 講義 + ワークショップ 90 分 ) 抽象クラスやインタフェースクラスの概念と利用方法を学習する また 多重継承と仮想基底クラスの扱 いについて理解する (1) 抽象クラス 1 純粋仮想関数とは ( 概念と条件 定義方法 派生クラスでの実装漏れ防止 ) 2 抽象クラスとは ( インスタンス化の禁止 派生クラスで共通の資産提供 ) 3 抽象クラスの利用方法 4 インタフェースクラス ( カプセル化の強化によるクラス間の疎結合 ) 5 インタフェースクラスの利用 6 サンプルプログラム (2) 多重継承 1 多重継承 ( 概念と定義方法 それぞれの基底クラスのアクセス方法 ) 2 コンストラクタとデストラクタの実行順序 3 仮想基底クラス ( 同一間接基底クラスによるメンバの曖昧さ回避 定義方法 virtual キーワード ) 4 サンプルプログラム 6

第 9 回テンプレート ( 講義 + ワークショップ 90 分 ) C++ におけるジェネリックプログラミングの実現手法として テンプレートの概念と利便性を理解し 関数テ ンプレートとクラステンプレートの扱いを学習する また string クラスの使用方法を習得する (1) テンプレート 1 ジェネリックプログラミングとは ( データ型に依存しない 再利用性の向上 ) 2 テンプレートとは ( コンパイル時の多相性 ) 3 テンプレートの定義 (typename キーワード class キーワード ) 4 関数テンプレート ( 引数と戻り値のテンプレート定義 テンプレート関数 ) 5 クラステンプレート ( メンバのテンプレート定義 テンプレートクラス ) 6 テンプレートの利用 ( プレースホルダ 型の曖昧さ 型の指定方法 ) 7 サンプルプログラム (2) string クラス 1 string クラス ( 標準ライブラリ basic_string クラステンプレート 利用方法 可変長の文字列 ) 2 サンプルプログラム 第 10 回キャスト 名前空間 ( 講義 + ワークショップ 90 分 ) 実行時型情報の取得方法や C++ で導入されて C にはないキャストの方法を学習する また名前空間の 目的と利用方法を理解する (1) 実行時型情報 1 実行時型情報とは ( 多相性と実行時型情報 typeid 演算子での定義 ) 2 実行時型情報の利用方法 ( 多相性での利用方法 テンプレートクラスでの利用方法 ) (2) キャスト 1 C++ での新しいキャスト ( 特徴 安全性の強化 ) 2 キャストの利用方法 (dynamic_cast const_cast static_cast reinterpret_cast) (3) 名前空間 1 名前空間とは ( 同名定義による衝突回避 スコープ アクセス制限をしない ) 2 名前空間の定義 (namespace グローバルスコープ 名前空間の入れ子) 3 名前空間の利用 ( スコープ解決演算子 using namespace) 4 無名名前空間 ( 静的グローバル変数 定義方法 利用方法 ) 7

第 11 回例外 変換関数 ( 講義 + ワークショップ 90 分 ) C++ における動的エラーの統一した処理として例外処理の概念を理解し 利用方法を習得する また 変 換関数の利用方法を学習する (1) 例外 1 例外とは ( 実行中のエラー 例外処理 ) 2 例外オブジェクト (exception クラス 例外クラス 例外クラスの継承 ) 3 例外監視 (try キーワードでの定義 try ブロック ) 4 例外捕捉 (catch キーワードでの定義 catch ブロック 例外捕捉方法 ) 5 例外投入 (throw キーワードでの定義 ) 6 例外の利用方法 ( 制御の流れ ) 7 サンプルプログラム (2) 変換関数 1 変換関数とは ( クラスの型からの暗黙的な変換 ) 2 変換関数の定義と利用方法 (operator での定義 ) 第 12 回入出力 ( 講義 + ワークショップ 90 分 ) C++ での入出力システムの扱いを理解する 更に 定義済みマニピュレータとマニピュレータの作成方法 また抽出演算子や挿入演算子のオーバーロードの方法を学習する (1) C++ における入出力システムの説明 1 コンソールとファイルの入出力管理 ( ストリーム cin cout 抽出演算子 挿入演算子) 2 抽出演算子のオーバーロード 3 挿入演算子のオーバーロード 4 マニピュレータ (endl ends flush dec hex setw など ) (2) ファイル入出力 1 ファイルストリームクラス (ifstream ofstream fstream) 2 ファイル入出力処理 ( 明示的な open is_open 明示的な close など ) 8

第 13 回演習 ( アルゴリズムとデータ構造の実装 )( ワークショップ 90 分 ) スタックを演習課題として アルゴリズムとデータ構造をオブジェクト指向にて実装する 更に テンプレー トを使用してリファクタリングを行い ジェネリックプログラミングを習得する (1) オブジェクト指向プログラミングの演習 1 スタックの概要 ( スタックポインタ プッシュ ポップ ) 2 スタックの抽象クラスを実装 (int 型のスタック 純粋仮想関数のプッシュとポップ 例外クラス ) 3 スタックの抽象クラスを継承 ( 動的配列にプッシュとポップを行うメンバの実装 ) 4 サンプルプログラム (2) ジェネリックプログラミングの演習 1 スタックをテンプレートで実装 ( スタックの抽象クラスと派生クラスをテンプレート化 ) 2 サンプルプログラム 第 14 回 STL の概要 ( 講義 + ワークショップ 90 分 ) コンテナとアルゴリズムのライブラリであり C++ 標準の機能である STL(Standard Template Library) の構 成や種類について学習する (1) STL の概要 1 STL とは ( 標準テンプレートライブラリ アルゴリズムとデータ構造の分離 ) 2 STL の要素 ( イテレータ コンテナ アルゴリズム 関数オブジェクト アダプタ ) (2) イテレータとコンテナ 1 イテレータの種類 ( 入力 出力 前方 双方向 ランダム ) 2 コンテナの種類 (typedef での型名 ベクトル リスト マップ など ) (3) ベクトル 1 ベクトルの説明 ( 動的配列 vector メンバ関数) 2 添字でのベクトルの利用 (size push_back 添字演算子 ランダムアクセス など) 4 ベクトルでイテレータの利用 (iterator begin end insert erase 代入演算子 など) (4) マップ 1 マップの説明 ( 連想配列 map メンバ関数) 2 マップの利用 (pair insert size 添字演算子 iterator begin end erase など) 9

第 15 回アルゴリズムとデータ構造の使用 ( 講義 + ワークショップ 90 分 ) STL の様々なアルゴリズムの利用方法を習得し STL を使用した安全で柔軟なアルゴリズムとデータ構造 の実装方法を学習する (1) アルゴリズム 1 アルゴリズムの種類 ( 検索 カウント イコール ループ コピー リバース など ) (2) リスト 1 リストの説明 ( 順次アクセス list メンバ関数) 2 リストの利用 (push_back push_front iterator sort merge など) 4 基本的なアルゴリズムの利用 (count find fill min_element max_element など) 6 ループアルゴリズムの利用 (for_each 単項関数オブジェクト unary_function など) 7 サンプルプログラム 以上 10