Digg StumbleUpon LinkedIn YouTube Flickr Facebook Twitter RSS Reset

Exemple de classe générique avec interface

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<T>
    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<T> shapes = new List<T>();
}
 
public class Test
{
    static void Main() {
        Shapes<IShape> shapes = new Shapes<IShape>();
 
        shapes.Add( new Circle(3) );
        shapes.Add( new Rect(7, 5) );
 
        Console.WriteLine( "Total Area: {0}", shapes.TotalArea );
    }
}

No comments yet.

Leave a Comment