/******************************************************************
* Modify the Inventory Program to use a GUI.
* The GUI should display the information
* one product at a time, including the item number,
* the name of the product, the number of units in stock,
* the price of each unit, and the value of the inventory
* of that product. In addition, the GUI should display
* the value of the entire inventory, the additional attribute,
* and the restocking fee.
*******************************************************************/
// Inventory4 program for DVD
import java.util.Arrays;
public class Inventory4 {
public static void main(String[] args) {
FeatDVD dvd= null;
Inventory inventory = new Inventory();
dvd = new FeatDVD(0, "Bad Boys", 5, 12.99f, "Comedy");
inventory.add(dvd);
dvd = new FeatDVD(1, "Color Purple", 7, 14.99f, "Drama");
inventory.add(dvd);
dvd = new FeatDVD(2, "Madea Family Reunion", 6, 13.99f, "Drama");
inventory.add(dvd);
dvd = new FeatDVD(3, "Diary of a Mad Black Woman", 3, 15.99f, "Drama");
inventory.add(dvd);
dvd = new FeatDVD(4, "Forest Gump", 8, 11.99f, "Comedy");
inventory.add(dvd);
dvd = new FeatDVD(5, "How Stella Got Her Groove Back", 2, 12.99f, "Drama");
inventory.add(dvd);
dvd = new FeatDVD(6, "What's love Got to do With it", 7, 15.99f, "Drama");
inventory.add(dvd);
dvd = new FeatDVD(7, "Purple Rain", 7, 11.99f, "Drama");
inventory.add(dvd);
inventory.display();
GUI gui = new GUI(inventory); // Start the GUI
} // end main
} // end class Inventory4
/**** Class decribes DVD while demostrating polymorphism and inheritance**/
class DVD implements Comparable
{
private int dvditem;
private String dvdtitle;
private int dvdstock;
private double dvdprice;
// Constructor
DVD()
{
dvditem = 0;
dvdtitle = "";
dvdstock = 0;
dvdprice = 0;
}// end constructor
//constructor initializes variables
DVD(int item, String title, int stock, double price)
{
this.dvditem = item;
this.dvdtitle = title;
this.dvdstock = stock;
this.dvdprice = price;
}
private void setTitle( String title )
{
this.dvdtitle = title;
}
public String getdvdTitle()
{
return dvdtitle;
}
private void setdvdItem( int item )
{
this.dvditem = item;
}
public int getdvdItem()
{
return dvditem;
}
private void setdvdStock( int stock )
{
this.dvdstock = stock;
}
public int getdvdStock()
{
return dvdstock;
}
private void setdvdPrice (double price )
{
this.dvdprice = price;
}
public double getdvdPrice()
{
return dvdprice;
}
public double getValue()
{
double value = dvdstock * dvdprice;
return value;
}
// This method tells the sort method what is to be sorted
public int compareTo(Object o)
{
return dvdtitle.compareTo(((DVD) o).getdvdTitle());
}
// This method passes the format for the string
public String toString()
{
return String.format("Unit number:%d %12s Units:%2d Price: $%5.2f Movie value: $%6.2f",
dvditem, dvdtitle, dvdstock, dvdprice, getValue());
}
} // end class DVD
/**** This is a subclass that adds 5% restocking fee and new feature***/
class FeatDVD extends DVD
{
private String genres;
// class constructor
FeatDVD(int item, String title, int stock, float price, String genres)
{
super(item, title, stock, price);
this.genres = genres;
}
public double getValue()
{// getvalue method overrides
// getvalue method in the superclass
double value = 1.05F * super.getValue();
return value;
}// end getValue method
public String toString()
{//toString method overrides the superclass toString method
//adding another fields
return super.toString() + "Genre:" + genres;
}// end toString method
}// end class FeatDVD
/*****class has inventory of DVDs.
* This class has methods to add and display dvds****/
class Inventory
{
private DVD[] dvds;
private int nCount;
// constructor
Inventory()
{
dvds = new DVD[10];
nCount = 0;
}
public void add(DVD dvd)
{
dvds[nCount] = dvd;
++nCount;
sort();
}
public int getNcount()
{
return nCount;
}
// method calculates total value of inventory
public double getTotalValue()
{
double totalValue = 0;
for (int i = 0; i < nCount; i++)
totalValue = dvds[i].getValue();
return totalValue;
} // end getTotalValue
public DVD getDVD(int n) //use in GUI
{// protects n and keep in range
if (n<0)
n = 0;
else if (n >= nCount)
n = nCount - 1;
return dvds[n];
}
// sorts the DVDs
private void sort()
{
Arrays.sort(dvds, 0, nCount);
}// end sort method
public void display()
{
System.out.println("\nThe inventory contains " + nCount + "DVDs\n");
for (int i = 0; i < nCount; i++)
System.out.printf("%d: %s\n", i, dvds[i]);
System.out.printf("\nTotal value of the inventory is $%.2f\n", getTotalValue());
} // end display method
} // end class Inventory