SlideShare a Scribd company logo
co-1. クラスとメソッド
1
金子邦彦
(C++ オブジェクト指向プログラミング入門)(全3回)
URL: https://www.kkaneko.jp/pro/cpp/index.html
アウトライン
• クラス定義
• メソッドの記述
• プログラムの実行
2
クラス定義
3
クラス定義の中には,属性の定義(属性名とデータ型),コンストラク
タの定義,デストラクタの定義,その他メソッドの定義を含める.
#pragma once
class Ball {
private:
double x, y;
public:
Ball( const double x, const double y );
Ball( const Ball& ball );
Ball& operator= ( const Ball& ball );
~Ball();
};
コンストラクタ,
デストラクタ
属性(メンバ変数ともいう)
#include "Ball.h"
Ball::Ball( const double x, const double y ) : x( x ), y( y )
{
/* do nothing */
}
Ball::Ball( const Ball& ball ) : x( ball.x ), y( ball.y )
{
/* do nothing */
}
Ball& Ball::operator= (const Ball& ball )
{
this->x = ball.x;
this->y = ball.y;
return *this;
}
Ball::~Ball()
{
/* do nothing */
}
例題1
• クラス定義
• クラス定義には,属性定義,コ
ンストラクタ,デストラクタを
含める
4
Ball クラス
• Ball クラス
• Ball は,x, y という2つの属性から構成する
• クラス定義には,キーワード class を使用
5
位置
x
y
ソースコード
6
#pragma once
class Ball {
private:
double x, y;
public:
Ball( const double x, const double y );
Ball( const Ball& ball );
Ball& operator= ( const Ball& ball );
~Ball();
};
コンストラクタ,
デストラクタ
属性(メンバ変数ともいう)
ファイル名: Ball.h
ソースコード
7
#include "Ball.h"
Ball::Ball( const double x, const double y ) : x( x ), y( y )
{
/* do nothing */
}
Ball::Ball( const Ball& ball ) : x( ball.x ), y( ball.y )
{
/* do nothing */
}
Ball& Ball::operator= (const Ball& ball )
{
this->x = ball.x;
this->y = ball.y;
return *this;
}
Ball::~Ball()
{
/* do nothing */
}
ファイル名: Ball.cpp
Visual Studio 2019 C++ でのビルド結果例
8
オブジェクトの生成
• オブジェクトを生成するプログラム
9
b 3 4
x y
• クラス Ball のオブジェクト生成を行うプログラム
メソッド
• メソッドは,オブジェクトに属
する操作や処理のこと
• 引数(ひきすう)とは,メソッ
ドに渡す値のこと
• メソッドは,クラスに属する
• 属性やメソッドにアクセスするとき
は「.」や「->」を用いる
10
例題2
• メソッド定義
11
例題2.メソッド
• Ball の座標値から,原点までの距離を求めるメ
ソッド distance-to-0 を作り,実行する
• 演習1の Ball クラスを使用
12
ソースコード
13
#pragma once
class Ball {
private:
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;
};
コンストラクタ,
デストラクタ
属性(メンバ変数ともいう)
ファイル名: Ball.h
追加されたメソッド
ソースコード
14
#include "Ball.h"
#include <math.h>
Ball::Ball( const double x, const double y ) : x( x ), y( y )
{
/* do nothing */
}
Ball::Ball( const Ball& ball ) : x( ball.x ), y( ball.y )
{
/* do nothing */
}
Ball& Ball::operator= (const Ball& ball )
{
this->x = ball.x;
this->y = ball.y;
return *this;
}
Ball::~Ball()
{
/* do nothing */
}
double Ball::distance_to_0() const
{
return sqrt( ( this->x * this->x ) + ( this->y * this->y ) );
}
ファイル名: Ball.cpp
追加されたメソッド
ソースコード
15
#include <stdio.h>
#include "ball.h"
int main( int argc, char** argv )
{
Ball* b = new Ball( 3, 4 );
fprintf( stderr, "b->distance_to_0() = %fn", b->distance_to_0() );
delete b;
}
ファイル名: main.cpp
Visual Studio 2019 C++ での実行結果例
16
プログラムの実行結果が
表示されている
まとめ
• クラス定義の中には,属性の定義(属性名とデー
タ型),コンストラクタの定義,デストラクタの
定義,その他メソッドの定義を含める
• コンストラクタとは,オブジェクトの生成を行う
メソッドのことである.
• メソッドは,オブジェクトに属する操作や処理の
こと
• キーワード
class クラス定義
new コンストラクタの呼び出し
17
実習
18
問題
• Student クラスを定義しなさい.メンバ変数は次
の通り
int _age;
char _name[32];
19
解答例
20
#pragma once
class Student {
private:
int _age;
char _name[32];
public:
Student( const int age, const char name[32] );
Student( const Student& student );
Student& operator= (const Student& student );
~Student();
};
ファイル名: Student.h
解答例
21
#include <string.h>
#include "Student.h"
#pragma warning(disable:4996)
Student::Student( const int age, const char name[32] ) : _age( age )
{
strcpy( this->_name, name );
}
Student::Student( const Student& student ) : _age( student._age )
{
strcpy( this->_name, student._name );
}
Student& Student::operator= (const Student& student )
{
this->_age = student._age;
strcpy( this->_name, student._name );
return *this;
}
Student::~Student()
{
/* do nothing */
}
ファイル名: Student.cpp

More Related Content

More from kunihikokaneko1

cs-5. 人工知能の概要
cs-5. 人工知能の概要 cs-5. 人工知能の概要
cs-5. 人工知能の概要
kunihikokaneko1
 
cs-4. プログラミング入門
cs-4. プログラミング入門cs-4. プログラミング入門
cs-4. プログラミング入門
kunihikokaneko1
 
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックスcs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
kunihikokaneko1
 
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素 cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
kunihikokaneko1
 
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタcs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
kunihikokaneko1
 
mi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョンmi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョン
kunihikokaneko1
 
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
kunihikokaneko1
 
mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システム
kunihikokaneko1
 
mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習
kunihikokaneko1
 
mi-1. 人工知能の概要
mi-1. 人工知能の概要mi-1. 人工知能の概要
mi-1. 人工知能の概要
kunihikokaneko1
 

More from kunihikokaneko1 (20)

cs-5. 人工知能の概要
cs-5. 人工知能の概要 cs-5. 人工知能の概要
cs-5. 人工知能の概要
 
cs-4. プログラミング入門
cs-4. プログラミング入門cs-4. プログラミング入門
cs-4. プログラミング入門
 
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックスcs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
 
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素 cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
 
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタcs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
 
mi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョンmi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョン
 
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
 
mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システム
 
mi-5. ディープラーニング
mi-5. ディープラーニングmi-5. ディープラーニング
mi-5. ディープラーニング
 
mi-4. 機械学習
mi-4. 機械学習mi-4. 機械学習
mi-4. 機械学習
 
mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習
 
mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例
 
mi-1. 人工知能の概要
mi-1. 人工知能の概要mi-1. 人工知能の概要
mi-1. 人工知能の概要
 
kaneko202304.pptx
kaneko202304.pptxkaneko202304.pptx
kaneko202304.pptx
 
Coding Standards of C++ について
 Coding Standards of C++ について  Coding Standards of C++ について
Coding Standards of C++ について
 
Visual Studio 2013 の起動とプロジェクトの新規作成
Visual Studio 2013 の起動とプロジェクトの新規作成Visual Studio 2013 の起動とプロジェクトの新規作成
Visual Studio 2013 の起動とプロジェクトの新規作成
 
extern の意味
extern の意味extern の意味
extern の意味
 
cp-15. 疑似乱数とシミュレーション
cp-15. 疑似乱数とシミュレーションcp-15. 疑似乱数とシミュレーション
cp-15. 疑似乱数とシミュレーション
 
cp-14. ファイル処理
cp-14. ファイル処理cp-14. ファイル処理
cp-14. ファイル処理
 
cp-13. 構造体
cp-13. 構造体cp-13. 構造体
cp-13. 構造体
 

co-1. クラスとメソッド