郵便番号マスターデータ基本クラス・派生クラス
クラス(拡張子.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