---
# System prepended metadata

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

---

---
title: "Jam 06 - All"
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 %}

# Jam 06 - Advanced Class Design & Relationships

:::spoiler **Course Development Team**
<center>
    <table width="100%">
    <tr align="center">
        <td width="50%">
            <img src="https://www.dropbox.com/scl/fi/uz9dn7vc9y5k43160pdb0/Fun-Artsy-Square.png?rlkey=2zmgqgblwsagukfsb343tl3ye&raw=1" alt="Lily Romano" width="100" style="border-radius: 50%"/><br/>
            <a href="https://lilyromano.com">Lily Romano</a>
        </td>
        <td width="50%">
            <img src="https://www.bucknell.edu/sites/default/files/styles/faculty_page_photo/public/libris/C00001GOQFVeT0YE/G0000hRJySpIobZY/20160419-7C8A4469.jpg" alt="Brian King" width="100" style="border-radius: 50%"/><br/>
            <a href="https://www.bucknell.edu/fac-staff/brian-king">Brian King</a>
        </td>
    </tr>
    </table>
</center>
:::

|                        |                                          |
| ---------------------- | ---------------------------------------- |
| **Working Directory:** | `src/main/java/jam06`                    |
| **Points:**            | 10 pts                                   |
| **Team-based?**        | NO (but discussion encouraged)           |
| **Due:**               | Wednesday, 2025-May-03 @ 11:59 pm           |

# Objectives

- Design and implement complex UML class diagrams with relationships and multiplicity
- Create, customize, and apply enumerated types in Java
- Develop a complete cash register system with multiple interacting classes
- Apply advanced IDE features for efficient development

# Introduction & Outcomes

Welcome to Jam 06! Building on the foundation of basic class design from Jam 05, this jam introduces more advanced object-oriented concepts through the development of a cash register system. You'll learn how to model complex relationships between classes, and use enumerated types to represent fixed sets of values. This practical project will help you understand how multiple classes work together in a real-world system.

This jam serves as a bridge between the basic class design concepts you've learned and the more advanced object-oriented principles like inheritance and polymorphism that you'll explore in future jams. The skills you develop here will be essential for designing and implementing complex software systems throughout your career.

## What You'll Learn & Accomplish

1. **Advanced UML Design**
    - Create detailed class relationship diagrams
    - Model class associations and dependencies
    - Use proper multiplicity notation
    - Document system architecture
    - These design skills are crucial in professional software development, where clear documentation of system architecture helps teams collaborate effectively and ensures maintainable code.
    - **Outcome**: Design a complete UML diagram for a cash register system

2. **Register System Implementation**
    - Create an enum for currency denominations
    - Implement transaction management
    - Handle payment processing
    - Manage register state
    - This practical implementation mirrors real-world retail systems development, where proper state management and validation are essential for creating reliable financial software.
    - **Outcome**: Build a working cash register system with proper validation

3. **Professional Development Practices**
    - Use advanced IDE features
    - Write comprehensive documentation
    - Follow coding standards
    - Create maintainable code
    - These practices reflect industry standards that distinguish professional developers and lead to more sustainable, team-friendly codebases.
    - **Outcome**: Develop production-quality code with proper documentation

<!-- Embeds Jam05-Checklist.md -->
{%hackmd -z9ybWu_SDiKFcZdnrQuoQ %}

<!-- Embeds Jam05-Exercise1.md -->
{%hackmd tQjTLMxoTxu_0FtitS8V3w %}

<!-- Embeds Jam05-Exercise2.md -->
{%hackmd F7kZRDS4TVGuc5TI-bWzuQ %}

<!-- Embeds Jam05-Exercise3.md -->
{%hackmd uFmF24zfTnGWH4WnbIXRhA %}

<!-- Embeds Jam05-Exercise4.md -->
{%hackmd epvwma07RdSQH7DoYSaqnw %}

<!-- Embeds Jam05-Summary_Submission.md -->
{%hackmd RU6YfrHMRq6uY0r9qo9Wiw %}
