郵便番号マスターデータ基本クラス・派生クラス
クラス(拡張子.vb)をプロジェクトに追加して、ファイル名をClsYubinBangoに変更。このクラスファイルに郵便番号データ基本クラスとその派生クラスを実装します。
【基本クラスメンバー】
基本クラス(基底クラス)ClsYubinBangoBase は抽象クラスにするので、コンストラクタを実装しません。
基本クラスClsYubinBangoBaseには、郵便番号マスター表アクセスの共通メンバーを実装します。
- 定数メンバー:郵便番号マスター表、郵便番号
- 変数メンバー:郵便番号、都道府県名、市区町村名、町域名
- プロパティ:郵便番号、都道府県名、市区町村名、町域名
- メソッド:郵便番号エラーチェックメソッド
【派生クラスメンバー】
基本クラス(基底クラス)ClsYubinBangoBase を派生した ClsYubinBango クラスには、郵便番号マスター表の選択・更新・削除処理に必要な共通メンバーを実装します。
このクラスは、販売管理データベースアクセスクラスのメソッドを呼出しますが、このクラスで郵便番号マスターをアクセスするメソッドを実装する必要はありません。
- コンストラクタ
- プロパティ:読取専用の郵便番号
ソースリスト
Option Strict On Imports System.Text.RegularExpressions Imports System.Data ' DataTable型 '////////// 基本クラス:郵便番号データクラス ////////// Public MustInherit Class ClsYubinBangoBase '----------<< メンバー:定数>>---------- ' 定数は大文字英数で宣言 Protected Const TABLE_NAME As String = "郵便番号マスター表" Protected Const KEY_FIELD As String = "郵便番号" '----------<< メンバー:変数>>---------- Protected yBangoValue As String ' 郵便番号 Protected tMeiValue As String ' 都道府県名 Protected sMeiValue As String ' 市区町村名 Protected cMeiValue As String ' 町域名 '-------------------------------------------------------- ' プロパティ:都道府県名 '-------------------------------------------------------- Public Property TodofukenMei() As String ' Getプロパティ Get Return tMeiValue End Get ' Setプロパティ Set(ByVal tMei As String) ' 【エラーチェック】 If tMeiValue.Length = 0 Then ' 未入力ならば例外スロー Dim msg = "都道府県名が未入力です" Throw New TodofukenMeiException(msg) Else tMeiValue = tMei End If End Set End Property '-------------------------------------------------------- ' プロパティ:市区町村名 '-------------------------------------------------------- Public Property ShikuchosonMei() As String ' Getプロパティ Get Return sMeiValue End Get ' Setプロパティ Set(ByVal sMei As String) ' 【エラーチェック】 If sMeiValue.Length = 0 Then ' 未入力ならば例外スロー Dim msg = "市区町村名が未入力です" Throw New ShikuchosonMeiException(msg) Else sMeiValue = sMei End If End Set End Property '-------------------------------------------------------- ' プロパティ:町域名 '-------------------------------------------------------- Public Property ChoikiMei() As String ' Getプロパティ Get Return cMeiValue End Get ' Setプロパティ Set(ByVal cMei As String) ' 【エラーチェック】 If cMeiValue.Length = 0 Then ' 未入力ならば例外スロー Dim msg = "住所が未入力です" Throw New ChoikiMeiException(msg) Else cMeiValue = cMei End If End Set End Property '******************************************************* ' 機能:郵便番号エラーチェックメソッド(プロシ-ジャ) ' 引数:郵便番号 ' 戻値:なし ' 補足:エラーがあれば例外をスロー '******************************************************* Protected Sub CheckYubinBango(yBango As String) ' 引数設定チェック If yBango.Length = 0 Then Dim msg = "郵便番号が未入力です" Throw New YubinBangoException(msg) End If ' 数字以外はエラー If Not Regex.IsMatch(yBango, "^[0-9]+$") Then Dim msg = "郵便番号に数字以外の文字があります" Throw New YubinBangoException(msg) End If ' 郵便番号長さチェック(7桁以外はエラー) If Not yBango.Length = 7 Then Dim msg = "郵便番号の桁数が正しくありません" Throw New YubinBangoException(msg) End If End Sub End Class '//////// 派生クラス:郵便番号選択更新削除クラス //////// Public Class ClsYubinBango Inherits ClsYubinBangoBase '======================================================= ' 機能:コンストラクタ ' 引数:郵便番号 '======================================================= Public Sub New(ByVal yBango As String) MyBase.New() ' 基本クラスのコンストラクタを呼び出す ' 郵便番号コードエラーチェック CheckYubinBango(yBango) ' 郵便番号マスター表からレコード取得 Dim dbIO As New ClsYubinBangoTableIO( _ TABLE_NAME, KEY_FIELD, yBango) Dim dt As DataTable = dbIO.GetRowsData() If dt.Rows.Count = 1 Then ' レコードがあった時 yBangoValue = yBango ' 郵便番号 tMeiValue = CStr(dt.Rows(0)("都道府県名")) sMeiValue = CStr(dt.Rows(0)("市区町村名")) cMeiValue = CStr(dt.Rows(0)("町域名")) Else ' レコードが無かった時 Dim msg = "郵便番号マスター表にレコードがありません" Throw New YubinBangoException(msg) End If End Sub '-------------------------------------------------------- ' プロパティ:郵便番号コード(読取専用) '-------------------------------------------------------- Public ReadOnly Property YubinBango() As String ' Getプロパティ Get Return yBangoValue End Get End Property End Class