Chapter 10. PC #10. Ship, CruiseShip, and CargoShip Classes Design a Ship class
ID: 3721727 • Letter: C
Question
Chapter 10. PC #10. Ship, CruiseShip, and CargoShip Classes
Design a Ship class that the following members:
• A field for the name of the ship (a string).
• A field for the year that the ship was built (a string).
• A constructor and appropriate accessors and mutators.
• A toString method that displays the ship’s name and the year it was built.
Design a CruiseShip class that extends the Ship class. The CruiseShip class should have the following members:
• A field for the maximum number of passengers (an int).
• A constructor and appropriate accessors and mutators.
• A toString method that overrides the toString method in the base class. The
CruiseShip class’s toString method should display only the ship’s name and the maximum number of passengers.
Design a CargoShip class that extends the Ship class. The CargoShip class should have the following members:
• A field for the cargo capacity in tonnage (an int).
• A constructor and appropriate accessors and mutators.
• A toString method that overrides the toString method in the base class. The
In java language.
In the main class, you should read the input file and create an array containing Ship, CargoShip, CruiseShip objects based on the information provided on each line. The file is in CSV (comma separated values) format. This means each line contains multiple data elements separated by comma. You can use Scanner class to input the data or if you know how to work with StringTokenizer you can also use it. Another option is to use the split() method in the String class.
The first column in the file contains the ship type (“Ship”, “CruiseShip”, or “CargoShip”) as a String. The second column contains the Ship Name as a String. The third column contains Year Built as a String. The forth column contains different information for different ship types:
For ship type = “Ship” - empty (ignore)
For ship type=”CargoShip” - Cargo Capacity (int)
For ship type=”CruiseShip” - Max Passengers (int)
Cruise Ship Ship Name: Aegean Spirit Year Built: 2003 Max Passengers: 4,500 Standard Ship Ship Name: Classica Year Built: 1990 Cargo Ship Ship Name: Edith Maersk Year Built: 2007 Cargo Capacity: 170,794 Cargo Ship Ship Name: Emma Maersk Year Built: 2006 Cargo Capacity: 156,907 Cruise Ship Ship Name: Enchanted Capri Year Built: 1970 Max Passengers: 7,000 Cargo Ship Ship Name: Estelle Maersk Year Built: 2006 Cargo Capacity: 151,687 Cruise Ship Ship Name: Explorer of the Seas Year Built: 2001 Max Passengers: 9,500 Standard Ship Ship Name: MV Delight Year Built: 1985 Cargo Ship Ship Name: Ocean Glory Year Built: 2006 Cargo Capacity: 161,788 Cruise Ship Ship Name: Our Lady Year Built: 1960 Max Passengers: 3,500 Standard Ship Ship Name: Provence Year Built: 1995 Standard Ship Ship Name: SS Desabla Year Built: 1913 Cruise Ship Ship Name: Symphony Year Built: 2001 Max Passengers: 10,000
Explanation / Answer
ShipDemo.java
public class ShipDemo
{
public static void main(String[] args)
{
// Constant for the number of ships.
final int NUM_SHIPS = 5;
// Create an array of Ship references.
Ship[] ships = new Ship[NUM_SHIPS];
// Assign Ship objects to the array elements.
ships[0] = new CruiseShip("SS Minnow", "1960",7);
ships[1] = new CruiseShip("Titanic", "1998", 3327);
ships[2] = new CargoShip("Maersk Alabama", "1800", 14120);
ships[3] = new CruiseShip("Costa Concordia", "1800", 3780);
ships[4] = new Ship("Black Pearl", "1725");
// Call each object's toString method.
for (int index = 0; index < NUM_SHIPS; index++)
{
System.out.println(index+" "+ships[index]);
}
}
}
Ship.java
public class Ship {
private String name, year;
public Ship(String name, String year) {
super();
this.name = name;
this.year = year;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String toString() {
return "Ship "+getName()+" - Built: "+year;
}
}
CargoShip.java
public class CargoShip extends Ship{
private int capacity ;
public CargoShip(String name, String year , int c) {
super(name, year);
capacity = c;
}
public int getCapacity() {
return capacity;
}
public void setCapacity(int capacity) {
this.capacity = capacity;
}
@Override
public String toString() {
return "Cargo Ship: "+getName()+" - tonnage: "+capacity;
}
}
CruiseShip.java
public class CruiseShip extends Ship{
private int numberOfPassengers;
public CruiseShip(String name, String year , int n) {
super(name, year);
numberOfPassengers = n;
}
public String toString() {
return "Cruise Ship: "+getName()+" - # Passengers: "+numberOfPassengers;
}
public int getNumberOfPassengers() {
return numberOfPassengers;
}
public void setNumberOfPassengers(int numberOfPassengers) {
this.numberOfPassengers = numberOfPassengers;
}
}
Output:
0 Cruise Ship: SS Minnow - # Passengers: 7
1 Cruise Ship: Titanic - # Passengers: 3327
2 Cargo Ship: Maersk Alabama - tonnage: 14120
3 Cruise Ship: Costa Concordia - # Passengers: 3780
4 Ship Black Pearl - Built: 1725
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.