---
description: How can I rebuild a prior project using object oriented programming?
---

# 🗃 Optional U4LA3 Mini Project: Rebuild with Objects

### Teacher Notes and Overview

This is an entirely optional mini project; it's most recommended for schools that are either moving rapidly through the curriculum, or are not planning to complete Unit 5, as it does take time away from the rest of the content. In this mini project, students are challenged to rebuild a prior project (the Interactive Drawing app) using object-oriented programming.&#x20;

This project could also be used to rebuild any other project or to try and create something entirely new using objects. [Pong](https://www.ponggame.org/) is a great example, or trying to replicate a [Plinko](https://priceisright.fandom.com/wiki/Plinko) board. With objects introduced, the sky is really the limit for your students!

### Suggested Duration

3-4 45-minute periods

### Prompt

You've created a lot of amazing projects so far, but they have all been done with what we call **procedural programming.** That means you have relied on **procedures** - your custom functions - to organize the bulk of your computing. As of this unit, though, you have now learned about **objects** and are capable of **object-oriented programming** where the bulk of your computing will be organized around objects and their methods.

This is a powerful programming tool that can make life SO much easier. To showcase and celebrate that development, we want you to rebuild a past project - and unless you are given another specific prompt, we are going to make that the **Interactive Drawing Project from Unit 2!**

**Requirements**

1. Create a `Brush` class that will have one object instance. Think about what properties and methods this class will require!
2. Create a `Button` class so you can make each clickable button (your colors, etc) an object instance of this class. Think about what properties and methods this class will require!
3. Think back to the spicy options from Unit 2, such as giving different brush style options - are they now easier to complete or integrate into this program?
4. Consider other parts of your program that may benefit from becoming a Class/object and implement accordingly. (Could the background/draw surface become a Class/object? WHO KNOWS!)
5. Use everything you have learned so far to make this program run as efficiently as possible!

### Sample Output

_Visually, this sample output will not vary from the Unit 2 Project - what will really change is the code!_

Similar to the struggles students may have faced in developing functions to make their intial program, their may be confusion around what exactly to include in their Classes. Consider pseudocoding some of this out with students or doing a group brainstorm to help put them on the right track.

### Extensions

While there are no specific extensions for this project, students should be challenged to make this version better than their original, and to try to make their code as efficient as possible.
