Přejít k hlavnímu obsahu
SŠMG
  • Titulní stránka
  • Další
Momentálně na stránky přistupujete s právy hosta.
Přihlášení
Titulní stránka
  1. PVA 2.I – 2 - 2023/2024
  2. Eshop

Eshop

Požadavky na absolvování
Otevřené: Sobota, 23. září 2023, 00.00
Termín: Neděle, 21. ledna 2024, 23.59

Dnešním úkolem bude naimplementovat jednoduchý eshop, který bude obsahovat zákazníky, produkty a nákupní košík.

Třída Customer:

Atributy:

  • id: jednoznačný identifikátor zákazníka typu int.
  • name: jméno zákazníka typu String.
  • email: emailová adresa zákazníka typu String.

Metody:

  • Konstruktor pro inicializaci všech atributů.
  • int getId(): vrací id zákazníka.
  • String getName(): vrací name zákazníka.
  • String getEmail(): vrací email zákazníka.
Třída Product:

Atributy:

  • id: jednoznačný identifikátor produktu typu int.
  • name: název produktu typu String.
  • label: popisek produktu typu String. Může být null.
  • price: cena produktu typu double.

Metody:

  • Dva konstruktory:
    • Jeden pro inicializaci id, name a price.
    • Druhý pro inicializaci všech čtyř atributů.
  • int getId(): vrací id produktu.
  • String getName(): vrací name produktu.
  • double getPrice(): vrací price produktu.
Třída ShoppingCart:

Atributy:

  • items: mapa, kde klíčem je produkt a hodnotou je počet kusů daného produktu.

Metody:

  • Konstruktor pro inicializaci mapy.
  • void addItem(Product product, int quantity): přidá zadaný počet kusů produktu do košíku. Pokud je quantity menší nebo rovno 0, vyhazuje vyjímku.
    Při přidání nového případu se HashMap přepisuje!
  • void removeItem(Product product): odebere produkt z košíku.
  • double getTotalPrice(): vrací celkovou cenu všech produktů v košíku.
Třída Eshop:

Atributy:

  • products: seznam všech produktů v e-shopu.
  • customers: seznam všech zákazníků v e-shopu.

Metody:

  • Konstruktor pro inicializaci seznamů.
  • void addProduct(Product product): přidá produkt do seznamu produktů.
  • void removeProduct(int productId): odebere produkt s daným id ze seznamu produktů.
  • Product findProduct(int productId): najde a vrátí produkt s daným id nebo vrátí null.
  • void addCustomer(Customer customer): přidá zákazníka do seznamu zákazníků.
  • void removeCustomer(int customerId): odebere zákazníka s daným id ze seznamu zákazníků.
  • Customer findCustomer(int customerId): najde a vrátí zákazníka s daným id nebo vrátí null.
  • List<Product> listAllProducts(): vrátí seznam všech produktů.
  • List<Customer> listAllCustomers(): vrátí seznam všech zákazníků.
  • List<Product> findProductsByName(String searchTerm): najde a vrátí seznam produktů, které obsahují zadaný hledaný výraz v názvu.
  • List<Customer> findCustomersByEmailDomain(String domain): najde a vrátí seznam zákazníků podle domény jejich emailu. Pokud je poskytnut prázdný řetězec nebo null, vrátí všechny zákazníky.
Hodnocení úlohy

Výborně (1):
Minimálně 15 - 16 průchozích testů (94% - 100% úspěšnost)
Všechny metody musí být správně implementovány.

Chvalitebně (2):
Minimálně 12 - 14 průchozích testů (75% - 93% úspěšnost)
Většina základních metod je správně implementována, ale může obsahovat drobné chyby nebo nedostatky.

Dobře (3):
Minimálně 9 - 11 průchozích testů (56% - 74% úspěšnost)
Některé základní metody mohou chybět nebo obsahovat zásadní chyby.

Dostatečně (4):
Minimálně 5 - 8 průchozích testů (31% - 55% úspěšnost)
Mnoho základních metod obsahuje chyby, ale student stále ukazuje základní pochopení úlohy.

Nedostatečně (5):
0 - 4 průchozích testů (0% - 30% úspěšnost)
Mnoho základních funkcí chybí nebo je špatně implementováno. Potřeba zásadní revize a zlepšení.

Podpora úlohy

Ve složce src/main/java v balíčku org.example implementujte soubory:

  • Customer.java
  • Eshop.java
  • Product.java
  • ShoppingCart.java

V adresáři java/test/java máte k dispozici tři testy pro ověření správnosti vaší implementace:

  • EshopTest.java
  • EshopTestComplicated.java
  • EshopTestFindProductsByNameAndDomain.java

Diagram tříd projektu Eshop



  • Customer.java Customer.java
    23. září 2023, 22.04
  • Eshop.java Eshop.java
    23. září 2023, 22.04
  • EshopTest.java EshopTest.java
    23. září 2023, 22.05
  • EshopTestComplicated.java EshopTestComplicated.java
    23. září 2023, 22.05
  • EshopTestFindProductsByNameAndDomain.java EshopTestFindProductsByNameAndDomain.java
    23. září 2023, 22.05
  • Product.java Product.java
    23. září 2023, 22.04
  • ShoppingCart.java ShoppingCart.java
    23. září 2023, 22.04
Kontaktujte podporu stránek
Momentálně na stránky přistupujete s právy hosta. (Přihlášení)
Souhrn uchovávaných dat
Stáhněte si mobilní aplikaci
Používá Moodle