Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hasta ahora nos hemos dedicado a diseñar e implementar clases que son solución a
problemas, pero nos embargan unas preguntas:
Bueno y como se usan esas clases?
Si funcionan?
Como las pruebo?
Bien para poder utilizar una clase debemos:
Primero definir una instancia de la clase, lo cual es crear una o varias referencias a la clase
a través de nombres o identificadores que definimos, como lo hacemos cuando definimos
los atributos:
sintaxis:
int sueldo;
sintaxis:
testudiante alumno;
sintaxis:
alumno= new testudiante();
Donde new es una palabra reservada de java que permite crear el espacio de memoria para
la instancia.
Hay que tener en cuenta que en java cuando se crea la instancia automáticamente se llama
el constructor y ejecuta las instrucciones que se definieron en él, lo cual indica que si lo
definimos en la clase con parámetros debemos pasarle los valores en el mismo momento de
crear dicha instancia.
sintaxis:
alumno.AsisgnarNota1(10);
alumno.AsisgnarNota2(50);
alumno.AsisgnarNota3(17);
Cuando los métodos devuelven valores debemos guardar los valores que devuelven en
variables previamente definidas:
sintaxis:
float promedio;
promedio = alumno.calculapromedio();
Ejemplo :
trabajador empleado;
float total;
empleado= new trabajador();
empleado.asignarhoras(36);
empleado.asignavalor(3546);
total=empleado.Neto();
Análisis
Después de analizar cómo se usan las clases a través de su instancia al lector le pueden
embargar otras preguntas como:
Por qué se dan valores directamente o es que no se pueden ser definidos por el usuario?
Para responder la primera pregunta lo que se debe realizar es crear una clase en java que
implemente el siguiente método:
public static void main(String args[])
import java.io.*;
class Principal
{
Problema
Diseñar una clase que permita manejar la información de llamadas en un Sai teniendo como
base la duración de la llamada y el valor del minuto.
Solución
class Llamada {
private
int valMin,tiempo;
Llamada(){
valMin = 0;
tiempo = 0;
}
public void LlevaMinuto(int val)
{
valMin = val;
}
public void LlevaTiempo(int ti)
{
tiempo = ti;
}
int TraeMinuto()
{
return valMin;
}
int TraeTiempo()
{
return tiempo;
}
int ValorLlamada()
{
int Calcula;
Calcula = TraeMinuto()*TraeTiempo();
return Calcula;
}
}
Clase que instancia
import java.io.*;
class Principal{
try {
System.out.print("Digite el valor del minuto :");
vmin =Integer.parseInt(Tecla.readLine());
Llamar.LlevaMinuto(Vmin);
La instrucción
try {
}catch
Permite capturar algún error ocurrido al escribir los datos y evitamos que se bloquee el
programa cuando estemos cargando datos desde el teclado.
En esta instrucción se crea una instancia de la clase bufferedReader que java tiene
implementada llamada tecla la cual es capaz de leer caracteres desde el teclado.
Tecla.readLine() Se hace un llamado al método readline que permite leer una línea de
caracteres por pantalla y guardarla en los atributos donde se asigne.
Integer.parseInt Convierte la cadena leída en datos enteros y este valor convertido debe
asignarse a uno dato de tipo integer.
Todo esto se debe realizar dado que en java lo que se captura son cadenas de caracteres y
debemos hacer las conversiones a sus valores numéricos correspondientes.
Sentencias de Iteración o Repetitivas
Hay ocasiones que se requiere que una sentencia compuesta se ejecute varias veces,
posiblemente cambiando los valores de las expresiones contenidas en ésta. Por ejemplo,
supongamos que deseamos crear una tabla del capital acumulado de una cantidad
invertida a una tasa de interés anual y recapitalizado mensualmente. En este ejemplo,
para cada mes es necesario determinar el capital acumulado e imprimir el resultado. Este
proceso se repetirá tantas veces como el número de meses que deseemos tabular. Las
sentencias que nos permiten realizar tal tarea se conocen como sentencias de iteración
o repetitivas. En Java existen tres tipos de sentencias repetitivas: La sentencia while, la
sentencia for y la sentencia do - while.
Sentencia while
La sentencia while nos permite ejecutar una sentencia compuesta, mientras se cumpla
una condición. La sintaxis para esta sentencia es la siguiente:
while(expresión){
sentencia1;
sentencia2;
.
.
Sentencia n;
}
Expresión debe ser de tipo booleano. Sentencia es una sentencia compuesta.
Se desea una clase llamada Capital para estudiar el comportamiento del capital
acumulado de una inversión, a una tasa de interés anual, con recapitalización mensual.
Se requiere un método que tabule el capital acumulado mensualmente. La salida del
programa será una tabla de la forma:
Mes Capital
---------------
1 dddd.dd
2 dddd.dd
...
public class capital
{
// instance variables - replace the example below with your own
private double capital;
double tasa;
int meses;
/**
* Constructor for objects of class EjWhile
*/
public capital()
{
capital = 0;
tasa = 0;
meses = 0;
}
System.out.println("Mes Capital");
interes = (1 + getT() / 12);
while(mes <= meses){
capital1 *= (interes);
System.out.println(mes + ": "
+String.format("%.2f",capital1));
mes++;
}
System.out.println(" El pago total del prestamo de:
" +getCap() );
System.out.println(" a una tasa del"
+String.format("%.2f",interes) +"%");
System.out.println(" es : "
+String.format("%.2f",capital1));
return (capital1);
}
}
Sentencia for
La sentencia for es una sentencia de repetición cuya sintaxis tiene una forma más
compacta utilizando la sentencia while. La sintaxis de la sentencia for es la siguiente:
for( ; ; ) {
... /* Un ciclo infinito */
}
Ejemplo sobre la sentencia for
El siguiente código muestra la clase Capital del ejemplo sobre la proposición while
modificado para que utilice en su lugar una proposición for.
public CapFor()
{
capital = 0;
tasa = 0;
meses = 0;
}
System.out.println("Mes Capital");
interes = (1 + getT() / 12);
for(int mes = 1; mes <= getM(); mes++){
capital1 *= (interes);
System.out.println(mes + ": "
+String.format("%.2f",capital1));
}
System.out.println(" El pago total del prestamo de: " +getCap()
);
System.out.println(" a una tasa del "
+String.format("%.2f",interes) +"%" + " mensual");
System.out.println(" es : " +String.format("%.2f",capital1));
return (capital1);
}
}
Sentencia do - while
do {
sentencia 1;
sentencia 2;
.
.
Sentencia n;
} while(expresión)
El siguiente código muestra la clase Capital del ejemplo sobre la proposición while
modificado para que utilice en su lugar una do-while.
public class Cap_do_while {
public Cap_do_while()
{
capital = 0;
tasa = 0;
meses = 0;
}
System.out.println("Mes Capital");
interes = (1 + getT() / 12);
do {
capital1 *= (interes);
System.out.println(mes + ": "
+String.format("%.2f",capital1));
mes++;
} while(mes <= meses) ;
}
EJERCICIOS PROGRAMACION RESUELTOS
/*
* Diseñar una que permita un valor “n” positivo ingresado por el usuario. Luego
calcule la suma * de los “n” primeros números naturales, los pares, los impares y los
* cuadrados. Finalmente * * * mostrar resultados en pantalla.
*/
package javaapplication4;
import java.io.BufferedReader; //clase que nos permite el ingreso de datos por teclado
import java.io.IOException;
import java.io.InputStreamReader;
//Método procedimiento (No retorna valor) para asignar valor al atributo a través parámetro por referencia
//Función que nos muestra los números naturales hasta el valor digitado y
//la función nos retorna la sumatoria de ellos.
//Función que nos muestra los números naturales pares desde 1 hasta el valor digitado y //la función nos
retorna la sumatoria de ellos.
//Función que nos muestra los números naturales impares desde 1 hasta el valor digitado y
//la función nos retorna la sumatoria de ellos.
}
}
Como pudimos ver en el código anterior, ha sido bastante sencillo obtener la entrada del usuario
y almacenar ese valor en una variable. El único "problema" es que BufferedReader únicamente
posee el método readLine() para leer la entrada y este siempre retorna String, de modo que para
obtener un número debemos leer primero como String y luego enviarle dicho String al
método parseInt() de la clase Integer. Hay que ser muy cuidadosos con Integer.parseInt() pues
si el usuario no ingreso un número sino letras, se disparará una excepción que debemos controlar.
Ejercicio 1 – Segunda forma Scanner –
/*
* Diseñar una que permita un valor “n” positivo ingresado por el usuario. Luego
calcule la suma * de los “n” primeros números naturales, los pares, los impares y los
* cuadrados. Finalmente * * * mostrar resultados en pantalla.
*/
package javaapplication4;
import java.util.Scanner;
public Nnaturales()
{
n = 0;
}
System.out.println("Digitar Numero");
Obj.setN (Integer.parseInt(leer.nextLine()));
/*
* Diseñar una que permita un valor “n” positivo ingresado por el usuario. Luego
calcule la suma * de los “n” primeros números naturales, los pares, los impares y los
* cuadrados. Finalmente * * * mostrar resultados en pantalla.
*/
package javaapplication4;
private
int n;
public NnVentana()
{
n = 0;
}
int m;
Nnaturales Obj = new Nnaturales();
}
/**
* Write a description of class Mostrar_num here.
* LEER UN NUMERO ENTERO Y MOSTRAR TODOS LOS NUMEROS
* ENTEROS COMPRENDIDOS ENTRE 1 Y EL NUMERO LEIDO
* @author (your name)
*/
import javax.swing.*;
import java.io.*;
public Mostrar_num()
{
// initialise instance variables
num = 0;
}
void Asig_num(int n)
{
num=n;
}
int Obt_num()
{
return num;
}
int Muestra_num()
{
int i, max;
max=Obt_num();
if (max>0)
{
for(i=1;i<=max;i++)
System.out.print(i +" ");
}
return (0);
}
Mostrar_num Mario;
Mario=new Mostrar_num();
package ejercicio1;
/**
* @author My PC
*/
public class Operaciones {
private int num1;
private int num2;
import java.io.IOException;
import java.util.Scanner;
while(opc != 5){
System.out.println("Elija Opcion:\n 1- Sumar\n 2- Restar\n 3- Multiplicar\n 4- Salir\n");
opc=Integer.parseInt(leer.nextLine());
switch(opc) {
case 1:
pedirdatos();
obj.suma();
break;
case 2:
pedirdatos();
obj.resta();
break;
case 3:
pedirdatos();
obj.muiltiplicacion();
break;
}
}