Skip to content

Sprint 7 - Challenge 1 #9

@Ara225

Description

@Ara225

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions