Projekt polega na stworzeniu aplikacji symulującej działanie ekspresu do kawy. Został napisany w języku Java i zawiera różne klasy, metody oraz logikę biznesową umożliwiającą:
- wybór rodzaju i wielkości kawy,
- zarządzanie poziomem wody i mleka,
- obsługę wielu modeli ekspresów,
- prowadzenie historii przygotowanych napojów,
- analizę zużycia zasobów i preferencji użytkownika.
- 5 rodzajów kawy:
espresso
,cappuccino
,latte
,americano
,flatWhite
- 3 rozmiary kawy:
small
,medium
,large
- Obsługa poziomu wody (litry) i mleka (mililitry)
- Walidacja wprowadzanych danych (np. brak zasobów, przekroczenie zakresu)
- Funkcja
makeCoffee()
– symulacja parzenia kawy z zasobami - Funkcja
showStatus()
– aktualny stan ekspresu - Historia 30 ostatnich przygotowanych kaw (
getRecentCoffeeHistory()
) - Analiza danych (
analyse()
) – np. ulubiona kawa, zużycie zasobów - Klasy ekspresów:
DeliciousCoffee
QuickBrew
– zmiana jednostek (litry/ml ↔ pinty), dodatkowy typ kawyEliteEspresso
– większy zbiornik, podgrzewanie kubka, ziarenka kawy
CoffeeMachine.java
– klasa bazowaDeliciousCoffee.java
,CoffeeHistoryEntry
,QuickBrew.java
,EliteEspresso.java
– klasy dziedzicząceMain.java
– testy funkcjonalności
- Sklonuj repozytorium: git clone https://github.com/TinCin/coffee-machine.git
- cd coffee-machine-java
- Otwórz projekt w dowolnym IDE (np. IntelliJ IDEA)
- Uruchom Main.java, aby przetestować działanie programu
The goal of this project is to simulate a coffee machine using Java. The application includes various classes, methods, and business logic that allow:
- selection of coffee type and size,
- management of water and milk levels,
- support for multiple coffee machine models,
- tracking of previously made coffees,
- usage analysis and user preferences.
✅ Features:
- 5 coffee types: espresso, cappuccino, latte, americano, flatWhite
- 3 sizes: small, medium, large
- Water and milk tank management (liters and milliliters)
- Input validation (e.g., resource limits, empty tanks)
- makeCoffee() – simulates brewing based on available resources
- showStatus() – displays current machine status
- Tracks last 30 coffees (getRecentCoffeeHistory())
- analyse() – analyzes coffee usage (favorite coffee, resource usage, etc.)
- Coffee machine subclasses:
- DeliciousCoffee
- QuickBrew – switches units (liters/ml ↔ pints), adds extra coffee type
- EliteEspresso – extended water tank, cup preheating, bean tracking
📁 Project structure
- CoffeeMachine.java – base class
DeliciousCoffee.java
,CoffeeHistoryEntry
,QuickBrew.java
,EliteEspresso.java
– subclasses- Main.java – test examples and demonstration
🧪 How to run
- Clone the repository: git clone https://github.com/TinCin/coffee-machine.git
- cd coffee-machine-java
- Open the project in your preferred IDE (e.g. IntelliJ IDEA)
- Run Main.java to test the program