Exemple de classe générique avec interface

Author:

Non,Edité
{filelink=17500}

using System;
using System.Collections.Generic;

public interface IShape
{
    double Area {
        get;
    }
}

public class Circle : IShape
{
    public Circle( double radius ) {
        this.radius = radius;
    }

    public double Area {
        get {
            return 3.14 * radius * radius;
        }
    }

    private double radius;
}

public class Rect : IShape
{
    public Rect( double width, double height ) {
        this.width = width;
        this.height = height;
    }

    public double Area {
        get {
            return width*height;
        }
    }

    private double width;
    private double height;
}

public class Shapes
    where T: IShape
{
    public double TotalArea {
        get {
            double acc = 0;
            foreach( T shape in shapes ) {
                acc += shape.Area;
            }
            return acc;
        }
    }

    public void Add( T shape ) {
        shapes.Add( shape );
    }

    private List shapes = new List();
}

public class Test
{
    static void Main() {
        Shapes shapes = new Shapes();

        shapes.Add( new Circle(3) );
        shapes.Add( new Rect(7, 5) );

        Console.WriteLine( "Total Area: {0}", shapes.TotalArea );
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *