Introducción a Clases y Objetos Prof. Diego A. Ordaz R.

Transcripción

Introducción a Clases y Objetos Prof. Diego A. Ordaz R.
Introducción a Clases y Objetos
Prof. Diego A. Ordaz R.
PARTE I
Descripción de clases.
¿?Las cosas que nos rodean son muchas, y si observamos detenidamente podemos encontrar características y acciones que pueden realizar, estas acciones las podemos ver como un conjunto de tareas.
También nos encontraremos que estas cosas están agrupadas en categorías (automóviles, mobiliarios, electrodomésticos...), a estas categorías las llamaremos clases. Entonces una clase es una categoría o grupo de cosas que tienen atributos y ejecutan acciones similares.
Por ejemplo la clase Lavadora tiene atributos y acciones que representa a todas las lavadoras que hasta el momento se conocen, como la marca, modelo, capacidad y número de serie entre los atributos y llenar, agregar detergente, agregar ropa, remojar, batir, exprimir y sacar ropa entre las acciones.
Podemos dibujar la clase lavadora utilizando la notación en UML como sigue:
Lavadora
marca
modelo
numero de serie
capacidad
agregar ropa ()
agregar detergente ()
sacar ropa ()
Figura 1.
Las clases son solamente moldes, modelos, plantillas. Cuando en una clase los atributos reciben valores y las acciones son ejecutadas estamos hablando de objetos, se dice entonces que los objetos son las instancias de las clases (en un momento y lugar determinado). Por ejemplo nuestra lavadora podría ser marca: General Electric, modelo: La ultima, numero de serie: GEL1456 y capacidad: 12 Kg.
Hablemos de.
• Abstracción.
• Encapsulamiento.
• Herencia.
• Polimorfismo.
• Mensajes.
• Agregación.
• Asociación.
En el siguiente fragmento podemos describir la ventaja de la POO, la orientación a objetos a tomado por asalto a la industria de desarrollo del software. Fomenta una metodología basada en componentes para el desarrollo de software, de manera que primero se genera un sistema por medio de un conjunto de objetos, luego podrá ampliar el sistema agregando funcionalidad a los componentes que ya había creado o agregándoles nuevos componentes, finalmente podrá volver a utilizar los objetos que generó para el sistema cuando cree uno nuevo, con lo que reducirá el tiempo de desarrollo considerablemente.
Recuerde que un objeto es una instancia de una clase. Por ejemplo, nosotros, somos instancias de la clase Persona. El objeto cuenta con todos los atributos y acciones que se declaran y definen en las clases. Como objetos de la clase Persona tenemos atributos como: altura, peso, edad (podemos imaginar otros), como actividades comer, dormir, caminar, leer, escribir, trabajar, reproducirnos, entre otros. Si realizáramos un sistema que involucre a personas, como un sistema de nominas, es posible que incorporáramos algunos de estos atributos y acciones en nuestro software.
En el mundo de la orientación a objetos las clases juegan otro papel además del de categorizar. En realidad las clases son plantillas para fabricar objetos. Podemos imaginarlas como moldes de galletas.
Si volvemos a el ejemplo de la lavadora, y tomamos en cuenta la marca, modelo, capacidad y número de serie entre los atributos junto con las acciones llenar, agregar detergente, agregar ropa, remojar, batir, exprimir y sacar ropa. Tendrá un mecanismo para fabricar nuevas instancias,a partir de su clase; es decir, podrá crear nuevos objetos.
El enfoque del desarrollo orientado a objetos es desarrollar software que puedan representar un esquema del mundo real. Mientras más atributos se tomen en cuenta, mejor será en detalle el software con respecto a la realidad.
El número de atributos estará dado por el enfoque que se la de u objetivo que se quiera alcanzar, esto nos da pie de entrar en el primer concepto que caracteriza la POO.
Abstracción.
Consiste en quitar los propiedades y acciones de un objeto dejando sólo las necesarios. Diferentes tipos de problemas necesitan diferentes cantidades de información, aun si estos problemas pertenecen a un área en común.
Podríamos agregar a la clase Persona los atributos como: altura, peso, edad, cédula, horas trabajadas (podemos imaginar otros), como actividades trabajar, planificar, entre otros.
Esto valdría la pena si nuestro software es de nóminas, sin embargo si lo que se necesita es un software de registro de usuarios de un gimnasio necesitaríamos lo atributos como: altura, peso, edad, cédula (podemos imaginar otros), como actividades comer, dormir, caminar, entre otros. Queda claro que las propiedades y acciones van a estar dadas por el problema a resolver, en todo caso, con lo que se quedará después de tomar su decisión será una abstracción de la clase persona.
Herencia.
Como instancia de una clase un objeto tiene los mismos atributos y métodos, comenzaremos a llamar así a las propiedades y acciones, de una clase, a esto se le dice herencia. No solo los objetos heredan de una clase, sino que una clase también puede heredar de otra. Lavadoras, micro hondas, pulidoras, secadores, licuadoras, planchas, todas forman parte de la categoría o clase electrodomésticos. Los electrodomésticos cuentan con los atributos interruptor y cable eléctrico y los métodos encendido y apagado. Cada una de las clases hijas de Electrodoméstico heredan sus atributos y métodos. Otra forma de nombrarlos es que lavadora, micro hondas, pulidoras, secadores, licuadoras, planchas son subclases de la superclase Electrodoméstico.
Electrodomestico
interruptor.
cable.
encendido ()
apagado ()
Licuadora
Plancha
interruptor.
cable.
interruptor.
cable.
interruptor.
cable.
encendido ()
apagado ()
encendido ()
apagado ()
encendido ()
apagado ()
Lavadora
Figura 2.
Pero desde otro punto de vista los electrodomésticos son subclase de otra más general Artículos del Hogar de la cual forma parte también la subclase Mobiliario.
Artículos del Hogar
Electrodomesticos
Mobiliarios
Figura.
Polimorfismo.
En ocasiones un mismo método tiene el mismo nombre en diferentes clases, usted podrá abrir una puerta, ventana o periódico, un regalo, una cuanta de banco en todos estos casos estará realizando operaciones distintas. En la orientación a objetos cada clase sabe como implementar sus operaciones, esto se conoce como polimorfismo.
Encapsulamiento.
La esencia del encapsulamiento es que cuando un objeto trae consigo su funcionalidad esta última queda oculta. Por lo general la mayoría de las persona que ven televisión no tiene idea o no se preocupan por la complejidad electrónica detrás de la pantalla o la cantidad de procesos que tienen que ocurrir para mostrar una imagen. La televisión hace lo que tiene que hacer sin mostrar detalles sobre los procesos que realiza. Por suerte la mayoría de los electrodomésticos funcionan así.
En el mundo del desarrollo de software el encapsulamiento ayuda a reducir los errores que pudieran ocurrir, en un sistema que consta de objetos estos dependen unos de otros de distintas formas, si uno de ellos falla y los especialistas del software tienen que modificarlo de alguna manera, el ocultar sus operaciones de otros significará que tal vez no halla que modificar los demás objetos.
¿Pero como podemos utilizar los objetos si no tenemos conocimiento de como funcionan?, simple en la POO existen las interfaces que proporcionan componentes que interactuarán con los usuarios y enviarán los mensajes para que estas se ejecuten.
Envió de Mensajes.
Como se había dicho los objetos trabajan en conjunto y para que esto pueda ser posibles se comunican entre si con mensajes, un objeto envía un mensaje a otro para realizar una operación, el receptor lo recibe y ejecuta la operación solicitada. Un televisor y su control remoto pueden ser un ejemplo de la relación entre los objetos que nos rodean. Cuando desea ver televisión se sienta en su silla toma el control y presiona el botón de encendido, y bueno ya usted sabe lo demás. ¿Que ocurre?, el control remoto le envía, literalmente, un mensaje al televisor para que encienda. El televisor recibe el mensaje, lo identifica como una petición para encenderse y así lo hace. El control remoto también puede comunicarse a través de otros mensajes como subir y bajar volumen, cambiar de canal, entre otros.
Si volvemos al tema de las interfaces mencionado anteriormente, podemos determinar que si no contamos con el control remoto el televisor tiene una interfaz de botones que permiten interactuar con el usuario para ejecutar sus funciones.
Asociaciones.
Los objetos se relacionan entre si de alguna forma, por ejemplo cuando usted enciende su televisor a través del control remoto se establece una “asociación” entre ellos. La asociación “encendido” es en una sola dirección, esto es, el control enciende el televisor. También existen asociaciones de doble dirección “matrimonio”. Un objeto también puede relacionarse con otro en más de una forma. También una clase puede asociarse con más de una clase distinta una persona puede viajar en carro o autobús.
La multiplicidad es un aspecto importante de las asociaciones. Indica la cantidad de objetos de una clase que se relacionan con otro objeto en particular de la clase asociada. Por ejemplo un profesor trabaja para un departamento, el profesor y el departamento están asociados uno a uno. Sin embargo un profesor puede dictar varios cursos, la relación será de uno es a muchos.
Agregación.
Un case se un computador contiene: un case, procesador, teclado, ratón, impresora, cornetas, uno o varios HD, un módem, una unidad de DVD. Dentro del case están las unidades de disco, procesador, tarjeta de vídeo, de sonido.
Su computadora es una agregación o adición de otro conjunto de objetos. La agregación trae consigo una estrecha relación entre un objeto agregado y sus componentes. A esto se le conoce como composición. El punto central de la composición es que el componente se considera como tal sólo parte del objeto compuesto. Por ejemplo una camisa esta compuesta por un cuello, mangas, botones y cuerpo, elimine la camisa y el resto de los componentes serán inútiles.
La agregación y la composición son importantes dado que reflejan casos extremadamente comunes, y ello ayuda a que cree modelos que se asemejen considerablemente a la realidad.
PARTE II
Componentes de Una Clase.
Atributos.
Un atributo es una propiedad o característica de una clase que permite especificar un rango de valores que la propiedad podrá contener en los objetos (esto es instancia de una clase). Una clase podrá tener uno, más o ningún atributo. Por convención, si el nombre del atributo consta de una palabra está será escrita en minúscula; por otra parte si el nombre es compuesto la primera palabra va en minúscula, cada palabra será unida a la anterior y la primera letra de cada palabra siguiente en mayúscula. Cada atributo posee un tipo (int, float, char, string, clase, entre otros) estos se estudiarán en las siguientes unidades.
Como determinar las Clases.
Las clases son el vocabulario y terminología de un área del conocimiento. Conforme hable con los clientes, analice su área de conocimiento y diseñe software que resuelvan los problemas de esta área, comprenderá la terminología y modelará los términos como clases.
En sus conversaciones con los clientes preste atención a los sustantivos que utilizan para describir las entidades de sus negocios, ya que dichos sustantivos se convertirán en clases de su modelo. También preste atención a los verbos que escuche, dado que constituirán las operaciones de sus clases. Los atributos surgieran como sustantivos relacionados con los nombres de las clases. Una vez que tenga una lista básica de las clases, pregunte a los clientes que es lo que cada clase hace dentro del negocio. Sus respuestas le indicarán las responsabilidades de la clase.
Caso de Estudio:
Suponga que usted es un analista que generará un modelo del juego de baloncesto, y que entrevistará a un entrenador para comprender el juego. La conversación podría surgir como sigue:

Documentos relacionados