Institute of Computer Science
  1. Courses
  2. 2024/25 spring
  3. Object-oriented Programming (LTAT.03.003)
ET
Log in

Object-oriented Programming 2024/25 spring

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhend
  • Süvendusrühm
  • Silumisest

Telekanalid

Põhja-Korea juhid tahavad oma 60-tollistest 3D telekatest uudiseid vaadata. Riigis levib ametlikult ainult maailma parim kanal "Põhja-Korea rahvuslikud uudised". Lisaks levitavad mässulised piraat-telejaama "Põhja-Korea maailmauudised", mis edastab kohalikku kanalit ja lisaks ka Fox News uudiseid. Riigipea saab Fox Newsi ka otse oma satelliidi-vastuvõtjast vaadata.

  • Loo interface BroadcastListener, kus on meetod void listen(String).
  • Loo class Broadcaster, kus on meetodid void subscribe(BroadcastListener) ja void broadcast(String). Broadcaster jätab meelde kõik BroadcastListenerid, mis talle subscribe meetodiga ette antakse. broadcast meetodi kutsumisel tuleb kõigile listeneridele ette antud string edasi anda (listen meetodit kutsuda).
  • Loo Broadcaster alamklass TVStation. Loo konstruktor, mis võtab parameetriks listi uudistest. Lisa meetod void sendNews(), mis broadcastib (ülemklassi meetodi abil) uudiste listist suvalise uudise.
  • Loo Broadcaster alamklass PirateStation, mis lisaks implementib BroadcastListener. PirateStation võtab teiste jaamade saateid vastu (listen) ja broadcastib need kohe kõigile oma kuulajatele edasi.
  • Loo klass TV, mis implementib BroadcastListener. TV konstruktoriga peab määrama omaniku nime. Kõik kohale jõudvad uudised prindi koos TV omaniku nimega System.out-i.

Loo testklass, mis funktsionaalsust testib.

  • Loo TVStation objektid "Põhja-Korea rahvuslikud uudised" ja "Fox News" jaoks. Mõlemal on oma erinev uudiste list. Loo PirateStation, mis võtab vastu ja edastab mõlema eelneva uudiseid.
  • Loo TV Kim Jong-un jaoks, mis kuulab Fox News ja rahvuslikke uudiseid (otse, mitte läbi piraatkanali).
  • Loo TV Kim Yong-nam jaoks, mis kuulab ainult rahvuslikke uudiseid.
  • Loo TV Pak Pong-ju jaoks, mis kuulab piraatkanalit (selle kaudu mõlemaid teisi kanaleid).
  • Käivita mõlema uudistekanali sendNews() ja veendu, et õiged isikud õiged uudiseid kuulevad.

Subscribe/broadcast, addEventListener/fireEvent, addObserver/notify - need kõik on erinevad kujud Observer patternist. See on väga levinud ja kasulik tehnika, mis aitab koodi modulaarsemaks ja taaskasutatavamaks muuta. Mõned näited, kus seda veel kasutatakse:

  • Kasutaja klõpsab nupu peale - nupp teeb fireEvent ja kõik EventListenerid saavad reageerida.
  • Programm alustab taustaprotsessina faili allalaadimist. Selle lõppedes saavad kõik DownloadObserverid teate, et fail on kasutamiseks valmis.
  • Koodikomponent ootab võrgust tulevaid teateid. Vastuvõtja teavitab teda sobiva teate saabumisest.
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment