【C++Builder Starter チュートリアルシリーズ】シーズン2 第7回 ‟オブジェクト指向„ [JAPAN]

Posted by on in Blogs

【C++Builder Starter チュートリアルシリーズ】シーズン2 第7回 ‟オブジェクト指向„ [JAPAN]

C++Builder Starter Edition シーズン2 第7回 ‟オブジェクト指向„

2017年1月23日より 「Delphi / C++Builder Starter チュートリアルシリーズ」 シーズン2、全9回、3月27日まで、毎週月曜日、Delphiパートが 17時00分~17時20分、 リアルタイム放送スペシャルコンテンツが5分~10分、C++Builderパートは 17時30分~17時50分の時間割でお送りしています。(なお、後述いたしますが、残り2週分の放送はDelphi/C++Builderの2部制ではありません

無料でダウンロード&利用できる開発環境のDelphi / C++Builder Starter エディションを使用して、プログラミング言語のDelphi (Object Pascal ), C++の基礎を学ぶオンラインセッションです。

https://community.embarcadero.com/blogs/entry/2-japan

サマリ

アジェンダ

  • 今日のねらい
    • クラス・オブジェクトの機能を知る
    • 隠蔽、継承を知る
  • 実施内容
    • 隠蔽、継承とはどんなものか
    • 隠蔽する方法
    • 継承する方法
    • まつわるあれこれ

スライド資料

https://www.slideshare.net/ssuser8bd3f7/cbuilder-starter-2-cbuilder-7

実施内容

オブジェクト指向とは?

オブジェクト指向に対する考え方は諸説ありますが……

  • データと操作の関係性を定義すること(クラス定義)
  • すでに存在するオブジェクトの機能を流用できること(継承)
  • 内部処理の複雑な部分は隠して、わかりやすく操作できるようにすること(カプセル化)
  • 異なるクラスに同じ操作を行ったときに、それぞれのクラスの機能に応じて適切な処理が行われること(ポリモーフィズム)

車を買う場合の話を例にあげてみると

それぞれの車種の基本構成がクラス定義。注文するとインスタンスが生成される。納品された現物がインスタンス。運転操作はメソッド。

クラスとは?

  • オブジェクトの設計図
  • 型と操作が宣言、定義されている

インスタンスとは?

  • クラスにもとづいてオブジェクトを実体化したもの
  • 初期化条件が違えば同じクラスから異なる実体が生成される

メソッドとは?

  • インスタンスに対する操作方法
  • 同じクラスなら実体が違っても操作方法は同じ

プロパティとは?

  • クラスやインスタンス(オブジェクト)の属性値
  • 処理の結果によらす不変の値と変化する値がある

カプセル化?

  • 内部処理の複雑な部分を隠して、わかりやすく操作できるようにすること
  • 車(AT車)の運転で必要なことは「適切な速度にするためのアクセルやブレーキのコントロール」と「ハンドル操作」
  • 「アクセル操作がどのようにエンジンを動かしているか」や「ハンドル操作がどのようにホイールの向き を変えているか」の細かい話はあまり意識しなくともよい。(カプセル化されているといえる)
  • カプセル化された部分はクラスやインスタンスの外部からは操作させない
  • private, protected, public 指定により、メンバの参照範囲を制限できる

クラスの定義方法によるメンバの見え方の違い

  • クラスは class{} だけではなく、実は struct{} でも定義できる

    • class{} と struct{} の違いはメンバの参照可能範囲の違い
  • class{} で定義したクラスのメンバは、すべて private である

    • protected や public で利用したいメンバは明示が必要
  • struct{} で定義したクラスのメンバは、すべて public である

    • protected や private で利用したいメンバは明示が必要

継承とは?

  • すでに存在するクラス定義(基底クラス)をベースとして、そこから派生した別のクラス(派生クラス)を作ること
    • 基底クラスの型や操作は派生クラスに引き継がれる
    • 派生クラスでは新たなプロパティやメソッドを持つこともできる

オーバーライドとオーバーロード

  • オーバーライド = 基底クラスのメソッドを派生クラスで上書きすること
  • オーバーロード = 同じ名前の複数のメソッドが異なる引数や戻り値をとること

サンプルコード

https://github.com/kazinoue/2017_StarterTutorial_S2

セミナー動画

チュートリアルセミナー視聴ページにて、シーズン2の放送分を視聴できるようにしています。チュートリアルシリーズに申し込み済みの方はメールにてご案内済みの視聴ページよりご視聴ください。まだ申し込んでいない方は下記アドレスよりお申込みいただくと視聴できます。

http://forms.embarcadero.com/starter-tutorial-webinar

また、シーズン1の放送分は youtube の下記ページよりご視聴いただけます。

https://www.youtube.com/playlist?list=PLoQxxVNY10oEmNSjiPdYPV_E9IL9ipico

シーズン1のまとめ記事もございますので、こちらも併せてお読みください。

https://community.embarcadero.com/blogs/entry/delphi-c-builder-starter-japan

■残り2週となった Starter チュートリアルシリーズですが、シーズン2の締めとして “作ってみよう„ をお送りします。来週3月13日(月)は Delphiパートのみの放送となります。C++Builderパートは2週間後の3月20日(月)は祝日ですので1週とばして3週間後の3月27日(月)17:00の放送となります。放映日、時間が変わることにご注意ください。



About
Gold User, No rank,
Sales Consultant at Embarcadero Technologies, in Japan.

Comments

Check out more tips and tricks in this development video: