/** * App used to demonstrate inheritance and object oriented programming. */ package com.github.cbpos1989.examples.inheritance; /** * @author cbpos1989 * */ import java.util.Scanner; import java.util.Random; public class SmartApp { private static final int MAX_NUMBER_DEVICES = 100; //private static final int MAX_NUMBER_PHONES = 40; //private static final int MAX_NUMBER_TABLETS = 40; //private static final int MAX_NUMBER_WATCHES = 20; private Scanner scan; private Random rnd; private Device[] devices = new Device[100]; public static void main(String[] args){ //System.out.println("Working"); SmartApp sa = new SmartApp(); sa.createArray(); sa.displayMenu(); } void createArray(){ rnd = new Random(); for (int i = 0; i < MAX_NUMBER_DEVICES; ++i ) { int randomNum = rnd.nextInt(3); if(randomNum == 0){ devices[i] = new Phone("Samsung", "S6", 6, "087567451" + i); } else if (randomNum == 1){ devices[i] = new Tablet("Samsung", "Tab4", 10); } else { devices[i] = new Watch("Samsung", "Gear", 2); } } } void displayMenu(){ scan = new Scanner(System.in); String userInput = ""; System.out.println("____SmartApp Menu____"); do{ System.out.println("1)Search for device a specified index\n2)Print out list of devices\n3)Calculate total of screensizes\n4)Quit Program"); System.out.print("\nEnter Your Choice: "); userInput = scan.nextLine(); switch(userInput){ case "1" : searchArray(); break; case "2" : displayArray(); break; case "3" : calculateArray(); break; case "4" : System.out.println("Exiting Program"); break; default : System.out.println("---Invalid Input---"); break; } } while(!userInput.equals("4")); } void searchArray(){ //System.out.println("Searching Array"); System.out.print("\nEnter number 1...100: "); String index = scan.nextLine(); int idx = Integer.parseInt(index); System.out.println("\n" + idx + ") " + devices[idx] + "\n"); System.out.println("Add New Details for entry @ " + idx); System.out.println("Enter Manufacturer: "); String ma = scan.nextLine(); System.out.println("Enter Model: "); String md = scan.nextLine(); System.out.println("Enter Screensize: "); int sc = Integer.parseInt(scan.nextLine()); devices[idx] = new Tablet(ma, md, sc); } void displayArray(){ //System.out.println("Print Array"); int count = 1; for (Device d: devices) { System.out.println(count + ") " + d); count++; } System.out.println(""); } void calculateArray(){ //System.out.println("500"); int total = 0; for (Device d: devices) { total += d.getScreensize(); } System.out.println("Screensize Total = " + total); } } class Device { private String manufacturer = null; private String model = null; private int screensize = -1; public Device(){ } public Device(String manufacturer, String model, int screensize){ this.manufacturer = manufacturer; this.model = model; this.screensize = screensize; } public int getScreensize(){ return this.screensize; } public String toString(){ return "Manufacturer: " + this.manufacturer + " Model: " + this.model + " Screensize: " + this.screensize; } } class Phone extends Device { String phoneNumber = "0000000000"; public Phone(String manufacturer, String model, int screensize, String phoneNumber){ super(manufacturer, model, screensize); this.phoneNumber = phoneNumber; } public String toString(){ return super.toString() + " Phone Num: " + this.phoneNumber; } } class Tablet extends Device{ public Tablet(String manufacturer, String model, int screensize){ super(manufacturer, model, screensize); } public String toString(){ return super.toString(); } } class Watch extends Device{ public Watch(String manufacturer, String model, int screensize){ super(manufacturer, model, screensize); } public String toString(){ return super.toString(); } }