VII Praktikum: Mustrid

Mustrite otsimine

Leida etteantud raamistikest:

järgnevad mustrid:

Esitada aruanne, kus kirjeldada leitud mustrite asukohad koos põhjendusega (mille põhjal arvate, et tegu on antud mustriga? milline probleem mustri kasutamise abil lahendatakse?)

Maksmisega hilinemise trahvi arvutamine

Kliendid võivad maksta ka hiljem, kui nad soovivad. Kliendile lisatakse maksmise kuupäev. Kui klient järgmisel korral ostma tuleb, kuvab süsteem võla, kui see on olemas ja enne uut ostu ei saa sooritada, kui vana võlg on makstud. Iga üleläinud päeva eest on viivis n% algsest summast, mis liidetakse esialgsele summale. Lisaks saab määrata igale kliendile eraldi makseprotsendi erinevatele päevadele.

  • Realiseerida kasutajaliideses Use case uued osad, et klient saab võlgu võtta
  • Realiseerida kasutajaliideses võimalus arvutada maksmisega hilinemise trahvi kasutades mustrit Strategy.
  • Trahvi arvutamise algoritmi sisendiks on:
    • Kliendi ID
    • Maksekuupäev
    • Maksmisele kuuluva ostukorvi sisu
      • ID
      • Kogus
      • Hind ühiku kohta
  • Algoritmi väljundiks on:
    • Trahvi suurus
    • Maksmisele kuuluv summa koos trahviga
    • Tekst, mis selgitab kuidas trahvi arvutati
  • Algoritmi realisatsiooni tuleb laadida muster Abstract Factory abiga.
  • Abstract Factory luuakse staatilises meetodis system property alusel.
  • Realiseerida trahvi algoritm, mis vastab trahvi puudumisele.
  • Realiseerida trahvi algoritm kasutades mustrit Interpreter. Selle konfiguratsiooni loeb Abstract Factory XML failist kasutades JAXP DOM. XML faili nimi võetakse jällegi system propertyst.
    • Protsendi peab saama määrata. Lisaks peab saama määrata päevade vahemikku, kui suur protsent hakkab millal kehtima. Kui päevade arv on ületatud, siis enam protsenti ei võeta.
    • Konfiguratsioonifaili formaat: näidis
  • Täiendada anti run targetit nii, et programmi käivitamisel antaks ette trahvi strateegia.

Olemasoleva rakenduse täiendamine

  • Käivitada DBManageris järgnevad sql-id:
    • alter table client add due_date date;
    • alter table client add due_sale integer;
  • Lisada Client klassile järgnevad väljad koos vastavate getter ja setter meetoditega:
    •  @Column(name="due_date")
       private Date dueDate; 
    •  @ManyToOne
       @JoinColumn(name = "SALE_ID", unique=true)
       private Sale dueSale;

Algfailid

edit