GUIA - Poo JAVA
GUIA - Poo JAVA
Los miembros de instancia son los métodos y las variables que pertenecen al objeto.
Los valores de las variables definen el estado del objeto.
Los métodos definen el comportamiento de un objeto. La implementación de los
métodos sí es compartida por todas las instancias.
Los miembros estáticos son los métodos y las variables que pertenecen a la clase.
Se diferencian en la definición por la palabra clave static.
Las variables estáticas son inicializadas cuando se carga la clase en runtime.
Los miembros estáticos pueden ser llamados utilizando el nombre de la clase o a
través de la referencia al objeto
jercicios propuestos
2.-Implemente 4.- banco ,con los atributos nro de cuenta , nombre del
una clase llamado
cliente , tipo
.- Diseñe de ahorro( D=dólar
e implemente y S=soles)
en Java una y eltrabajar
clase para saldo; con
Implemente
triánguloslosisósceles.
métodosPara
para
deposito , retiro
lo, defina de dinero.
las variables y los métodos
de ejemplar constructores
mínimas que requiera,respectivos.
proporcione métodos de
Esta aplicación
onsulta, impleméntelo
un método : e implemente otros métodos para calcular el perímetro
constructor
el área de un triángulo.
a) Primero en modo de consola , empleando un ArrayList para almacenar un
conjunto de clientes , se debe elaborar un menú que contemple las siguientes
opciones:
(1) Nuevos ahorristas
(2) Consulta de Saldos
(3) Movimiento de Cuentas
(4) Listado de Ahorristas
(5) Anulación de cuentas
(6) Salir
En la opción 2 se realiza la búsqueda por medio de un numero de cuenta
En la opción 3 se realiza el deposito o retiro a través de un numero de cuenta
actualizando el saldo respectivo.
La anulación también se realiza por medio del nro de cuenta.
class Ejercicio {
public static void main(String [ ] args){
Clase1 obj1=new Clase1();
obj1.imprimir(24.3,5);
}
}
class Clase1 {
private double valor=9.8;
private int x=7;
public void imprimir(double valor, int x) {
System.out.print(valor+” “+this.x);
}
}
class Principal {
class Libro {
class Autor {
La Modificación de Datos:
También se realiza mediante el código del empleado
Mg. Javier
CABRERA
UNMSM -52-
1.- Establecer los paquetes para las clases, inagenes y el paquete de prueba.
Empleado.java
package pack2;
this.code=cod;
this.nome=nom;
this.sec=sec;
this.horas=hr;
}
package pack2;
import java.util.ArrayList;
import javax.swMg.*;
public class Empleados {
private ArrayList emp;
public Empleados() {
emp=new ArrayList();
}
//para actualizar
public void update(Empleado e,int indice){
emp.set(indice,e);
}
//para adicionar nuevos empleados
public void AddEmp(Empleado e){
try{
emp.add(e);
}catch(Exception ex){
System.out.print("\n "+ex.getMessage());
}
}
//obtener un Empleado a partir de un indice
public Empleado GetEmp(int ind){
return (Empleado) emp.get(ind);
}
//obtener el tamaño del arraylist
public int Nroemp(){
return emp.size();
}
//busqueda por numero devolviendo su indice
public int Busca(int n){
for(int i=0;i<Nroemp();i++){
if(n==GetEmp(i).getNro()){
return i;
}
}
return -1;
}
return -1;
}
//calcula el total pasando como dato un indice del arraylist
private double total(int f){
double tot;
if(this.GetEmp(f).getSec()=='A')
tot=this.GetEmp(f).getHoras()*13;
else
tot=this.GetEmp(f).getHoras()*15;
return tot;
}
//pasando un textArea va mostrar en dicho objeto la lista de datos
public void ListaArea(javax.swMg.JTextArea xarea){
xarea.setText("Lista de Empleados \n");
xarea.append("\n Codigo \tNombre \t\tHoras\t Pago Total");
for(int f=0;f<Nroemp();f++){
xarea.append("\n"+ GetEmp(f).getCode()+
"\t"+GetEmp(f).getNome() +
"\t\t"+GetEmp(f).getHoras()+
"\t"+this.total(f));
}
}
//un listado simple mediante consola
public void Lista(){
//System.out.print("\nnro \t codigo \t nombre \t total");
for(int f=0;f<Nroemp();f++){
System.out.print("\n"+ this.GetEmp(f).getNro()+
"\t"+GetEmp(f).getCode()+
"\t"+GetEmp(f).getNome() +
"\t"+this.total(f));
}
} // fin del metodo
}fin de la clase
package pruebas;
import pack1.prueba;
import pack2.*;
import javax.swMg.JOptionPane;
public class EmpDialog extends javax.swMg.JDialog {
static Empleados emp;
static Empleado uno;
/** Creates new form EmpDialog */
}catch(Exception ex){
JOptionPane.showMessageDialog(this,"El dato debe ser numerico","error",
JOptionPane.ERROR_MESSAGE);
this.jTextArea1.setText("Registro eliminado");
}
void limpiar(){
this.txtcod.setText("");
this.txthr.setText("");
this.txtnom.setText("");
this.jRx.setSelected(true);//para deseleccionar las otras opciones
this.txtcod.requestFocus();
package pruebas;
/**
*
* @author UNMSM
*/
public class DelEmpDialog extends javax.swMg.JDialog {
private boolean flag=false;
/** Creates new form DelEmpDialog */
public DelEmpDialog(java.awt.Frame parent, boolean modal,
String nom, String cod, double ptot
){
super(parent, modal);
initComponents();
this.jLbcod.setText(cod);
this.jLbnom.setText(nom);
this.jLbtot.setText(""+ptot);
/**
*
* @author UNMSM
*/
public class ModiEmpDialog extends javax.swMg.JDialog {
private boolean flag=false;
private String nom;
private double horas;
/** Creates new form ModiEmpDialog */
public ModiEmpDialog(java.awt.Frame parent, boolean modal,
String cod,String nom, double hr
){
super(parent, modal);
initComponents();
this.jlbcod.setText(cod);
this.jlbnom.setText(nom);
this.jlbhoras.setText(""+hr);
this.jtxthoras.setText(""+hr);
this.jtxtnom.setText(nom);
}
/**
* @param args the command line arguments
*/
CAPITULO DE HERENCIAS
La herencia permite crear una clase nueva (subclase o clase derivada) que tenga el
mismo comportamiento que otra (superclase o clase base) y además extienda o
adapte ese comportamiento
a unas necesidades específicas.
La nueva subclase heredará los atributos y los métodos de la clase base, los cuales se
añadirán a los definidos en la propia subclase.
B. Jerarquía
Los descendientes de una clase heredan todas las variables y métodos que
sus ascendientes hayan especificado como heredables, además de crear los
suyos propios.
C. Tipos de Herencia
D. Declaración
Para indicar que una clase deriva de otra, heredando sus propiedades
(métodos y atributos), se usa el término extends, como en el siguiente ejemplo:
// Contenido de la clase
String obtenerSeccion(){
return grupo;
}
}
La palabra clave extends se utiliza para decir que deseamos crear una
subclase de la clase que es nombrada a continuación, en nuestro caso Alumno
es hija de Persona.
E. Limitaciones en la herencia
Todos los campos y métodos de una clase son siempre accesibles para el
código de la misma clase.
Sin embargo los tres primeros modificadores (public, private y protected) son
los más comunes que se usan para controlar el acceso desde otras clases, y
para controlar la herencia por las subclases.
F. COMPOSICIÓN
class Circulo {
Punto centro;
int radio;
float superficie() {
return 3.14 * radio * radio;
}
}
class Empleado {
String nombre;
int numEmpleado , sueldo;
void asignarPresupuesto(int p) {
presupuesto = p;
}
void asignarPresupuesto(int p) {
presupuesto = p;
}
Ejemplo 2.- Elaborar la clase documento que sera heredado por la clase
Factura y la clase boleta:
Documento
String numero
String fecha
Double monto
Factura Boleta
String ruc String Nombre
import javax.swMg.JOptionPane;
import java.util.ArrayList;
public class GestorVentas {
public static ArrayList ListaD=new ArrayList();
public static void main(String[] args) {
int op;
String Menu="(0)Salir\n" +
"(1)Nueva Factura\n" +
"(2)Nueva Boleta\n" +
"(3)LIstar Todos\n" +
"(4)Listar Facturas\n" +
"(5)Listar Boletas\n" +
"(6)Buscar Facturas\n" +
"(7)Calcular Igv\n";
for(;;){
op=Integer.parseInt(JOptionPane.showInputDialog(Menu));
switch(op){
case 0: System.exit(0);break;
case 1: nuevaFactura();break;
case 2: nuevaBoleta();break;
case 3: listarTodos();break;
case 4: listarFacturas();break;
case 5: lsitarBoletas();break;
case 6: buscarfatura(num);break;
case 7: calcularIgv();break;
default: JOptionPane.showMessageDialog(null,"Opcion Incorrecta");
} //fin del switch
}//del for
} //del main
}
public static void listarBoletas(){
for(int i=0;i<ListaD.size();i++){
if(ListaD.get(i) instanceof Boleta){
((Boleta)ListaD.get(i)).imprimir();
}
}
}
public static void buscarfatura(int num){
int num;
num=Integer.parseInt(JOptionPane.showInputDialog("Ingrese el numero"));
for(int i=0;i<ListaD.size();i++){
if(ListaD.get(i) instanceof Factura){
if(((Factura)ListaD.get(i)).Numero==num){
((Factura)ListaD.get(i)).imprimir();
}
}
}
}
public static void calcularIgv(){ for(int
i=0;i<ListaD.size();i++){
if(ListaD.get(i) instanceof Factura){
((Factura)ListaD.get(i)).imprimir();
double igv;
double monto=((Factura)ListaD.get(i)).Monto;
igv= monto-(monto/1.19);
System.out.println("Su Igv es ......"+igv);
}
}
}
}
//fin de la clase principal gestor de Ventas
class Documento{
String Fecha;
double Monto;
int Numero;
void imprimir(){
System.out.println("Fecha :"+Fecha);
System.out.println("Monto :"+Monto);
System.out.println("Numero:"+Numero);
}
}
//
class Boleta extends Documento{
String Nombre;
void imprimir(){
System.out.println("Nombre :"+Nombre);
}
}
//
Ejercicios:
1Crear una clase animal (nombre, nro de patas, sexo) crear las subclases Perro (atributo
raza, atributo habla), gallo( metodo canta), Gato(metodo maulla)
2.- crear la clase TarjetaCredito( nro de tarjeta, nombre del cliente, fecha de caducacion)
crear las subclases TarjetaDorada(linea de credito, Cargo ), TarjetaTotus(sueldo del
cliente, Empresa donde trabaja) realizar las subclases ademas comprobarlo en el main
para asignar los datos.
3.- (Sistema de Nómina) Elaborar un programa que permita procesar la nómina de una
empresa.
Para ello considere el siguiente diagrama de clases:
EJEMPLOS DE HERENCIA
Crear una clase circulo cuyo atributo
import java.text.DecimalFormat; es el radio y los métodos a crear son
public class herencia01 { Area() y Print() para el calculo del
area del circulo e impresión
public static void main(String[] args) { respectiva de los datos.
// TODO code application logic here Crear la clase Cilindro cuyo atributo
circulo x=new circulo(); son :radio y altura hacer la herencia
x.setRadio(5); correspondiente para el calculo de su
x.imprime(); área y volumen del cilindro.
Cilindro y=new Cilindro();
y.setRadio(7);
y.altura=12;
y.imprime();
}
//LA CLASE PRINCIPAL CIRCULO
class circulo{
private int radio;
DecimalFormat dos=new DecimalFormat("0.00");
double area(){
return radio*radio*Math.PI;
}
void imprime(){
System.out.print("\n area del circulo "+dos.format(area()));
}
}
class Cilindro extends circulo{ //CLASE EXTENDIDA DE LA CLASE CIRCULO
int altura;
double area(){
double ac;
ac=super.area()*altura;
return ac;
}
void imprime(){
super.imprime();
Postgrado
Alumno
public Alumno()
public Imprime()
public abstract Promedio()
package herencia;
Pregrado
Clase Alumno.java //herencia de la clase alumno
public class AlumnoPostgrado extends
package herencia; Alumno {
abstract class Alumno { private
String matricula; private public AlumnoPostgrado(String nom,
String nombre; protected String mat,
double n1, n2, n3; double n1, double n2, double n3)
//constructor de la clase alumno {
public Alumno(String mat, String n, super(mat,nom,n1,n2,n3);
double n1, double n2, double n3) { }
matricula = mat;
nombre = n; public double calcularNota() {
this.n1 = n1; return (n1+n2+n3)/3.0;
this.n2 = n2; }
this.n3 = n3; }
}
public void Imprime(){
System.out.print("\n Matricula:"+this.matricula);
System.out.print("\n Nombre:"+this.nombre);
System.out.print("\n nota1:"+this.n1);
System.out.print("\n nota2:"+this.n2);
System.out.print("\n nota3:"+this.n3);
}
// metodo abstracto para el polimorfismo
abstract double calcularNota();
package herencia;
package herencia;
import java.util.*;
apre = (AlumnoPregrado)x.get(i);
apre.Imprime();
System.out.println("\n promedio:"+apre.calcularNota());
}
else {
apos = (AlumnoPostgrado)x.get(i);
System.out.println(apos.calcularNota());
}
}
System.out.println("\n promedio:"+a.calcularNota());
}
}
Gestión de Excepciones
Las excepciones son el mecanismo por el cual pueden controlarse en un programa Java
las condiciones de error que se producen. Estas condiciones de error pueden ser errores
en la lógica del programa como un índice de un array fuera de su rango, una división
por cero o errores disparados por los propios objetos que denuncian algún tipo de estado
no previsto, o condición que no pueden manejar.
La idea general es que cuando un objeto encuentra una condición que no sabe manejar
crea y dispara una excepción que deberá ser capturada por el que le llamó o por alguien
más arriba en la pila de llamadas. Las excepciones son objetos que contienen
información del error que se ha producido y que heredan de la clase Throwable o de la
clase Exception. Si nadie captura la excepción interviene un manejador por defecto que
normalmente imprime información que ayuda a encontrar quién produjo la excepción.
Generación de excepciones
Supongamos que tenemos una clase Empresa que tiene un array de objetos Empleado
(clase vista en capítulos anteriores). En esta clase podríamos tener métodos para
contratar un Empleado (añadir un nuevo objeto al array), despedirlo (quilarlo del array)
u obtener el nombre a partir del número de empleado. La clase podría ser algo así como
lo siguiente:
Las excepciones son clases, que heredan de la clase genérica Exception. Es necesario
por tanto asignar un nombre a nuestra excepción. Se suelen asignar nombres que den
alguna idea del tipo de error que controlan. En nuestro ejemplo le vamos a llamar
CapacidadEmpresaExcedida.
En nuestro ejemplo:
Captura de excepciones
Con la primera versión del método nuevoEmpleado (sin excepción) se invocaría este
método de la siguiente forma:
try {
. . .
} catch (Clase_Excepcion nombre) { . . .}
catch (Clase_Excepcion nombre) { . . .}
. . .
Observese que se puede capturar más de un tipo de excepción declarando más de una
sentencia catch. También se puede capturar una excepción genérica (clase Exception)
que engloba a todas las demás.
Supongamos que, en nuestro ejemplo es el método main de una clase el que invoca el
método nuevoEmpleado. Si no quiere capturar la excepción debe hacer lo siguiente:
Cláusula finally
La cláusula finally forma parte del bloque try / catch y sirve para especificar
un bloque de código que se ejecutará tanto si se lanza la excepción como si no. Puede
servir para limpieza del estado interno de los objetos afectados o para liberar recursos
externos (descriptores de fichero, por ejemplo). La sintaxis global del bloque try /
catch / finally es:
try {
. . .
} catch (Clase_Excepcion nombre) {...}
catch (Clase_Excepcion nombre) {...}
. . .
finally {...}
UTP -80-