3−1

  • 構造化設計の問題点:プログラムの再使用が難しい?

(例)図3-1の「処理1→データ1→処理2→データ2→処理3」を作成した後、新しく作る他のプログラムで処理2と同じことをする場面が出てきても、処理2を単純に使い回しできない。
(処理2にはデータ1と同じ項目や値を必要とするから、その部分を新しいプログラム用に修正して使う必要がある、など)

 

 3−2

※この段では実際に操作せずテキスト内容のみで見る。ちょっと紛らわしい。

オブジェクト

  • プロパティ:データ(値)

  • メソッド:処理
    ※コントロール:LabelやMessageBoxなど

イベント:何かしらかのアクションによるもの→きっかけ
イベントハンドラ:イベントがあった時に実際に行うメソッド(処理)

 

 3−3

 Windowsフォームもツールボックスもクラス?

Windowsフォーム:2章で作成した「Form1」
ツールボックス:VisualStudioのツールボックス(右)のこと

 クラスとインスタンス

  • クラス:形而上学・見本・ベース
  • インスタンス:形而下学・実体・個別のもの
    gcnewキーワードで作成する。

 ポインタとトラッキングハンドルの違い(ちょっと脱線)
 http://adversaria-june.blogspot.com/2006/08/ccli_27.html

  • 相違点:ポインタは演算ができるが、トラッキングハンドルは演算ができない。

  • 共通点:
    実体を返す時 *p
    アドレスで参照しているインスタンスのメンバに、実体にしてからアクセスする時 (*p).member
    アドレスで参照しているインスタンスのメンバに、アロー演算子でアクセスする時 p->member

 

 3−4

 

 3−5

 ※3−3のAnimalクラスとは異なるので注意!
 this:自分のクラスを指す

 

 3−6

 ※サンプルコードだけでは何もおきない。あくまでもポリモーフィズムの説明のためのプログラム。

 

 3−7

 

 3−8

 ※一部脱線

  • .Netでは多重継承はダメ。←→C++には多重継承はある。

  • クラスにInterfaceというキーワードをつける←→C++ではないので純粋仮想関数を使う。

  • インターフェースの作成:メンバ関数のみ、メンバ変数は定義しない。
    メンバ関数の定義 仮想関数 : virtual 型名 関数名
     →仮想だから定義がない→定義がないからインスタンス(実体化)できない。