CodeYourFuture / CodeYourFuture/Module-Java

Sprint 7 - Challenge 1

未关闭
#9 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 7 🦑 Size Large Core
主要语言
没有语言数据
星标
1
派生
11
PR 合并指标
30 天内没有已合并 PR

描述

# 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.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。