Mostrando entradas con la etiqueta listas. Mostrar todas las entradas
Arreglos en JAVA
Cuando programamos existen estructuras de datos, una de las más usadas son los arreglos, los arreglos a la hora de desarrollar programas son muy útiles y usuales para la solución de muchos problemas.Un arreglo en un conjunto de datos del mismo tipo que están agrupados en una variable y se accede a estos mediante su indice o posición.
Partes de un Arreglo
- ■ Nombre. Todo arreglo tiene que tener un nombre para identificarlo.
- ■ Tipo de Dato. Los arreglos pueden soportar texto, números, fechas, objetos, al crearlos se tiene que indicar su tipo.
- ■ Indice. Los elementos de un arreglo están en posiciones, a esto se le llama índice.
- ■ Contenido. El contenido representa el valor que tiene el arreglo en cierta posición.
- ■ Longitud. Es el tamaño o cantidad de elementos que puede tener el arreglo.
edades[2] = 16;
También por ejemplo si necesitamos el valor de 11, debemos hacer lo siguiente:
edades[3]
Como se observa el indice es muy importante tanto para poner valores u obtener los valores del arreglo.
Crear una Arreglo en Java
Al crear una arreglo debes indicar que tipo de datos manejará, cual será su nombre y también podemos indicar que tamaño tiene, es decir, cuantos elementos tiene.Sintaxis:
tipo[] nombre = new tipo[tamaño];
Ejemplos:
- ■ int[ ] edades = new int[5];
- ■ double[ ] sueldo = new double[15];
- ■ String[ ] nombres = new String[100];
Asignar Valores a un Arreglo en JAVA
Podemos poner valores a los arreglos elemento por elemento, este proceso se hace para todos los elementos del arreglo o también para modificar sus valores, vea el siguiente código:
- double[ ] precios = new double[6];
- precios[0] = 5.66;
- precios[1] = 63.11;
- precios[2] = 59.77;
- precios[3] = 60.38;
- precios[4] = 80.72;
- precios[5] = 49.50;
Podemos hacer este proceso también con un bucle, ya que puedes imaginarte el problema que se daría si son 200 elementos.
- double[] precios = new double[200];
- for(int j = 0; j <= 200; j++)
- {
- precios[j] = Math.random() * 100;
- }
Obtener Valores de un Arreglo en JAVA
- ■ precios[29] /*Hace referencia al elemento que tiene el indice 29 del arreglo.*/
- ■ nombre[99] /*Se refiere al elemento de indice 99 que esta en el arreglo.*/
/*EJERCICIO USANDO ARREGLOS*/
Crear un Formulario en Java para llenar un arreglo con 50 números reales aleatorios con dos decimales, que siga el diseño del siguiente formulario:El formulario al presionar el botón llenar, deberá generar números reales y llenarlos en el arreglo. El botón ver debe mostrar los números del arreglo en el JList.
Solución:
Paso 1. Diseñar el Formulario
Botones:
- Button: btnLlenar
- Button: btnVer
- JList: lstDatos
- import javax.swing.DefaultListModel;
- double[] numeros = new double[50];
private void btnLlenarActionPerformed(java.awt.event.ActionEvent evt) { for(int j = 0; j < numeros.length; j++)
{
double dato = Math.random()*100;
numeros[j] = Math.rint(dato*100)/100;
}
}
private void btnVerActionPerformed(java.awt.event.ActionEvent evt) {
DefaultListModel salida = new DefaultListModel();
for(int j = 0; j < numeros.length; j++)
{
salida.addElement(""+numeros[j]);
}
lstDatos.setModel(salida);
}
NOTAS.
- DefaultListModel salida = new DefaultListModel(); usamos para crear un objeto llamado salida que permite tener un grupo de datos o arreglo pero que es compatible con el JList.
- lstDatos.setModel(salida); Hace que el objeto salida se ponga como datos del JList.
- numeros.length; es una propiedad de los arreglos que devuelve su longitud o tamaño.

Crear una Clase para Ver Texto de un Archivo e Imágenes
Muchas veces queremos hacer aplicaciones que muestren el contenido de un archivo (de texto) y las figuras, esto lo podemos hacer rápidamente y fácilmente usando la clase CArchivo que te pongo, es importante recordad que varios controles (jLabel, jEditorPane) de Java soportan html para el caso de imágenes he usado este código para no complicar las cosas.
La Clase CArchivo
Esta clase tiene dos métodos, LeerArchivo() que permite leer los datos de un archivo de texto y devolver todo esto como cadena; VerImagen() que permite crear un texto html que te permitirá ver la imagen ya sea mediante un jLabel, jEditorPane u otos que soporten html. Investiga que controles en Java soportan html. Aquí tienes la case.
package XXXXXXXXXXXXXX;
/*Se usa java.io para activar las clases de manejo de archivos*/
import java.io.*;
/**
* @author Angel M.T.
*/
public class CArchivo {
/*
Este método hace la lectura de archivos de texto que se encuentren en la
carpeta texto de la raíz de tu proyecto, devuelve como cadena el contenido.
*/
public String LeerArchivo(String nombreArchivo) {
String ruta = System.getProperty("user.dir")+"/texto/"+nombreArchivo;
try{
// Abrimos el archivo
FileInputStream fstream = new FileInputStream(ruta);
// Creamos el objeto de entrada
DataInputStream entrada = new DataInputStream(fstream);
// Creamos el Buffer de Lectura
BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
String strLinea;
String salida = "";
// Leer el archivo linea por linea
while ((strLinea = buffer.readLine()) != null) {
// Imprimimos la línea por pantalla
//System.out.println (strLinea);
salida += strLinea;
}
// Cerramos el archivo
entrada.close();
return salida;
}catch (Exception e){ //Catch de excepciones
System.err.println("Ocurrio un error: " + e.getMessage());
return "!!!!ERROR...";
}
}
/*
Este método permite mostrar una imagen con solo ponerle el nombre del
archivo, pero las imágenes deben estar en la carpeta imágenes de la raíz
de tu proyecto, devuelve texto html como respuesta para ver la figura.
*/
public String VerImagen(String nombre)
{
String texto = "<html><center>";
texto = texto + "<img src=\"";
texto = texto + "file:///";
texto = texto + System.getProperty("user.dir");//ruta de archivo
texto = texto + "/imagenes/"+nombre+"\" >";
texto = texto + "</center></html>";
return texto;
}
}
¿Como usar la Clase?
Paso 1. Debes agregar esta clase a tu proyecto, no olvides modificar el nombre del paquete (package).
Paso 2. Deberás crear dos carpetas una para archivos de texto llamada "texto" y otra para las figuras llamada "imagenes", estas carpetas las creas en la raíz de tu proyecto, como te muestro en la figura.
Paso 3. Crear un formulario como mínimo un botón y una etiqueta.
Debes crear el objeto con la siguiente linea:
- ■ CArchivo oObjeto = new CArchivo();
Para ver un archivo de texto llamado "dato.txt", deberás ejecutar la siguiente linea en el botón:
- ■ lblMensaje.setText(oReceta.LeerArchivo("dato.txt"));
Para ver una imagen llamada "gato.jpg", deberás ejecutar la siguiente linea en el botón:
- ■ lblMensaje.setText(oReceta.VerImagen("gato.jpg"));
IMPORTANTE
- ■ Es importante tener en cuenta que los archivos deben estar en las carpetas correspondientes que se explico en la parte superior.
- ■ También ten en cuenta que si quieres mostrar texto e imagen al mismo tiempo deberás usar controles diferentes, aunque estudiando un poco la clase podrías hacer las modificaciones de forma que todo se muestre en un solo control.
- ■ El archivo de texto también puede ser de HTML, pero ten en cuenta que Java acepta solo código básico de HTML, por tanto ni soñar poner estilos avanzados o JavaScript y otros.
Ejercicio Programar una Persona en JAVA
Este ejercicio consisten en ingresar los datos básicos (edad, nombre, dni) de una persona y simular con figuras en movimiento algunos comportamientos que tenemos como son: Hablar(), Jugar(), Comer().
Crear el Proyecto en Netbeans
Para este ejercicio creamos el proyecto al cual denominamos AppPersona, luego hacemos lo siguiente:- ■ Creamos la clase CPersona
- ■ Creamos el formulario frmPersona
Ahora debemos tener la siguiente estructura en el proyecto.
Agregar una Carpeta de Imagenes
Debemos tener una carpeta con varias imágenes, te recomiendo usar gif animados para tener mejores resultados. La carpeta debes ponerla en la carpeta de tu aplicación, ver la figura para tener más claro donde poner este carpeta.Las imágenes que puse son GIF animados y están en la carpeta como se ve en la figura.
Código de la Clase CPersona
package apppersona;
/**
*
* @author Angel M.T.
*/
public class CPersona {
/*Propiedades*/
int edad;
String nombre;
String dni;
public int getEdad() {
return edad;
}
/*Métodos de Acceso*/
public void setEdad(int edad) {
this.edad = edad;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
/*Metodos Normales*/
public String Hablar()
{
String texto = "<html>";
texto = texto + nombre+"<hr>";
texto = texto + "DNI: " + dni + "<br>";
texto = texto + "Edad: " + edad + "<br>";
texto = texto + "<img src=\"";
texto = texto + "file:///";
texto = texto + System.getProperty("user.dir");//ruta de archivo
texto = texto + "/imagenes/hablar.gif\" >";
texto = texto + "</html>";
return texto;
}
public String Juerga()
{
String texto = "<html>";
texto = texto + nombre+"<hr>";
texto = texto + "DNI: " + dni + "<br>";
texto = texto + "Edad: " + edad + "<br>";
texto = texto + "<img src=\"";
texto = texto + "file:///";
texto = texto + System.getProperty("user.dir");//ruta de archivo
texto = texto + "/imagenes/juerga.gif\" >";
texto = texto + "</html>";
return texto;
}
public String Jugar()
{
String texto = "<html>";
texto = texto + nombre+"<hr>";
texto = texto + "DNI: " + dni + "<br>";
texto = texto + "Edad: " + edad + "<br>";
texto = texto + "<img src=\"";
texto = texto + "file:///";
texto = texto + System.getProperty("user.dir");//ruta de archivo
texto = texto + "/imagenes/jugar.gif\" >";
texto = texto + "</html>";
return texto;
}
public String Comer()
{
String texto = "<html>";
texto = texto + nombre+"<hr>";
texto = texto + "DNI: " + dni + "<br>";
texto = texto + "Edad: " + edad + "<br>";
texto = texto + "<img src=\"";
texto = texto + "file:///";
texto = texto + System.getProperty("user.dir");//ruta de archivo
texto = texto + "/imagenes/comer.gif\" >";
texto = texto + "</html>";
return texto;
}
}
/*Debemos considerar que los métodos Hablar, Juerga, Comer, Jugar, devuelven como resultado una cadena en este caso html*/
/**
*
* @author Angel M.T.
*/
public class CPersona {
/*Propiedades*/
int edad;
String nombre;
String dni;
public int getEdad() {
return edad;
}
/*Métodos de Acceso*/
public void setEdad(int edad) {
this.edad = edad;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
/*Metodos Normales*/
public String Hablar()
{
String texto = "<html>";
texto = texto + nombre+"<hr>";
texto = texto + "DNI: " + dni + "<br>";
texto = texto + "Edad: " + edad + "<br>";
texto = texto + "<img src=\"";
texto = texto + "file:///";
texto = texto + System.getProperty("user.dir");//ruta de archivo
texto = texto + "/imagenes/hablar.gif\" >";
texto = texto + "</html>";
return texto;
}
public String Juerga()
{
String texto = "<html>";
texto = texto + nombre+"<hr>";
texto = texto + "DNI: " + dni + "<br>";
texto = texto + "Edad: " + edad + "<br>";
texto = texto + "<img src=\"";
texto = texto + "file:///";
texto = texto + System.getProperty("user.dir");//ruta de archivo
texto = texto + "/imagenes/juerga.gif\" >";
texto = texto + "</html>";
return texto;
}
public String Jugar()
{
String texto = "<html>";
texto = texto + nombre+"<hr>";
texto = texto + "DNI: " + dni + "<br>";
texto = texto + "Edad: " + edad + "<br>";
texto = texto + "<img src=\"";
texto = texto + "file:///";
texto = texto + System.getProperty("user.dir");//ruta de archivo
texto = texto + "/imagenes/jugar.gif\" >";
texto = texto + "</html>";
return texto;
}
public String Comer()
{
String texto = "<html>";
texto = texto + nombre+"<hr>";
texto = texto + "DNI: " + dni + "<br>";
texto = texto + "Edad: " + edad + "<br>";
texto = texto + "<img src=\"";
texto = texto + "file:///";
texto = texto + System.getProperty("user.dir");//ruta de archivo
texto = texto + "/imagenes/comer.gif\" >";
texto = texto + "</html>";
return texto;
}
}
/*Debemos considerar que los métodos Hablar, Juerga, Comer, Jugar, devuelven como resultado una cadena en este caso html*/
Diseñando el Formulario
Nombre de los Controles:- ■ txtNombre
- ■ txtEdad
- ■ txtDni
- ■ lblRespuesta
- ■ btnVer
- ■ btnComer
- ■ btnJugar
Código del Formulario
No olvides que en la parte superior del formulario debemos crear el objeto, para poder reutilizarlo en la parte inferior, ver la figura para ubicar la creación del objeto:
Código de los Botones
private void btnVerActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
oPer.setDni(txtDni.getText());
oPer.setNombre(txtNombre.getText());
oPer.setEdad(Integer.parseInt(txtEdad.getText()));
lblRespuesta.setText(oPer.Juerga());
}
private void btnComerActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
oPer.setDni(txtDni.getText());
oPer.setNombre(txtNombre.getText());
oPer.setEdad(Integer.parseInt(txtEdad.getText()));
lblRespuesta.setText(oPer.Comer());
}
private void btnJugarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
oPer.setDni(txtDni.getText());
oPer.setNombre(txtNombre.getText());
oPer.setEdad(Integer.parseInt(txtEdad.getText()));
lblRespuesta.setText(oPer.Jugar());
}
El Objetivo del Ejercicio - La Pesa
Este ejercicio te enseñará como crear las clases y como realizar la composición entre ellas. Recuerda que la composición significa que un elemento esta compuesto por otros elementos y luego forman un tercer elemento.- Al crear las clases CEsfera y CCilindro, se practica el diseño y creación de clases.
- Al crear la clase CPesa, aparte de ver la creación de clases, se puede observar lo que se llama la composición de objetos.
- Al crear el formulario, también podemos observar la composición de objetos a parte de la creación y codificación de controles.
- Aunque el ejercicio puede ser solucionado de una manera mucho más sencilla, el objetivo que nos hemos planteado es solucionarlo mediante objetos y guiándonos por la figura que al inicio vemos.
Ejercicio La Pesa
En el gimnasio Arnold, se usan pesas y a los deportistas les interesa conocer el volumen que tiene cada una de estas, las pesas tienen la forma que indica la figura, se pide hacer una aplicación que calcule el volumen de cada parte de la pesa y también de la pesa en total.
Solución de la Pesa:
Si vemos la figura podemos identificar 2 tipos de figuras, una semiesfera y otro el cilindro, por ello vamos ha crear dos clases y luego una tercera clase que será la misma pesa:
Codificación o Implementación de Clases
/**
* @author Angel M.T.
* La clase CEsfera
*/
public class CEsfera {
/*Campos*/
private double radio;
/*Metodos de acceso*/
public double getRadio() {
return radio;
}
public void setRadio(double radio) {
this.radio = radio;
}
/*Metodos de calculo*/
public double volumen()
{
double respuesta = 4.0/3.0*Math.PI*radio*radio*radio;
return respuesta;
}
public double medioVolumen()
{
//Re utilizamos el metodo volumen y calculamos la mitad
return volumen()/2.0;
}
}
/**
* @author Angel M.T.
* LA CLASE CCilindro
*/
public class CCilindro {
/*Campos*/
double radio;
double largo;
/*Metodos de Acceso*/
public double getRadio() {
return radio;
}
public void setRadio(double radio) {
this.radio = radio;
}
public double getLargo() {
return largo;
}
public void setLargo(double largo) {
this.largo = largo;
}
/*Metodos de Calculo*/
public double volumen()
{
double respuesta = 2.0*Math.PI*radio*radio*largo;
return respuesta;
}
}
/**
* @Author: Angel M.T.
* La clase CPesa
*/
public class CPesa {
/*Campos*/
double radioBarra;
double radioEsfera;
double largoBarra;
CCilindro oCilindro = new CCilindro();
CEsfera oEsfera = new CEsfera();
/*Metodos de Acceso*/
public double getRadioBarra() {
return radioBarra;
}
public void setRadioBarra(double radioBarra) {
this.radioBarra = radioBarra;
}
public double getRadioEsfera() {
return radioEsfera;
}
public void setRadioEsfera(double radioEsfera) {
this.radioEsfera = radioEsfera;
}
public double getLargoBarra() {
return largoBarra;
}
public void setLargoBarra(double largoBarra) {
this.largoBarra = largoBarra;
}
/*Metodos de calculo*/
public double volumen()
{
oCilindro.setLargo(largoBarra);
oCilindro.setRadio(radioBarra);
oEsfera.setRadio(radioEsfera);
return oCilindro.volumen() + 2*oEsfera.medioVolumen();
}
}
Diseño de la Interfaz (El formulario)
Al tener las clases, ya podemos darnos idea de como es nuestro formulario, este lo diseñamos y ponemos los controles con sus nombres y propiedades respectivos.
Nombre de los Controles:
- El formulario: frmPesa
- Los cuadros de texto: txtLargoBarra, txtRadioBarra, txtRadioEsfera
- Los botones: btnVolumen, btnLimpiar, btnSalir
- Las etiquetas: btnRespuesta
Código del Formulario (frmPesa)
Cuando creas el formulario deberás crear también el objeto que llamaremos oPesa, este codigo va dentro del formulario, como se indica en la siguiente figura:
Código de los Botones:
Ya con el objeto oPesa creado procedemos a la implementación de los botones como sigue:
private void btnVolumenActionPerformed(java.awt.event.ActionEvent evt) {
oPesa.setLargoBarra(Double.parseDouble(txtLargoBarra.getText()));
oPesa.setRadioBarra(Double.parseDouble(txtRadioBarra.getText()));
oPesa.setRadioEsfera(Double.parseDouble(txtRadioEsfera.getText()));
/*Mostrar los resultados*/
lblRespuesta.setText("El volumen es:" + oPesa.volumen());
}
private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {
lblRespuesta.setText("<html><h1>*** Elementos limpiados ***</h1><html>");
}
private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
POO4. CREACIÓN DE CLASES EN JAVA EJEMPLO CON FIGURAS GEOMETRICAS I
miércoles, 9 de abril de 2014
Posted by
ghel
Ejercicio 1. El Triangulo en Java OO
Tenemos un triangulo de tres lados, se pide hacer una aplicación en Java usando una clase CTriangulo que permita calcular el area, perimetro y altura. Para esto tener en cuenta que el triangulo dispone de los valores de sus tres lados, usar la formula de Heron y para su solución.1. Diseño de la clase CTriangulo
2. Codificación de la clase CTriangulo
/**
*
* @Angel Moreano Terrazas
*/
public class CTriangulo {
/*Propiedades*/
double lado1;
double lado2;
double lado3;
/*Metodos de acceso*/
public void SetLado1(double dato)
{
lado1 = dato;
}
public void SetLado2(double dato)
{
lado2 = dato;
}
public void SetLado3(double dato)
{
lado3 = dato;
}
public double getLado1()
{
return lado1;
}
public double getLado2()
{
return lado2;
}
public double getLado3()
{
return lado3;
}
/*Metodos de calculo*/
public double Area()
{
double p = 1.0/2.0*(lado1+lado2+lado3);
return Math.sqrt(p*(p-lado1)*(p-lado2)*(p-lado3));
}
public double Perimetro()
{
return lado1+lado2+lado3;
}
public double AlturaLado1()
{
double t = 1.0/2.0*Math.sqrt((lado1+lado2+lado3)*(lado1+lado2-lado3)*(lado1-lado2+lado3)*(-lado1+lado2+lado3));
return t/lado1;
}
public double AlturaLado2()
{
double t = 1.0/2.0*Math.sqrt((lado1+lado2+lado3)*(lado1+lado2-lado3)*(lado1-lado2+lado3)*(-lado1+lado2+lado3));
return t/lado2;
}
public double AlturaLado3()
{
double t = 1.0/2.0*Math.sqrt((lado1+lado2+lado3)*(lado1+lado2-lado3)*(lado1-lado2+lado3)*(-lado1+lado2+lado3));
return t/lado3;
}
/*Metodo que devuelve un texto donde podemos ver todos los resultados*/
public String VerCalculos()
{
String salida = "<html><body>";
salida += "<h2>**RESULTADOS**</h2>";
salida += "<br>El area es:" + Area();
salida += "<br>El perimetro es:" + Perimetro();
salida += "<br>La altura del lado " + lado1+ " es: " + AlturaLado1();
salida += "<br>La altura del lado " + lado2+ " es: " + AlturaLado2();
salida += "<br>La altura del lado " + lado3+ " es: " + AlturaLado3();
salida += "</body></html>";
return salida;
}
}
*
* @Angel Moreano Terrazas
*/
public class CTriangulo {
/*Propiedades*/
double lado1;
double lado2;
double lado3;
/*Metodos de acceso*/
public void SetLado1(double dato)
{
lado1 = dato;
}
public void SetLado2(double dato)
{
lado2 = dato;
}
public void SetLado3(double dato)
{
lado3 = dato;
}
public double getLado1()
{
return lado1;
}
public double getLado2()
{
return lado2;
}
public double getLado3()
{
return lado3;
}
/*Metodos de calculo*/
public double Area()
{
double p = 1.0/2.0*(lado1+lado2+lado3);
return Math.sqrt(p*(p-lado1)*(p-lado2)*(p-lado3));
}
public double Perimetro()
{
return lado1+lado2+lado3;
}
public double AlturaLado1()
{
double t = 1.0/2.0*Math.sqrt((lado1+lado2+lado3)*(lado1+lado2-lado3)*(lado1-lado2+lado3)*(-lado1+lado2+lado3));
return t/lado1;
}
public double AlturaLado2()
{
double t = 1.0/2.0*Math.sqrt((lado1+lado2+lado3)*(lado1+lado2-lado3)*(lado1-lado2+lado3)*(-lado1+lado2+lado3));
return t/lado2;
}
public double AlturaLado3()
{
double t = 1.0/2.0*Math.sqrt((lado1+lado2+lado3)*(lado1+lado2-lado3)*(lado1-lado2+lado3)*(-lado1+lado2+lado3));
return t/lado3;
}
/*Metodo que devuelve un texto donde podemos ver todos los resultados*/
public String VerCalculos()
{
String salida = "<html><body>";
salida += "<h2>**RESULTADOS**</h2>";
salida += "<br>El area es:" + Area();
salida += "<br>El perimetro es:" + Perimetro();
salida += "<br>La altura del lado " + lado1+ " es: " + AlturaLado1();
salida += "<br>La altura del lado " + lado2+ " es: " + AlturaLado2();
salida += "<br>La altura del lado " + lado3+ " es: " + AlturaLado3();
salida += "</body></html>";
return salida;
}
}
3. Diseño de la Interfaz Gráfica
Nombre de los Controles:
- txtDato1 (JTextField), para ingresar el dato del lado1.
- txtDato2 (JTextField), para ingresar el dato del lado2.
- txtDato3 (JTextField), para ingresar el dato del lado3.
- btnCalcular (JButton), el botón que ejecutara las ordenes.
- lblRespuesta (JLabel), la etiqueta para mostrar las respuestas.
4. Código del Botón
/*Codigo de btnCalcular*/
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {
CTriangulo oTi = new CTriangulo();
oTi.SetLado1(Double.parseDouble(txtDato1.getText()));
oTi.SetLado2(Double.parseDouble(txtDato2.getText()));
oTi.SetLado3(Double.parseDouble(txtDato3.getText()));
lblRespuesta.setText(oTi.VerCalculos());
}
¿Que es JAVA?
Es un lenguaje de programación de alto nivel, esta diseñado para usar la POO, la mayoría de los lenguajes de programación de hoy soportan esta técnica. Java es uno de los lenguajes de programación más utilizados de la actualidad, puedes investigar el ranking que ocupa Java a nivel de lenguajes de programación y verás que se mantiene el el primer lugar ya varios años.¿Como crear una Aplicación con Objetos en JAVA
Para crear una aplicación OO en java necesitamos tener en cuenta lo que vamos a realizar, en este caso por ejemplo necesitamos hacer una calculadora que haga las operaciones de suma, resta, multiplicación y división.Crear una clase en JAVA
Paso 1. Diseñar la Clase
Paso 2. Codificar la Clase
Codificar la Clase de acuerdo a las especificaciones tanto de propiedades como de operaciones, es importante que respetes los métodos de acceso a las propiedades, es decir, los métodos set y get.
/**
*
* @Angel Moreano Terrazas
*/
public class CCalculadora
{
/*Propiedades*/
private double numero1;
private double numero2;
/*Metodos de Acceso*/
public void setNumero1(double pNum1)
{
numero1 = pNum1;
}
public void setNumero2(double pNum2)
{
numero2 = pNum2;
}
public double getNumero1()
{
return numero1;
}
public double getNumero2()
{
return numero2;
}
/*Metodos comunes*/
public double Suma()
{
return numero1+numero2;
}
public double Resta()
{
return numero1-numero2;
}
public double Multiplicacion()
{
return numero1*numero2;
}
public double Division()
{
if (numero2!=0)
return numero1/numero2;
else
return 0;
}
}
*
* @Angel Moreano Terrazas
*/
public class CCalculadora
{
/*Propiedades*/
private double numero1;
private double numero2;
/*Metodos de Acceso*/
public void setNumero1(double pNum1)
{
numero1 = pNum1;
}
public void setNumero2(double pNum2)
{
numero2 = pNum2;
}
public double getNumero1()
{
return numero1;
}
public double getNumero2()
{
return numero2;
}
/*Metodos comunes*/
public double Suma()
{
return numero1+numero2;
}
public double Resta()
{
return numero1-numero2;
}
public double Multiplicacion()
{
return numero1*numero2;
}
public double Division()
{
if (numero2!=0)
return numero1/numero2;
else
return 0;
}
}
Descripción de la Clase
Para crear y definir el nombre de la clase usamos la palabra class seguida del nombre, la palabra public significa que la clase es publica lo que significa que pude ser usada desde cualquier aplicación.- public class CCalculadora
- private double numero1;
- private double numero2;
- private double memoria;
public void setNumero1(double pNum1) /*pNum1 es el parametro*/
{
numero1 = pNum1;
}
public void setNumero2(double pNum2) /*pNum2 es el parametro*/
{
numero2 = pNum2;
}
numero1 = pNum1;
}
public void setNumero2(double pNum2) /*pNum2 es el parametro*/
{
numero2 = pNum2;
}
public double getNumero1()
{
return numero1;
}
public double getNumero2()
{
return numero2;
}
Métodos para hacer Operaciones, estos métodos normalmente son públicos aunque pueden también ser privados, no olvidemos que los métodos pueden ser de tipo void, double o de cualquier otro tipo dependiendo de la necesidad.{
return numero1;
}
public double getNumero2()
{
return numero2;
}
public double Suma()
{
return numero1+numero2;
}
public double Resta()
{
return numero1-numero2;
}
public double Multiplicacion()
{
return numero1*numero2;
}
public double Division()
{
if (numero2!=0)
return numero1/numero2;
else
return 0;
}
{
return numero1+numero2;
}
public double Resta()
{
return numero1-numero2;
}
public double Multiplicacion()
{
return numero1*numero2;
}
public double Division()
{
if (numero2!=0)
return numero1/numero2;
else
return 0;
}
Paso 3. Diseñar la Interfaz
Diseño del Formulario para usar la ClaseNombre de los Controles
- txtDato1 (JTextField). El primer cuadro de texto.
- txtDato2 (JTextField). El segundo cuadro de texto.
- btnSuma (JButton). El primer botón suma.
- btnResta (JButton). El segundo botón resta.
- btnMultiplicacion (JButton). El tercer botón multiplicación.
- btnDivision (JButton). El cuarto botón división.
- lblRespuesta (JLabel). La ultima etiqueta para las respuestas.
Paso 4. Codificar los Botones
Por ahora crearemos el objeto directamente dentro del botón, este código no es muy optimo pero es el más sencillo de entender por ahora.private void btnSumaActionPerformed(java.awt.event.ActionEvent evt) {
/*Creación del objeto oCalcu*/
CCalculadora oCalcu = new CCalculadora();
/*Colocación de datos a las propiedades*/
oCalcu.setNumero1(Double.parseDouble(txtDato1.getText()));
oCalcu.setNumero2(Double.parseDouble(txtDato2.getText()));
/*Ejecución del metodo Suma y mostrar resultados*/
lblRespuesta.setText("La suma es: "+ oCalcu.Suma());
}
private void btnRestaActionPerformed(java.awt.event.ActionEvent evt) { /*Creación del objeto oCalcu*/
CCalculadora oCalcu = new CCalculadora();
/*Colocación de datos a las propiedades*/
oCalcu.setNumero1(Double.parseDouble(txtDato1.getText()));
oCalcu.setNumero2(Double.parseDouble(txtDato2.getText()));
/*Ejecución del metodo Resta y mostrar resultados*/
lblRespuesta.setText("La Resta es: "+ oCalcu.Resta());
}
private void btnMultiplicacionActionPerformed(java.awt.event.ActionEvent evt) { /*Creación del objeto oCalcu*/
CCalculadora oCalcu = new CCalculadora();
/*Colocación de datos a las propiedades*/
oCalcu.setNumero1(Double.parseDouble(txtDato1.getText()));
oCalcu.setNumero2(Double.parseDouble(txtDato2.getText()));
/*Ejecución del metodo Multiplicación y mostrar resultados*/
lblRespuesta.setText("La Multiplicación es: "+ oCalcu.Multiplicacion());
}
private void btnDivisiónActionPerformed(java.awt.event.ActionEvent evt) { /*Creación del objeto oCalcu*/
CCalculadora oCalcu = new CCalculadora();
/*Colocación de datos a las propiedades*/
oCalcu.setNumero1(Double.parseDouble(txtDato1.getText()));
oCalcu.setNumero2(Double.parseDouble(txtDato2.getText()));
/*Ejecución del metodo División y mostrar resultados*/
lblRespuesta.setText("La División es: "+ oCalcu.Division());
}
Descripción del Código de Botones.
CCalculadora oCalcu = new CCalculadora( );- Primero tener en cuenta que CCalculadora es la clase y al ponerla al principio significa que el objeto será de este tipo.
- oCalcu es el nombre del objeto que en realidad puede ser cualquier nombre, le he colocado el prefijo "o" que indica que es un objeto echo por nosotros.
- = new, lo usamos para indicar que el objeto oCalcu tendrá un valor inicial, se usa la palabra new para inicializar un objeto.
- El segundo CCalculadora( ), lo usamos para indicar el valor inicial que tendrá el objeto, aunque aun no hemos creado constructores, CCalculadora( ) es un contructor por defecto que tiene nuestra clase, por ahora entendamos como si este valor inicial para la calculadora fuera CERO.
oCalcu.setNumero1(Double.parseDouble(txtDato1.getText()));
- oCalcu, es el objeto que hemos creado.
- .setNumero1( ), es el método de acceso de la clase que hemos creado y nuestro objeto lo tiene, dentro de los paréntesis debemos poner el número que deseamos.
- Double.parseDouble( ), se usa para convertir un texto en un numero real, debes tener en cuenta que dentro de los paréntesis se pone el texto a transformar.
- txtDato1, es el nombre del control JTextField del formulario que hemos creado.
- .getText( ), es el método que devuelve el valor escrito en el JTextField txtDato1 de nuestro formulario, en este caso getText no recibe parámetros dentro de los paréntesis, queda en blanco.
¿Como se definen las clases?
Definimos los siguientes elementos del mundo real:- Calculadora
- Radio
- Persona
- Alumno
- Documento
Diseño de la Clase Calculadora
Recordemos como son las calculadoras, estas tienen dos números, también algunas cuentan con una memoria, las calculadoras hacen las operaciones de Suma, Resta, Multiplicación, División y Potencia.
- Como puedes ver el nombre de la clase se denomina CCalculadora
- Ahora podemos también ver las propiedades son numero1, numero2, memoria
- En la parte inferior se puede observar las operaciones, Suma, Resta, Multiplicación, División, Potencia.
Ahora que ya tienes claro como se diseña una clase, te muestro el diseño de las siguientes:
¿Que es la Programación Orientada a Objetos (POO)?
El desarrollo de software hoy día exige resolver problemas y construir sistemas de manera eficiente y reutilizando código y tratando de reflejar en el software la realidad de un problema. Es por ello que existe un paradigma o técnica de programación denominada POO que permite reflejar de la mejor manera posible la realidad.La POO, es una técnica basada en representar los elementos de un programa en forma de objetos, tal como lo vemos en el mundo real, podemos indicar el siguiente ejemplo:
Vamos a considerar un elemento denominado Celular, este tiene características o también llamadas propiedades, como son:
- Marca
- Modelo
- Color
- Tamaño
- Peso
También podemos indicar las operaciones que se pueden hacer con un celular, estas son: (las operaciones se las conoce como métodos)
- Hacer llamadas
- Recibir llamadas
- Enviar mensajes
- Recibir mensajes
- Visualizar mensajes
- etc.
Si analizamos este celular, podemos ver claramente un elemento del mundo real, el objetivo de la POO es hacer este análisis y poder desarrollar un programa de forma tal que muestre o refleje la realidad lo mejor posible pero en forma de código.
Términos o conceptos básicos de la POO
La POO, tiene cuatro pilares fundamentales, esto los puedes ver en el siguiente gráfico:
Encapsulamiento
Las propiedades son privadas y accesibles mediante métodos protegidos o públicos, esto asegura la consistencia de los datos.
Herencia
Crea objetos a partir de otros pre existentes, esto permite la re utilización de código, la herencia aprovecha la codificación hecha anteriormente, por ejemplo si se programo el grabar un documento, este puede ser reutilizado en otro programa que necesite de esto.
Polimorfismo
Esto permite que un determinado elemento (lo llamaremos objeto), pueda comportarse de diversas formas con una misma operación.
Abstracción
Significa concentrar las propiedades y los métodos en un solo elemento de forma que este represente una unidad útil y dentro de un sistema.
Los conceptos antes mencionados son los pilares a seguir en la POO, ahora vamos a ver otros tres conceptos que nos ayudarán a entender mejor los conceptos.
Clase
Una clase es el código que especifica el comportamiento y las propiedades de los elementos denominados objetos, la clase es como un molde que permite crear muchos objetos que cumplen con lo que se implemento en la clase.
Propiedad
Los objetos manejan datos, estos datos se denominan las propiedades y luego veremos que se comportan como variables.
Los Métodos
Dijimos que un objeto tiene comportamiento, los métodos son código que permite ejecutar diversas operaciones y permiten manipular los datos del objeto mediante estos, son parecidos a las funciones y procedimientos.
Objeto
Se denomina así a una instancia de una clase, es decir, habíamos dicho que una clase es como un molde, entonces imaginemos un molde de galletas, y a las galletas como los objetos, todos serán similares pero cada una es diferente por el hecho de existir simplemente.