CodeYourFuture / CodeYourFuture/Module-Java

Sprint 7 - Challenge 1

Offen
#9 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 7 🦑 Size Large Core
Vorherrschende Sprache
Keine Sprachdaten
Sterne
1
Forks
11
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.