SlideShare a Scribd company logo
1 of 16
Download to read offline
© 2017 Embarcadero Technologies, Inc.
All rights reserved. Proprietary and confidential.
第7回
‟オブジェクト指向„
シーズン2:プログラミング言語をやさしく覚えよう
C++Builderの部
2© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
Delphi / C++Builder Starter チュートリアルシリーズ
シーズン2 :2017年1月23日 ~ 3月27日 全 9 回
時間 :毎週 月曜 17 時 00分~17時 50分
Delphi 17時00分~17時20分 / C++Builder 17時30分~17時50分
ねらい :プログラミング言語をやさしく覚えよう
シーズン2
第1回 2017年1月23日 シューティングゲームのプログラム
第2回 1月30日 変数と 型
第3回 2月6日 条件 とループ
第4回 2月13日 関数
第5回 2月20日 配列 と 構造体
第6回 2月27日 文字列 と オブジェクト
第7回 3月6日 オブジェクト指向
第8回 3月13日 作ってみよう(1)
第9回 3月27日 作ってみよう(2)
セミナー情報 : 下記のWebサイト
http://forms.embarcadero.com/starter-tutorial-webinar
3© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
第7回 「オブジェクト指向」
 今日のねらい
• クラス・オブジェクトの機能を知る
• 隠蔽、継承を知る
 実施内容
• 隠蔽、継承とはどんなものか
• 隠蔽する方法
• 継承する方法
• まつわるあれこれ
4© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
無料版 C++Builder 10.1 Berlin Starter Edition 入手方法
• シリアルキーを知らせるメール内にも再ダウンロードリンク有
• ダウンロード、インストール参考ブログ:https://goo.gl/CCBNdx
エンバ
Web
製品
C++
Builder
Starter
バナー
登録 Get
 無料で使える開発環境をダウンロード
EDN*に登録済の方はEDNアカウントでダウンロード可
登録完了後、自動でインストーラーのダウンロード開始
インストール時にシリアルキーを入力
登録時のメールアドレスにシリアルキーが配信される
5© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
オブジェクト指向とは?
 オブジェクト指向に対する考え方は諸説ありますが……
• データと操作の関係性を定義すること(クラス定義)
• すでに存在するオブジェクトの機能を流用できること(継承)
• 内部処理の複雑な部分は隠して、わかりやすく操作できるようにすること
(カプセル化)
• 異なるクラスに同じ操作を行ったときに、それぞれのクラスの機能に応じ
て適切な処理が行われること(ポリモーフィズム)
6© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
 それぞれの車種の基本構成がクラス定義。注文するとインスタンスが生成さ
れる。納品された現物がインスタンス。運転操作はメソッド。
車を買う場合の話を例にあげてみると
同じ車種でも実体が違う
車種Xの基本構成
= クラス定義
車種X(Aさんの注文)
= インスタンス
車種X(Bさんの注文)
= インスタンス
車種X(Cさんの注文)
= インスタンス
オプションを選んで
注文する
= インスタンスの生成
基本的な運
転操作方法
(メソッ
ド)は同じ
7© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
 オブジェクトの設計図
 型と操作が宣言、定義されている
クラスとは?
同じ車種でも実体が違う
車種Xの基本構成
= クラス
# メーカー名
# 車種
# 色
{ 運転方法 }
{ 施錠方法 }
{ メンテナンス }
車種X(Aさんの注文)
= インスタンス
車種X(Bさんの注文)
= インスタンス
車種X(Cさんの注文)
= インスタンス
オプションを選んで
注文する
= インスタンスの生成
基本的な操
作方法(メ
ソッド)は
同じ
8© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
 クラスにもとづいてオブジェクトを実体化したもの
 初期化条件が違えば同じクラスから異なる実体が生成される
インスタンスとは?
同じ車種でも実体が違う
車種Xの基本構成
= クラス
# メーカー名
# 車種
# 色
{ 運転方法 }
{ 施錠方法 }
{ メンテナンス }
車種X(Aさんの注文)
= インスタンス
車種X(Bさんの注文)
= インスタンス
車種X(Cさんの注文)
= インスタンス
オプションを選んで
注文する
= インスタンスの生成
基本的な操
作方法(メ
ソッド)は
同じ
9© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
 インスタンスに対する操作方法
 同じクラスなら実体が違っても操作方法は同じ
メソッドとは?
同じ車種でも実体が違う
車種Xの基本構成
= クラス
# メーカー名
# 車種
# 色
{ 運転方法 }
{ 施錠方法 }
{ メンテナンス }
車種X(Aさんの注文)
= インスタンス
車種X(Bさんの注文)
= インスタンス
車種X(Cさんの注文)
= インスタンス
オプションを選んで
注文する
= インスタンスの生成
基本的な操
作方法(メ
ソッド)は
同じ
10© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
 クラスやインスタンス(オブジェクト)の属性値
 処理の結果によらす不変の値と変化する値がある
プロパティとは?
同じ車種でも実体が違う
車種Xの基本構成
= クラス
# メーカー名
# 車種
# 色
{ 運転方法 }
{ 施錠方法 }
{ メンテナンス }
車種X(Aさんの注文)
= インスタンス
車種X(Bさんの注文)
= インスタンス
車種X(Cさんの注文)
= インスタンス
オプションを選んで
注文する
= インスタンスの生成
[ 変化しない値]
# メーカー名
# 車種
# 色
……
[変化する値]
# 積算走行距離
# 燃料の量
# 乗車人数
# 荷物の量
# 施錠状態
……
11© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
カプセル化?
 内部処理の複雑な部分を隠して、わかりやすく操作できるようにすること
 車(AT車)の運転で必要なことは「適切な速度にするためのアクセルやブレーキのコントロー
ル」と「ハンドル操作」
 「アクセル操作がどのようにエンジンを動かしているか」や「ハンドル操作がどのように
ホイールの向きを変えているか」の細かい話はあまり意識しなくともよい。(カプセル化
されているといえる)
 カプセル化された部分はクラスやインスタンスの外部からは操作させない
 private, protected, public 指定により、メンバの参照範囲を制限できる
同じクラス 派生クラス クラス外
public ○ ○ ○
protected ○ ○ ✕
private ○ ✕ ✕
12© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
クラスの定義方法によるメンバの見え方の違い
 クラスは class{} だけではなく、実は struct{} でも定義できる
• class{} と struct{} の違いはメンバの参照可能範囲の違い
 class{} で定義したクラスのメンバは、すべて private である
• protected や public で利用したいメンバは明示が必要
 struct{} で定義したクラスのメンバは、すべて public である
• protected や private で利用したいメンバは明示が必要
13© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
 すでに存在するクラス定義(基底クラス)をベースとして、そこから派生し
た別のクラス(派生クラス)を作ること
 基底クラスの型や操作は派生クラスに引き継がれる
 派生クラスでは新たなプロパティやメソッドを持つこともできる
class: 車種Xをベースにしたパトカー
継承とは?
class: 車種X
# 色
# 排気量・馬力
{ 運転操作 }
# パトカー専用の塗装
# 赤色回転灯
# 後部座席のドアロック
# 無線
# スピードレーダー
{ 回転灯の操作 }
{ 無線操作}
{ スピードレーダーの操作 }
14© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
オーバーライドとオーバーロード
 オーバーライド = 基底クラスのメソッドを派生クラスで上書きすること
 オーバーロード = 同じ名前の複数のメソッドが異なる引数や戻り値をとる
こと
 同じ名前のメソッドでクラスの機能に適した処理を実装できることを、ポリ
モーフィズムという
 例えば、[自動車]クラスと[オートバイ]クラスを new する操作は、生成され
るインスタンスの内容は当然異なるが、しかしインスタンスが生成されると
いう点では同じ
15© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
サンプルコード
 サンプルコードは下記のリポジトリに掲載いたします
• https://github.com/kazinoue/2017_StarterTutorial_S2
16© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp
第7回 「オブジェクト指向」まとめ
 今日のねらい
• クラス・オブジェクトの機能を知る
• 隠蔽、継承を知る
 実施内容
• 隠蔽、継承とはどんなものか
• 隠蔽する方法
• 継承する方法
• まつわるあれこれ

More Related Content

Viewers also liked

Practica 3 fundamento de la tecnologia y la comunicacion grupal
Practica 3 fundamento de la tecnologia y la comunicacion grupalPractica 3 fundamento de la tecnologia y la comunicacion grupal
Practica 3 fundamento de la tecnologia y la comunicacion grupal
Juan Hp
 

Viewers also liked (11)

Actualité des moteurs de recherche et du référencement (SEO & SEA) - Petit dé...
Actualité des moteurs de recherche et du référencement (SEO & SEA) - Petit dé...Actualité des moteurs de recherche et du référencement (SEO & SEA) - Petit dé...
Actualité des moteurs de recherche et du référencement (SEO & SEA) - Petit dé...
 
Dayana castrillon
Dayana castrillonDayana castrillon
Dayana castrillon
 
2017/02/04 WrodBench倉敷 第一回勉強会 StaticPress+S3で安全で落ちないサイトを作ろう
2017/02/04 WrodBench倉敷 第一回勉強会 StaticPress+S3で安全で落ちないサイトを作ろう2017/02/04 WrodBench倉敷 第一回勉強会 StaticPress+S3で安全で落ちないサイトを作ろう
2017/02/04 WrodBench倉敷 第一回勉強会 StaticPress+S3で安全で落ちないサイトを作ろう
 
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話
 
Redes de información
Redes de información Redes de información
Redes de información
 
Chronoscapeをカタチにした必然と偶然|UX & Service Sketch #26「0からのプロダクトの立ち上げ方」
Chronoscapeをカタチにした必然と偶然|UX & Service Sketch #26「0からのプロダクトの立ち上げ方」Chronoscapeをカタチにした必然と偶然|UX & Service Sketch #26「0からのプロダクトの立ち上げ方」
Chronoscapeをカタチにした必然と偶然|UX & Service Sketch #26「0からのプロダクトの立ち上げ方」
 
Practica 3 fundamento de la tecnologia y la comunicacion grupal
Practica 3 fundamento de la tecnologia y la comunicacion grupalPractica 3 fundamento de la tecnologia y la comunicacion grupal
Practica 3 fundamento de la tecnologia y la comunicacion grupal
 
My presentation
My presentationMy presentation
My presentation
 
人工知能と機械学習の違いって?
人工知能と機械学習の違いって?人工知能と機械学習の違いって?
人工知能と機械学習の違いって?
 
Preso1
Preso1Preso1
Preso1
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
 

Similar to 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第7回 ‟オブジェクト指向„

Similar to 【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第7回 ‟オブジェクト指向„ (15)

【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第1回 ‟シューティングゲームのプロ...
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】  シーズン2 Delphi の部 第1回 ‟シューティングゲームのプロ...【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】  シーズン2 Delphi の部 第1回 ‟シューティングゲームのプロ...
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第1回 ‟シューティングゲームのプロ...
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechcon
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第7回 「オブジェクト指向 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第7回 「オブジェクト指向 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第7回 「オブジェクト指向 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第7回 「オブジェクト指向 」
 
flow による型のある世界入門
flow による型のある世界入門flow による型のある世界入門
flow による型のある世界入門
 
Modeling by Verb
Modeling by VerbModeling by Verb
Modeling by Verb
 
[Japan Tech summit 2017] PRD 003
[Japan Tech summit 2017]  PRD 003[Japan Tech summit 2017]  PRD 003
[Japan Tech summit 2017] PRD 003
 
仙台IT文化祭(2017年) ユニバーサル windows プラッ トフォーム (uwp) アプリ開発概要
仙台IT文化祭(2017年) ユニバーサル windows プラッ トフォーム (uwp) アプリ開発概要仙台IT文化祭(2017年) ユニバーサル windows プラッ トフォーム (uwp) アプリ開発概要
仙台IT文化祭(2017年) ユニバーサル windows プラッ トフォーム (uwp) アプリ開発概要
 
Ibm watson api サービス
Ibm watson api サービスIbm watson api サービス
Ibm watson api サービス
 
Sharding with sql alchemy
Sharding with sql alchemySharding with sql alchemy
Sharding with sql alchemy
 
Microsoft Mixed Reality 元年
Microsoft Mixed Reality 元年Microsoft Mixed Reality 元年
Microsoft Mixed Reality 元年
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
 
データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係
データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係
データベースアプリケーション開発セミナー・最新のデータベースとアプリケーション開発の関係
 

【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第7回 ‟オブジェクト指向„

  • 1. © 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. 第7回 ‟オブジェクト指向„ シーズン2:プログラミング言語をやさしく覚えよう C++Builderの部
  • 2. 2© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp Delphi / C++Builder Starter チュートリアルシリーズ シーズン2 :2017年1月23日 ~ 3月27日 全 9 回 時間 :毎週 月曜 17 時 00分~17時 50分 Delphi 17時00分~17時20分 / C++Builder 17時30分~17時50分 ねらい :プログラミング言語をやさしく覚えよう シーズン2 第1回 2017年1月23日 シューティングゲームのプログラム 第2回 1月30日 変数と 型 第3回 2月6日 条件 とループ 第4回 2月13日 関数 第5回 2月20日 配列 と 構造体 第6回 2月27日 文字列 と オブジェクト 第7回 3月6日 オブジェクト指向 第8回 3月13日 作ってみよう(1) 第9回 3月27日 作ってみよう(2) セミナー情報 : 下記のWebサイト http://forms.embarcadero.com/starter-tutorial-webinar
  • 3. 3© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp 第7回 「オブジェクト指向」  今日のねらい • クラス・オブジェクトの機能を知る • 隠蔽、継承を知る  実施内容 • 隠蔽、継承とはどんなものか • 隠蔽する方法 • 継承する方法 • まつわるあれこれ
  • 4. 4© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp 無料版 C++Builder 10.1 Berlin Starter Edition 入手方法 • シリアルキーを知らせるメール内にも再ダウンロードリンク有 • ダウンロード、インストール参考ブログ:https://goo.gl/CCBNdx エンバ Web 製品 C++ Builder Starter バナー 登録 Get  無料で使える開発環境をダウンロード EDN*に登録済の方はEDNアカウントでダウンロード可 登録完了後、自動でインストーラーのダウンロード開始 インストール時にシリアルキーを入力 登録時のメールアドレスにシリアルキーが配信される
  • 5. 5© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp オブジェクト指向とは?  オブジェクト指向に対する考え方は諸説ありますが…… • データと操作の関係性を定義すること(クラス定義) • すでに存在するオブジェクトの機能を流用できること(継承) • 内部処理の複雑な部分は隠して、わかりやすく操作できるようにすること (カプセル化) • 異なるクラスに同じ操作を行ったときに、それぞれのクラスの機能に応じ て適切な処理が行われること(ポリモーフィズム)
  • 6. 6© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp  それぞれの車種の基本構成がクラス定義。注文するとインスタンスが生成さ れる。納品された現物がインスタンス。運転操作はメソッド。 車を買う場合の話を例にあげてみると 同じ車種でも実体が違う 車種Xの基本構成 = クラス定義 車種X(Aさんの注文) = インスタンス 車種X(Bさんの注文) = インスタンス 車種X(Cさんの注文) = インスタンス オプションを選んで 注文する = インスタンスの生成 基本的な運 転操作方法 (メソッ ド)は同じ
  • 7. 7© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp  オブジェクトの設計図  型と操作が宣言、定義されている クラスとは? 同じ車種でも実体が違う 車種Xの基本構成 = クラス # メーカー名 # 車種 # 色 { 運転方法 } { 施錠方法 } { メンテナンス } 車種X(Aさんの注文) = インスタンス 車種X(Bさんの注文) = インスタンス 車種X(Cさんの注文) = インスタンス オプションを選んで 注文する = インスタンスの生成 基本的な操 作方法(メ ソッド)は 同じ
  • 8. 8© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp  クラスにもとづいてオブジェクトを実体化したもの  初期化条件が違えば同じクラスから異なる実体が生成される インスタンスとは? 同じ車種でも実体が違う 車種Xの基本構成 = クラス # メーカー名 # 車種 # 色 { 運転方法 } { 施錠方法 } { メンテナンス } 車種X(Aさんの注文) = インスタンス 車種X(Bさんの注文) = インスタンス 車種X(Cさんの注文) = インスタンス オプションを選んで 注文する = インスタンスの生成 基本的な操 作方法(メ ソッド)は 同じ
  • 9. 9© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp  インスタンスに対する操作方法  同じクラスなら実体が違っても操作方法は同じ メソッドとは? 同じ車種でも実体が違う 車種Xの基本構成 = クラス # メーカー名 # 車種 # 色 { 運転方法 } { 施錠方法 } { メンテナンス } 車種X(Aさんの注文) = インスタンス 車種X(Bさんの注文) = インスタンス 車種X(Cさんの注文) = インスタンス オプションを選んで 注文する = インスタンスの生成 基本的な操 作方法(メ ソッド)は 同じ
  • 10. 10© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp  クラスやインスタンス(オブジェクト)の属性値  処理の結果によらす不変の値と変化する値がある プロパティとは? 同じ車種でも実体が違う 車種Xの基本構成 = クラス # メーカー名 # 車種 # 色 { 運転方法 } { 施錠方法 } { メンテナンス } 車種X(Aさんの注文) = インスタンス 車種X(Bさんの注文) = インスタンス 車種X(Cさんの注文) = インスタンス オプションを選んで 注文する = インスタンスの生成 [ 変化しない値] # メーカー名 # 車種 # 色 …… [変化する値] # 積算走行距離 # 燃料の量 # 乗車人数 # 荷物の量 # 施錠状態 ……
  • 11. 11© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp カプセル化?  内部処理の複雑な部分を隠して、わかりやすく操作できるようにすること  車(AT車)の運転で必要なことは「適切な速度にするためのアクセルやブレーキのコントロー ル」と「ハンドル操作」  「アクセル操作がどのようにエンジンを動かしているか」や「ハンドル操作がどのように ホイールの向きを変えているか」の細かい話はあまり意識しなくともよい。(カプセル化 されているといえる)  カプセル化された部分はクラスやインスタンスの外部からは操作させない  private, protected, public 指定により、メンバの参照範囲を制限できる 同じクラス 派生クラス クラス外 public ○ ○ ○ protected ○ ○ ✕ private ○ ✕ ✕
  • 12. 12© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp クラスの定義方法によるメンバの見え方の違い  クラスは class{} だけではなく、実は struct{} でも定義できる • class{} と struct{} の違いはメンバの参照可能範囲の違い  class{} で定義したクラスのメンバは、すべて private である • protected や public で利用したいメンバは明示が必要  struct{} で定義したクラスのメンバは、すべて public である • protected や private で利用したいメンバは明示が必要
  • 13. 13© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp  すでに存在するクラス定義(基底クラス)をベースとして、そこから派生し た別のクラス(派生クラス)を作ること  基底クラスの型や操作は派生クラスに引き継がれる  派生クラスでは新たなプロパティやメソッドを持つこともできる class: 車種Xをベースにしたパトカー 継承とは? class: 車種X # 色 # 排気量・馬力 { 運転操作 } # パトカー専用の塗装 # 赤色回転灯 # 後部座席のドアロック # 無線 # スピードレーダー { 回転灯の操作 } { 無線操作} { スピードレーダーの操作 }
  • 14. 14© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp オーバーライドとオーバーロード  オーバーライド = 基底クラスのメソッドを派生クラスで上書きすること  オーバーロード = 同じ名前の複数のメソッドが異なる引数や戻り値をとる こと  同じ名前のメソッドでクラスの機能に適した処理を実装できることを、ポリ モーフィズムという  例えば、[自動車]クラスと[オートバイ]クラスを new する操作は、生成され るインスタンスの内容は当然異なるが、しかしインスタンスが生成されると いう点では同じ
  • 15. 15© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp サンプルコード  サンプルコードは下記のリポジトリに掲載いたします • https://github.com/kazinoue/2017_StarterTutorial_S2
  • 16. 16© 2017 Embarcadero Technologies, Inc. All rights reserved. Proprietary and confidential. #embtwebi_jp 第7回 「オブジェクト指向」まとめ  今日のねらい • クラス・オブジェクトの機能を知る • 隠蔽、継承を知る  実施内容 • 隠蔽、継承とはどんなものか • 隠蔽する方法 • 継承する方法 • まつわるあれこれ