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 型名 関数名
→仮想だから定義がない→定義がないからインスタンス(実体化)できない。