Применение интерфейса - C#
Формулировка задачи:
есть код
17-22, 32 строчки.
Объясните плиз, зачем нам создавать calculator типа IValueCalculator ( что нам это даёт ? )
и зачем создавать public ShoppingCart, который берёт в качестве параметра любой объект типа IValueCalculator, если мы его нигде не используем. Судя по логике кода, мы Интерфейсу присвоили значение объекта интерфейса, как так?
как по имени calculator мы вызвали в нем метод ValueProduct? почему нельзя было вместо calculator просто использовать "IValueCalculator"? если они оба одного и того же типа
public class Product { public int ProductID { get; set; } public string Name { get; set; } public string Description { get; set; } public decimal Price { get; set; } public string Category { set; get; } } public interface IValueCalculator { decimal ValueProducts(params Product[] products); } public class LinqValueCalculator : IValueCalculator { public decimal ValueProducts (params Product[] products) { return products.Sum (p => p.Price); } } public class ShoppingCart { private IValueCalculator calculator; public ShoppingCart(IValueCalculator calcParam) { calculator = calcParam; } public decimal CalculateStockValue() { // Определение набора товаров для суммирования Product[] products = { new Product () { Name = "Kayak", Price = 275M}, new Product() { Name = "Lifejacket", Price = 48.95M }, new Product () { Name = "Soccer ball", Price = 19.50M }, new Product () { Name = "Stadium", Price = 79500M } }; // Вычисление общей стоимости товаров decimal totalValue = calculator.ValueProducts(products); // Возврат результата return totalValue; } }
Решение задачи: «Применение интерфейса»
textual
Листинг программы
interface IFlyBehaviour { void Fly(); } class DefaultFlyBehaviour : IFlyBehaviour { public void Fly() { Console.WriteLine("I CAN FLY!!!"); } } class PenguinFlyBehaviour : IFlyBehaviour { public void Fly() { Console.WriteLine("I CAN'T FLY!!!"); } } class TurkeyFlyBehaviour : IFlyBehaviour { public void Fly() { Console.WriteLine("I CAN FLY ON SHORT DISTANCE!!!"); } } class Bird { public readonly string Name; private readonly IFlyBehaviour flyBehaviour; public Bird(string name, IFlyBehaviour flyBehaviour) { Name = name; this.flyBehaviour = flyBehaviour; } public Bird(string name) : this(name, new DefaultFlyBehaviour()) { } public void Fly() { flyBehaviour.Fly(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д