Digg StumbleUpon LinkedIn YouTube Flickr Facebook Twitter RSS Reset

Utilisation des contrainte d’interface

Non,Edité
{filelink=17510}

class="codeShade">
 
using System;
 
class NotFoundException : ApplicationException { }
 
public interface IPhoneNumber {
  string Number {
    get;
    set;
  }
 
  string Name {
    get;
    set;
  }
}
 
class Friend : IPhoneNumber {
  string name;
  string number;
 
  public Friend(string n, string num) {
    name = n;
    number = num;
  }
 
  public string Number {
    get { return number; }
    set { number = value; }
  }
 
  public string Name {
    get { return name; }
    set { name = value; }
  }
}
 
class Supplier : IPhoneNumber {
  string name;
  string number;
 
  public Supplier(string n, string num) {
    name = n;
    number = num;
  }
  public string Number {
    get { return number; }
    set { number = value; }
  }
 
  public string Name {
    get { return name; }
    set { name = value; }
  }
}
 
class EmailFriend {
}
 
class PhoneList<T> where T : IPhoneNumber {
  T[] phList;
  int end;
 
  public PhoneList() {
    phList = new T[10];
    end = 0;
  }
 
  public bool add(T newEntry) {
    if(end == 10) return false;
 
    phList[end] = newEntry;
    end++;
 
    return true;
  }
 
  public T findByName(string name) {
 
    for(int i=0; i<end; i++) {
 
      if(phList[i].Name == name)
        return phList[i];
 
    }
    throw new NotFoundException();
  }
  public T findByNumber(string number) {
 
    for(int i=0; i<end; i++) {
      if(phList[i].Number == number)
        return phList[i];
    }
    throw new NotFoundException();
  }
}
 
class Test {
  public static void Main() {
 
    PhoneList<Friend> plist = new PhoneList<Friend>();
    plist.add(new Friend("A", "555-1111"));
    plist.add(new Friend("B", "555-6666"));
    plist.add(new Friend("C", "555-9999"));
 
    try {
      Friend frnd = plist.findByName("B");
 
      Console.Write(frnd.Name + ": " + frnd.Number);
 
    } catch(NotFoundException) {
      Console.WriteLine("Not Found");
    }
 
    Console.WriteLine();
 
    PhoneList<Supplier> plist2 = new PhoneList<Supplier>();
    plist2.add(new Supplier("D", "555-4444"));
    plist2.add(new Supplier("E", "555-3333"));
    plist2.add(new Supplier("F", "555-2222"));
 
    try {
      Supplier sp = plist2.findByNumber("555-2222");
      Console.WriteLine(sp.Name + ": " + sp.Number);
    } catch(NotFoundException) {
        Console.WriteLine("Not Found");
    }
 
    //PhoneList<EmailFriend> plist3 = new PhoneList<EmailFriend>();
  }
}

No comments yet.

Leave a Comment