Sprint 7 - Challenge 1

Offen
#9 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
45/100
Issue-Typ
Feature
Klarheit
Klar beschrieben
Aktivitätsstatus
Ruhig
Tech-Stack
java
Bereich
cli

Rechercherichtung

Beginne damit, die erforderlichen PCComponent-Typen, PCComponentFactory-Implementierungen, den PC-Builder und das Konsolenmenü auf separate Klassen abzubilden. Überprüfe jeden Spezifikationspunkt, einschließlich Komponentenauswahl, thematischer Factories, Anpassung, Preisgestaltung, Spezifikationen, Lieferzeit und der Anforderungen für den Einreichungs-PR; abgeschlossen bedeutet, dass die vollständige Anwendung jede aufgeführte Menüoption unterstützt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

🎯 Topic Programming Fundamentals 🏕 Priority Mandatory 📅 Sprint 7 🦑 Size Large Core

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.

Vorherrschende Sprache
Keine Sprachdaten
Sterne
1
Forks
11
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus CodeYourFuture/Module-Java

Alle Issues in CodeYourFuture/Module-Java

Ähnliche Issues

Weitere Issues zu CLI

Neue Issues direkt in Ihr Postfach

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