同じ商品が5台の陳列棚(Shelf クラス)に並べられています。お客さん(Customer クラス)は陳列棚から商品を購入します。
そして、売り場主任(Manager クラス)は、どの陳列棚でも商品がなくなったら、一番商品がたくさんある陳列棚から商品の半分を補充します。
陳列棚(Shelf クラス)や売り場主任(Manager クラス)を作成しなさい。
ただし、Shelf クラスはどのクラスからでも利用できるようにし、このクラスでは結果を表示しないようにしなさい(表示は売り場主任である Manager クラスで行います)。
陳列棚Bに陳列棚Eから25個商品を補充しました。 陳列棚Cに陳列棚Eから11個商品を補充しました。 陳列棚Cに陳列棚Bから8個商品を補充しました。 陳列棚Eに陳列棚Cから4個商品を補充しました。 陳列棚Bに陳列棚Aから3個商品を補充しました。 陳列棚Aに陳列棚Cから2個商品を補充しました。 陳列棚Dに陳列棚Eから2個商品を補充しました。 陳列棚Dに陳列棚Bから1個商品を補充しました。 陳列棚Bに陳列棚Aから1個商品を補充しました。 陳列棚Aに陳列棚Cから1個商品を補充しました。 陳列棚Dは売り切れました。 陳列棚Cは売り切れました。 陳列棚Eは売り切れました。 陳列棚Aは売り切れました。 すべて売り切れました。
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
売り切れを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにしますが、Shelf クラスに Manager クラス型の変数を記述してしまっては他のクラスから利用できなくなってしまいます。
どのクラスからでも利用できるようにするには、Notification クラスを抽象クラスとして作成し、それを継承したサブクラスとして Manager クラスを作成します。そして、Shelf クラスには、その抽象クラス型の変数を宣言します。
Notification クラスのコードを見ますか?
Manager クラスは Notification クラスを継承します。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントしますが、Javascript は、インタフェースがないのでクラスとして作成します。Shelf クラスには、INotification クラスを継承したクラスのインスタンスを持つ変数を宣言します。
INotification クラスのコードを見ますか?
Manager クラスは INotification クラスを継承します。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントしますが、Perl は、インタフェースがないのでクラスとして作成します。Shelf クラスには、INotification クラスを継承したクラスのインスタンスを持つ変数を宣言します。
INotification クラスのコードを見ますか?
Manager クラスは INotification クラスを継承します。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントしますが、Ruby は、インタフェースがないのでクラスとして作成します。Shelf クラスには、INotification クラスを継承したクラスのインスタンスを持つ変数を宣言します。
INotification クラスのコードを見ますか?
Manager クラスは INotification クラスを継承します。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントしますが、Python は、インタフェースがないのでクラスとして作成します。Shelf クラスには、INotification クラスを継承したクラスのインスタンスを持つ変数を宣言します。
INotification クラスのコードを見ますか?
Manager クラスは INotification クラスを継承します。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
Customer インスタンスは Manager インスタンスとは別のスレッドで実行されています。そして、それらから同じ $shelfList を参照しているのですが、なぜか共有されません。
そこで、Shelf インスタンス内で共有メモリを生成し、その中に商品数を持つようにしています。
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?
商品が売れたことを Manager クラスに通知するために、Shelf クラスから Manager クラスのメソッドを呼び出すようにします。
また、どのクラスからでも利用できるようにするには、インタフェース(INotification)を作成しフォームでそれをインプリメントします。Shelf クラスには、そのインタフェース型の変数を宣言します。
INotification インタフェースのコードを見ますか?
Manager クラスは INotification インタフェースをインプリメントします。
また、陳列棚に商品を補充する必要があるため、コンストラクタで、shelfList のインスタンスを受け取るように記述します。
Manager クラスのコード(一部)を見ますか?
本当に見ますか?