« 私の婚約発表?! | Main | 夢のかけら »

2004.03.21

は~とデーターベース計画


楽しい曲を聴きたいときは楽しい曲を、静かな曲を聴きたいときは静かな曲を検索できるデーターベースプログラムをつくるぞ。

引き続きデーターを格納するクラスを作成中です。
今日はデーターをソートする機能を作りました。 ソート機能そのものは.NETでは配列型のオブジェクトに最初から備えられてます。
作るのは備え付けのソート機能からコールバックのように使われる大小を比較する部分です。

♥いろんなソートキーに対応したソート機能をつくる
曲の並び替えでは曲番号順、タイトル順、アーティスト順などいろんなソートのキーが考えられます。
そこで、比較機能を担当するクラスを作って、そこからソートキーを変えたクラスを派生させるという方法をとりました。


'
'heartDataBase派生クラス用 データソート用比較クラス データID順(基本クラス)
Public Class heartDataComparer
Implements System.Collections.IComparer
Public Overridable Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim xID As Int32 = CType(x, heartDataBase).ID
Dim yID As Int32 = CType(y, heartDataBase).ID
If xID < yID Then
Compare = -1
ElseIf yID < xID Then
Compare = 1
Else
Compare = 0
End If
End Function
End Class
'
'heartDataBase派生クラス用 データソート用比較クラス タイトル順
Public Class heartDataComparer_ByTitle
Inherits heartDataComparer
Public Overrides Function Compare(ByVal x As Object, ByVal y As Object) As Integer
Dim xM As heartDataMusic
Dim yM As heartDataMusic
Select Case x.GetType.FullName'型名によるデータ型チェック
Case "heartDatabaseIO.heartDataMusic"
xM = CType(x, heartDataMusic)
yM = CType(y, heartDataMusic)
Case "heartDatabaseIO.heartDataTrack"
xM = CType(x, heartDataTrack).music
yM = CType(y, heartDataTrack).music
Case Else
Compare = 0
Exit Function
End Select
Compare = String.Compare(xM.title, yM.title)
End Function
End Class


♥それらの使い方
Dim tracks As heartDataTrack()
...
'デフォルトのソート
tracks.Sort(mtracks, New heartDataComparer)
'タイトル順のソート
tracks.Sort(mtracks, New heartDataComparer_ByTitle)


« 私の婚約発表?! | Main | 夢のかけら »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/4052/333687

Listed below are links to weblogs that reference は~とデーターベース計画:

« 私の婚約発表?! | Main | 夢のかけら »