Está en la página 1de 48

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE TAPACHULA


“LIBERTAD DE ESPÍRITU EN CIENCIA Y TECNOLOGÍA”

ASIGNATURA: PROGRAMACIÓN ORIENTADA A


OBJETOS.

TEMA 4: “POLIMORFISMO”

TITULO DEL ENSAYO: REPORTE DEL EJERCICIO 7.

PRESENTA: MORALES SOLÍS BRANDON OMAR.

NO. CONTROL: 20510397.

SEMESTRE: 2. GRUPO: B.

CATEDRÁTICO: LIC. GUSTAVO REYES HERNANDEZ.

FECHA: 22/06/2021.
Objetivo.
El objetivo de esta práctica de programación es construir una aplicación que
permita sumar dos fracciones y comparar cual de las dos es mayor o menor o si
ambas son iguales. De igual manera que permita sacar 2 longitudes a partir de
coordenadas digitadas por el usuario y que permita comparar entre las dos
longitudes cual es mayor o menor o si ambas son iguales.

Desarrollo.
Se codifica la aplicación directamente con ayuda de NetBeans cuidando que
cumpla con el paradigma de programación orientada a objetos, pero esta vez
aplicando la teoría de polimorfismo.
El programa consta con 2 paquetes los cuales son el backEnd y el frondEnd,
en el paquete backEnd se encuentran 3 clases la primera se trata de la clase
Quebrado(Broken), Linea(Line), Relaciones(Relation). Mientras que en el paquete
frondEnd se encuentran 2 clases que vienen siendo las interfaces de usuario las
cuales son BrokenAndLines (QuebradosYLineas) y LineInterface(LineaInterfaz).
Esto quedaría de la siguiente manera:

Paquete backEnd.

Código de la clase Broken.

En este caso las clases, métodos y variables fueron traducidos al inglés para
conservar un código limpio y así cumplir con las buenas prácticas de programación.

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package backEnd;

/**
*
* @author Brandon Omar Morales Solís
*/
public class Broken implements Relations {

/**
* Implements es parte del polimorfismo porque permite que se obtenga
* información a partir de un calse interface permitiendo la reutilización
* de código.
*
*/

//Atributos
private int numerator;
private int denominator;

//Método constructor para inicializar las variables con los valores nulos.
public Broken() {
numerator = 0;
denominator = 1;
}

//Método constructor
public Broken(int numerator, int denominator) {
this.numerator = numerator;
this.denominator = denominator;
}

public Broken(int numerator) {


this.numerator = numerator;
denominator = 1;
}

public Broken sum(Broken f) {


Broken aux = new Broken();
aux.numerator = numerator * f.denominator + denominator * f.numerator;
aux.denominator = denominator * f.denominator;
aux.simplify();
return aux;
}

public void simplify() {


int n;
n = mcd();
numerator /= n;
denominator /= n;
}

/**
* Este método devuelve el Máximo Común Divisor obtenido por medio del
* Algoritmo de Euclides
*
* @return Máximo Común Divisor
*/
public int mcd() {
int u;
int v;
int r;

u = Math.abs(numerator);
v = Math.abs(denominator);

if (v == 0) {
return u;
}

while (v != 0) {
r = u % v;
u = v;
v = r;
}
return u;
}

/**
* Implementación del método abstracto de la interface Relaciones
*
* @param a es el valor a comparar
* @return True si es mayor, False en caso contrario
*/
@Override //Sirve para poder sobrecargar los métodos
//Es parte del polimorfismo porque permite usarlo cuántas veces uno lo desee.

public boolean isBetterThan(Relations a) {


if (a == null) {
return false;
}

if (!(a instanceof Broken)) {


return false;
}

Broken f = (Broken) a;
//this.simplify();
//f.simplify();

if ((numerator / (double) denominator) <= (f.numerator / (double)


f.denominator)) {
return false;
}
return true;
}

/**
* Implementación del método abstracto de la interface Relaciones
*
* @param a
* @return
*/
@Override
public boolean isLessThan(Relations a) {
if (a == null) {
return false;
}

if (!(a instanceof Broken)) {


return false;
}

Broken f = (Broken) a;
//this.simplify();
//f.simplify();
return (numerator / (double) denominator) < (f.numerator / (double)
f.denominator);
}

/**
* Implementación del método abstracto de la interface Relaciones
*
* @param a
* @return
*/
@Override
public boolean itsTheSameAs(Relations a) {
if (a == null) {
return false;
}

if (!(a instanceof Broken)) {


return false;
}

Broken f = (Broken) a;
//this.simplify();
//f.simplify();

if (numerator != f.numerator) {
return false;
}

if (denominator != f.denominator) {
return false;
}

return true;
}

/**
* Redefiniendo el método toString heredado de Object
*
* @return
*/
@Override
public String toString() {
//simplify();
return numerator + "/" + denominator;
}

/**
* @return the numerator
*/
public int getNumerator() {
return numerator;
}

/**
* @param numerator the numerator to set
*/
public void setNumerator(int numerator) {
this.numerator = numerator;
}

/**
* @return the denominator
*/
public int getDenominator() {
return denominator;
}

/**
* @param denominator the denominator to set
*/
public void setDenominator(int denominator) {
this.denominator = denominator;
}

}
Código de la clase Line.

En este caso las clases, métodos y variables fueron traducidos al inglés para
conservar un código limpio y así cumplir con las buenas prácticas de programación.

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package backEnd;

/**
*
* @author Brandon Omar Morales Solís
*/
public class Line implements Relations {

/**
* Implements es parte del polimorfismo porque permite que se obtenga
* información a partir de un calse interface permitiendo la reutilización
* de código.
*
*/
//Atributos
private double x1;
private double y1;
private double x2;
private double y2;

//Método constructor para inicializar las variables con los valores nulos.
public Line() {
x1 = 0;
y1 = 0;
x2 = 0;
y2 = 0;
}

//Método constructor
public Line(double x1, double y1, double x2, double y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
/**
* Este método devuelve la longitud que mide una linea a partir de 2 puntos
* x1,y1 a x2,y2
*
* @return longitud de la línea.
*/
public double length() {
double length;
length = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
return length;
}

@Override//Sirve para poder sobrecargar los métodos


//Es parte del polimorfismo porque permite usarlo cuántas veces uno lo desee.
public boolean isBetterThan(Relations a) {
if (a == null) {
return false;
}

if (!(a instanceof Line)) {


return false;
}

Line line = (Line) a;


return this.length() > line.length();
}

@Override
public boolean itsTheSameAs(Relations a) {
if (a == null) {
return false;
}

if (!(a instanceof Line)) {


return false;
}

Line line = (Line) a;


return this.length() == line.length();
}

@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Coordenadas inicio linea: ");
sb.append(getX1());
sb.append(" , ");
sb.append(getY1());
sb.append("\nCoordenadas final linea: ");
sb.append(getX2());
sb.append(" , ");
sb.append(getY2());
sb.append("\nLongitud: ");
sb.append((length()));
return sb.toString();
}

/**
* @return the x1
*/
public double getX1() {
return x1;
}

/**
* @param x1 the x1 to set
*/
public void setX1(double x1) {
this.x1 = x1;
}

/**
* @return the y1
*/
public double getY1() {
return y1;
}

/**
* @param y1 the y1 to set
*/
public void setY1(double y1) {
this.y1 = y1;
}

/**
* @return the x2
*/
public double getX2() {
return x2;
}

/**
* @param x2 the x2 to set
*/
public void setX2(double x2) {
this.x2 = x2;
}

/**
* @return the y2
*/
public double getY2() {
return y2;
}

/**
* @param y2 the y2 to set
*/
public void setY2(double y2) {
this.y2 = y2;
}

@Override
public boolean isLessThan(Relations a) {
throw new UnsupportedOperationException("Not supported yet."); //To change
body of generated methods, choose Tools | Templates.
}

}
Código de la clase Relation (Relaciones).

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package backEnd;

/**
*
* @author Brandon Omar Morales Solís
*/
public interface Relations {

//Métodos
boolean isBetterThan(Relations a);
boolean isLessThan(Relations a);
boolean itsTheSameAs(Relations a);

default String className() {


String class1;
int position;
class1 = getClass().toString();
position = class1.lastIndexOf(".");
return class1.substring(position + 1);
}

static boolean isNull(Relations a) {


return a == null;
}
}
Paquete forndEnd.

Interfaz gráfica del programa (BrokenAndLines).


Interfaz gráfica del programa (LinesInterface).

Frames utilizados.
Código de la interfaz (BrokenAndLines).
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package fronEnd;

import backEnd.*;
import javax.swing.JOptionPane;

/**
*
* @author brand
*/
public class BrokenAndLines extends javax.swing.JFrame {

/**
* Creates new form BrokenAndLines
*/
public BrokenAndLines() {
initComponents();
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


jLabel2 = new javax.swing.JLabel();
txtNumerator = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
txtDenominator = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
txtNumerator2 = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
txtDenominator2 = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
btnCalculate = new javax.swing.JButton();
btnExit = new javax.swing.JButton();
btnLinear = new javax.swing.JButton();
lblOut = new javax.swing.JLabel();
lblOutcome = new javax.swing.JLabel();
lblE = new javax.swing.JLabel();
lblComparison = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Broken ");

jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jLabel2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel2.setForeground(new java.awt.Color(255, 255, 255));
jLabel2.setText("Quebrados (fracciones) ");
jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(110,
10, -1, -1));
txtNumerator.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
txtNumerator.setHorizontalAlignment(javax.swing.JTextField.CENTER);
txtNumerator.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtNumeratorActionPerformed(evt);
}
});
jPanel1.add(txtNumerator, new
org.netbeans.lib.awtextra.AbsoluteConstraints(60, 80, 60, 40));

jLabel3.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel3.setText("______");
jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(60,
110, 70, 30));

txtDenominator.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtDenominator.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtDenominator, new
org.netbeans.lib.awtextra.AbsoluteConstraints(60, 150, 60, 40));

jLabel4.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N


jLabel4.setForeground(new java.awt.Color(255, 255, 255));
jLabel4.setText("+");
jPanel1.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(140,
112, 20, 40));

txtNumerator2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtNumerator2.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtNumerator2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(170, 80, 60, 40));
jLabel5.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
jLabel5.setText("______");
jPanel1.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(170,
112, 70, 30));

txtDenominator2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtDenominator2.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtDenominator2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(170, 150, 60, 40));

jLabel6.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel6.setText("=");
jPanel1.add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(240,
122, -1, 30));

btnCalculate.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


btnCalculate.setMnemonic('C');
btnCalculate.setText("Calcular ");
btnCalculate.setToolTipText("Realiza la suma entre las fracciones.");
btnCalculate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCalculateActionPerformed(evt);
}
});
jPanel1.add(btnCalculate, new
org.netbeans.lib.awtextra.AbsoluteConstraints(60, 340, 120, -1));

btnExit.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


btnExit.setMnemonic('S');
btnExit.setText("Salir ");
btnExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnExitActionPerformed(evt);
}
});
jPanel1.add(btnExit, new org.netbeans.lib.awtextra.AbsoluteConstraints(190,
340, -1, -1));

btnLinear.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


btnLinear.setMnemonic('I');
btnLinear.setText("Ir a lineal");
btnLinear.setToolTipText("Se cambia a la interfaz lineal");
btnLinear.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnLinearActionPerformed(evt);
}
});
jPanel1.add(btnLinear, new
org.netbeans.lib.awtextra.AbsoluteConstraints(280, 340, -1, -1));

lblOut.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


lblOut.setForeground(new java.awt.Color(255, 255, 255));
lblOut.setText("Resultado:");
jPanel1.add(lblOut, new org.netbeans.lib.awtextra.AbsoluteConstraints(280,
80, -1, -1));

lblOutcome.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


lblOutcome.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jPanel1.add(lblOutcome, new
org.netbeans.lib.awtextra.AbsoluteConstraints(270, 110, 110, 60));
lblE.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
lblE.setForeground(new java.awt.Color(255, 255, 255));
lblE.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblE.setText("Comparación:");
jPanel1.add(lblE, new org.netbeans.lib.awtextra.AbsoluteConstraints(140,
210, -1, -1));

lblComparison.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N

lblComparison.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblComparison.setToolTipText("");
jPanel1.add(lblComparison, new
org.netbeans.lib.awtextra.AbsoluteConstraints(110, 240, 210, 80));

jLabel1.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/Imagenes/fracciones-
matematicas-olorful-sobre-fondo-violeta-matematicas-interesantes-para-los-ninos-
la-educacion-concepto-de-vuelta-a-la-escuela-geometria-y-matematicas-
materiales-w79n4r.jpg"))); // NOI18N
jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0,
400, 380));

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 385,
Short.MAX_VALUE)
);

pack();
setLocationRelativeTo(null);
}// </editor-fold>

private void txtNumeratorActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
}

private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
//Se instancian los objetos para despues guardar los datos
Broken t1 = new Broken();
Broken t2 = new Broken();
Broken t3 = new Broken();

//Se guardan los datos del númerados y denominador con ayuda de los objetos
t1.setNumerator(Integer.parseInt(txtNumerator.getText()));
t1.setDenominator(Integer.parseInt(txtDenominator.getText()));
t2.setNumerator(Integer.parseInt(txtNumerator2.getText()));
t2.setDenominator(Integer.parseInt(txtDenominator2.getText()));

//Se llama al método para ver cual de los dos es mayor


if (t1.isBetterThan(t2)) {
lblComparison.setText(t1 + " > " + t2);
} else { // Si no se cumple lo toma como menor que t2
lblComparison.setText(t1 + " < " + t2);
}

//Se llama al método que sirve para corrorborar si el objetos t1 y t2


//son iguales.
if (t1.itsTheSameAs(t2)) {
lblComparison.setText(t1 + " = " + t2);
}

t3 = t1.sum(t2);
lblOutcome.setText(t3.toString());
}

private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
int exit = 0;
exit = JOptionPane.showConfirmDialog(null, "¿Esta seguro que deseas salir
de la aplicación?");

if (exit == 0) {
System.exit(0);
}
}

private void btnLinearActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
LineInterface window = new LineInterface();
window.setVisible(true);
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code
(optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look
and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(BrokenAndLines.class.getName()).log(java.util.l
ogging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(BrokenAndLines.class.getName()).log(java.util.l
ogging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(BrokenAndLines.class.getName()).log(java.util.l
ogging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(BrokenAndLines.class.getName()).log(java.util.l
ogging.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the form */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new BrokenAndLines().setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JButton btnCalculate;
private javax.swing.JButton btnExit;
private javax.swing.JButton btnLinear;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel lblComparison;
private javax.swing.JLabel lblE;
private javax.swing.JLabel lblOut;
private javax.swing.JLabel lblOutcome;
private javax.swing.JTextField txtDenominator;
private javax.swing.JTextField txtDenominator2;
private javax.swing.JTextField txtNumerator;
private javax.swing.JTextField txtNumerator2;
// End of variables declaration
}

Código de la interfaz (LinesInterface).


/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package fronEnd;

import backEnd.*;
import javax.swing.JOptionPane;

/**
*
* @author brand
*/
public class LineInterface extends javax.swing.JFrame {

/**
* Creates new form Line
*/
public LineInterface() {
initComponents();
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
txtX1 = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
txtY1 = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
txtX2 = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
txtY2 = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
txtX_1 = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
txtY_1 = new javax.swing.JTextField();
jLabel11 = new javax.swing.JLabel();
txtX_2 = new javax.swing.JTextField();
jLabel12 = new javax.swing.JLabel();
txtY_2 = new javax.swing.JTextField();
jLabel13 = new javax.swing.JLabel();
lblLength = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
lblLength2 = new javax.swing.JLabel();
jLabel16 = new javax.swing.JLabel();
lblComparison = new javax.swing.JLabel();
btnCalculate = new javax.swing.JButton();
btnExit2 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Line");

jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jLabel2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel2.setText("Calculadora de longitudes.");
jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(90,
10, -1, -1));

jLabel3.setBackground(new java.awt.Color(255, 51, 0));


jLabel3.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
jLabel3.setForeground(new java.awt.Color(0, 255, 51));
jLabel3.setText("Cordenadas de inicio de la línea 1:");
jLabel3.setToolTipText("");
jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,
50, -1, -1));

jLabel4.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel4.setText("x1");
jPanel1.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,
80, -1, -1));

txtX1.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtX1.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtX1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10,
110, 60, -1));

jLabel5.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel5.setText("y1");
jPanel1.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(130,
80, -1, -1));

txtY1.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtY1.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtY1, new org.netbeans.lib.awtextra.AbsoluteConstraints(110,
110, 60, 30));

jLabel6.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel6.setText("x2");
jPanel1.add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(220,
80, -1, -1));

txtX2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtX2.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtX2, new org.netbeans.lib.awtextra.AbsoluteConstraints(200,
110, 60, 30));

jLabel7.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel7.setText("y2");
jPanel1.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(300,
80, -1, -1));

txtY2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtY2.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtY2, new org.netbeans.lib.awtextra.AbsoluteConstraints(290,
110, 60, 30));

jLabel8.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel8.setForeground(new java.awt.Color(51, 255, 0));
jLabel8.setText("Cordenadas de inicio de la línea 2:");
jPanel1.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,
160, -1, -1));

jLabel9.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel9.setText("x1");
jPanel1.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,
200, -1, -1));

txtX_1.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtX_1.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtX_1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10,
230, 60, 30));

jLabel10.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel10.setText("y1");
jPanel1.add(jLabel10, new
org.netbeans.lib.awtextra.AbsoluteConstraints(130, 200, -1, -1));

txtY_1.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtY_1.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtY_1, new org.netbeans.lib.awtextra.AbsoluteConstraints(110,
230, 60, 30));

jLabel11.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel11.setText("x2");
jPanel1.add(jLabel11, new
org.netbeans.lib.awtextra.AbsoluteConstraints(220, 200, -1, -1));

txtX_2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtX_2.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtX_2, new org.netbeans.lib.awtextra.AbsoluteConstraints(200,
230, 60, 30));

jLabel12.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel12.setText("y2");
jPanel1.add(jLabel12, new
org.netbeans.lib.awtextra.AbsoluteConstraints(300, 200, -1, -1));

txtY_2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


txtY_2.setHorizontalAlignment(javax.swing.JTextField.CENTER);
jPanel1.add(txtY_2, new org.netbeans.lib.awtextra.AbsoluteConstraints(290,
230, 60, 30));

jLabel13.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel13.setText("Longitud de la línea 1:");
jPanel1.add(jLabel13, new
org.netbeans.lib.awtextra.AbsoluteConstraints(100, 280, -1, -1));

lblLength.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


lblLength.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jPanel1.add(lblLength, new
org.netbeans.lib.awtextra.AbsoluteConstraints(100, 320, 200, 60));

jLabel14.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel14.setText("Longitud de la línea 2:");
jPanel1.add(jLabel14, new
org.netbeans.lib.awtextra.AbsoluteConstraints(100, 380, -1, -1));

lblLength2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


lblLength2.setForeground(new java.awt.Color(0, 51, 51));
lblLength2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jPanel1.add(lblLength2, new
org.netbeans.lib.awtextra.AbsoluteConstraints(100, 410, 190, 60));

jLabel16.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


jLabel16.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel16.setText("Comparación:");
jPanel1.add(jLabel16, new
org.netbeans.lib.awtextra.AbsoluteConstraints(140, 470, -1, -1));

lblComparison.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N

lblComparison.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jPanel1.add(lblComparison, new
org.netbeans.lib.awtextra.AbsoluteConstraints(60, 500, 300, 60));

btnCalculate.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


btnCalculate.setMnemonic('C');
btnCalculate.setText("Calcular");
btnCalculate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCalculateActionPerformed(evt);
}
});
jPanel1.add(btnCalculate, new
org.netbeans.lib.awtextra.AbsoluteConstraints(240, 580, -1, -1));

btnExit2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N


btnExit2.setMnemonic('S');
btnExit2.setText("Salir");
btnExit2.setToolTipText("");
btnExit2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnExit2ActionPerformed(evt);
}
});
jPanel1.add(btnExit2, new org.netbeans.lib.awtextra.AbsoluteConstraints(350,
580, -1, 30));

jLabel1.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/Imagenes/matematicas-
978x652.jpg"))); // NOI18N
jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0,
440, 600));

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

pack();
setLocationRelativeTo(null);
}// </editor-fold>

private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
Line line1 = new Line();
Line line2 = new Line();

line1.setX1(Double.parseDouble(txtX1.getText()));
line1.setY1(Double.parseDouble(txtY1.getText()));
line1.setX2(Double.parseDouble(txtX2.getText()));
line1.setY2(Double.parseDouble(txtY2.getText()));

line2.setX1(Double.parseDouble(txtX_1.getText()));
line2.setY1(Double.parseDouble(txtY_1.getText()));
line2.setX2(Double.parseDouble(txtX_2.getText()));
line2.setY2(Double.parseDouble(txtY_2.getText()));

if (line1.isBetterThan(line2)) {
lblComparison.setText(line1.length() + " > " + line2.length());
} else {
lblComparison.setText(line1.length() + " < " + line2.length());
}

if (line1.itsTheSameAs(line2)) {
lblComparison.setText(line1.length() + " = " + line2.length());
}

lblLength.setText("" + line1.length());
lblLength2.setText("" + line2.length());
}

private void btnExit2ActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
int exit = 0;
exit = JOptionPane.showConfirmDialog(null, "¿Deseas salir de la aplicación?");

if (exit == 0) {
System.exit(0);
}
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code
(optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look
and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(LineInterface.class.getName()).log(java.util.loggi
ng.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(LineInterface.class.getName()).log(java.util.loggi
ng.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(LineInterface.class.getName()).log(java.util.loggi
ng.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(LineInterface.class.getName()).log(java.util.loggi
ng.Level.SEVERE, null, ex);
}
//</editor-fold>
//</editor-fold>

/* Create and display the form */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LineInterface().setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JButton btnCalculate;
private javax.swing.JButton btnExit2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel lblComparison;
private javax.swing.JLabel lblLength;
private javax.swing.JLabel lblLength2;
private javax.swing.JTextField txtX1;
private javax.swing.JTextField txtX2;
private javax.swing.JTextField txtX_1;
private javax.swing.JTextField txtX_2;
private javax.swing.JTextField txtY1;
private javax.swing.JTextField txtY2;
private javax.swing.JTextField txtY_1;
private javax.swing.JTextField txtY_2;
// End of variables declaration
}

Resultados.
Conclusión.
Al haber hecho esta práctica de programación puedo concluir que si logramos
con el objetivo porque el programa permite sumar fracciones y comparar para ver
quien es mayor o menor que o si ambos son iguales. Al igual permite poder sacar
las longitudes a partir de cordenadas.
También puedo decir que gracias a esta practica aprendi a profundizar mas
en el polimorfismo porque aprendi que si se cuenta con una clase interface para
poder rutilizar el código que se encuentra en esa clase es necesario utilizar el
implements porque para este caso ya no funciona.
Otra cosa importante que aprendí es a poner imágenes de fondo a las
aplicaciones para que luzcan llamativas.
Referencias.
Reyes, G (2021). Clase Laboratorio. Teams. Recuperado de:
https://instectapachula.sharepoint.com/sites/POOGrupoB20212/Documentos%20c
ompartidos/General/Recordings/Clase%20de%20laboratorio_20210617_120919.m
p4

Reyes, G (2021). Interfaces en Java (polimorfismo). YouTube.com. Recuperado


de: https://www.youtube.com/watch?v=wzCkPwm1Hxs

Reyes, G (2021). Proyectos de Java para la práctica. tapachula.tecnm.mx.


Recuperado de:
https://tapachula.tecnm.mx/servicios/virtualroom/mod/folder/view.php?id=38442

También podría gustarte