派生クラスも抽象クラス
社員データ管理基本クラスから派生した社員データ選択更新削除クラスを作成します。この派生クラスも抽象クラスにします。
社員データ派生選択更新削除クラス
基本クラスで実装しなかった社員コードプロパティーを実装するクラスです(クラス図のオレンジ色)。
この派生クラスも抽象クラスなので、インスタンスを生成しません。したがってMustInheritキーワードを付加する必要があります。
インスタンスを生成しないので、コンストラクタに、Protected修飾子を明示します。実装しなくても問題はありません。
- コンストラクタの中で、社員マスターレコード取得メソッドを呼び出して、社員氏名など社員データを内部変数メンバーに保存
- ReadOnlyの社員コードプロパティーを実装し、このプロパティから社員コードを取得
サンプルプログラム
ソースリストの枠内をクリックすると全選択できます。
>Option Strict On Imports System.Text.RegularExpressions '////////// 基本クラス:社員データクラス ////////// Public MustInherit Class ClsShainBase '<< ◆ソースリストはこちら◆ >> End Class '//////// サブ抽象クラス:社員データ選択更新削除クラス //////// Public MustInherit Class ClsShainSub Inherits ClsShainBase '======================================================= ' 機能:コンストラクタ ' 引数:なし '======================================================= Protected Sub New() MyBase.New() ' 基本クラスのコンストラクタを呼び出す End Sub '======================================================= ' 機能:コンストラクタ ' 引数:社員コード '======================================================= Protected Sub New(ByVal shainCode As String) MyBase.New() ' 基本クラスのコンストラクタを呼び出す ' ---<< 社員テーブルからレコード取得 >>--- Dim shainTable As New ClsShainTableIO Dim dt As DataTable ' レコード取得メソッド呼出 dt = shainTable.GetKeyData(shainCode) If dt.Rows.Count = 1 Then ' レコードがあった時 MyBase.ShainCodeValue = shainCode MyBase.ShainShimei = CStr(dt.Rows(0)("社員氏名")) MyBase.ShainKana = CStr(dt.Rows(0)("社員カナ")) MyBase.BushoCode = CStr(dt.Rows(0)("部署コード")) MyBase.KoushinNichijiValue = _ CDate(dt.Rows(0)("更新日時")) Else ' レコードが無かった時 Throw New myShainCodeException _ ("社員テーブルにレコードがありません") End If End Sub '-------------------------------------------------------- ' プロパティ:社員コード '-------------------------------------------------------- Public ReadOnly Property ShainCode() As String ' Getプロパティ Get Return shainCodeValue End Get End Property End Class