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
- Quick Build - Gaming PC
- Quick Build - Workstation PC
- 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.
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:
After building, display:
Developer Guidance
String getName()double getPrice()String getSpecifications()ComponentType getType()(enum: PROCESSOR, GRAPHICS_CARD, MEMORY, STORAGE)budget(),midRange(),performance()integrated(),gaming(),professional()standard8GB(),standard16GB(),performance32GB()hdd1TB(),ssd512GB(),nvme1TB()interface PCComponentFactoryProcessor createProcessor()GraphicsCard createGraphicsCard()Memory createMemory()Storage createStorage()String getThemeName()String getDescription()BudgetPCFactory(£500-700)GamingPCFactory(£1200-1500)WorkstationPCFactory(£2000-2500)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.