Bienvenido al Blog, en esta oportunidad desarrollaremos un tema de introducci贸n al desarrollo de programaci贸n orientado a objetos, para entender sobre como desarrollar un sistema con el lenguaje java veremos casos de estudios en la fase de inicio: An谩lisis y dise帽o.
- El contenido de este blog tiene como fuente el curso Fundamentos de programaci贸n de Oracle.
- Con algunos agregados del autor "EL INFORMATICO IBERO"
An谩lisis Orientado a Objetos
DirectClothing, Inc. vende camisas por catalogo. El negocio crece a un ritmo del 30 por ciento anual y necesitan un nuevo sistema de introducci贸n de pedidos. La empresa le ha contratado para dise帽ar ese nuevo sistema.
DirectClothing produce un catalogo de prendas de vestir cada seis meses y se lo env铆a a sus suscriptores. Cada prenda de catalogo tiene un identificador de articulo (ID), uno o varios colores (cada uno con un c贸digo de color), uno o varios tama帽os, una descripci贸n y un precio.
La empresa acepta cheques y principales tarjetas de cr茅dito.
Para hacer un pedido los clientes pueden llamar directamente al servicio de atenci贸n al cliente de la compa帽铆a o enviar a DirectClothing un formulario de pedido por fax o correo.
En la siguiente imagen se visualiza el formulario de pedido que aparece en el catalogo de DirectClothing.
Los pedidos que llegan por correo o fax son introducidos por un miembro del servicio de atenci贸n al cliente.DirectClothing quiere dar al cliente la opci贸n de introducir sus pedidos directamente a trav茅s de internet. Los art铆culos que aparecen en la web tienen el mismo precio que se marca en el ultimo catalogo.
Cuando se introduce un pedido en el sistema, se verifica la disponibilidad de cada articulo (cantidad en stock). Si uno o varios de los art铆culos no est谩n disponibles en ese momento (en el almac茅n de DirectClothing), el pedido se pone en espera hasta que llegan al almac茅n. Cuando todos los art铆culos est谩n disponibles, se verifica el pago y el pedido se env铆a al almac茅n para su preparaci贸n y envi贸 a la direcci贸n del cliente.
Si el pedido se recibe por tel茅fono, el servicio de atenci贸n al cliente da a este un ID de pedido que se utiliza para hacer el seguimiento de la orden de compra a lo largo del proceso. tambi茅n le proporciona la extensi贸n de tel茅fono del representante del servicio de atenci贸n al cliente.
Identificaci贸n del dominio del Problema
Dado que el lenguaje Java es un lenguaje orientado objetos, uno de los primeros objetivos del programador en esta tecnolog铆a es crear objetos para componer un sistema o, mas concretamente, para resolver un problema.
El 谩mbito del problema que se va a resolver se denomina dominio del problema.
La mayor铆a de los proyectos empiezan por definir el domino del problema mediante la recopilaci贸n de los requisitos del cliente y la escritura de un enunciado donde se especifica el alcance del proyecto, es decir, lo que el programador, usted, quiere conseguir. Por ejemplo, un enunciado del alcance del proyecto de DirectClothing podr铆a ser: "Crear un sistema de introducci贸n de pedidos que permita a los operadores introducir y aceptar el pago de los pedidos".
- Los objetos pueden ser f铆sicos o conceptuales: una cuenta de un cliente es un ejemplo de objeto conceptual, porque no es algo que se pueda tocar f铆sicamente. Un cajero autom谩tico es algo que muchas personas tocan al cabo del d铆a y es un ejemplo de objeto f铆sico.
- Los objetos poseen atributos (caracter铆sticas) tales como el tama帽o, el nombre o la forma, entre otros. Por ejemplo, un objeto puede tener el color como atributo.
- El valor de todos los atributos de un objeto a menudo se conoce como el estado actual del objeto. Por ejemplo, un objeto puede tener un atributo de color con el valor "rojo" y un atributo de tama帽o con el valor "grande".
- Los objetos pueden realizar operaciones (cosas que pueden hacer), tales como configurar un valor, abrir una pantalla o incrementar la velocidad. Las operaciones suelen afectar a los atributos del objeto y, a menudo, nos referimos a ellas como el comportamiento de los objetos. As铆 un objeto puede llevar asociada una operaci贸n que permita a otros objetos cambiar su atributo de color de un estado a otro, por ejemplo, de rojo a azul.
- Los objetos se designan mediante nombres como, por ejemplo, "cuenta" o "camisa". los atributos de los objetos tambi茅n suelen ser nombres, como "color" o "tama帽o". Sin embargo, las operaciones de los objetos suelen designarse mediante verbos o combinaciones de nombre y verbo, c贸mo es el caso de "mostrar" o "enviar pedido"
- Relevancia para el dominio del problema.
- Existencia independiente
- ¿El objeto existe dentro de los limites del domino?
- ¿El objeto es necesario para que la soluci贸n sea completa?
- ¿Es necesario como parte de una interacci贸n entre un usuario y la soluci贸n?
- Para que un elemento sea un objeto y no un atributo de otro objeto, debe ser independiente en el contexto del domino del problema. Varios objetos pueden estar relacionados y, sin embargo, tener una existencia independiente. En el caso de DirectClothing, el cliente y el pedido est谩n conectados, pero son independientes entre si, por lo que ambos serian objetos.
- Al evaluar la situaci贸n de objeto potenciales, preg煤ntese si el objeto debe existir de forma independiente o ser atributo de otro objeto.
- Despu茅s de identificar los objetos, debe especificar sus atributos y operaciones.
- Como se indicaba anteriormente, los atributos definen el estado de un objeto. Los atributos pueden ser datos como el ID de cliente y el ID del pedido, o bien pueden ser otros objetos, como seria en el caso de un cliente que, en lugar de tener 煤nicamente el ID de pedido como atributo, tuviese todo el objeto Order (pedido).
- Las operaciones son comportamientos que normalmente modifican el estado de un atributo. Por ejemplo, es posible imprimir un pedido, agregarle o suprimirle un articulo, etc. (El cliente o el operador del centro de atenci贸n al cliente iniciar铆a esas acciones en la vida real, pero pertenecen al objeto order).
- Un atributo puede hacer referencia a otro objeto.
- Por ejemplo, el objeto Customer (cliente) puede tener un atributo que sea un objeto Order. Esta asociaci贸n podr铆a ser necesaria o no, en funci贸n del problema que se este tratando de resolver.
- En la figura se visualiza el objeto Cliente contiene un atributo Pedido. (Los asterisco (*) de los gr谩ficos indican atributos que son otros objetos)
Dise帽o de Clases
- Una clase es la definici贸n de un objeto. Las clases son categor铆as descriptivas, plantillas o prototipos. Shirt(Camisa) podr铆a ser una clase que define a todas las camisas como objetos poseedores de una ID de camisa, una tama帽o, un c贸digo de color, una descripci贸n y un precio.
- Los objetos son instancias 煤nicas de las clases. La camisa azul grande que cuesta 29.99 Dolares y tiene el ID de camisa 62467-B es uan instancia de la clase Camisa, al igual que la camisa verde peque帽a etiquetada con el mismo precio y con el ID 66889-C, o la camisa de dibujos de 39.99 d贸lares con el ID 09988-A. Es posible tener en la memoria dos objetos Camisa con atributos que tengan exactamente los mismos valores.
- En la siguiente figura puede verse una clase y varios objetos basados en ella.
- NombreClase es el nombre de la clase.
- nombreVariableAtributo es el nombre de la variable correspondiente a un atributo.
- rango de valores es una serie opcional de valores que el atributo puede contener.
- nombreMetodo es el nombre de un m茅todo.