---
# System prepended metadata

title: Jam 05 - Summary and Submission
tags: [uml, classes, "3 \U0001F9EA in testing", arraylist, documentation, "4 \U0001F973 done"]

---

---
title: "Jam 05 - Summary and Submission"
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 %}

# Summary

Throughout this jam, you've built a strong foundation in object-oriented programming concepts:

1. **Class Design & UML**
   - Created professional UML class diagrams
   - Learned proper class design principles
   - Mastered draw.io for documentation
   - Understood relationships between classes

2. **Object-Oriented Programming**
   - Implemented encapsulation with private fields and public methods
   - Created constructors and getter methods
   - Used toString for object representation
   - Managed object relationships

3. **Collection Management**
   - Worked with ArrayList for dynamic collections
   - Implemented search and management operations
   - Applied defensive copying principles
   - Handled collection validation

4. **Professional Development**
   - Used test-driven development
   - Followed documentation best practices
   - Applied proper error handling
   - Created maintainable, well-structured code

## Looking Ahead

In the next jam, we'll build on these foundations as we explore:

- Inheritance and polymorphism
- Abstract classes and interfaces
- More complex object relationships
- Advanced collection operations

# Project Structure

The following new files should be in your repository:

```text
csci205_jams/
├── src/
│   ├── main/
│   │   └── java/
│   │       └── jam05/
│   │           ├── Product.java
│   │           ├── ProductCatalog.java
│   │           └── Jam05-uml.drawio.png
│   └── test/
│       └── java/
│           └── jam05/
│               ├── ProductTest.java
│               └── ProductCatalogTest.java
```

# Submission

Before submitting your work, complete this final checklist:

1. **Code Completeness**
   - All required files are present and in correct locations:
     - `Product.java` with working implementation
     - `ProductCatalog.java` with collection management
     - `Jam05-uml.drawio.png` UML diagram
     - All test files in correct location
   - All files compile without errors
   - All programs run correctly

2. **Documentation**
   - UML diagram is clear and complete
   - All code follows course standards

3. **Testing**
   - All test cases pass (5 Product tests, 8 ProductCatalog tests)
   - Product class works correctly
   - ProductCatalog manages collections properly
   - New price range feature works as expected

4. **Version Control**
   First, push your feature branch as a backup:

   ```bash
   # Ensure all changes are committed
   git status
   
   # Push your jam05 branch to remote
   git push origin jam05
   ```

   Then, merge your work into main:

   ```bash
   # Switch to main branch
   git checkout main
   
   # Merge your jam05 branch into main
   git merge jam05
   
   # Push main to remote
   git push
   ```

:::warning
🚨 **Important Submission Notes**

1. Branch Management:
   - Main branch should contain your final, working submission
   - Keep your `jam05` branch until grading is complete

2. Repository Status:
   - Both branches should be pushed to GitLab
   - Working directory should be clean
   - The instructors can only grade what's in your GitLab repository

:::

:::warning
🚧 **Important**
Always verify your work appears on [gitlab.bucknell.edu](https://gitlab.bucknell.edu/). The instructors and graders can only see and grade what you've properly pushed to your remote repository.
:::
