Demo - Passing Objects as Arguments to Methods

The Inventory Class

/** * This class uses three constructors. */ public class InventoryItem { private String description; // Item description private int units; // Units on-hand /** * No-arg constructor */ public InventoryItem() { description = ""; units = 0; } /** * The following constructor accepts a String argument that is assigned to the * description field. */ public InventoryItem(String pDescription) { description = pDescription; units = 0; } /** * The following constructor accepts a String argument that is assigned to the * description field, and an int argument that is assigned to the units field. */ public InventoryItem(String pDescription, int pUnits) { description = pDescription; units = pUnits; } /** * SETTERS */ public void setDescription(String pDescription) { description = pDescription; } public void setUnits(int pUnits) { units = pUnits; } /** * GETTERS */ public String getDescription() { return description; } public int getUnits() { return units; } }

The Java class InventoryItem in this code is a basic class that represents an inventory item. This class has two instance variables: description which is a string that describes the item, and units which is an integer representing the quantity of the item on-hand.

The class provides three constructors:

  1. InventoryItem(): This is a no-argument constructor. It initializes description with an empty string and units with 0.

  2. InventoryItem(String pDescription): This constructor takes a string argument pDescription, and assigns it to the description instance variable. It initializes units with 0.

  3. InventoryItem(String pDescription, int pUnits): This constructor takes a string pDescription and an integer pUnits as arguments. It assigns pDescription to description and pUnits to units.

In addition, the class has getter and setter methods for its instance variables:

  1. setDescription(String pDescription): This method sets the value of the description instance variable to pDescription.

  2. setUnits(int pUnits): This method sets the value of the units instance variable to pUnits.

  3. getDescription(): This method returns the value of the description instance variable.

  4. getUnits(): This method returns the value of the units instance variable.

IInventoryItem Class - Passing on an object as an argument

package OverloadConstructors; /** * This program passes an object as an argument. */ public class InventoryDemoTwo { public static void main(String[] args) { // Create an InventoryItem object. InventoryItem item = new InventoryItem("Wrench", 20); // Pass the object to the DisplayItem method. System.out.println("The contents of item are:"); displayItem(item); // Create another InventoryItem object. InventoryItem itemTwo = new InventoryItem("Wrench", 20); // Display the object's contents. System.out.println("The contents of item are:"); displayItem(itemTwo); // Pass the object to the ChangeItem method. changeItem(itemTwo); // Display the object's contents again. System.out.println("Now the contents of item are:"); displayItem(itemTwo); } //end of main /** * The following method accepts an InventoryItem * object as an argument and displays its contents. */ public static void displayItem(InventoryItem pItem) { System.out.println("Description: " + pItem.getDescription()); System.out.println("Units: " + pItem.getUnits()); } /** * The following method accepts an InventoryItem * object as an argument and changes its contents. */ public static void changeItem(InventoryItem pItem) { pItem.setDescription("Hammer"); pItem.setUnits(5); } }

 

This Java program is demonstrating how objects can be passed to methods as arguments and how a method can change the state of an object passed to it.

  1. main method first creates an InventoryItem object item with a description of "Wrench" and 20 units.

  2. Then, item is passed to the displayItem method, which accepts an InventoryItem object as an argument. The displayItem method prints the description and units of the InventoryItem passed to it.

  3. After that, another InventoryItem object itemTwo is created with the same values as item. It prints the description and units of itemTwo directly in the main method.

  4. Next, itemTwo is passed to the changeItem method, which also accepts an InventoryItem object as an argument. This method modifies the InventoryItem it receives by setting the description to "Hammer" and the units to 5.

  5. Finally, it again prints the description and units of itemTwo. However, this time the values are different because they were modified by the changeItem method.

This demonstrates that when you pass an object to a method, the method has access to the original object and can modify its state. This is different from passing primitive types to methods, where the method only gets a copy of the value and cannot modify the original.

COSC-1437 / ITSE-2457 Computer Science Dept. - Author: Dr. Kevin Roark