/* Pause class * Anderson, Franceschi */ public class Pause { /** wait method *
ID: 3838440 • Letter: #
Question
/* Pause class
* Anderson, Franceschi
*/
public class Pause
{
/** wait method
* @param seconds number of seconds to pause
*/
public static void wait( double seconds )
{
try
{
Thread.sleep( (int)( seconds * 1000 ) );
}
catch ( InterruptedException e )
{
e.printStackTrace( );
}
}
}
public class AirportClient extends JFrame
{
String action1, action2;
boolean firstTime = true;
double animationPause = 6.0; // 6 seconds between animations
Airport airport1, airport2; // declare Airport object references
public void workWithAirports( )
{
animate( "Two airport object references declared:",
"Airport airport1, airport2;" );
/* Instantiate airport1 using the overloaded constructor */
airport1 = new Airport( "IAD", 30 );
animate( "Instantiated airport1 using overloaded constructor:",
"airport1 = new Airport( "IAD", 30 );" );
/* Call toString() */
animate( "Calling toString:",
"JOptionPane.showMessageDialog( null, airport1.toString( ) );" );
JOptionPane.showMessageDialog( null, airport1.toString( ) );
/* Instantiate a second airport object using overloaded constructor*/
airport2 = new Airport( "IAD", 30 );
animate( "Instantiated airport2 using overloaded constructor:",
"airport2 = new Airport( "IAD", 30 );" );
/* Get the value of countAirports */
animate( "Getting the value of countAirports:",
"JOptionPane.showMessageDialog( null, "countAirports is " +"
+ " Airport.getCountAirports( ) );" );
JOptionPane.showMessageDialog( null, "countAirports is " +
Airport.getCountAirports( ) );
/* Compare the two airport objects */
animate( "Comparing airport1 and airport2 using the equality operator ",
" if ( airport1 == airport2 )..." );
if ( airport1 == airport2 )
JOptionPane.showMessageDialog( null, "airport1 and airport2 are equal" );
else
JOptionPane.showMessageDialog( null, "airport1 and airport2 are not equal" );
/* Compare the two Airport objects */
animate( "Comparing airport1 and airport2 using equals:",
" if ( airport1.equals( airport2 ) )..." );
if ( airport1.equals( airport2 ) )
JOptionPane.showMessageDialog( null, "airport1 and airport2 are equal" );
else
JOptionPane.showMessageDialog( null, "airport1 and airport2 are not equal" );
/* Finished */
animate( "Actions are complete, exiting", "" );
System.exit( 1 );
}
public AirportClient( )
{
super( "Using the Airport Class" );
setSize( 520, 400 );
setVisible( true );
}
public void paint( Graphics g )
{
super.paint( g );
if ( firstTime )
firstTime = false;
else
{
int boxL = 75, boxH = 20;
int sX = 50, sY = 50;
// countAirports
g.setColor( Color.BLACK );
g.drawRect( sX, sY, boxL, boxH );
g.drawString( "countAirports", sX, sY - 10 );
g.setColor( Color.BLUE );
g.drawString( Integer.toString( Airport.getCountAirports( ) ),
sX + 15, sY + 15 );
// airport1
sY = 125;
if ( airport1 != null )
{
// object reference box
g.setColor( Color.BLACK );
g.drawRect( sX, sY, boxL, boxH );
g.drawString( "airport1", sX, sY - 10 );
draw( g, sX, sY, airport1 ); // draw airport object
}
else
{
// indicate null reference
g.setColor( Color.BLACK );
g.drawRect( sX, sY, boxL, boxH );
g.drawString( "airport1", sX, sY - 10 );
g.setColor( Color.BLUE );
g.drawString( "null", sX + 15, sY + 15 );
}
sY = 250;
if ( airport2 != null )
{
// object reference box
g.setColor( Color.BLACK );
g.drawRect( sX, sY, boxL, boxH );
g.drawString( "airport2", sX, sY - 10 );
draw( g, sX, sY, airport2 ); // draw airport object
}
else
{
// indicate null reference
g.setColor( Color.BLACK );
g.drawRect( sX, sY, boxL, boxH );
g.drawString( "airport2", sX, sY - 10 );
g.setColor( Color.BLUE );
g.drawString( "null", sX + 15, sY + 15 );
}
// display action at bottom of screen
g.setColor( Color.BLUE );
g.drawString( action1, 15, 370 );
g.drawString( action2, 20, 385 );
}
}
private void draw( Graphics g, int sX, int sY, Airport a )
{
int boxL = 75, boxH = 20;
// arrow
g.setColor( Color.BLACK );
g.drawLine( sX + boxL, sY + boxH / 2,
sX + boxL + 25, sY + boxH / 2 );
g.drawLine( sX + boxL + 25, sY + boxH / 2,
sX + boxL + 25, sY + boxH * 2 );
g.drawLine( sX + boxL + 25 - 5, sY + boxH * 2 - 5,
sX + boxL + 25, sY + boxH * 2 );
g.drawLine( sX + boxL + 25 + 5, sY + boxH * 2 - 5,
sX + boxL + 25, sY + boxH * 2 );
// airportCode
g.setColor( Color.BLACK );
g.drawString( "airport code", sX + boxL - 75, sY + 2 * boxH + 15 );
g.drawRect( sX + boxL, sY + 2 * boxH, boxL, boxH );
g.setColor( Color.BLUE );
g.drawString( a.getAirportCode( ),
sX + boxL + 5, sY + 2 * boxH + 15 );
// gates
g.setColor( Color.BLACK );
g.drawString( "gates", sX + boxL - 75, sY + 3 * boxH + 15 );
g.drawRect( sX + boxL, sY + 3 * boxH, boxL, boxH );
g.setColor( Color.BLUE );
g.drawString( Integer.toString( a.getGates( ) ),
sX + boxL + 5, sY + 3 * boxH + 15 );
}
private void animate( String a1, String a2 )
{
action1 = a1;
action2 = a2;
repaint( );
Pause.wait( animationPause );
}
public static void main( String[] args )
{
AirportClient app = new AirportClient( );
app.workWithAirports( );
app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
Explanation / Answer
Hi, I have implemented the code as per the instructions, My code is between the comments where you have asked. Its working properly..
Airport.java
/* Airport class
Anderson, Franceschi
*/
public class Airport {
// Instance variables
private String airportCode;
private int gates;
// 1. ***** Add a static class variable *****
// countAirports is an int
// assign an initial value of 0
// Part 1 student code starts here:
private static int countAirports = 0;
// Part 1 student code ends here.
// 2. ***** Modify this method *****
// Default constructor:
// method name: Airport
// return value: none
// parameters: none
// function: sets the airportCode to an empty String
// ***** adds 1 to countAirports class variable
public Airport() {
airportCode = "";
// Part 2 student code starts here:
Airport.countAirports++;
// Part 2 student code ends here.
}
// 3. ***** Modify this method *****
// Overloaded constructor:
// method name: Airport
// return value: none
// parameters: a String startAirportCode and an int startGates
// function: calls the setAirportCode method, passing the
// startAirportCode parameter;
// calls the setGates method, passing the startGates parameter
// ***** adds 1 to countAirports class variable
public Airport(String startAirportCode, int startGates) {
airportCode = startAirportCode;
setGates(startGates);
// Part 3 student code starts here:
Airport.countAirports++;
// Part 3 student code ends here.
}
// Accessor method for the airportCode instance variable
// method name: getAirportCode
// return value: String
// parameters: none
// function: returns airportCode
public String getAirportCode() {
return airportCode;
}
// Accessor method for the gates instance variable
// method name: getGates
// return value: int
// parameters: none
// function: returns gates
public int getGates() {
return gates;
}
// 4. ***** Write this static method *****
// Accessor method for the countAirports class variable
// method name: getCountAirports
// return value: int
// parameters: none
// function: returns countAirports
// Part 4 student code starts here:
public static int getCountAirports() {
return countAirports;
}
// Part 4 student code ends here.
// Mutator method for the airportCode instance variable
// method name: setAirportCode
// return value: void
// parameters: String newAirportCode
// function: assigns airportCode the value of the
// newAirportCode parameter
public void setAirportCode(String newAirportCode) {
airportCode = newAirportCode;
}
// Mutator method for the gates instance variable
// method name: setGates
// return value: void
// parameters: int newGates
// function: validates the newGates parameter.
// if newGates is greater than or equal to 0,
// sets gates to newGates;
// otherwise, prints an error message to System.err
// and does not change value of gates
public void setGates(int newGates) {
if (newGates < 0) {
System.err.println("Gates must be at least 0");
System.err.println("Value of gates unchanged.");
return;
}
gates = newGates;
}
// 5. ***** Write this method *****
// method name: toString
// return value: String
// parameters: none
// function: returns a String that contains the airportCode
// and gates
// Part 5 student code starts here:
public String toString() {
return "Airport code : "+this.getAirportCode()+"; Number of Gates: "+this.getGates();
}
// Part 5 student code ends here.
// 6. ***** Write this method *****
// method name: equals
// return value: boolean
// parameter: Airport object
// function: returns true if airportCode
// and gates in this object
// are equal to those in the parameter object;
// returns false otherwise
// Part 6 student code starts here:
@Override
public int hashCode() { // If we override euals, hashcode also needs to be overridden
final int prime = 31;
int result = 1;
result = prime * result + ((airportCode == null) ? 0 : airportCode.hashCode());
result = prime * result + gates;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Airport other = (Airport) obj;
if (airportCode == null) {
if (other.airportCode != null)
return false;
} else if (!airportCode.equals(other.airportCode))
return false;
if (gates != other.gates)
return false;
return true;
}
// Part 6 student code ends here.
} // end of Airport class definition
I am not able to take screenshots because it is a continuous process. Please update this code and run it.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.