ドット構文の使用
TicketOrder オブジェクトの Total プロパティを設定する必要があります。これは注文したチケットの合計金額を保存します。これは、“ドット” 構文を使用して、1 つのオブジェクトから他のオブジェクトに参照を続けることが、いかに簡単かを示します。以下はその例です。
itm.Show.Theater.AdultPrice
上記の構文は、TicketItem オブジェクトから開始し、Show オブジェクトを参照し、Show オブジェクトから大人用チケットの料金を取得するために Theater オブジェクトに参照を継続します。
この新しい注文項目の料金を計算するために、ドット構文を使用します (大人用チケット購入枚数×大人用チケット料金+子供用チケット購入枚数×子供用チケット料金)。そして料金を合計に追加します (AdultTickets と ChildTickets の値がどこからくるのか不思議に思うかもしれません。このアプリケーションの設計では、それらの値はユーザが指定するものではありません。代わりに、TicketItem クラス定義で指定された既定を使用します。この定義は、必要に応じて変更できます)。
Quit 文でメソッドを終了します。
Utils.AddShow
ClassMethod AddShow(ShowID As %String)
{
// Use an existing Order object or create a new one
If ($data(%session.Data("Order"))) {
Set ord = ##class(Cinema.TicketOrder).%OpenId(%session.Data("Order"))
}
Else {
Set ord = ##class(Cinema.TicketOrder).%New()
}
// Create a new TicketItem object
Set itm = ##class(Cinema.TicketItem).%New()
// Connect to a Show object
Set shw = ##class(Cinema.Show).%OpenId(ShowID)
Set itm.Show = shw
// Connect to the Order object
Set itm.TicketOrder = ord
// Add the cost of this new item to the total
Set ord.Total = ord.Total
+ (itm.AdultTickets * itm.Show.Theater.AdultPrice)
+ (itm.ChildTickets * itm.Show.Theater.ChildPrice)
// Save incomplete order and remember its Id in %session.
Do ord.%Save()
Set %session.Data("Order") = ord.%Id()
Quit
}