--- 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 %}