Нужны задачи и решения с использованием концепций ООП - C#

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

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

Здравствуйте, ищу примеры задач и решения с использованием 3-к концепций ООП ( в одной зачаче чтоб все 3 принципа были задействованы). На примере консольных приложений. Проблема в том что синтаксис C# и теорию ООП я знаю, но очень плохо получается грамотно начать и построить программный код. Если кто сможет дать дельный совет - я только буду благодарен. Спасибо! С уважением, Александр.

Решение задачи: «Нужны задачи и решения с использованием концепций ООП»

textual
Листинг программы
using System;
 
namespace Decorator
{
 
  class MainApp
  {
    static void Main()
    {
      // Create ConcreteComponent and two Decorators
      ConcreteComponent c = new ConcreteComponent();
      ConcreteDecoratorA d1 = new ConcreteDecoratorA();
      ConcreteDecoratorB d2 = new ConcreteDecoratorB();
 
      // Link decorators
      d1.SetComponent(c);
      d2.SetComponent(d1);
 
      d2.Operation();
 
      // Wait for user
      Console.Read();
    }
  }
 
  /// <summary>
  /// Component - компонент
  /// </summary>
  /// <remarks>
  /// <li>
  /// <lu>определяем интерфейс для объектов, на которые могут быть динамически 
  /// возложены дополнительные обязанности;</lu>
  /// </li>
  /// </remarks>
  abstract class Component
  {
    public abstract void Operation();
  }
 
  /// <summary>
  /// ConcreteComponent - конкретный компонент
  /// </summary>
  /// <remarks>
  /// <li>
  /// <lu>определяет объект, на который возлагается дополнительные обязанности</lu>
  /// </li>
  /// </remarks>
  class ConcreteComponent : Component
  {
    public override void Operation()
    {
      Console.WriteLine("ConcreteComponent.Operation()");
    }
  }
 
  /// <summary>
  /// Decorator - декоратор
  /// </summary>
  /// <remarks>
  /// <li>
  /// <lu>хранит ссылку на объект <see cref="Component"/> и определяет интерфейс,
  /// соответствующий интерфейсу <see cref="Component"/></lu>
  /// </li>
  /// </remarks>
  abstract class Decorator : Component
  {
    protected Component component;
 
    public void SetComponent(Component component)
    {
      this.component = component;
    }
 
    public override void Operation()
    {
      if (component != null)
      {
        component.Operation();
      }
    }
  }
 
  /// <summary>
  /// ConcreteDecorator - конкретный декоратор
  /// </summary>
  /// <remarks>
  /// <li>
  /// <lu>возглагает дополнительные обязанности на компонент.</lu>
  /// </li>
  /// </remarks>
  class ConcreteDecoratorA : Decorator
  {
    private string addedState;
 
    public override void Operation()
    {
      base.Operation();
      addedState = "New State";
      Console.WriteLine("ConcreteDecoratorA.Operation()");
    }
  }
 
  // "ConcreteDecoratorB"
 
  class ConcreteDecoratorB : Decorator
  {
    public override void Operation()
    {
      base.Operation();
      AddedBehavior();
      Console.WriteLine("ConcreteDecoratorB.Operation()");
    }
 
    void AddedBehavior()
    {
    }
  }
}

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


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

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

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