public class UseSetUI{


  public static void main(String[] args){

     AbsSetU A = new AbsSetU (15);
     Student s;
     StudentSetElement st;
    s=new Student("Avi", "Haifa ",5,587432);    
    st = new StudentSetElement(s);
    A.addElement(st);

    s=new Student("Yosi", "TelAviv",5,125432);    
    st = new StudentSetElement(s);
    A.addElement(st);

    s=new Student("Uri", "BeerSheva",5,874132);    
    st = new StudentSetElement(s);
    A.addElement(st);

    System.out.print("elements of A: "); A.print();

    A.addElement(st);
    System.out.print("elements of A: "); A.print();

    A.addElement(new StudentSetElement(s));
    System.out.print("elements of A: "); A.print();

  }
}

class StudentSetElement implements SetElement {
                  Student s;
                  StudentSetElement( Student st){
                     s=st;
                  };
        public void print() { s.print();};

/* CAN'T INSTANTIATE WITHOUT OVERRIDING equals and issmaller */
 public boolean equals(SetElement s){
           /* OVERRIDING THE equals in SetElement.
              equals NOW COMPARES THE STUDENT ID */
               return this.s.student_id == ((StudentSetElement) s).s.student_id;
          };

       public    boolean issmaller (SetElement s){
           /* OVERRIDING THE issmaller in SetElement.
              issmaller NOW COMPARES THE STUDENT ID */
               return this.s.student_id < ( (StudentSetElement) s).s.student_id;
          };


}


/* THE OUTPUT:
elements of A: { Avi Haifa  587432, Yosi TelAviv 125432, Uri BeerSheva 874132 }
elements of A: { Avi Haifa  587432, Yosi TelAviv 125432, Uri BeerSheva 874132 }
elements of A: { Avi Haifa  587432, Yosi TelAviv 125432, Uri BeerSheva 874132 }
NOTICE Uri APPEARS ONLY ONCE AS equals is implemented.
*/


