Bienvenidos.
Continuamos con un ejemplo de facturas para poner en práctica lo que hemos visto de programación orientada
a objetos.
Bueno, vamos a comenzar primero con el legrama clase para tener alguna idea de cuáles son las clases
que participan en nuestra aplicación.
Cómo se relacionan?
Bueno, más o menos lo que hemos visto.
Pero recuerden, siempre es recomendable tener al menos un pequeño diagrama o esquema de las clases,
realizar algún análisis, los atributos y cómo se relacionan una con otra.
Bien, entonces comencemos.
Vamos a crear la clase factura bien, pero también vamos a tener un cliente que compra productos y está
asociado a esta factura.
Entonces por acá.
Cliente Ok, vamos a tener el detalle de la factura.
Ítem factura le vamos a llamar detalle factura, ítem factura o la línea ok.
Luego tenemos el producto.
Voy a ordenar.
Entonces por acá, cliente, por acá vamos a tener factura por acá.
El item o el detalle y el producto.
Pero cómo se relacionan?
Bueno, un cliente compra productos y se le asigna una factura.
Bueno, en realidad un cliente puede tener varias factura porque puede realizar varias compra, pero
siempre una factura se asocia a un solo cliente.
Entonces un cliente mucha factura, una factura, un solo cliente.
A su vez, la factura puede tener asociado varios ítems, es decir, varios productos que se están comprando.
Pero también se maneja la cantidad, porque la cantidad es parte del detalle y no del producto.
Por lo tanto, en el ítem, en el detalle, se va a indicar cuánto compramos de cada producto y te factura.
Se asocia a un producto, a uno solo, cada línea.
Bien, entonces comencemos con los atributos y las relaciones.
No es tan importante colocar los atributos de la relación, porque eso se indica con la flecha, con
la relación, por ejemplo, de asociación.
Si es un atributo o de agregación, un atributo arreglo que contiene varios elementos.
En fin.
Pero bien, igualmente lo vamos a colocar para variar.
Entonces vamos a colocar el atributo, pero también la línea o la asociación.
Partamos primero por factura, entonces factura.
Va a tener un atributo del tipo cliente.
Entonces cliente en tipo.
Como creamos la clase acá por acá tenemos cliente bien.
De forma automática se crea la relación de forma automática.
Pero en realidad no es correcta.
Acá indica que una factura contiene para el cliente y no es así.
Una factura, un solo cliente.
Entonces tenemos que modificar esta relación que genera forma automática de asociación.
En realidad, o también cliente puede agregar varias factura, pero vamos viendo.
Partamos primero por esta asociación, hacemos un clic, pinchamos factura cliente.
Por tanto, factura tiene un atributo de cliente y esta relación la vamos a eliminar.
Esta de acá.
Entonces Flecha Acá hacemos un clic.
La seleccionamos.
Y delito OK, delito Aikido.
Factura tiene un cliente, pero a su vez factura tiene varios iten factura.
Entonces vamos a crear el atributo.
Por acá items, eh, del tipo por acá tenemos ítem factura, pero no es uno solo, es un arreglo.
Entonces colocamos corchete ok.
De forma automática insiste en colocar la relación de fija, pero la vamos a eliminar, las seleccionamos,
pero hay que seleccionar el rombo, cuidado.
A ver, para no equivocarme que es el rompo, esa voy a eliminar 12 con suprimir.
Perfecto, entonces factura contiene varios item.
Voy a seleccionar agregación esta de acá con el rompo.
Hacemos un clic en factura hacia ítem factura, pero se va a volver a generar de forma automática.
Se fijan acá.
Pero me interesaba crear esta nomÃs, así que hay que volver a eliminar.
Entonces por acá seleccionamos el rombo.
Está acá y la eliminamos.
Listo.
Con el rompo indica que Factura tiene varios ítems de factura, una colección y está perfecto.
Se pueden comprar varios productos.
Cada línea, cada ítem se asocia a un producto.
Entonces, ahora ítem factura.
Vamos a crear un atributo.
Del tipo producto buscamos acá producto Hakata.
Ok.
Se fijan también crea una relación de forma automática, pero en realidad necesito que sea de asociación.
Entonces enmarcamos acá, flecha continua acá y esta de acá le quitamos.
ESTAC Suprimir ya tenemos nuestro diseño con las relaciones.
Ahora faltaría los atributos, por ejemplo, producto acá.
Atributo.
El código o Heidy del producto del tipo Tellas, pues set de la clase o primitiva ok, pero también
va a tener un nombre y precio, entonces el new atributo nombre del tipo string.
Por acá buscamos Tric.
Ok.
Y.
Precio del tipo intuyas o 2 golpéeme, puede ser.
Y ten factura, tiene producto y tiene la relación asociación.
Por lo tanto, producto es atributo de liten factura, pero también maneja la cantidad.
Entonces new atributo cantidad del tipo entero.
Acá, creo, la relación no importa, la vamos a eliminar, suprimir.
Es importante que la cantidad esté siempre en el detalle.
Acá hay séptica la cantidad de producto que se está comprando o que se compró nunca en producto, ya
que no es parte del estado interno del objeto producto.
El objeto bruto tiene otras características, siempre la cantidad.
Va, por ejemplo, en inventario.
También podríamos tener inventario.
Bueno, pero es otro tema que maneja la cantidad de producto disponible en la tienda, pero también
tiene la cantidad que se compra en la factura de cada producto y eso después se descuenta del inventario.
Pero nunca van producto.
Producto siempre.
Por general el s cabu o código, el Heidy nombre, precio, color, características.
En fin, el ítem maneja el producto que se está comprando cada ítem y su cantidad del producto.
La factura contiene el cliente que compra, por ejemplo la cantidad de elementos o items que está comprando,
que sería el detalla, pero también un Heidy identificador.
Entonces por acá vamos a crear un atributo.
Típicamente se le conoce como folio, folio de la factura o el Heidy del tipo.
Bueno, depende de la empresa, pero puede ser numérico.
También puede ser un string si está compuesto con caracteres alfanuméricos.
En fin, para el ejemplo del tipo integer.
Entonces Folia OK.
Y siempre los atributos son privat, se fijan con menos.
Qué más podría tener como un título o descripción?
Por ejemplo, compra de artículos de oficina.
Descripción.
Del tipo String.
Ok.
Te meteme cliente y te meten a sus líneas.
TB podría tener una fecha, por ejemplo.
Fecha del tipo Date.
Bueno, acá no me muestra doit se fijan por defecto, pero la indicar acá date el activo y la indico
y colocamos fecha que la fecha de la factura.
Cuando se emite.
Ok.
Y eso sería.
Ahora que tengo listo la factura con los atributos, voy a ordenar bien.
Qué me falta?
Bueno, algunos métodos.
Por ejemplo bueno, Metodio.
Importante lo lletra en setter no es tan importante, aunque igualmente lo podremos colocar, pero se
asume de que van a estar por lo general los mismos constructores.
Entonces.
Como métodos que van en la tercera parte de la clase.
Primero nombre atributos y acá los métodos.
Entonces por acá new operación los métodos.
Por ejemplo calcular total
el tipo de ratón.
Qué objeto va a retornar?
Bueno, el total podría ser un Tobruk por acá, un doble.
Acá podríamos agregar parámetros o argumento.
El método, la visibilidad se pùblico protected private.
Si es húmedo, abstracto, en fin, si es estático y varias configuraciones.
Pero calcular total tiene argumento un método que retorna un doble ok público.
Calcular total.
Qué otro método?
Derecho New Operación.
Ver detalles, ver el detalle completo, la factura, el cliente, su línea, sus productos, en fin,
todo.
Barton nar un tipo string, por ejemplo.
Argumento nada ok.
Se fijan que otro método importante podría tener.
Bueno, por ahora eso ahora en factura podría tener también un método.
Vamos a hacer un clic.
Operación.
Bueno, cada línea le tengo que calcular el total, también el importe calcular importe qué precio por
cantidad, es decir, la cantidad de la línea por el precio, el producto también va a retornar un topo
sin argumento.
Entonces, calcular importe sería el total de cada línea precio el producto por la cantidad de la línea.
Mientras que calcular total es el total de la factura.
Es decir, va a iterar con un for por cada ítem y ver sumando los importes de cada uno.
Es decir, el total.
Ahora faltaría cliente los atributos.
Por ejemplo, atributo.
Nombre.
Del tipo atómico.
Igual podría incluir el apellido, pero quizá el cliente también puede ser una empresa.
Entonces, con el nombre?
Está bien.
Si un cliente persona en nombre puede ser el nombre completo nombre, apellido o también se puede manejar
tipos de cliente, pero lo dejamos simple.
Recuerden cliente entonces nombre.
Íbamos a tener un número fiscal.
Entonces atributo que típicamente se le conoce como RUT o NIF o CIF.
Por ejemplo NIF del tipo bueno alfanumérico.
Buscamos el tipo String.
Vamos a ordenar.
Voy a quitar las relaciones que agregó de forma automática esta de acá y también voy a agregar voy a
eliminar esta lejos como por acá, esta la quito.
Bien acá.
Ese sería nuestro diseño principal.
Por supuesto, puede ir cambiando.
Podríamos agregar cosas, quitar cosas en el transcurso del desarrollo.
En fin.
Pero esta es la base y por eso es importante tener un esquema, algún análisis, diseño mínimo.
Y la idea que siempre sea lo más simple posible, no con tanto detalle.
Acá puse que factura contiene un cliente.
Ya, pero el cliente también puede tener varias facturas, es decir, cliente podría tener un arreglo
de factura.
Llega envidia.
La relación sería con rombo, se fijan, pero el rombo estaría en el cliente.
Entonces el cliente podría agregar varias facturas, pero también todo depende de cómo lo queramos manejar.
Nada más.
Continuamos la siguiente clase creando estas clases.
Bueno, valga la redundancia, vamos a crear cada una clase con sus atributos y vamos a comenzar nuestro
ejemplo ya programando según nuestro diagrama.
Nos vemos.