Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I need to do the following to the program below: Problem formulation Following p

ID: 3712376 • Letter: I

Question

I need to do the following to the program below:

Problem formulation

Following previous assignment (development of the Asset class) you now need to extend it and create a few derivative classes, i.e. a Router, a Switch, a Server, a PSU (Power Supply Unit) etc. Each of those new classes has to be declared as extending the base Asset class and introduce new attributes and methods. For example, you may consider the following skeletons or add something that matches your expectations:

Router

String application; // one from the following list "Home", "Core", "Infrastructure", etc

int numOfNICs; // number of network interfaces

String OS; // operating system. including vendor, version, and other details

boolean hasConsole; // flag that indicates presence of management console

Switch

int numOf_100M; // number of 100Mb ethernet interfaces

int numOf_1G; // number of 1Gb ethernet interfaces

int numOf_10G; // number of 10Gb ethernet interfaces

int numOf_SFP; // number of SFP modules

String OS; // operating system. including vendor, version, and other details

String level; one from the following list "L2", "L3", "L4"

Server

String OS; // same as with the Router

int NumOfNICs; // same as with the Router

boolean isVirtualized; // flag that shows whether or not this server is a Virtual Machine running on some virtualization platform

You may add more types of assets, and more attributes into each asset to make it looking more realistic, but the grading decision will be based on whether or not inheritance is defined correctly. Inheritance should not be considered as only including keyword "extends" in the declaration of a class, but mainly as a proper set of methods that have to be either added or overridden. One of such methods would be the constructor, such that constructor of the Router class will be different than constructor of the Switch class, but both should call constructor of the Asset class by using super(); notation. You may also consider adding up getters/setters for the extended set of attributes.

Please also have in mind that a customized version of toString() method is needed for each derivative class in order to be able to "print" corresponding objects. Such method is about to return presentation of all valuable class attributes in form of a formatted String object.

Finally, your Driver program also needs to be revised to update the way how different assets are instantiated:

Previously:

Asset A1 = new Asset("server", "HP Proliant ML350 G6", "876245", ...);
Asset A2 = new Asset("switch", "Netgear GS108T", "782364", ...);

After introducing new sub-classes:

Asset A1 = new Server("server", "HP Proliant ML350 G6", "876245", ...);
Asset A2 = new Switch("switch", "Netgear GS108T", "782364", ...);

Despite both forms look alike, the latter is different as each object is now created by a dedicated constructor so a unique set of attributes is being used.

public static void main(String[] args) {
// List of company assets
Asset assetList[]=new Asset[7];

//assetList0 Server
assetList[0]=new Asset();
assetList[0].setType("Server");
assetList[0].setId(0);
assetList[0].setName("IBM Blade Center Hs22");
assetList[0].setSerial("CNU37569");
assetList[0].setPid(-1);

//assetList1 Switch
assetList[1]=new Asset();
assetList[1].setType("Switch");
assetList[1].setId(1);
assetList[1].setName("Cisco Catalyst 2960G");
assetList[1].setSerial("WY752059");
assetList[1].setPid(0);

//assetList2 PSU1
assetList[2]=new Asset();
assetList[2].setType("PSU1");
assetList[2].setId(2);
assetList[2].setName("IBM 39Y7408 2900 Watt PSU");
assetList[2].setSerial("JWI69839");
assetList[2].setPid(0);

//assetList3 PSU2
assetList[3]=new Asset();
assetList[3].setType("PSU2");
assetList[3].setId(3);
assetList[3].setName("IBM 39Y7408 2900 Watt PSU");
assetList[3].setSerial("JWI29849");
assetList[3].setPid(0);

//assetList4 NIC1
assetList[4]=new Asset();
assetList[4].setType("NIC1");
assetList[4].setId(4);
assetList[4].setName("Cisco EHWIC-4ESG 4 Port NIC");
assetList[4].setSerial("LWK76246");
assetList[4].setPid(1);

//assetList5 Nic2
assetList[5]=new Asset();
assetList[5].setType("NIC2");
assetList[5].setId(5);
assetList[5].setName("Cisco EHWIC-4ESG 4 Port NIC");
assetList[5].setSerial("LWK98352");
assetList[5].setPid(1);

//assetList6 Nic3
assetList[6]=new Asset();
assetList[6].setType("NIC3");
assetList[6].setId(6);
assetList[6].setName("Cisco EHWIC-4ESG 4 Port NIC");
assetList[6].setSerial("LWK56209");
assetList[6].setPid(1);

for (Asset asset : assetList) {
System.out.println(asset);
}
}
}

class Asset
{
//instance variables of asset
String type;
int id;
String name;
String serial;
int pid;
  
//default constructor
Asset()
{
type="";
id=0;
name="";
serial="";
pid=0;
}

//getters & setters
public void setType(String a)
{
type=a;
}
public String getType()
{
return type;
}

  
  
public void setId(int id)
{
this.id=id;
}
public int getId()
{
return id;
}
  
  
  
public void setName(String n)
{
name=n;
}
public String getName()
{
return name;
}
  
  
  
public void setSerial(String s)
{
serial=s;
}
public String getSerial()
{
return serial;
}
  
  
  
public void setPid(int pid)
{
this.pid=pid;
}
public int getPid()
{
return pid;
}
  
  
//toString() of asset
@Override
public String toString()
{
return " Type: " + getType() + " ID: " + getId() + " Name: " + getName() + " Serial: " + getSerial() + " PID: " + getPid() + " ";
}
}

Explanation / Answer

Below is your code. I believe its just to show the concept of Inheritence. So I have not implemented PSU class as atributes were not provided. So let me know if you have any issues.

Asset.java

class Asset {

// instance variables of asset

String type;

int id;

String name;

String serial;

int pid;

// default constructor

Asset() {

type = "";

id = 0;

name = "";

serial = "";

pid = 0;

}

// getters & setters

public void setType(String a) {

type = a;

}

public String getType() {

return type;

}

public void setId(int id) {

this.id = id;

}

public int getId() {

return id;

}

public void setName(String n) {

name = n;

}

public String getName() {

return name;

}

public void setSerial(String s) {

serial = s;

}

public String getSerial() {

return serial;

}

public void setPid(int pid) {

this.pid = pid;

}

public int getPid() {

return pid;

}

// toString() of asset

@Override

public String toString() {

return " Type: " + getType() + " ID: " + getId() + " Name: " + getName() + " Serial: "

+ getSerial() + " PID: " + getPid() + " ";

}

}

Driver.java

public class Driver {

public static void main(String[] args) {

// List of company assets

Asset assetList[] = new Asset[7];

// assetList0 Server

assetList[0] = new Server();

assetList[0].setId(0);

assetList[0].setName("IBM Blade Center Hs22");

assetList[0].setSerial("CNU37569");

assetList[0].setPid(-1);

// assetList1 Switch

assetList[1] = new Switch();

assetList[1].setId(1);

assetList[1].setName("Cisco Catalyst 2960G");

assetList[1].setSerial("WY752059");

assetList[1].setPid(0);

// assetList2 PSU1

assetList[2] = new Asset();

assetList[2].setType("PSU1");

assetList[2].setId(2);

assetList[2].setName("IBM 39Y7408 2900 Watt PSU");

assetList[2].setSerial("JWI69839");

assetList[2].setPid(0);

// assetList3 PSU2

assetList[3] = new Asset();

assetList[3].setType("PSU2");

assetList[3].setId(3);

assetList[3].setName("IBM 39Y7408 2900 Watt PSU");

assetList[3].setSerial("JWI29849");

assetList[3].setPid(0);

// assetList4 NIC1

assetList[4] = new Asset();

assetList[4].setType("NIC1");

assetList[4].setId(4);

assetList[4].setName("Cisco EHWIC-4ESG 4 Port NIC");

assetList[4].setSerial("LWK76246");

assetList[4].setPid(1);

// assetList5 Nic2

assetList[5] = new Asset();

assetList[5].setType("NIC2");

assetList[5].setId(5);

assetList[5].setName("Cisco EHWIC-4ESG 4 Port NIC");

assetList[5].setSerial("LWK98352");

assetList[5].setPid(1);

// assetList6 Nic3

assetList[6] = new Asset();

assetList[6].setType("NIC3");

assetList[6].setId(6);

assetList[6].setName("Cisco EHWIC-4ESG 4 Port NIC");

assetList[6].setSerial("LWK56209");

assetList[6].setPid(1);

for (Asset asset : assetList) {

System.out.println(asset);

}

// Stores Server1 asset

Asset server1 = new Server();

server1.setType("Data Server");

server1.setId(1002);

server1.setName("SkyWalker Server");

server1.setSerial("WF25D785FC");

// Prints Server1 asset

System.out.println(server1.toString());

// Stores Server2 asset

Asset server2 = new Server();

server2.setType("Web Server");

server2.setId(1003);

server2.setName("Juniper Server");

server2.setSerial("WF85G359IC");

// Prints Server2 asset

System.out.println(server2.toString());

// Stores NIC1 asset

Asset NIC1 = new Switch(4, 5, 6, 7, "Windows", "Level 7");

NIC1.setType("Ethernet NIC");

NIC1.setId(2125);

NIC1.setName("Gigabit Network Interface Card");

NIC1.setSerial("N254FG12");

NIC1.setPid(356984);

// Prints NIC1 asset

System.out.println(NIC1.toString());

// Stores NIC2 asset

Asset NIC2 = new Switch(22, 23, 4, 6, "iOS", "V.9.9");

NIC2.setType("E1000 NIC");

NIC2.setId(3285);

NIC2.setName("Emulated Gigabit Ethernet NIC");

NIC2.setSerial("N487CD45");

NIC2.setPid(235984);

// Prints NIC2 asset

System.out.println(NIC2.toString());

// Stores Router1 asset

Asset router1 = new Router();

router1.setType("Tri-Band Gigabit WiFi Router");

router1.setId(9864);

router1.setName("NETGEAR Nighthawk X6 AC3200");

router1.setSerial("SNR51OP362LK");

// Prints Router1 asset

System.out.println(router1.toString());

// Stores Router2 asset

Asset router2 = new Router();

router2.setType("Smart WiFi Dual Band Gigabit Router");

router2.setId(9856);

router2.setName("NETGEAR Nighthawk X4S - AC2600");

router2.setSerial("SNR25OP984NJ");

// Prints Router2 asset

System.out.println(router2.toString());

// Stores Switch asset

Asset Switch = new Switch();

Switch.setType("Fast Ethernet Smart Managed Switch");

Switch.setId(4823);

Switch.setName("NETGEAR ProSAFE FS526T");

Switch.setSerial("SNR57OC458GL");

// Prints Switch asset

System.out.println(Switch.toString());

}

}

Switch.java

public class Switch extends Asset {

int numOf_100M; // number of 100Mb ethernet interfaces

int numOf_1G; // number of 1Gb ethernet interfaces

int numOf_10G; // number of 10Gb ethernet interfaces

int numOf_SFP; // number of SFP modules

String OS; // operating system. including vendor, version, and other details

String level; // one from the following list "L2", "L3", "L4"

public Switch() {

super();

}

public Switch(int numOf_100M, int numOf_1G, int numOf_10G, int numOf_SFP, String oS, String level) {

super();

this.numOf_100M = numOf_100M;

this.numOf_1G = numOf_1G;

this.numOf_10G = numOf_10G;

this.numOf_SFP = numOf_SFP;

OS = oS;

this.level = level;

}

public int getNumOf_100M() {

return numOf_100M;

}

public void setNumOf_100M(int numOf_100M) {

this.numOf_100M = numOf_100M;

}

public int getNumOf_1G() {

return numOf_1G;

}

public void setNumOf_1G(int numOf_1G) {

this.numOf_1G = numOf_1G;

}

public int getNumOf_10G() {

return numOf_10G;

}

public void setNumOf_10G(int numOf_10G) {

this.numOf_10G = numOf_10G;

}

public int getNumOf_SFP() {

return numOf_SFP;

}

public void setNumOf_SFP(int numOf_SFP) {

this.numOf_SFP = numOf_SFP;

}

public String getOS() {

return OS;

}

public void setOS(String oS) {

OS = oS;

}

public String getLevel() {

return level;

}

public void setLevel(String level) {

this.level = level;

}

@Override

public String toString() {

return "Switch: numOf_100M:" + numOf_100M + " numOf_1G:" + numOf_1G + " numOf_10G:" + numOf_10G

+ " numOf_SFP:" + numOf_SFP + " OS:" + OS + " level:" + level + " " + super.toString();

}

}

Router.java

public class Router extends Asset {

String application; // one from the following list "Home", "Core",

// "Infrastructure", etc

int numOfNICs; // number of network interfaces

String OS; // operating system. including vendor, version, and other details

boolean hasConsole; // flag that indicates presence of management console

public Router() {

super();

}

public Router(String application, int numOfNICs, String oS, boolean hasConsole) {

super();

this.application = application;

this.numOfNICs = numOfNICs;

OS = oS;

this.hasConsole = hasConsole;

}

public String getApplication() {

return application;

}

public void setApplication(String application) {

this.application = application;

}

public int getNumOfNICs() {

return numOfNICs;

}

public void setNumOfNICs(int numOfNICs) {

this.numOfNICs = numOfNICs;

}

public String getOS() {

return OS;

}

public void setOS(String oS) {

OS = oS;

}

public boolean isHasConsole() {

return hasConsole;

}

public void setHasConsole(boolean hasConsole) {

this.hasConsole = hasConsole;

}

@Override

public String toString() {

return "Router: Application:" + application + " numOfNICs:" + numOfNICs + " OS:" + OS + " hasConsole:"

+ hasConsole + " " + super.toString();

}

}

Server.java

public class Server extends Asset {

String OS; // same as with the Router

int NumOfNICs; // same as with the Router

boolean isVirtualized; // flag that shows whether or not this server is a

// Virtual Machine running on some virtualization

// platform

public Server() {

super();

}

public Server(String oS, int numOfNICs, boolean isVirtualized) {

super();

OS = oS;

NumOfNICs = numOfNICs;

this.isVirtualized = isVirtualized;

}

public String getOS() {

return OS;

}

public void setOS(String oS) {

OS = oS;

}

public int getNumOfNICs() {

return NumOfNICs;

}

public void setNumOfNICs(int numOfNICs) {

NumOfNICs = numOfNICs;

}

public boolean isVirtualized() {

return isVirtualized;

}

public void setVirtualized(boolean isVirtualized) {

this.isVirtualized = isVirtualized;

}

@Override

public String toString() {

return "Server: OS:" + OS + " NumOfNICs:" + NumOfNICs + " isVirtualized:" + isVirtualized + " "

+ super.toString();

}

}

Output

Server:
OS:null
NumOfNICs:0
isVirtualized:false


Type:  
ID: 0
Name: IBM Blade Center Hs22
Serial: CNU37569
PID: -1

Switch:
numOf_100M:0
numOf_1G:0
numOf_10G:0
numOf_SFP:0
OS:null
level:null


Type:  
ID: 1
Name: Cisco Catalyst 2960G
Serial: WY752059
PID: 0

Type: PSU1
ID: 2
Name: IBM 39Y7408 2900 Watt PSU
Serial: JWI69839
PID: 0

Type: PSU2
ID: 3
Name: IBM 39Y7408 2900 Watt PSU
Serial: JWI29849
PID: 0

Type: NIC1
ID: 4
Name: Cisco EHWIC-4ESG 4 Port NIC
Serial: LWK76246
PID: 1

Type: NIC2
ID: 5
Name: Cisco EHWIC-4ESG 4 Port NIC
Serial: LWK98352
PID: 1

Type: NIC3
ID: 6
Name: Cisco EHWIC-4ESG 4 Port NIC
Serial: LWK56209
PID: 1

Server:
OS:null
NumOfNICs:0
isVirtualized:false


Type: Data Server
ID: 1002
Name: SkyWalker Server
Serial: WF25D785FC
PID: 0

Server:
OS:null
NumOfNICs:0
isVirtualized:false


Type: Web Server
ID: 1003
Name: Juniper Server
Serial: WF85G359IC
PID: 0

Switch:
numOf_100M:4
numOf_1G:5
numOf_10G:6
numOf_SFP:7
OS:Windows
level:Level 7


Type: Ethernet NIC
ID: 2125
Name: Gigabit Network Interface Card
Serial: N254FG12
PID: 356984

Switch:
numOf_100M:22
numOf_1G:23
numOf_10G:4
numOf_SFP:6
OS:iOS
level:V.9.9


Type: E1000 NIC
ID: 3285
Name: Emulated Gigabit Ethernet NIC
Serial: N487CD45
PID: 235984

Router:
Application:null
numOfNICs:0
OS:null
hasConsole:false


Type: Tri-Band Gigabit WiFi Router
ID: 9864
Name: NETGEAR Nighthawk X6 AC3200
Serial: SNR51OP362LK
PID: 0

Router:
Application:null
numOfNICs:0
OS:null
hasConsole:false


Type: Smart WiFi Dual Band Gigabit Router
ID: 9856
Name: NETGEAR Nighthawk X4S - AC2600
Serial: SNR25OP984NJ
PID: 0

Switch:
numOf_100M:0
numOf_1G:0
numOf_10G:0
numOf_SFP:0
OS:null
level:null


Type: Fast Ethernet Smart Managed Switch
ID: 4823
Name: NETGEAR ProSAFE FS526T
Serial: SNR57OC458GL
PID: 0