Week 1 — Pizza POS Terminal

Terminal Utility · Java


The Idea

You work at a pizzeria. You use a POS system every shift. And you already know exactly what's wrong with it.

That's the starting point for this project: build the version you actually want. A terminal-based point-of-sale system that handles taking orders, customising items, tracking what's been ordered, and printing a ticket. No bloated interface, no mystery buttons — just something that works the way a busy shift needs it to.

The design challenge is that a menu isn't one kind of thing. A pizza is completely different from a drink — it has a size, it has toppings, and its price depends on choices made at order time. A drink is simpler. A side dish is simpler still. But when you're totalling an order or printing a receipt, you don't want to treat them differently — you just want to loop through the items and ask each one for its price and its description.

You decide what the menu looks like, what items you support, what customisation options exist, and how the interface feels. The only constraint is that all menu items work through the same system when it comes to pricing and display.


Week 1 — Build Your Menu Item Hierarchy

This week is about the menu — modelling the items before worrying about orders, queues, or the full interface.

This week's topic: classes and subclasses.

You need to capture that all menu items share some structure (a name, a price, a way to describe themselves) but differ significantly in how their price is calculated and what their description contains.

You need:

By the end of week 1 you should be able to start the program, add a pizza, a drink, and a side to an order, and see the correct total printed.

What you decide:

Think back to your own frustrations with the current system. Even week 1 is a chance to make something that already feels more logical.