Please complete this in Java. Design a class hierarchy (classes and/or interface
ID: 3830254 • Letter: P
Question
Please complete this in Java.
Design a class hierarchy (classes and/or interfaces) to support a program dealing with geographic objects. Support the following classes (at least) Countries States/Provinces Cities Boundary Segments Rivers Support the following operations, where applicable, plus any others that seem useful (arguments have been omitted, but you will have to include them area, capital o get Cities get Country 0 distance between cities boundary Length() total length of boundary neighbors objects sharing boundaries bordero the countries/states this separates Write out the class definitions, instance variables and method definitions. Some of the instance variables should probably be various kinds of Collections You do not need to implement the methods, but you should include comments inside each method that describe the approach you would take (alternately, you can actually implement them that might be simpler for some methods). Use interfaces and superclasses where appropriate. Supply javadoc comments for all classes, interfaces, and methods. The system you write should compile, even if it doesn't actually work (because the methods are just stubs with comments). Identify all of the classes as belonging to the packageExplanation / Answer
Code
//ourBoundary.java
import java.util.ArrayList;
//Class
public class ourBoundary
{
//Variables
private ourCoordinates starting;
private ourCoordinates ending;
private static int counter = 0;
private int id;
ArrayList<ourGeographical> Places;
//Constructor
ourBoundary(ourCoordinates starting, ourCoordinates ending)
{
//Initialize
this.starting = starting;
this.ending = ending;
counter++;
this.id = counter;
}
//Method ourBoundaryLength()
public double ourBoundaryLength()
{
//Variables and initialization
double distance;
int X11 = starting.get_CoordinateX();
int X22 = ending.get_CoordinateX();
int Y11 = starting.get_CoordinateY();
int Y22 = ending.get_CoordinateY();
distance = Math.sqrt(Math.pow((X22 - X11), 2) + Math.pow((Y22 - Y11), 2));
//Return
return distance;
}
//Method definition
public ArrayList<ourGeographical> ourBorderOf()
{
//Return
return Places;
}
//Method definition
void addPlace(ourGeographical Place)
{
Places.add(Place);
}
//Method definition
int getId()
{
//Return
return id;
}
}
//ourCity.java
import java.util.ArrayList;
public class ourCity extends ourGeographical
{
boolean isCityCapital;
ourState State;
ArrayList<ourRiver> ourRivers;
//Constructor
ourCity()
{
//Function call
super();
isCityCapital = false;
ourRivers = new ArrayList<>();
}
//Constructor
ourCity(ourCoordinates ourLocation)
{
//Function call
super(ourLocation);
isCityCapital = false;
ourRivers = new ArrayList<>();
}
//Constructor
ourCity(String myname)
{
//Function call
super(myname);
isCityCapital = false;
ourRivers = new ArrayList<>();
}
//Constructor
ourCity(String myname, ourCoordinates ourLocation)
{
//Function call
super(myname, ourLocation);
isCityCapital = false;
ourRivers = new ArrayList<>();
}
//Constructor
ourCity(String myname, ourCoordinates ourLocation, boolean isCityCapital)
{
//Function call
super(myname, ourLocation);
this.isCityCapital = isCityCapital;
ourRivers = new ArrayList<>();
}
//Constructor
ourCity(ourState State, String myname, ourCoordinates ourLocation, boolean isCityCapital)
{
//Function call
super(myname, ourLocation);
this.State = State;
this.isCityCapital = isCityCapital;
ourRivers = new ArrayList<>();
}
//Constructor
ourCity(ourState State, String myname, ourCoordinates ourLocation, boolean isCityCapital, double ourArea)
{
//Function call
super(myname, ourLocation, ourArea);
this.State = State;
this.isCityCapital = isCityCapital;
ourRivers = new ArrayList<>();
}
//Method definition
public static double distance(ourCity A, ourCity B)
{
double distance;
geography.ourCoordinates coordinatesA = A.getCoordinates();
geography.ourCoordinates coordinatesB = B.getCoordinates();
int X11 = coordinatesA.get_CoordinateX();
int X22 = coordinatesB.get_CoordinateX();
int Y11 = coordinatesA.get_CoordinateY();
int Y22 = coordinatesB.get_CoordinateY();
distance = Math.sqrt(Math.pow((X22 - X11), 2) + Math.pow((Y22 - Y11), 2));
//Return
return distance;
}
//Method definition
public boolean Capital()
{
//Return
return isCityCapital;
}
//Method definition
public void Capital(boolean isCityCapital)
{
//Return
this.isCityCapital = isCityCapital;
}
//Method definition
public ourState getState()
{
//Return
return this.State;
}
//Method definition
public void setState(ourState ourparentState)
{
this.State = ourparentState;
}
//Method definition
public void addRiver(ourRiver ourRiver)
{
ourRiver.addCity(this);
ourRivers.add(ourRiver);
}
//Method definition
public ArrayList<ourRiver> getRivers()
{
//Return
return ourRivers;
}
//Method definition
@Override
public double ourArea()
{
//Return
return super.ourArea();
}
//Method definition
@Override
public void ourArea(double ourArea)
{
//Return
super.ourArea(ourArea);
}
}
//ourCoordinates.java
public class ourCoordinates
{
private int coordinate_X;
private int coordinate_Y;
//Constructor
public ourCoordinates()
{
coordinate_X = -1;
coordinate_Y = -1;
}
//Constructor
public ourCoordinates(int x, int y)
{
coordinate_X = x;
coordinate_Y = y;
}
//Method definition
int get_CoordinateX()
{
//Return
return coordinate_X;
}
//Method definition
int get_CoordinateY()
{
//Return
return coordinate_Y;
}
//Method definition
void set_CoordinateX(int x)
{
coordinate_X = x;
}
//Method definition
void set_CoordinateY(int y)
{
coordinate_Y = y;
}
}
//ourRiver.java
import java.util.ArrayList;
public class ourRiver extends ourGeographical
{
ArrayList<ourCity> ourCities;
//Constructor
public ourRiver()
{
//Function call
super();
}
//Constructor
public ourRiver(String myname)
{
//Function call
super(myname);
}
//Method definition
void addCity(ourCity City)
{
ourCities.add(City);
}
//Method definition
public ArrayList<ourCity> getCities()
{
//Return
return ourCities;
}
}
//ourGeographical.java
import java.util.ArrayList;
abstract class ourGeographical
{
private geography.ourCoordinates ourCoordinates;
private String myname;
private ArrayList<ourBoundary> Boundaries;
private double ourArea;
//Constructor
ourGeographical()
{
ourCoordinates = new ourCoordinates();
myname = null;
}
//Constructor
ourGeographical(String myname, ourCoordinates ourLocation, double ourArea)
{
this.ourCoordinates = ourLocation;
this.myname = myname;
this.ourArea = ourArea;
}
//Constructor
ourGeographical(String myname, double ourArea)
{
this.ourCoordinates = null;
this.myname = myname;
this.ourArea = ourArea;
}
//Constructor
ourGeographical(ourCoordinates ourLocation)
{
this.ourCoordinates = ourLocation;
this.myname = null;
this.ourArea = -1;
}
//Constructor
ourGeographical(String myname)
{
this.ourCoordinates = null;
this.myname = myname;
this.ourArea = -1;
}
//Constructor
ourGeographical(String myname, ourCoordinates ourLocation)
{
this.ourCoordinates = ourLocation;
this.myname = myname;
this.ourArea = -1;
}
//Method definition
public ourCoordinates getCoordinates()
{
//Return
return this.ourCoordinates;
}
//Method definition
public void setCoordinates(ourCoordinates Coordinates)
{
ourCoordinates = Coordinates;
}
//Method definition
int set_CoordinateX(int x)
{
int oldCoordinateX = ourCoordinates.get_CoordinateX();
ourCoordinates.set_CoordinateX(x);
//Return
return oldCoordinateX;
}
//Method definition
int setCoordinatesY(int y)
{
int oldCoordinateY = ourCoordinates.get_CoordinateX();
ourCoordinates.set_CoordinateY(y);
//Return
return oldCoordinateY;
}
//Method definition
String getName()
{
//Return
return myname;
}
//Method definition
String setName(String myname)
{
String oldName = this.myname;
this.myname = myname;
//Return
return oldName;
}
//Method definition
public void addBoundary(ourBoundary Boundary)
{
Boundary.addPlace(this);
Boundaries.add(Boundary);
}
//Method definition
public ArrayList<ourGeographical> neighbors(ArrayList<ourGeographical> Places)
{
ArrayList<ourGeographical> Neighbors = new ArrayList<>();
//Return
return Neighbors;
}
//Method definition
double ourArea()
{
//Return
return ourArea;
}
//Method definition
void ourArea(double ourArea)
{
this.ourArea = ourArea;
}
}
//ourCountry.java
import java.util.ArrayList;
public class ourCountry extends ourGeographical
{
ArrayList<ourState> ourStates;
//Constructor
ourCountry(String myname)
{
//Function call
super(myname);
}
//Constructor
ourCountry(String myname, double ourArea)
{
//Function call
super(myname, ourArea);
}
//Method definition
public void addState(ourState State)
{
State.setCountry(this);
ourStates.add(State);
}
//Method definition
public ArrayList<ourState> getStates()
{
//Return
return ourStates;
}
//Method definition
@Override
public double ourArea()
{
//Return
return super.ourArea();
}
//Method definition
@Override
public void ourArea(double ourArea)
{
//Function call
super.ourArea(ourArea);
}
}
//ourState.java
import java.util.ArrayList;
public class ourState extends ourGeographical
{
//Variables
ArrayList<ourCity> ourCities;
ourCity ourCapitalCity;
ourCountry ourparentCountry;
//Constructor
ourState()
{
ourCities = new ArrayList<>();
}
//Constructor
ourState(String myname)
{
//Function call
super(myname);
ourCities = new ArrayList<>();
}
//Method definition
public void addCity(String myname, ourCoordinates ourLocation, boolean isCityCapital)
{
ourCity newCity = new ourCity(this, myname, ourLocation, isCityCapital);
if (isCityCapital)
{
ourCapitalCity = newCity;
this.setCoordinates(newCity.getCoordinates());
}
ourCities.add(newCity);
}
//Method definition
public void addCity(ourCity City, boolean isCityCapital)
{
City.Capital(isCityCapital);
City.setState(this);
if (isCityCapital)
{
ourCapitalCity = City;
this.setCoordinates(City.getCoordinates());
}
ourCities.add(City);
}
//Method definition
public void Capital(ourCity ourCapitalCity)
{
this.ourCapitalCity = ourCapitalCity;
}
//Method definition
public ourCity Capital()
{
//Return
return ourCapitalCity;
}
//Method definition
public void setCountry(ourCountry ourparentCountry)
{
//Update
this.ourparentCountry = ourparentCountry;
}
//Method definition
public ArrayList<ourCity> getCities()
{
//Return
return ourCities;
}
//Method definition
public ourCountry getCountry()
{
//Return
return ourparentCountry;
}
//Method definition
@Override
public double ourArea()
{
//Return
return super.ourArea();
}
//Method definition
@Override
public void ourArea(double ourArea)
{
//Function call
super.ourArea(ourArea);
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.