This Java programming project demonstrates object-oriented principles by implementing a converter class hierarchy with GUI support. The application includes a base Converter
class and two subclasses, TemperatureConverter
and DistanceConverter
, each overriding the convert()
method. The program also features a Swing-based graphical user interface (GUIConverter
) using JFrame
, JPanel
, and JOptionPane
to allow user interaction for temperature (Fahrenheit to Celsius) and distance (miles to kilometers) conversions. Designed with clean code, meaningful comments, and user-friendly dialogs, this project highlights core OOP concepts, GUI programming, and user input handling in Java.
Computer
Science questions and answers
Design
and implement Java program as follows: 1) Implement converter class hierarchy
as follows: a
Design
and implement Java program as follows: 1) Implement converter class
hierarchy as follows: a. Converter class which includes: • Private
attribute for input of data type double • Default constructor with no
parameter which sets input to Double.NaN • Overloaded constructor with
input for parameter • Get and set methods for input attribute • Method
Design and implement Java program as
follows: 1) Implement converter class hierarchy as follows: a. Converter
class which includes: • Private attribute for input of data type double •
Default constructor with no parameter which sets input to Double.NaN •
Overloaded constructor with input for parameter • Get and set methods for
input attribute • Method convert() which returns input value b.
TemperatureConverter class which is a child of Converter and includes: .
Constructors which call parent constructors • Overridden convert() method
to convert input (Fahrenheit temperature) to Celsius and returns the
value. If the instance has no input value, it should return Double.NaN •
Use the following formula for conversion: C = ((F-32)*5)/9 c. Distance
Converter class which is a child of Converter and includes: •
Constructors which call parent constructors • Overridden convert() method
to convert input (distance in miles) to distance in kilometers and
returns the value. If the instance has no input value, it should return
Double.NaN d. Use the following formula for conversion: KM=M* 1.609 2)
Implement GUIConverter class using JFrame and JPanel as follows: a. GUI
will have 3 buttons: “Distance Converter”, “Temperature Converter”, and "Exit".
Welcome to Converter Distance Converter Temperature Converter Exit b.
When user clicks Exit, the program will terminate c. When
user clicks Distance Converter, an input dialog will pop up where user
can type value and click OK: Welcome to Converter Input ? input miles
distance to convert 3.1 Converter OK Cancel Exit d. Once user clicks OK,
message dialog will pop up: Welcome to Converter Message х 03.1 F equals
4.9879c re Converter OK Exit e. When user clicks on Temperature button,
an input dialog will pop up to input value and then when clicks OK, the
message dialog with pop up with converted result: Welcome to Converter
Input ? Input fahrenheit temperature to convert 32 Converter OK Cancel
Exit Welcome to Converter Message X 0 32 F equals 0.0C he Converter OK
Exit f. SUGGESTIONS: • For the input dialog you can use
JOptionPane.showInputDialog • The ActionListener for each Converter
button should create the appropriate Converter child instance, set the
input, and call its convert() method • For the pop up with converted
value you can use JOptionPane.showMessageDialog Style and
Documentation: Make sure your Java program is using the recommended style
such as: Javadoc comment up front with your name as author, date, and
brief purpose of the program Comments for variables and blocks of code to
describe major functionality Meaningful variable names and prompts •
Class names are written in upper CamelCase • Constants are written in All
Capitals • Use proper spacing and empty lines to make code human readable
Capture execution: You should capture and label screen captures
associated with compiling your code, and running the a passing and
failing scenario for each functionality
Answer
// class name
public class converter
{
Double attribute
;
// constructor
public converter(){
attribute
= Double.NaN;
}
public converter(
double attribute){
this.attribute
= attribute;
}
public Double convert(
){
Double input = 0.0;
if(!attribute .isNaN())
input = attribute
;
return input ;
}
}// end class
// class name
public class
TemperatureConverter extends converter{
Double
Temperature ;
// constructor
public TemperatureConverter(Double
Temperature ){
super(Temperature);
this.Temperature =
Temperature;
}
// convert method
public Double
convert(){
Double input = 0.0;
if(!Temperature.isNaN()
)
input =
((Temperature-32.0)*5.0)/9.0;
else
input = Double.NaN;
return input ;
}
}
// class name
public class
DistanceConverter extends converter{
Double Distance ;
// constructor
public
DistanceConverter( Double Distance){
super(Distance);
this.Distance =
Distance;
}
// convert method
public Double
convert(){
Double input = 0.0;
if(!Distance.isNaN() )
input = Distance *
1.609 ;
else
input = Double.NaN;
return input ;
}
}
import
java.awt.event.*;
import java.awt.*;
import
javax.swing.JOptionPane;
import
javax.swing.JPanel;
import
javax.swing.JFrame;
import
javax.swing.JButton;
// class name
public class
GUIConverter extends JFrame {
// constructor
public GUIConverter(){
JFrame f;
// JButton
JButton b, b1,
b2;
// create a new frame
to store text field and button
f = new
JFrame("Converter");
// create a new buttons
b = new
JButton("Distance COnverter");
b1 = new
JButton("Temperature COnverter");
b2 = new
JButton("Exit");
// create a panel to
add buttons
JPanel p = new
JPanel();
GridBagLayout layout =
new GridBagLayout();
p.setLayout(layout);
GridBagConstraints gbc
= new GridBagConstraints();
// Put constraints on
different buttons
gbc.fill =
GridBagConstraints.HORIZONTAL;
gbc.gridx = 0;
gbc.gridy = 0;
p.add(b, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
p.add(b1, gbc);
gbc.gridx = 0;
gbc.gridy = 5;
gbc.fill =
GridBagConstraints.HORIZONTAL;
gbc.gridwidth = 5;
p.add(b2, gbc);
// add buttons and
textfield to panel
p.add(b);
p.add(b1);
p.add(b2);
// actions for button
// distance action
b.addActionListener(new
ActionListener(){
public
void actionPerformed(ActionEvent e){
// get input
Double
distance= Double.parseDouble(JOptionPane.showInputDialog("Enter miles
distance to convert ?") );
// instance class
object
DistanceConverter
dist = new DistanceConverter(distance);
JOptionPane.showMessageDialog(f,distance+"
is equal "+dist.convert());
}
});
// Temperature action
b1.addActionListener(new
ActionListener(){
public
void actionPerformed(ActionEvent e){
// get input
Double
Temperature= Double.parseDouble(JOptionPane.showInputDialog("Enter
Temperature to convert ?"));
// instance class
object
TemperatureConverter
temp = new TemperatureConverter(Temperature);
JOptionPane.showMessageDialog(f,Temperature+"
is equal "+temp.convert());
}
});
// Exit action
b2.addActionListener(new
ActionListener(){
public
void actionPerformed(ActionEvent e){
System.exit(0);
}
});
// add panel to frame
f.add(p);
// set the size of
frame
f.setSize(400, 200);
f.show();
}
// main class
public static void
main(String[] args)
{
new GUIConverter();
}
}