Eshop
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:
V adresáři java/test/java máte k dispozici tři testy pro ověření správnosti vaší implementace:
- 23. září 2023, 22.04
- 23. září 2023, 22.04
- 23. září 2023, 22.05
- 23. září 2023, 22.05
- 23. září 2023, 22.05
- 23. září 2023, 22.04
- 23. září 2023, 22.04