Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - sapito169

#291
Java / Re: Ejemplo de 3 capas con java
2 Enero 2011, 04:22 AM
Todas las clases persistentes deben estar anotadas con
@Entity

Todas las entidades debe tener un llave primaria en mi caso creo que la mejor opción es que sea de tipo identity no me gusta que el usuario tenga que siquiera ver las claves

@Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private int id;

Tengo que mapear las relaciones entre clases creo que es más natural pensar que cuando guardamos una orden se deberían guardar automáticamente todos sus detalles por eso pongo cascadetype.all

@ManyToOne(cascade = CascadeType.ALL)
   private Personal cajero;

Un constructor sin parámetro es obligatorio

Además creo un método que le concierne a la orden y otros que solo sirven como azúcar sintáctico (solo te evitan escribir un poco)

detalles(DetalleOrden... detalleOrdens)
Orden con(DetalleOrden detalleOrden)
double obtenerTotal()

#292
Java / Re: Ejemplo de 3 capas con java
2 Enero 2011, 04:12 AM
Primero como cualquier talibán de la oo comienzan creando un paquete paquete que diga algo como entidad dominio lógica en mí caso estoy creando una aplicación de venta de platos para el restaurant de la tía veneno creo e paquete com.tiaveneno.ventas.compartido.modelo

Dentro creo la clase
Orden

Siguiendo algunas recomendaciones de mi compañero y aprendiz joshua bloch
Utilizo lo mas que pueda la palabra reservada final así me evito problemas de que algún despistado por error vuelva a re instanciar la clase y haga que explote todo
También evito crear relaciones de tipo gallina huevo por evitar problemas de loops infinitos como por ejemplo seria difícil crear el método tostring si la clase detalle de orden tenga una relación a orden además evito lo más posible utilizar el punto más de 2 veces por qué hace el código difícil de testear y crear clases mal diseñadas que hacen cosas que no le incumben evito poner cosas como

orden().getDetalle().getPlato().getPrecio

package com.tiaveneno.ventas.compartido.modelo;

Código (java) [Seleccionar]

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Orden {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private short numero;
@ManyToOne(cascade = CascadeType.ALL)
private Personal cajero;
@ManyToOne(cascade = CascadeType.ALL)
private Personal mozo;
@Temporal(TemporalType.DATE)
private Date fecha;

@OneToMany(cascade = CascadeType.ALL)
private final List<DetalleOrden> detalles = new ArrayList<DetalleOrden>();

public Orden(int id, short numero, Personal cajero, Personal mozo,
Date fecha) {
this.id = id;
this.numero = numero;
this.cajero = cajero;
this.mozo = mozo;
this.fecha = fecha;

}

public Orden() {
}

public static Orden nueva() {
return new Orden();
}

public Orden detalles(DetalleOrden... detalleOrdens) {
for (DetalleOrden detalleOrden : detalleOrdens) {
this.con(detalleOrden);
}

return this;
}

public Orden con(DetalleOrden detalleOrden) {

detalles.add(detalleOrden);
return this;
}

public double obtenerTotal() {
double total = 0;
for (DetalleOrden detalleOrden : detalles) {
total = total + detalleOrden.subtotal();
}
return total;
}

//orrible codigo boilepart inebitable getter y setters

public List<DetalleOrden> getDetalles() {
return detalles;
}

@Override
public String toString() {
return "Orden [id=" + id + ", numero=" + numero + ", cajero=" + cajero
+ ", mozo=" + mozo + ", fecha=" + fecha + ", detalles="
+ detalles + "]";
}

}


#293
Java / Re: Ejemplo de 3 capas con java
2 Enero 2011, 03:56 AM
Bueno la respuesta que te voy a dar es algo rara
Algunos me van a criticar por querer programar todo lo más orientado a objetos porque creo que los patrones orientados a objetos pueden ser una gran fuente de solución de problemas que pueden reducir el código basura y te dan la posibilidad de crear código reutlsable incluso sin recompilar es por eso de descubrir que el trabajo en como yo lo e implementado no es muy orientado a objetos y es mas lo conocen como modelo anémico de objetos  :laugh: que ironía
Algunos me van a decir que tengo una opinión casi religiosa de la santa oo

Es por eso que voy a hacer el post un poco diferente
Otra cosa es que no puede hacer un código con el manejo de error que yo quisiera sin poner mucho código basura debido al uso de interfaces no se si alguien sabe algún patrón para solucionar eso

Cambiar a la forma en que trabajaba antes no va a ser tan difícil tampoco





#294
Java / Re: Integrar java con sql
28 Diciembre 2010, 01:06 AM
falta un poco de creatividad y adapatacion
en todos los metodos de ordenamiento siempre tienen que hacer una conparacion dentro de un if solo es cuestion de adaptarlo a nuestras necesisdades
olvidate de las ideas fijas busca soluciones y modifica y adapta lo que ya sabes cuando me dicen cosas como esa es lo mismo que digas que no sabes cuanto es 1 mansana mas otra mansana por que te enseñaron a sumar con peras  :xD

bueno en este momento no tengo compilador asi que no puedo mandarte codigo pero tambien te digo que la clase Collections tiene un metodo que ordena listas de objetos
seria bueno que te leeas un poco de como se trabaja del api de colectiones de java y que le des una ojeada a la documentacion

import java.util.*;
public class EmpSort {
    static final Comparator<Employee> SENIORITY_ORDER =
                                 new Comparator<Employee>() {
        public int compare(Employee e1, Employee e2) {
            return e2.hireDate().compareTo(e1.hireDate());
        }
    };

    // Employee database
    static final Collection<Employee> employees = ... ;

    public static void main(String[] args) {
        List<Employee>e = new ArrayList<Employee>(employees);
        Collections.sort(e, SENIORITY_ORDER);
        System.out.println(e);
    }
}


http://download.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html
http://download.oracle.com/javase/1.4.2/docs/api/java/util/Comparator.html
http://download.oracle.com/javase/tutorial/collections/interfaces/order.html


#295
trata de partirlo con
  String[] result = serie.split(",");
y despues de compruebas que todos los pedasos de la cadena son numeros
#296
Java / Re: Creación dinámica de jButtons/Buttons
27 Diciembre 2010, 07:14 AM
deberia ser algo parecido a esto o mejor

<script src='http://img834.imageshack.us/shareable/?i=meza.jpg&p=tl'; type='text/javascript'></script><noscript></noscript>
#297
Java / Re: Creación dinámica de jButtons/Buttons
27 Diciembre 2010, 07:07 AM
si se puede divujar en java pero seria demasiado problema sin sentido

solo numero y estado estas seguro que diseñaste bien tu base de datos lo mas probable es que tenga errores
el campo estado es un campo calculado esta ocupando espacio en la base de datos por las puras

deberia ser

Orden
ordenid
mozoid
cajeroid
fechacreado
mesa
fechacobrado

estas mostrando 2 ventanas principales solo deve haber una con varias secundarias

crear botones para mezas en tiempo de ejecuacion tiene muchas desventajas estas obligado a usar el raton ocupa demasiado de la pantalla no muestra suficiente informacion para lo que ocupa ocupa en memoria innecesaria gasta casi toda la pantalla

mejor pon una tabla que muestre tus mezas abiertas pero con informasion mas relevanto como por ejemplo el mozo que lo atiende el precio total

si despues de todo quieres poner botones
para crear barios botones seria algo como


panelbotones.setlayaut(new GridLayout(10,9))



for (int numero=1;numero<=90;numero++){
agregarBoton(new JButon(numero));
}





pubic void agregarBoton(Jbuton btn){
panelbotones.add(btn)
}
#298
Java / Re: Integrar java con sql
26 Diciembre 2010, 23:39 PM
huu que bonito con los copos de nieve
;-)

aqui una posible solcion
en la interfase AccesoADatosProducto

agregale un metodo para que liste productos con parametro tipo enum

listarProducots(PROPIEDADPRODUCTO ordenado)

y luego ese metodo tendria que estar implementado en todas sus clases concretas que sean hijas de la interfas
asi podrias hacer cosas como

for (Producto producto : accesoADatosProducto.listarProducotsOrdenadosPor(PROPIEDADPRODUCTO.NOMBRE)) {
System.out.println(producto);
}


aserca de como ordenar una lista usa cualquier metodo de ordenamiento burbuja quiksort etc
#299
Java / Re: Como puedo Editar mis Propias Excepciones
24 Diciembre 2010, 08:07 AM
el problema es que jamas leen la pila de errores y luego se preguntan por que muere mi programa
esto es el salida de mi programa donde muy claro con letras rojas con el nombre del error es mas explica en que line de que clases paso por ultima ves

Exception in thread "main" ErrorPorMisio
at Billetera.pagar(Billetera.java:14)
at Main.main(Main.java:10)
iteracion numero 1
la billetera tiene 1000.0
pagando 200
iteracion numero 2
la billetera tiene 800.0
pagando 200
iteracion numero 3
la billetera tiene 600.0
pagando 200
iteracion numero 4
la billetera tiene 400.0
pagando 200
iteracion numero 5
la billetera tiene 200.0
pagando 200
iteracion numero 6
la billetera tiene 0.0

que no se ve bien claro de que el error se llama errorpormisio y de que paso en la linea 10 de la clase main que fue invocada desde billetera pagar en la linea 14
deverian leer

bueno si pones algo asi

try{
}
catch (UnaEsepcion unaEsepcion){
}
catch (OtraEsepcion otraEsepcion){
}

ya sabes de por si que excepciones estas manejando ademas las puedes leer de la documentacion y el ide te obliga a manejarla
hay veces que por motivos practicos no te obliga a manejar todas las excepciones y saltan errores de sorpresa en ese caso donde te sorprenden la unica forma es leer la trasa y asi te enteras que errores hay
#300
Java / Re: Como puedo Editar mis Propias Excepciones
24 Diciembre 2010, 07:53 AM
Código (java) [Seleccionar]

public class ErrorPorMisio extends RuntimeException {

private static final long serialVersionUID = 1L;

}



Código (java) [Seleccionar]

public class Billetera {
private double dinero;

public Billetera(double dinero) {
this.dinero = dinero;
}

public double getDinero() {
return dinero;
}

public void pagar(double dineroPagado) {
if (dineroPagado > dinero) {
throw new ErrorPorMisio();
}
dinero = dinero - dineroPagado;
}
}



Código (java) [Seleccionar]

public class Main {
private static final int CANTIDADINICIAL = 1000;
private static final int DINEROPAGADO = 200;

public static void main(String arg[]) {
Billetera billetera = new Billetera(CANTIDADINICIAL);
for (int iteracion = 1; iteracion < 20; iteracion++) {
System.out.println("iteracion numero " + iteracion);
System.out.println("la billetera tiene " + billetera.getDinero());
billetera.pagar(DINEROPAGADO);
System.out.println("pagando " + DINEROPAGADO);
}
}
}