cp-3. サブクラス,継承 (C++ オブジェクト指向プログラミング入門)

Slides:



Advertisements
Similar presentations
1 C++ における OOP を用いた 書き方講座 H 山崎貴英. 2 今回の内容 OOP とは? C++ の超基礎 注釈 書いてあるコードはすべて一部抜粋。 コピペだと動かないよ!
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
C++ 基礎. 目次 C++ とは? C++ におけるオブジェクト指向 課題 C++ とは? Cには足りなかったものが付与されて出来た物 具体的には、 情報の隠蔽(カプセル化) 共通の名前付け(関数のオーバーロード) 再利用の仕組み クラスの導入 など オブジェクト指向 C++ では大規模なプログラミングの.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
情報工学演習I 第10回 C++の演習2(クラスの継承).
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第4回 iPhoneアプリ開発勉強会 Objective-C 基礎講座 -クラス- 鷲見政明.
プログラミング基礎I(再) 山元進.
アルゴリズムとプログラミング (Algorithms and Programming)
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
アルゴリズムとプログラミング (Algorithms and Programming)
社会人学習講座 「Javaプログラミング概論」
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
プログラミングII 第 7 回 オブジェクトの配列 New, delete 参照 田向.
インタラクティブ・ゲーム制作 <プログラミングコース>
補足説明.
第2回 Microsoft Visual Studio C++ を使ってみよう
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語入門 手続き型言語としてのJava
Microsoft Visual Studio 2005 の使い方
プログラミング論 ファイル入出力
アルゴリズムとプログラミング (Algorithms and Programming)
情報工学演習I 第12回 C++の演習4(インライン展開).
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
Cプログラミング演習.
#include <stdio. h> int main() { /. 表示をする
第11週:super/subクラス、継承性、メソッド再定義
プログラミング論 ファイル入出力
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
Cの実行モデル.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
もっと詳しくArrayクラスについて調べるには → キーワード検索
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
第8回放送授業.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
オブジェクト指向プログラミング クラス 継承
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
さまざまなプログラミング言語, オンライン開発環境
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
extern の意味 (C プログラミング演習,Visual Studio 2019 対応)
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
cp-1. クラスとメソッド (C++ オブジェクト指向プログラミング入門)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
フレンド関数とフレンド演算子.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
演算子のオーバーロード.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
Kinectで画像処理 第2回.
Presentation transcript:

cp-3. サブクラス,継承 (C++ オブジェクト指向プログラミング入門) https://www.kkaneko.jp/cc/cpp/index.html 金子邦彦

派生クラス あるクラスを継承して作成したクラス クラス1  ←元となるクラス(基本クラス) クラス2  ←継承したクラス(派生クラス)

ソースコード ファイル名: Ball.h #pragma once class Ball { protected: double _x, _y; public: Ball( const double x, const double y ); Ball( const Ball& ball ); Ball& operator= ( const Ball& ball ); ~Ball(); double distance_to_0() const; double x() const { return this->_x; }; double y() const { return this->_y; }; }; 属性(メンバ変数ともいう) コンストラクタ, デストラクタ アクセサ protected 指定により,サブクラスから属性アクセス可能

ソースコード ファイル名: Ball.cpp #include "Ball.h" #include <math.h> Ball::Ball( const double x, const double y, const int color ) : _x( x ), _y( y ) { /* do nothing */ } Ball::Ball( const Ball& ball ) : _x( ball.x() ), _y( ball.y() ) Ball& Ball::operator= (const Ball& ball ) this->_x = ball.x(); this->_y = ball.y(); return *this; Ball::~Ball() double Ball::distance_to_0() const return sqrt( ( this->x() * this->x() ) + ( this->y() * this->y() ) );

ソースコード ファイル名: ColorBall.h #pragma once #include "Ball.h" class ColorBall : public Ball { protected: int _color; public: ColorBall( const double x, const double y, const int color ); ColorBall( const ColorBall& ball ); ColorBall& operator= ( const ColorBall& ball ); ~ColorBall(); int color() const { return this->_color; }; };

ソースコード ファイル名: ColorBall.cpp #include "ColorBall.h" ColorBall::ColorBall( const double x, const double y , const int color ) : Ball( x, y ), _color( color ) { /* do nothing */ } ColorBall::ColorBall( const ColorBall& ball ) : Ball( ball.x(), ball.y() ), _color( ball.color() ) ColorBall& ColorBall::operator= (const ColorBall& ball ) this->_x = ball.x(); this->_y = ball.y(); this->_color = ball.color(); return *this; ColorBall::~ColorBall()

ソースコード ファイル名: main.cpp #include <stdio.h> #include "ball.h" #include "ColorBall.h" int main( int argc, char** argv ) { ColorBall* b1 = new ColorBall( 3, 4, 0 ); fprintf( stderr, "b1: %f, %f, %d\n", b1->x(), b1->y(), b1->color() ); delete b1; } アクセサによる 属性アクセス

Visual Studio 2019 C++ での実行結果例 プログラムの実行結果が 表示されている