---
# System prepended metadata

title: Jam 06 - Checklist
tags: ["2 \U0001F4DD in writing", enums, uml, classes, "3 \U0001F9EA in testing", exceptions, "4 \U0001F973 done"]

---

---
title: "Jam 06 - Checklist"
tags: 
  - 2 📝 in writing
  - 3 🧪 in testing
  - 4 🥳 done
  - classes
  - uml
  - exceptions
  - enums
---
<!-- markdownlint-disable line-length single-h1 no-inline-html -->
<!-- markdownlint-configure-file { "ul-indent": { "indent": 4 }, "link-fragments": {"ignore_case": true} } -->

{%hackmd dJZ5TulxSDKme-3fSY4Lbw %}

# Assignment Checklist

:::info
🎯 **Assignment Checklist**

**Exercise 1 - Advanced Enum Types & Testing**

- [ ] Set up environment (create branch and directories)
- [ ] Implement Money enum:
    - [ ] Add denominations, value field, and methods
    - [ ] Format toString() properly (¢ vs $)
    - [ ] Add JavaDoc documentation
- [ ] Test and verify Money implementation works correctly
- [ ] Commit changes

**Exercise 2 - Advanced UML Design & Relationships**

- [ ] Design class diagrams for:
    - [ ] Transaction and TransactionState with proper relationships
    - [ ] Money enum with appropriate structure
    - [ ] Register with related component connections
- [ ] Document relationships with proper multiplicity and state transitions
- [ ] Export and commit UML diagram
- [ ] Export diagram as `Jam06-uml.drawio.png`
- [ ] Commit UML diagram

**Exercise 3 - Transaction Implementation**

- [ ] Implement transaction state management system
- [ ] Implement transaction core functionality (product tracking, calculations)
- [ ] Adapt and run tests to validate your implementation
- [ ] Document classes and methods with JavaDoc
- [ ] Commit changes

**Exercise 4 - Register Implementation**

- [ ] Update UML diagram with Register and PaymentUtility classes
- [ ] Implement PaymentUtility with calculation methods and edge case handling
- [ ] Implement Register with:
    - [ ] Factory method pattern and cash drawer management
    - [ ] Transaction processing and payment handling
    - [ ] Input validation for all operations
- [ ] Test with RegisterDriver and fix any issues
- [ ] Export final UML diagram and commit all changes

:::
