Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ドット構文の使用

TicketOrder オブジェクトの Total プロパティを設定する必要があります。これは注文したチケットの合計金額を保存します。これは、“ドット” 構文を使用して、1 つのオブジェクトから他のオブジェクトに参照を続けることが、いかに簡単かを示します。以下はその例です。

itm.Show.Theater.AdultPrice

上記の構文は、TicketItem オブジェクトから開始し、Show オブジェクトを参照し、Show オブジェクトから大人用チケットの料金を取得するために Theater オブジェクトに参照を継続します。

この新しい注文項目の料金を計算するために、ドット構文を使用します (大人用チケット購入枚数×大人用チケット料金+子供用チケット購入枚数×子供用チケット料金)。そして料金を合計に追加します (AdultTicketsChildTickets の値がどこからくるのか不思議に思うかもしれません。このアプリケーションの設計では、それらの値はユーザが指定するものではありません。代わりに、TicketItem クラス定義で指定された既定を使用します。この定義は、必要に応じて変更できます)。

Quit 文でメソッドを終了します。

—Utils.AddShow—
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
}
FeedbackOpens in a new tab