Задание:
В языке программирования C# есть возможность создавать интерфейсы, которые определяют контракт, который должен быть реализован классом. Интерфейсы определяют набор методов, свойств и событий, которые класс должен реализовать. Это помогает разработчику создавать модульный и масштабируемый код. Для создания интерфейса в C# используется ключевое слово "interface". Например, рассмотрим создание интерфейса для работы с фигурами:
```csharp
interface IShape
{
double GetArea();
double GetPerimeter();
}
```
После создания интерфейса можно определить классы, которые будут его реализовывать. Например, классы круга и квадрата:
```csharp
class Circle : IShape
{
public double Radius { get; set; }
public double GetArea()
{
return Math.PI * Radius * Radius;
}
public double GetPerimeter()
{
return 2 * Math.PI * Radius;
}
}
class Square : IShape
{
public double SideLength { get; set; }
public double GetArea()
{
return SideLength * SideLength;
}
public double GetPerimeter()
{
return 4 * SideLength;
}
}
```
Теперь можем создать параметризованную коллекцию, которая будет хранить объекты, реализующие интерфейс IShape. Например, использование List для хранения фигур:
```csharp
List shapes = new List();
shapes.Add(new Circle() { Radius = 5 });
shapes.Add(new Square() { SideLength = 4 });
foreach(var shape in shapes)
{
Console.WriteLine($"Area: {shape.GetArea()}, Perimeter: {shape.GetPerimeter()}");
}
```
Таким образом, использование интерфейсов и параметризованных коллекций в C# позволяет создавать гибкие и расширяемые приложения, упрощая процесс разработки и обеспечивая возможность работы с различными типами объектов.