====== Jedenáctý domácí úkol ====== Naimplementujte třídu ''Set'', reprezentující množinu, a třídy ''Union'' a ''Intersection'', reprezentující pohled na sjednocení resp. průnik dvou množin. Všechny tři implementace by měly rozesílat události ''elementAdded'' a ''elementRemoved'' právě tehdy, když se velikost dané množiny zvětšila nebo změnšila o jednu (tzn. např. ''Set'' nerozesílá ''elementAdded'' při pokusu o přidání již obsaženého prvku). interface ObservableSet { boolean contains(Integer elem); void addSetListener(SetListener sl); void removeSetListener(SetListener sl); } interface SetListener { void elementAdded(ObservableSet source, Integer elem); void elementRemoved(ObservableSet source, Integer elem); } class Set implements ObservableSet { void add(Integer elem) {} void remove(Integer elem) {} } class Union implements ObservableSet { Union(ObservableSet first, ObservableSet second) {} } class Intersection implements ObservableSet { Intersection(ObservableSet first, ObservableSet second) {} } Do repozitáře do souboru ''homeworks/Homework11.java'' odevzdávejte třídy ''Set'', ''Union'' a ''Intersection'' a případné další vámi naprogramované třídy. Neodevzdávejte rozhraní ''ObservableSet'' a ''SetListener''. Termín odevzdání 1. 6. 1:59 ráno (čas podle serveru s repozitáři). ~~DISCUSSION:closed~~