Chapter 4 - Java for Beginners Course

Example Project - A Simple Vending Machine

For the code example in this chapter, we’ll assume we’re programming a very simple vending machine.

Our simple vending machine has the following properties:

  1. Sells only one type of product with a fixed cost of 10.

  2. Will deliver an item only if there is enough balance.

  3. Customers can add money to the vending machine.

  4. Customers can request change if available.

  5. The vending machine has an unlimited supply of items to deliver (for simplicity purposes!).

  6. The maximum balance it can hold is 100.

The basics of our UnlimitedSupplyVendingMachine class

The version of the UnlimitedSupplyVendingMachine class in the example project in GitHub is the final version you’ll get after following these sections. You can use that one as reference if you’re following these sections step-by-step.
public class UnlimitedSupplyVendingMachine {
    private int maxAllowedBalance = 100;

    private int costPerItem = 10;

    private int balance = 0;

    public int getBalance() {
        return balance;

Our basic UnlimitedSupplyVendingMachine class above allows us to query the current balance the customer has. Now, let’s implement the other features of our vending machine.

We’ll continue adding functionality to our UnlimitedSupplyVendingMachine class in the next sections to illustrate more concepts that we covered in the first 3 chapters.
For those of you that know about static constants, you’ll notice that we’re not using them in this example. Main reason here is that we haven’t introduced that concept yet in our beginners course. We’ll start using them later when we cover the static keyword.
Code in GitHub

Get the code for this tutorial using the links below.

Project Repo
Download code for this step
Main class for this step

This is a list of recommended tutorials or courses that might be useful before starting this one.

Welcome to the Course!
Course Introduction
Chapter 1 - Building Blocks
Quick introduction to Java Variables Classes And Objects Class Example - Defining a class Object Examples - Creating instances Java Application Example - Running our first app Accessing class members - The dot operator Packages - Organizing the code
Chapter 2 - Primitives and Operators
Primitives Arithmetic Operators Assignment Operator Unary Operators Equality and Relational Operators Conditional Operators
Chapter 3 - Statements and Control Flow
Expressions Statements If-Then Statement If-Then-Else Statement More If Statements Switch Statement While and Do-While Statements For Statement Branching Statements Exception Handling
Chapter 4 - Code Example
Example Project - A Simple Vending Machine Adding money Delivering Items Giving Change
Chapter 5 - Classes and Interfaces
Introduction Access Level Modifiers Class Declaration - Class, Methods and Fields Class Declaration - Constructors Inheritance Basics Inheritance - Constructors Inheritance - Methods and Fields Polymorphism Abstract Classes and Methods Interfaces Static Class Members Class Composition Final Classes and Class Members Generic Classes
Chapter 6 - Base Object Behaviors
Introduction Type Comparison Type Casting Object Equality - The Contract Object Equality - Common Pitfalls Object String Representation Garbage Collection Object Comparison Primitive Wrappers and Autoboxing
Chapter 7 - Data Structures
Introduction Arrays - Declaration and Creation Arrays - Basic Operations Core Collection Interfaces List and ArrayList - Basic Operations ArrayList Internals Introduction to Hash Tables Map and HashMap - Basic Operations Set and HashSet - Basic Operations
Chapter 8 - Anonymous classes and lambdas
Introduction Filtering a List Anonymous Classes Lambdas Built-in Functional Interfaces
Chapter 9 - Streams
Introduction Creating Streams Intermediate Operations Terminal Operations