This is a Java console application developed as a final case study for Ebebek. The application implements a comprehensive product management system that allows users to manage two types of electronic products: Mobile Phones and Notebooks. The system provides full CRUD (Create, Read, Update, Delete) operations with an intuitive console-based user interface.
- Product Management: Add, delete, and list mobile phones and notebooks
- Brand Management: Predefined brand system with 9 popular brands
- Sorting & Filtering: List products by ID or brand name
- Data Validation: Input validation and error handling
- Interactive Console UI: User-friendly menu-driven interface
- ID, Name, Unit Price, Discount Rate
- Stock Amount, Brand Name
- RAM, Storage, Screen Size
- Mobile-specific: Color, Battery Power
- ID, Name, Unit Price, Discount Rate
- Stock Amount, Brand Name
- RAM, Storage, Screen Size
- Samsung, Lenovo, Apple, Huawei
- Casper, Asus, HP, Xiaomi, Monster
The application follows Clean Architecture principles with clear separation of concerns:
src/
βββ Entities/ # Domain Models
β βββ domain/
β β βββ Product.java # Abstract base class
β βββ MobilePhone.java # Mobile phone entity
β βββ Notebook.java # Notebook entity
βββ UseCases/ # Business Logic
β βββ Abstract/
β β βββ IDataAccess.java # Data access interface
β β βββ IProduct.java # Product operations interface
β βββ Concrete/
β βββ DataAccessImpl.java # Data access implementation
β βββ MobilePhoneImpl.java # Mobile phone operations
β βββ NotebookImpl.java # Notebook operations
βββ Presentation/ # User Interface
β βββ Abstract/
β β βββ IProductPresentation.java
β βββ Concrete/
β βββ ProductPresentation.java
βββ defaultpackage/
βββ Main.java # Application entry point
- Repository Pattern: Data access abstraction
- Strategy Pattern: Different product type handling
- Template Method: Common product operations
- Dependency Injection: Constructor-based dependency injection
- Java 11+: Core programming language
- Java Collections: TreeSet for automatic sorting
- Java Logging: Built-in logging framework
- Scanner: Console input handling
- TreeSet with Custom Comparators: Automatic sorting by brand name or ID
- Enums: Type-safe brand and category definitions
- Generics: Type-safe product operations
- Comprehensive exception handling
- Input validation with user-friendly error messages
- Graceful error recovery
- Java Development Kit (JDK) 11 or higher
- Any Java IDE (Eclipse, IntelliJ IDEA, VS Code)
-
Clone the repository:
git clone <repository-url> cd ebebek_final_case
-
Open in your IDE:
- Import the
ebebek_java_caseproject - Ensure Java build path is configured
- Import the
-
Run the application:
cd ebebek_java_case/src javac defaultpackage/Main.java java defaultpackage.MainOr run directly from your IDE by executing
Main.java
- Notebook Operations - Manage notebook products
- Mobile Phone Operations - Manage mobile phone products
- Brands - View all available brands
- List All Products - Display all products by brand
- Exit - Close the application
For both product types, you can:
- Add Product: Enter product details interactively
- Delete Product: Remove product by ID
- List by Brand: View products sorted by brand name
- List by ID: View products sorted by ID
- Start the application
- Choose product type (Notebook/Mobile Phone)
- Select operation (Add/Delete/List)
- Follow the interactive prompts
- View results in formatted tables
The application comes with pre-loaded sample data:
Mobile Phones:
- Xiaomi mp-1: 15,000 TL, 8GB RAM, 128GB Storage
- Casper mp-2: 9,000 TL, 4GB RAM, 64GB Storage
Notebooks:
- Samsung pc-1: 10 TL, 16GB RAM, 512GB Storage
- Xiaomi pc-2: 30 TL, 32GB RAM, 1024GB Storage
- Asus pc-3: 30 TL, 32GB RAM, 256GB Storage
- Uses Java's built-in logging framework
- Log level set to INFO
- Console output for user interactions
- In-memory storage using TreeSet collections
- Data persists during application runtime
- Automatic sorting by brand name
The application includes:
- Input validation testing
- Error handling verification
- Menu navigation testing
- CRUD operation validation
- Database Integration: Persistent data storage
- REST API: Web service endpoints
- GUI Interface: JavaFX or Swing interface
- Unit Tests: Comprehensive test coverage
- Configuration Files: External configuration
- Export/Import: Data backup and restore
- Follows Java naming conventions
- Clean code principles
- Comprehensive error handling
- Modular design
- Maven/Gradle compatible structure
- Clear package organization
- Interface-based design
This project is developed as a case study for Ebebek.
This is a case study project. For educational purposes, feel free to:
- Fork the repository
- Create feature branches
- Submit pull requests
- Report issues
Note: This application is designed as a console-based demonstration of Java programming concepts including OOP, design patterns, and clean architecture principles.