Объясните работу с интерфейсами в данном примере - C#

Узнай цену своей работы

Формулировка задачи:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Observer
{
    
    class Program
    {
        static void Main(string[] args)
        {
            Stock stock = new Stock();    //   фонд
            Bank bank = new Bank("ЮнитБанк", stock);
            Broker broker = new Broker("Иван Иваныч", stock);
            // имитация торгов
            stock.Market();
            // брокер прекращает наблюдать за торгами
            broker.StopTrade();
            // имитация торгов
            stock.Market();
 
            Console.Read();
        }
    }
 
    interface IObserver
    {
        void Update(Object ob);
    }
 
    interface IObservable
    {
        void RegisterObserver(IObserver o);
        void RemoveObserver(IObserver o);
        void NotifyObservers();
    }
 
    class Stock : IObservable
    {
        StockInfo sInfo;    // информация о торгах
        List<IObserver> observers;
 
        public Stock()      //  конструктор
        {
            observers = new List<IObserver>();
            sInfo = new StockInfo();
        }
 
        public void RegisterObserver(IObserver o)   //  метод
        {
            observers.Add(o);
        }
 
        public void RemoveObserver(IObserver o)
        {
            observers.Remove(o);
        }
 
        public void NotifyObservers()    // регистрировать
        {
            foreach (IObserver o in observers)   
            {
                o.Update(sInfo);  
                                  
            }
        }
 
        public void Market()
        {
            
            Random rnd = new Random();
            sInfo.USD =  rnd.Next(20, 40);
            sInfo.Euro = rnd.Next(30, 50);
            NotifyObservers();
        }
    }
 
    class StockInfo
    {
        public int USD;      //{ get; set; }
        public int Euro;     //{ get; set; }
    }
 
    class Broker : IObserver
    {
        public string Name { get; set; }
        IObservable stock;
 
        public Broker(string name, IObservable obs)
        {
            this.Name = name;
            stock = obs;
            stock.RegisterObserver(this);
        }
 
        public void Update(object ob)
        {
            StockInfo sInfo = (StockInfo)ob;
 
            if (sInfo.USD > 30)
                Console.WriteLine("Брокер {0} продает доллары;  Курс доллара: {1}", this.Name, sInfo.USD);
            else
                Console.WriteLine("Брокер {0} покупает доллары;  Курс доллара: {1}", this.Name, sInfo.USD);
        }
 
        public void StopTrade()  
        {
            stock.RemoveObserver(this);
            stock = null;
        }
    }
 
    class Bank : IObserver
    {
        public string Name { get; set; }
        IObservable stock;
 
        public Bank(string name, IObservable obs)
        {
            this.Name = name;
            stock = obs;
            stock.RegisterObserver(this);
        }
 
        public void Update(object ob)
        {
            StockInfo sInfo = (StockInfo)ob;
 
            if (sInfo.Euro > 40)
                Console.WriteLine("Банк {0} продает евро;  Курс евро: {1}", this.Name, sInfo.Euro);
            else
                Console.WriteLine("Банк {0} покупает евро;  Курс евро: {1}", this.Name, sInfo.Euro);
        }
    }
}
Здравствуйте ! Подскажите пожалуйста , в этой программе (программа рабочая ) , не пойму откуда берется (как формируется) значение о в 34,35,52,57,62 строках ?

Решение задачи: «Объясните работу с интерфейсами в данном примере»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Observer
{
    
    class Program
    {
        static void Main(string[] args)
        {
            Stock stock = new Stock();    //   фонд
            Bank bank = new Bank("ЮнитБанк", stock);
            Broker broker = new Broker("Иван Иваныч", stock);
            // имитация торгов
            stock.Market();
            // брокер прекращает наблюдать за торгами
            broker.StopTrade();
            // имитация торгов
            stock.Market();
 
            Console.Read();
        }
    }
 
    interface IObserver
    {
        void Update(Object ob);
    }
 
    interface IObservable
    {
        void RegisterObserver(IObserver o);
        void RemoveObserver(IObserver o);
        void NotifyObservers();
    }
 
    class Stock : IObservable
    {
        StockInfo sInfo;    // информация о торгах
        List<IObserver> observers;
 
        public Stock()      //  конструктор
        {
            observers = new List<IObserver>();
            sInfo = new StockInfo();
        }
 
        public void RegisterObserver(IObserver o)   //  метод
        {
            observers.Add(o);
        }
 
        public void RemoveObserver(IObserver o)
        {
            observers.Remove(o);
        }
 
        public void NotifyObservers()    // регистрировать
        {
            foreach (IObserver o in observers)   
            {
                o.Update(sInfo);  
                                  
            }
        }
 
        public void Market()
        {
            
            Random rnd = new Random();
            sInfo.USD =  rnd.Next(20, 40);
            sInfo.Euro = rnd.Next(30, 50);
            NotifyObservers();
        }
    }
 
    class StockInfo
    {
        public int USD;      //{ get; set; }
        public int Euro;     //{ get; set; }
    }
 
    class Broker : IObserver
    {
        public string Name { get; set; }
        IObservable stock;
 
        public Broker(string name, IObservable obs)
        {
            this.Name = name;
            stock = obs;
            stock.RegisterObserver(this);
        }
 
        public void Update(object ob)
        {
            StockInfo sInfo = (StockInfo)ob;
 
            if (sInfo.USD > 30)
                Console.WriteLine("Брокер {0} продает доллары;  Курс доллара: {1}", this.Name, sInfo.USD);
            else
                Console.WriteLine("Брокер {0} покупает доллары;  Курс доллара: {1}", this.Name, sInfo.USD);
        }
 
        public void StopTrade()  
        {
            stock.RemoveObserver(this);
            stock = null;
        }
    }
 
    class Bank : IObserver
    {
        public string Name { get; set; }
        IObservable stock;
 
        public Bank(string name, IObservable obs)
        {
            this.Name = name;
            stock = obs;
            stock.RegisterObserver(this);
        }
 
        public void Update(object ob)
        {
            StockInfo sInfo = (StockInfo)ob;
 
            if (sInfo.Euro > 40)
                Console.WriteLine("Банк {0} продает евро;  Курс евро: {1}", this.Name, sInfo.Euro);
            else
                Console.WriteLine("Банк {0} покупает евро;  Курс евро: {1}", this.Name, sInfo.Euro);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы