Bien, comenzamos creando un nuevo proyecto.
Primero cerramos.
Por acá, como siempre.
Bueno.
Siguiente.
Y el nombre, por ejemplo app facturas.
Finalizar.
Bien, nos vamos.
Ese recé.
Vamos a crear un nuevo package con click derecho New Package.
Le vamos a llamar por punto a Guzmán, nombre de proyecto.
Bien.
Y ese sería nuestro pack principal.
Por ejemplo, donde vamos a tener nuestra clase con el método Main.
Nuestra aplicación.
Pero todas las clases, como por ejemplo factura, producto, cliente y factura representan datos.
Por lo tanto, la vamos a dejar en un paquete.
En un paquete especial.
Típicamente, como son datos o lógica de negocio, pueden ir en Models en inglés, pero también se le
suele llamar dominio o domain domain en inglés, en español dominio o modelo.
También en español la clase del modelo o lógica de negocio.
Los datos de la aplicación lo podemos dejar en español o en inglés.
Da lo mismo, déjenmelo en español.
Bien, entonces modelo acá.
Hoy día, por ejemplo, vamos a crear una nueva clase factura.
Perfecto.
También vamos a crear otra clase.
Yesica Clase exhibimos también en el diagrama o M.L.
Y por último, producto
bien 4 clase vamos a comenzar con los atributos.
Se acuerdan?
En producto habíamos visto que tiene el código del tipo entero nombre y el precio.
El precio del tipo double o float.
Pues el código o aydin o incluso ese cabu algún código de producto.
Y el precio del tipo float o down?
Bien, vamos a querer metodo trans setter.
Entonces clic derecho generate.
Guiteras Z.
Pero bueno, marcamos todo y voy a modificar porque en realidad el código, el set, que si Leidy lo
vamos a auto generar de forma automática.
Se acuerdan con el último Heidy o código estático empresa?
Después lo vemos.
Por ahora voy a quitar este código.
Si la idea de que se puede solamente leer y automáticamente lo asignÃ en el constructor con este atributo
estático bien el nombre set get perfecto, igual que el precio se puede modificar.
Cliente.
Nombre
bien.
Recuerde que el NIF es el número de identificación fiscal o tributario.
Bueno, depende de qué país.
Pero por ejemplo, en España creo que sus Hanif, pero en otros países se utiliza el RUT.
En fin, tiene diferente nombre, pero siempre identificación fiscal o tributaria.
Bien, Guiteras, setter para los dos extremos, la clase, vámonos.
Factura.
Y Leydi de la factura o el folio.
Descripción Dáte llega importamos de lleba útil.
Cuidado porque también esta cuele se fijan.
Acá tenemos dos clases que se llaman igual dáte pero que están en distinto package.
Y es tenemos que tener mucho cuidado de donde vamos a importar.
En este caso siempre de yaba útil lleva ese cueles solamente cuando trabajamos con base de datos.
Es una fecha de ese cuelgue de llaba se cuele doble clic en yaba útil para importar a importamos fecha.
Todavía faltan los atributos de la relación, pero después vamos a ver primero los atributos base que
setter.
Ok.
Y faltaría.
Y en factura
también, qué tan setter la cantidad?
Se fijan?
Bueno, ahora faltaría los atributos de la relación.
Cómo se relacionan uno con otro?
Por ejemplo, sabemos que apartamos en orden.
Comencemos en orden.
Partamos primero en factura.
Cuál sería la relación que tiene factura con las demás clases, según nuestro diagrama que vimos anteriormente?
Tiene una relación con cliente.
Por lo tanto, una factura está asociado al cliente.
Entonces tenemos que reflejar esa relación.
Privat Cliente cliente perfecto va a tener su guía tranqu.
Entonces por acá al final clic derecho generated Guiteras Setter cliente está marcado.
Ok, ahí lo tenemos.
Cuál otra?
También relacionado con sus líneas privat y factura.
Items que sería el detalle, pero ojo, es del tipo arreglo, no es una sola, sino pueden ser varias.
Entonces siempre corchete.
En este caso corchete.
Un arreglo.
Pero como es un arreglo, también tenemos que tener este índice para ir agregando los elementos, los
item con el método Agregar ítem factura add se guardan.
Entonces tenemos que incrementar el índice en donde vamos a guardar este elemento en el arreglo.
Entonces el tipo entero índice ítems.
Bien.
Y el método GET solamente parapeta en factura.
Solamente Elgueta, porque no vamos a tener Zet, vamos a tener el método add de agregar.
Recuerda que la relación en u ml cuando desde muchos, por ejemplo factura tienen muchos iten factura.
La relación si se le conoce como agregación de agregar.
Entonces por eso tienes que agregar este método para agregar item.
Bien.
Bajamos.
Implementamos el get solamente para obtener esta lista.
Get.
Y en factura.
Índice.
Ítems no necesario, ya que lo manejamos de forma interna.
Nada más para incrementar el índice.
Ok.
Ahora el método Bad Boy.
Item mismo nombre de la clase item factura y que reciba un solo elemento.
Item factura.
Item.
Entonces ora disputo.
Item corchete.
Índice.
Items.
El post incremento.
Item.
Pero también tenemos que inicializar este arreglo en algún lugar, porque si no creamos el new del arreglo
base en null hiban lanzaron un pulpo.
Intercepten.
Lo vimos anteriormente.
Entonces vamos a tener acá un constructor también que se encargue de eso.
Por ejemplo, Derecho Generated.
Constructor y podríamos aprovechar de pasar el descripción, por ejemplo, y cliente por el constructor.
La fecha no se puede hacer por set, por métodos.
También, aunque también puede ser constructor o podríamos tener otro constructor.
Bueno, pero para el ejemplo da lo mismo.
Igual que el folio no, pero el folio lo auto generamos.
Bien, entonces estos dos.
Más que suficiente.
Entonces por acá diz punto ítems igual new y creamos la instancia ítem factura, acá me auto completa
se fijan acá entonces TAB Perfecto.
Y acá la cantidad aumentó, por ejemplo 10.
Pero incluso podríamos colocar esto como una constante que un poco mejor, más elegante.
Por ejemplo, Privat incluso podría ser pública total es una constante public static final del tipo
entero.
Le podríamos llamar por ejemplo Máximo o Max John bajo items igual 10.
Entonces usamos esta constante.
Se fijan?
Listo.
Recuerden que puede ser de forma directa.
Mismo nombre.
Como estamos dentro de la misma clase, o bien a través de la clase factura.
Punto.
La constante.
Pero cómo estamos dentro?
Simplemente el nombre.
Nada más.
Bien.
Y para evitar también este típico error.
Cuando se desborda el arreglo.
Podríamos preguntarnos.
Cierto.
Con un if.
Mientras el índice ítem solamente.
Mientras sea menor que el máximo elemento.
Entonces.
Max ítems que 10.
Vamos agregando una validación.
Entonces.
Mientras el índice que se va incrementando se mantenga menor al máximo.
Podemos agregar elementos a este arreglo.
Arreglo de ítems.
Entonces esta factura podrГЎ como máximo 10 elementos o 15 o 12.
Por ejemplo.
Lo podríamos dejar en 12.
Qué me faltaría el folio.
Lo podríamos auto incrementar.
Para eso necesitamos privat del tipo entero pero estático.
Es importante.
Static.
Int, último folio.
Entonces también en este constructor.
Acá mismo.
Sutiss punto folio es igual al último folio y lo incrementamos.
Pero un incremento para que comiencen.
1 Bejan parte1.
Guet folios de folio exceed folio lo vamos a quitar ya.
Por qué?
Bueno, no tiene sentido modificar el folio.
La idea de que se auto genere de esta forma, entonces de esta forma se asigna solo retruco Mohler,
pero no asignar, mientras que la descripción se puede obtener, modificar la fecha también.
En fin.
Y así.
Incluso también podremos crear una fecha por defecto 10 punto fecha también en el constructor New Data.
Entonces, cuando se crea el objeto factura, se crea con la fecha, con la fecha actual dilecto.
Hoy tenemos casi todo cliente lo podría manejar simple, solamente con el nombre y su identificador
y en factura.
Bueno, le falta, todavía le falta la relación con el producto.
Recuerden que una factura está asociado a un solo producto y también podría tener una relación con factura,
pero no necesario.
No es tan importante que un detalle, una línea tenga la referencia de su factura, porque nunca vamos
a consultar una línea en particular y querer saber de qué factura pertenece.
No siempre se mira los items o la línea dentro de la factura, es decir, en conjunto es parte de la
factura.
Nunca se mira de forma individualmente.
Nunca vamos a consultar de forma individual.
Siempre con la factura.
Entonces solamente private producto producto.
Qué transceptor de producto?
Ok, podríamos tener un constructor que inicie inicializa generate.
Quienes se hÃlice cantidad y producto.
Y estamos casi listos, porque en producto faltaría solamente el código auto general, el código.
Bien, para eso.
Dos cosas primero.
Private static int último código.
Bien.
Y el constructor?
Constructor vacío, lo dejamos vacío.
Okei.
Disputo código igual, incrementamos último código, un incremento y solamente linked del código no,
etcetc, lo mismo que hicimos en factura.
Acá incrementamos último folio, se lo asignamos y solamente el folio.
Que estamos listos.
Hemos avanzado bastante, así que continuamos en la siguiente clase.