CodeYourFuture / CodeYourFuture/Module-Java

Sprint 7 - Challenge 1

Đang mở
#9 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 7 🦑 Size Large Core
Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
1
Fork
11
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

# Sprint Challenge 1

## Overview

**The code you write for this challenge is mandatory homework and should be completed and sent in a PR for review before class.**

Build a computer store application that allows customers to configure and purchase custom computers.

## Specification

Java application with a console-based menu system:
- User options:
- Build Custom PC (choose components manually)
- Select processor (budget/performance/enthusiast)
- Select graphics card (integrated/gaming/professional)
- Select memory (8GB/16GB/32GB)
- Select storage (HDD/SSD/NVMe)
- Customize options (case color, warranty, RGB)
- Quick Build - Budget PC
- Use appropriate factory
- Quick Build - Gaming PC
- Use appropriate factory
- Quick Build - Workstation PC
- Use appropriate factory
- View Available Components
- Exit

- After building, display:
- Complete specifications
- Total price
- Estimated delivery time

## Developer Guidance

- Create a PCComponent interface with methods:
- `String getName()`
- `double getPrice()`
- `String getSpecifications()`
- `ComponentType getType()` (enum: PROCESSOR, GRAPHICS_CARD, MEMORY, STORAGE)
- Create implementations: Processor, GraphicsCard, Memory, Storage
- With static factory methods for:
- Processor: `budget()`, `midRange()`, `performance()`
- GraphicsCard: `integrated()`, `gaming()`, `professional()`
- Memory: `standard8GB()`, `standard16GB()`, `performance32GB()`
- Storage: `hdd1TB()`, `ssd512GB()`, `nvme1TB()`
- Create an abstract factory interface for creating complete component families - each factory should coordinate components that work well together for their purpose
- `interface PCComponentFactory`
- `Processor createProcessor()`
- `GraphicsCard createGraphicsCard()`
- `Memory createMemory()`
- `Storage createStorage()`
- `String getThemeName()`
- `String getDescription()`
- Implement three themed factories:
- `BudgetPCFactory` (£500-700)
- Budget processor
- Integrated graphics
- 8GB memory
- HDD storage
- `GamingPCFactory` (£1200-1500)
- Performance processor
- Gaming graphics card
- 16GB memory
- NVMe storage
- `WorkstationPCFactory` (£2000-2500)
- Enthusiast processor
- Professional graphics card
- 32GB memory
- NVMe storage
- Create a PC class that uses a builder pattern to create instances,
- with fields:
- Processor (required)
- Graphics Card (required)
- Memory (required)
- Storage (required)
- Case colour (optional, default: "Black")
- Warranty years (optional, default: 1)
- And methods:
- `double getTotalPrice` (sums price of components)
- `String getDetailedSpecs` (returns a nicely formatted string of the component parts → you can also just use an overridden toString here if preferred)

### Submission & Review

Fork the coursework repo to your own GitHub account.
Make regular small commits with clear messages.
When you are ready, open a Pull Request to the CYF repo. Make sure you fill in the PR template provided.
A volunteer will review your submission and send you feedback.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.