---
title: "Jam 05 - All"
tags:
- 3 🧪 in testing
- 4 🥳 done
- classes
- uml
- arraylist
- documentation
---
<!-- 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 05 - Product Management & Introduction to Classes
:::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/jam05` |
| **Points:** | 10 pts |
| **Team-based?** | NO (but discussion encouraged) |
| **Due:** | Tuesday, 2025-Feb-25 @ 11:59 pm |
# Objectives
- Design and implement basic Java classes with proper encapsulation
- Create UML class diagrams using industry-standard notation
- Work with ArrayLists to manage collections of objects
- Practice test-driven development using JUnit
- Master IDE features for efficient Java development
# Introduction & Outcomes
Welcome to Jam 05! This jam marks your transition from working with basic Java syntax to creating full-fledged object-oriented programs. You'll be building a product management system for a retail store, which will serve as your introduction to object-oriented programming concepts in Java. Through this practical project, you'll learn how to design and implement classes, work with collections, and follow professional development practices.
## What You'll Learn & Accomplish
1. **Class Design & Implementation**
- Learn to create well-structured Java classes using encapsulation
- Use IntelliJ's code generation tools for efficient development
- Work with constructors, getters, and toString methods
- **Outcome**: Build a `Product` class that properly represents retail items with validation
2. **UML Diagramming**
- Use draw.io to create professional class diagrams
- Apply proper UML notation for attributes and methods
- Model relationships between classes
- **Outcome**: Create clear, industry-standard documentation of your class designs
3. **Collection Management**
- Implement ArrayList-based collection management
- Create methods for adding and removing items
- Develop search functionality by different criteria
- **Outcome**: Build a `ProductCatalog` class that efficiently manages product data
4. **Test-Driven Development**
- Work with JUnit tests to verify functionality
- Debug and fix failing tests
- Ensure proper error handling
- **Outcome**: Develop reliable, well-tested code that meets requirements
<!-- Embeds Jam05-Checklist.md -->
{%hackmd bwTc9RG1RxKUv8pbrAA-vQ %}
<!-- Embeds Jam05-Exercise0.md -->
{%hackmd KuV_VJHXSguqBTh851xhcg %}
<!-- Embeds Jam05-Exercise1.md -->
{%hackmd cMgFtGTWQ-GMQe-Vs0Eyvw %}
<!-- Embeds Jam05-Exercise2.md -->
{%hackmd D3KtdZ1BT-WnCu1VVbn7qw %}
<!-- Embeds Jam05-Exercise3.md -->
{%hackmd qCJJTpuUR5ScMrCG4kuHEQ %}
<!-- Embeds Jam05-Summary_Submission.md -->
{%hackmd Ojtqyd53SDa4kZA1tJ_B_A %}