miércoles, 31 de julio de 2013

Diseño de Clases Simples en Java

Autor.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 /**
 9  *
10  * @author igor
11  */
12 public class Autor {
13     String nombre;
14     String apelllidos;
15     int edad;
16     String direccion;
17     String telefono;
18     int numLibros;
19 
20     //constructor por defecto
21     public Autor(){
22         //llamada al constructor que recibe parametros
23         this("Undefined", "Undefined", 0, "Undefined", "Undefined", 0);
24     }
25 
26     //constructor que recibe parametros
27     public Autor(String nombre, String apelllidos, int edad,
28             String direccion, String telefono, int numLibros) {
29         this.nombre = nombre;
30         this.apelllidos = apelllidos;
31         this.edad = edad;
32         this.direccion = direccion;
33         this.telefono = telefono;
34         this.numLibros = numLibros;
35     }
36 
37     //los metodos toString() son utilizados para mostrar la informacion
38     //que contiene el objeto
39     @Override
40     public String toString() {
41         return "\nAutor{"
42                 + "\nnombre=" + nombre
43                 + "\napelllidos=" + apelllidos
44                 + "\nedad=" + edad
45                 + "\ndireccion=" + direccion
46                 + "\ntelefono=" + telefono
47                 + "\nnumLibros=" + numLibros + '}';
48     }
49 }
50 
51 

La clase Autor en notación UML:
Coche.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 /**
 9  *
10  * @author igor
11  */
12 public class Coche {
13     String color;
14     double peso;
15     double kilometraje;
16     String marca;
17     double precio;
18 
19     public Coche(String color, double peso, double kilometraje,
20             String marca, double precio) {
21         this.color = color;
22         this.peso = peso;
23         this.kilometraje = kilometraje;
24         this.marca = marca;
25         this.precio = precio;
26     }
27 
28 }
29 
30 

La clase Coche en notación UML:
Computadora.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 /**
 9  *
10  * @author igor
11  */
12 public class Computadora {
13     String codigo;
14     String tipo;
15     String modeloProcesador;
16     String modeloMemoriaRam;
17     int capacidadMemoriaRam;
18     String modeloDiscoDuro;
19     int capacidadDiscoDuro;
20     double precio;
21     double peso;
22 
23     public Computadora(String codigo, String tipo, String modeloProcesador,
24             String modeloMemoriaRam, int capacidadMemoriaRam,
25             String modeloDiscoDuro, int capacidadDiscoDuro,
26             double precio, double peso) {
27         this.codigo = codigo;
28         this.tipo = tipo;
29         this.modeloProcesador = modeloProcesador;
30         this.modeloMemoriaRam = modeloMemoriaRam;
31         this.capacidadMemoriaRam = capacidadMemoriaRam;
32         this.modeloDiscoDuro = modeloDiscoDuro;
33         this.capacidadDiscoDuro = capacidadDiscoDuro;
34         this.precio = precio;
35         this.peso = peso;
36     }
37 }
38 
39 

La clase Computadora en notación UML:
CuentaBancaria.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 import java.util.Calendar;
 9 import java.util.GregorianCalendar;
10 
11 /**
12  *
13  * @author igor
14  */
15 public class CuentaBancaria {
16     String numeroCuenta;
17     String titular;
18     GregorianCalendar fechaCreacion;
19     double saldo;
20     String clave;
21 
22     public CuentaBancaria(String numeroCuenta, String titular,
23             GregorianCalendar fechaCreacion, double saldo, String clave) {
24         this.numeroCuenta = numeroCuenta;
25         this.titular = titular;
26         this.fechaCreacion = fechaCreacion;
27         this.saldo = saldo;
28         this.clave = clave;
29     }
30     //algunos metodos de la clase CuentaBancaria
31     public void deposito(double cantidadDepositada){
32         saldo = saldo + cantidadDepositada;
33     }
34 
35     public String retiro(double cantidadRetirar){
36        if(cantidadRetirar > saldo)
37            return "No cuenta con saldo suficiente :)";
38        else{
39            saldo = saldo - cantidadRetirar;
40            return "le quedan: "+saldo;
41        }
42     }
43 
44     @Override
45     public String toString() {
46         return "\nCuentaBancaria{"
47                 + "\nnumeroCuenta=" + numeroCuenta
48                 + "\ntitular=" + titular
49                 + "\nfechaCreacion=" + fechaCreacion.get(Calendar.DAY_OF_MONTH)
50                 + "/" + (fechaCreacion.get(Calendar.MONTH)+1)
51                 + "/" + fechaCreacion.get(Calendar.YEAR)
52                 + "\nsaldo=" + saldo
53                 + "\nclave=" + clave + '}';
54     }
55 }
56 
57 

La clase CuetaBancaria en notación UML:
Disco.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 import java.util.Calendar;
 9 import java.util.GregorianCalendar;
10 
11 /**
12  *
13  * @author igor
14  */
15 //creacion de la clase Disco a partir de esta clase podremos contruir
16 //discos :D
17 public class Disco {
18     //toda clase consta de atributos en este caso estos atributos son de
19    //intancia que significa esto? que por cada objeto creado a partir de
20     //esta clase osea por cada disco se tendra una copia de estos atributos.
21     String titulo;
22     int numCanciones;
23     double precio;
24     //en java toda clase se maneja como tipo de dato
25     //por eso podemos declarar la referencia fechaCompra de tipo
26     //gregorianCalendar, este es un objeto fecha y que informacion ofrece
27     //una fecha? pues el año, el dia, el mes, zona horaria... etc
28     GregorianCalendar fechaCompra;
29 
30     //le creamos su constructor, el trabajo de este es crear al objeto e
31     //inicializar sus atributos hay 3 tipos de constructores en este caso
32     //utilizar el constructor que recibe parametros a para que sepan como
33     //identificar al constructor este tiene el mismo nombre que la clase
34     public Disco(String titulo, int numCanciones, double precio,
35             GregorianCalendar fechaCompra){
36         //el por que declare parametros iguales a los atributos de la clase
37         //es para que saber que dato le asigno a quien, ademas aqui especifico
38         //con this.titulo que es el titulo que esta como atributo de la clase
39         //y el titulo sin this es el parametro que se recibe
40         this.titulo = titulo;
41         this.numCanciones = numCanciones;
42         this.precio = precio;
43         this.fechaCompra = fechaCompra;
44     }
45 
46     //ademas estoy creando metodo toString() este es para mostrar la
47     //informacion del objeto ya creado
48     @Override
49     public String toString() {
50         return "\nCD:"
51                 + "\nTitulo: "+titulo
52                 + "\nNumero de Canciones: "+numCanciones
53                 + "\nPrecio: "+precio
54                 + "\nFecha de Compra: "+fechaCompra.get(Calendar.DAY_OF_MONTH)
55                 // a y por que le sumo 1 por que GregorianCalendar considera
56                 // a enero como mes = 0
57                 + "/"+(fechaCompra.get(Calendar.MONTH)+1)
58                 + "/"+fechaCompra.get(Calendar.YEAR);
59     }
60 }
61 //bueno ya esta la clase este el fin de esta clase ahora a probarla y para
62 //ello crear otra clase del nombre q se te ocurra en mi caso es la clase
63 //Pruebas ubicala en el paquete pruebas a este tambien lo creas :D
64 
65 

La clase Disco en notación UML:
Docente.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 import java.util.GregorianCalendar;
 9 
10 /**
11  *
12  * @author igor
13  */
14 public class Docente {
15     String codigo;
16     String apellidos;
17     String nombres;
18     GregorianCalendar fechaIngreso;
19     double salario;
20 
21     public Docente(String codigo, String apellidos, String nombres,
22             GregorianCalendar fechaIngreso, double salario) {
23         this.codigo = codigo;
24         this.apellidos = apellidos;
25         this.nombres = nombres;
26         this.fechaIngreso = fechaIngreso;
27         this.salario = salario;
28     }
29 }
30 
31 

La clase Docente en notación UML:
Empleado.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 /**
 9  *
10  * @author igor
11  */
12 public class Empleado {
13     String dni;
14     String nombres;
15     String apellidos;
16     String direccion;
17     String telefono;
18     double salario;
19 
20     public Empleado(String dni, String nombres, String apellidos,
21             String direccion, String telefono, double salario) {
22         this.dni = dni;
23         this.nombres = nombres;
24         this.apellidos = apellidos;
25         this.direccion = direccion;
26         this.telefono = telefono;
27         this.salario = salario;
28     }
29 }
30 
31 

La clase Empleado en notación UML:
Libro.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 /**
 9  *
10  * @author igor
11  */
12 public class Libro {
13     String ISBN;
14     String titulo;
15     int añoEdicion;
16     int numEdicion;
17     double precio;
18     String imagen;
19     String editorial;
20     String autores[];
21 
22     public Libro(String ISBN, String titulo, int añoEdicion, int numEdicion,
23             double precio, String imagen, String editorial,
24             String[] autores) {
25         this.ISBN = ISBN;
26         this.titulo = titulo;
27         this.añoEdicion = añoEdicion;
28         this.numEdicion = numEdicion;
29         this.precio = precio;
30         this.imagen = imagen;
31         this.editorial = editorial;
32         this.autores = autores;
33     }
34 }
35 
36 
Moneda.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 /**
 9  *
10  * @author igor
11  */
12 public class Moneda {
13     String codISO;
14     String descripcion;
15 
16     public Moneda(String codISO, String descripcion) {
17         this.codISO = codISO;
18         this.descripcion = descripcion;
19     }
20 }
21 
22 
Persona.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 import java.util.Calendar;
 9 import java.util.GregorianCalendar;
10 
11 /**
12  *
13  * @author igor
14  */
15 
16 public class Persona {
17     String nombre;
18     String apellidos;
19     GregorianCalendar fechaNacimiento;
20     String ocupacion;
21     String telefono;
22 
23     public Persona(String nombre, String apellidos,
24             GregorianCalendar fechaNacimiento, String ocupacion,
25             String telefono) {
26         this.nombre = nombre;
27 // por error lo coloque como comentario pero le quitas estas barras ->        this.apellidos = apellidos;
28         this.fechaNacimiento = fechaNacimiento;
29         this.ocupacion = ocupacion;
30         this.telefono = telefono;
31     }
32 
33     public int getEdad(){
34         //para calcular la edad se necesita la fecha actual facil
35         //crea un objeto de tipo GregorianCalendar e inicialo
36         GregorianCalendar fechaActual = new GregorianCalendar();
37         //solo hay que restar el atributo year que representa el año
38         //el año actual menos el año de la fecha nacimiento
39         int edad = fechaActual.get(Calendar.YEAR) - fechaNacimiento.get(
40                 Calendar.YEAR);
41         //con esto tenemos la edad, pero falta un detalle los meses y el dia
42         if(fechaActual.get(Calendar.MONTH) < fechaNacimiento.get(
43                 Calendar.MONTH))
44             edad = edad - 1;
45         else if(fechaActual.get(Calendar.MONTH) == fechaNacimiento.get(
46                 Calendar.MONTH)){
47             if(fechaActual.get(Calendar.DAY_OF_MONTH) < fechaNacimiento.get(
48                     Calendar.DAY_OF_MONTH))
49                 edad = edad - 1;
50         }
51         return edad;
52     }
53 
54     @Override
55     public String toString() {
56         return "\nPersona{"
57                 + "\nnombre=" + nombre
58                 + "\napellidos=" + apellidos
59                 + "\nfechaNacimiento=" + fechaNacimiento.get(
60                 Calendar.DAY_OF_MONTH)
61                 // a y por que le sumo 1 por que GregorianCalendar considera
62                 // a enero como mes = 0
63                 + "/"+(fechaNacimiento.get(Calendar.MONTH)+1)
64                 + "/"+fechaNacimiento.get(Calendar.YEAR)
65                 + "\nedad=" + getEdad()
66                 + "\nocupacion=" + ocupacion
67                 + "\ntelefono=" + telefono + "}";
68     }
69 
70 }
71 
72 
Sucursal.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package clases;
 7 
 8 /**
 9  *
10  * @author igor
11  */
12 public class Sucursal {
13     String nombre;
14     String direccion;
15     String ciudad;
16     int numEmpleados;
17 
18     public Sucursal(String nombre, String direccion, String ciudad,
19             int numEmpleados) {
20         this.nombre = nombre;
21         this.direccion = direccion;
22         this.ciudad = ciudad;
23         this.numEmpleados = numEmpleados;
24     }
25 }
26 
27 

Probando algunas de las clases de aya arriba:
Prueba.java
 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package pruebas;
 7 
 8 import clases.CuentaBancaria;
 9 import clases.Disco;
10 import clases.Persona;
11 import java.util.GregorianCalendar;
12 
13 /**
14  *
15  * @author igor
16  */
17 public class Prueba {
18     //ya estamos dentro de la clase pruebas esta clase solo va tener un
19     //metodo que será tatatan jajaja el metodo main
20     public static void main(String[] args) {
21         //para empezar vamos a crear el primer Disco
22         // y se hace asi
23         //el nombre de la clase primero, luego el nombre de como quieres
24         //que se llame el objeto creado a partir de la clase y por ultimo
25         //lo creas con new llamando a su metodo constructor
26         Disco disco1 = new Disco("GianMarco - Resucitar", 10, 29.90,
27                 new GregorianCalendar());// cuando creas un objeto de
28         //gregorianCalendar este se inicializa con la fecha actual del sistema.
29         //ahora a mostrar el disco por la consola
30         //invocando al metodo sobrecargado println(), del objeto out, de
31         //la clase System
32         System.out.println(disco1.toString());
33 
34         //creo otro objeto de la misma clase
35         Disco disco2 = new Disco("Bruno Mars", 8, 45.10,
36                 new GregorianCalendar(2010, 0, 24));//tambien se le puede
37         //indicar la fecha invocando al constructor de gregrorianCalendar
38         //que recibe como parametros el año, mes y dia.
39         System.out.println(disco2.toString());
40         //ahora crea mas discos y pruebalos
41 
42        //prueba de la clase Persona
43         Persona p = new Persona("Igor Alexander", "Quispe Vasquez",
44                 new GregorianCalendar(1990, 11, 4), "Estudiante",
45                 "+51948528810");
46         Persona p1 = new Persona("Walter ", "Campos Cabanillas",
47                 new GregorianCalendar(2010, 6, 31), "Carnicero",
48                 "+51949431346");
49         System.out.println(p.toString());
50         System.out.println(p1.toString());
51 
52         //prueba de la clase CuentaBancaria
53         CuentaBancaria cB = new CuentaBancaria("44599", "Manuel Lozano",
54                 new GregorianCalendar(), 1000.0, "manu3");
55         System.out.println(cB.toString());
56         System.out.println("Vamos a retirar 2000.0: "+cB.retiro(2000.0));
57         System.out.println("Tonces retirare 500.0: "+cB.retiro(500.0));
58 
59     }
60 
61 }
62 
63 

run:
 CD: Titulo: GianMarco - Resucitar
 Numero de Canciones: 10
Precio: 29.9
Fecha de Compra: 31/7/2013

 CD: Titulo: Bruno Mars
 Numero de Canciones: 8
Precio: 45.1
 Fecha de Compra: 24/1/2010

 Persona{
nombre=Igor Alexander
 apellidos=null
fechaNacimiento=4/12/1990
edad=22
ocupacion=Estudiante
telefono=+51948528810}

 Persona{ nombre=Walter
 apellidos=null
echaNacimiento=31/7/2010
edad=3
ocupacion=Carnicero
telefono=+51949431346}

 CuentaBancaria{
numeroCuenta=44599
titular=Manuel Lozano
fechaCreacion=31/7/2013
saldo=1000.0
clave=manu3}
Vamos a retirar 2000.0: No cuenta con saldo suficiente :)
Tonces retirare 500.0: le quedan: 500.0
GENERACIÓN CORRECTA (total time: 1 second)

martes, 30 de julio de 2013

Un Formulario Simple en JAVA ...

Formulario.java
/home/igor/NetBeansProjects/Name/src/Formulario.java
 1 
 2 import java.awt.Container;
 3 import java.awt.FlowLayout;
 4 import javax.swing.JFrame;
 5 import javax.swing.JLabel;
 6 
 7 /*
 8  * To change this template, choose Tools | Templates
 9  * and open the template in the editor.
10  */
11 
12 /**
13  *
14  * @author igor
15  */
16 //inicio de la clase Formulario
17 //toda clase que extienda de JFrame se visualizara como una
18 //ventana del sistema
19 public class Formulario extends JFrame {
20     //declarando 2 atriburos de tipo de la clase JLabel son como las
21     //etiquetas para colocar texto o imagenes en ellas
22     private JLabel jLabel1;
23     private JLabel jLabel2;
24 
25     //Constructor sin parametros
26     public Formulario(){
27         //invocando al constructor de la clase JFrame que recibe
28         //como parametros un String el cual indica el titulo de la
29         //ventana
30         super("Titulo de la Ventana");
31         //crear un objeto de tipo Container y almacenar la referencia
32         //del formulario
33         Container container = getContentPane();
34         //añadiendo un administrador de diseño de tipo FlowLayout
35         container.setLayout(new FlowLayout());
36         //inicializando los atributos declarados aya arriba
37         //todos los objetos se inicializan cuando se invoca a uno de
38         //sus constructores.
39         //JLabel tiene 6 constructores este de aqui recibe el texto
40         //que contendra jLabel1
41         jLabel1 = new JLabel("Igor Alexander");
42         //JLabel tiene una gran variedad de metodos heredos y propios
43         //vamos a utilizar el metodo .setToolTipText(String name)
44         //recibe un String que representa el texto que aparece cuando
45         //el cursor se ubica sobre la jLabel 1
46         jLabel1.setToolTipText("Este es mi nombre!!!");
47         //luego se tiene que agregar al formulario con el metodo
48         // .add(Componente)
49         container.add(jLabel1);
50         //ahora con jLabel2
51         //Crealo
52         jLabel2 = new JLabel("javacodefrank.blogspot.com");
53         //agregalo
54         container.add(jLabel2);
55 
56         //establecer tamaño al formulario
57         setSize(300, 100);
58         //para que se visualice en pantalla
59         setVisible(true);
60     }
61     //ejecutar la aplicacion
62     public static void main(String[] args) {
63         //crea un objeto de la misma clase que se desarrollo arriba
64         Formulario f = new Formulario();
65         //establece que si haces click en cerrar la aplicacion terminara
66         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
67     }
68 }
69 
70