La programacin Orientada a objetos es una forma especial de
programar, ms cercana a como expresaramos las cosas en la vida real que otros tipos de programacin. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en trminos de objetos, propiedades, mtodos y otras cosas que veremos rpidamente para aclarar conceptos y dar una pequea base que permita soltarnos un poco con este tipo de programacin. Durante aos, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvan una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se cre la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el cdigo se pueda reutilizar. Este tipo de programacin esta conformada por muchos elementos como por ejemplo: los objetos que no es ms que una estructura de datos y conjunto de procedimientos que operan sobre dicha estructura, las clases que se puede definir como un molde o bien prototipo en donde se definen los atributos (variables) y las acciones (mtodos) comunes de una entidad, las propiedades de este estilo de programacin como lo son la modularidad que se trata de descomponer un programa en partes ms pequeas o abstracciones coherentes que pertenecen al dominio del problema y cuya complejidad interna es susceptible de ser enmascarada por la descripcin de una interfaz, el encapsulamiento que es una tcnica que permite localizar y ocultar los detalles de un objeto. La encapsulacin previene que un objeto sea manipulado por operaciones distintas de las definidas y la herencia que es un proceso mediante el cual un objeto puede adquirir las propiedades de otro objeto, entre otras muchas propiedades y caractersticas. En el siguiente informe se ampliaran conceptos como objetos, clases, modularidad, encapsulamiento, herencia ya entes mencionados adems de Modelo, abstraccin, tipos abstractos de datos, sobrecarga, polimorfismo, composicin, agregacin, dependencia, realizacin entre otros
Modelo: En informtica un modelo es la representacin de la realidad por medio de abstracciones, los modelos enfocan ciertas partes importantes de un sistema, restndoles importancia a las otras. Para ejemplificar lo antes dicho se tiene que: En la construccin de un modelo mecnico de un sistema fsico se debe tener en cuenta que hay que partir de objetos concretos. Los objetos aqu seran, en un modelo de una pista de carreras: los autos, las carreteras, las llegadas, las graderas, espectadores, etc. Por otro lado en la construccin de un modelo algortmico de un sistema fsico a partir de objetos de software. Los objetos aqu seran: rutinas de conexin a DB, shorts, validacin de acceso, despliegue, impresiones, etc. En otras palabras un modelo no es ms que plasmar la idea inicial de lo que se quiere llevar a cabo y construir o disear. Abstraccin: En el sentido ms general, una abstraccin es una representacin concisa de una idea o de un objeto complicado. En un sentido ms especifico, la abstraccin localiza y oculta los detalles de un modelo o diseo para generar y manipular objetos. La abstraccin es el proceso en el cual separamos las propiedades ms importantes de un objeto, de las que no lo son. Es decir, por medio de la abstraccin definimos las caractersticas esenciales de un objeto del mundo real, los atributos y comportamientos que lo definen como tal, para despus modelarlo en un objeto de software. La abstraccin tambin expresa las caractersticas esenciales de un objeto, las cuales distinguen a este objeto de los dems, en otras palabras una abstraccin de una clase no es ms que ver esta misma clase desde distintos enfoques y punto de vista y a partir de este poder proceder a su diseo e implementacin. Tipo abstracto de dato: Un tipo abstracto de dato es un dato definido por el programador que se puede manipular de un modo similar a los tipos de datos definidos por el sistema. Al igual que los tipos definidos por el sistema, un tipo de dato abstracto corresponde a un conjunto de valores legales de datos y un nmero de operaciones permisivas que se pueden realizar por esos valores Cabe destacar que algunos lenguajes de programacin tienen caractersticas que nos permiten implicar el lenguaje aadiendo sus propios tipos de datos al lenguaje. Estos tipos de datos abstractos de definen como TAD esto para poder diferenciarlo del tipo de dato fundamental que es el que viene integrado en los lenguajes de programacin. Modularidad: La modularidad se trata de descomponer un programa en partes ms pequeas o abstracciones coherentes que pertenecen al dominio del problema y cuya complejidad interna es susceptible de ser enmascarada por la descripcin de una interfaz. La modularidad, nos permite poder modificar las caractersticas de la clase que definen a un objeto, de forma independiente de las dems clases en la aplicacin. En otras palabras, si nuestra aplicacin puede dividirse en mdulos separados, normalmente clases, y estos mdulos pueden compilarse y modificarse sin afectar a los dems, entonces dicha aplicacin ha sido implementada en un lenguaje de programacin que soporta la modularidad. La tecnologa orientada a objetos nos brinda esta propiedad para hacer uso de ella en el software que desarrollemos. Clase: Es un molde o bien prototipo en donde se definen los atributos (variables) y las acciones (mtodos) comunes de una entidad. El mundo est lleno de objetos: el coche, la lavadora, la mesa, el telfono, etc. El paradigma de programacin orientada a objetos proporciona las abstracciones necesarias para poder desarrollar sistemas software de una forma ms cercana a esta percepcin del mundo real. Mediante la POO, a la hora de tratar un problema, podemos descomponerlo en subgrupos de partes relacionadas. Estos subgrupos pueden traducirse en unidades auto contenidas llamadas objetos. Antes de la creacin de un objeto, se debe definir en primer lugar su formato general, su plantilla, que recibe el nombre de clase.
Objeto: Una estructura de datos y conjunto de procedimientos que operan sobre dicha estructura (el objeto). Una definicin ms completa de objeto es: una entidad de programa que consiste en datos y todos aquellos procedimientos que pueden manipular aquellos datos; el acceso a los datos de un objeto es solamente a travs de estos procedimientos, nicamente estos procedimientos pueden manipular, referenciar y/o modificar estos datos. Una unidad de software conformada por atributos y mtodos especficos.
Encapsulacin: Es una tcnica que permite localizar y ocultar los detalles de un objeto. La encapsulacin previene que un objeto sea manipulado por operaciones distintas de las definidas. La encapsulacin es como una caja negra que esconde los datos y solamente permite acceder a ellos de forma controlada. Tambin referido como ocultamiento de la informacin, el encapsulamiento es la propiedad de la orientacin a objetos que nos permite asegurar que la informacin de un objeto le es desconocida a los dems objetos en la aplicacin. Es muy frecuente referirse a los objetos de software como cajas negras, esto se debe principalmente a que no necesitamos, dentro de la programacin orientada a objetos, saber cmo esta instrumentado un objeto para que este interacte con los dems objetos. Generalmente una clase se define en dos partes, una interfaz por medio de la cual los objetos que son instanciados de la misma interactan con los dems objetos en la aplicacin, y la implementacin de los miembros de dicha clase (mtodos y atributos). Retomando dos de los ejemplos anteriores, supongamos que deseamos realizar una aplicacin en donde deben interactuar el objeto Mercedes Benz, instancia de la clase automvil y el objeto Juan Prez, instancia de la clase Persona. Ambos objetos pueden ser vistos como cajas negras las cuales se comunican por medio de una interfaz. El objeto Mercedes no sabe como esta implementado el objeto Juan Prez y viceversa. Concretamente, el encapsulamiento permite a un objeto ocultar informacin al mundo exterior, o bien restringir el acceso a la misma Hay muchos datos que no tiene porque conocerlo aquel que est usando la clase Persona; ya que son inherentes al objeto y solo controlan su funcionamiento interno; por ejemplo, cuando alguien te ve puede saber inmediatamente si eres hombre o mujer (propiedad) o puede hablarte y obtener una respuesta procesada (mtodo); tambin puede conocer el color de tu cabello y ojos. En cambio, jams sabr que cantidad de energa exacta tienes o cuantas neuronas te quedan, ni siquiera preguntndote ya que ninguna de tus propiedades externas visibles o funciones de comunicacin al pblico te permiten saber esos datos. La encapsulacin es muy conveniente y nos permite (Si programamos bien) colocar en funcionamiento nuestro objeto en cualquier tipo de sistema, de una manera modular y escalable (algunas de las reglas de la ingeniera del software). Sobrecarga Es la capacidad de un lenguaje de programacin, que permite nombrar con el mismo identificador diferentes variables u operaciones. En programacin orientada a objetos la sobrecarga se refiere a la posibilidad de tener dos o ms funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o ms funciones con el mismo nombre realizan acciones diferentes. El compilador usar una u otra dependiendo de los parmetros usados. A esto se llama tambin sobrecarga de funciones. Tambin existe la sobrecarga de operadores que al igual que con la sobrecarga de funciones se le da ms de una implementacin a un operador. El mismo mtodo dentro de una clase permite hacer cosas distintas en funcin de los parmetros.
Polimorfismo: Significa que un nombre se puede utilizar para especificar una clase genrica de acciones. El polimorfismo es el tercer pilar de la programacin orientada a objetos. Supone un paso ms en la separacin entre la interfaz y la implementacin. Permite mejorar la organizacin del cdigo y simplificar la programacin. Adems, aumenta las posibilidades de extensin y evolucin de los programas. Est directamente relacionado con las jerarquas de clase. Bsicamente, nos va a permitir que unos objetos tomen el comportamiento de objetos que se encuentran ms abajo en la jerarqua, aumentando enormemente la expresividad del lenguaje. En definitiva, se trata de la posibilidad de que la identificacin del tipo de un objeto se haga en tiempo de ejecucin en vez de en tiempo de compilacin. De esta manera, se pueden, incluso, construir estructuras en las que cada uno de sus elementos es de un tipo diferente. Herencia: La herencia es un proceso mediante el cual un objeto puede adquirir las propiedades de otro objeto. Esta tambin puede ser vista como una propiedad que permite que los objetos sean creados a partir de otros ya existentes, obteniendo caractersticas (mtodos y atributos) similares a los ya existentes. Es la relacin entre una clase general y otra clase mas especifica. Es un mecanismo que nos permite crear clases derivadas a partir de clase base, Nos permite compartir automticamente mtodos y datos entre clases subclases y objetos
Composicin Es una relacin que representa a objetos compuestos por otros objetos. El objeto en el nivel superior de la jerarqua es el todo y los que estn en los niveles inferiores son sus partes o componentes. Un componente es parte esencial de una entidad. La relacin es fuerte al punto que si el componente es eliminado o desaparece, la clase mayor (el todo) deja de existir. En informtica, la composicin de objetos o object composition (que no debe ser confundida con la composicin de funciones) es una forma de combinar objetos o tipos de datos simples en complejos. Las composiciones son fundamentales en muchas estructuras de datos bsicas como las listas enlazadas, los rboles binarios, como tambin en los objetos utilizados en la programacin orientada a objetos. En los lenguajes de programacin, la composicin de objetos es usualmente expresada por medio de referencias de un objeto a otro; dependiendo del lenguaje, esas referencias pueden ser conocidas como campos, miembros, propiedades o atributos y la composicin resultante puede ser una estructura, tupla, tipo definido por el usuario o registro. Agregacin Una agregacin es una relacin que representa a los objetos compuestos. Un objeto es compuesto si se compone a su vez de otros objetos. La agregacin de objetos permite describir modelos del mundo real que se componen de otros modelos, que a su vez se componen de otros modelos. Este es un concepto que se utiliza para expresar tipos de relaciones entre objetos parte-de (part-of) o tiene-un (has-a). El objeto componente, tambin a veces denominado continente o contenedor, es un objeto agregado que se compone de mltiples objetos. Una relacin del tipo "tener un" entre clases. Cuando la clase contenida no existe independientemente de la clase que la contiene se denomina agregacin por valor y adems implica contenido fsico, mientras que si existe independientemente y se accede a ella indirectamente, es agregacin por referencia. Dependencia La dependencia de clases es un concepto de la programacin orientada a objetos que nos indica la relacin existente entre dos clases. Como su nombre indica nos est diciendo que una clase depende de otra ara realizar su funcionamiento. Cuando trabajamos con clases es una buena prctica que una clase realice una nica funcin. De manera que las clases que deban realizar funciones complejas estarn formadas a partir de una asociacin de diversas pequeas clases en las que delegar cada funcionalidad en concreto. Realizacin Es una relacin de contrato con otra clase. Se la utiliza para implementar una interfaz. En lenguajes como java o php utilizamos la palabra reservada implements Generalmente cuando no estamos seguros si algo es una interfaz o una clase abstracta, porque dibujaron los tag que hacen referencias a las interfaces, debemos ver la relacin para saber. Tarjetas CRC Las tarjetas CRC sirven para poder disear el sistema como un equipo, se deben cumplir tres requisitos: Cargo o Clase, Responsabilidad y Colaboracin (CRC). Las tarjetas CRC permitirn desprenderse del mtodo de trabajo basado en procedimientos y trabajar con una metodologa basada en objetos, permiten tambin que el equipo completo contribuya en la tarea del diseo. Las tarjetas CRC (clase, responsabilidad y colaboracin) son una metodologa para el diseo de software orientado por objetos creada por Kent Beck y Ward Cunningham. Es una tcnica para la representacin de sistemas OO, para pensar en objetos. Son un puente de comunicacin entre diferentes participantes. Y sus principales desventajas son la lentitud y los roces. Se recomienda un grupo de trabajo con representantes de las distintas partes. Tamao recomendable de cinco a seis personas: variedad de estilos y no demasiadas divagaciones. Recomendacin de equipo: 1 2 usuarios, 2 analistas, 1 diseador y 1 moderador. La lluvia de ideas es una buena prctica para sugerir cmo rellenar las tarjetas Permite ver las clases como algo ms que depositorio de datos, sino conocer el comportamiento de cada una en un alto nivel. Sujeto: Del latn subiectus, un sujeto es una persona innominada. El concepto se usa cuando no se sabe el nombre de la persona o cuando no se quiere declarar acerca de quin se est hablando. Por ejemplo: El sujeto ingres por la puerta trasera del local y amenaz a los presentes con un arma de fuego, Ese sujeto no me despierta la menor confianza, Oficial, tiene que ayudarme: ese sujeto de camisa blanca me rob la cartera. Dicho de otra manera el sujeto de una oracin corresponde a la persona animal o cosa que realiza la accin del verbo por ejemplo: Juan habla. En este ejemplo, el sujeto es Juan, pues es quien habla, es decir, el que realiza la accin de hablar Para identificar el sujeto de una oracin preguntaremos quin? O quines? al verbo de la oracin. La respuesta que obtengamos, ser el sujeto. Verbo: El verbo es una palabra, con estructura bimembre, que indica accin (comer, jugar, correr, saltar, pensar, dibujar), estado de nimo (rer, llorar, parecer, suspirar, soar) o acontecimientos de la naturaleza (nevar, llover, temblar) En la oracin, el verbo funciona como el ncleo del predicado. En la terminacin verbal podemos identificar el tiempo en que se realiza la accin, el modo en que se realiza, la persona que realiza y el nmero. La conjugacin de un verbo significa todas las formas que el mismo puede adquirir como resultado de la combinacin de la raz verbal y las diferentes desinencias que puede tener. En la lengua espaola existen tres grandes modelos de conjugacin de los verbos. Los mismos son:
Primera conjugacin: Formado por los verbos cuyos infinitivos terminan en ar: Ejemplos: amar, desayunar, trabajar, cantar, encontrar.
Segunda conjugacin: verbos cuyos infinitivos termina en er. Ejemplos: temer, correr, querer, comprender, satisfacer.
Objeto directo El objeto directo es la parte de la oracin que expresa la persona, animal o cosa sobre la cual recae directamente la accin del verbo, y responde a las preguntas: qu?, quin? o a quines? Por ejemplo, en la oracin Elisa comi pastel, hay un sujeto: Elisa, quien realiza la accin expresada por el verbo comi. Si nos preguntamos qu comi?, la respuesta ser pastel; en este caso pastel es el objeto directo, porque sobre l recae directamente la accin del verbo comer. Si la oracin fuera: Elisa comi, la idea que en ella se expresa quedara incompleta y enseguida nos preguntaramos qu? Para este verbo, al igual que para muchos otros, es necesario que la accin se dirija o transite a un objeto (o persona o animal)
Casos de uso Los diagramas de casos de uso son unos de los cinco tipos de diagramas de UML que se utilizan para el modelado de los aspectos dinmicos de un sistema (los otros cuatros tipos son los diagramas de actividades, de estados, de secuencia y de colaboracin). Los diagramas de casos de uso son importantes para modelar el comportamiento de un sistema, subsistema o una clase. Cada uno muestra un conjunto de casos de uso, actores y sus relaciones. Los diagramas de caso de uso son importantes para visualizar, especificar y documentar el comportamiento de un elemento. Estos diagramas facilitan que los sistemas, subsistemas o clases sean abordables y comprensibles, al presentar una vista externa de cmo pueden utilizarse estos elementos en un contexto dado. Los diagramas de casos de uso tambin son importantes, para probar sistemas ejecutables a travs de ingeniera directa y para comprender sistemas ejecutables a travs de ingeniera inversa.
Los diagramas de casos de uso pueden contener notas y restricciones. Tambin pueden contener paquetes, que se emplean para agrupar elementos del modelo en partes mayores. Ocasionalmente, se pueden incluir instancias de casos de uso en los diagramas, especialmente cuando se quiera visualizar un sistema especfico en ejecucin.
Los casos de uso son una tcnica para especificar el comportamiento de un sistema: Un caso de uso es una secuencia de interacciones entre un sistema y alguien o algo que usa alguno de sus servicios. Todo sistema de software ofrece a su entorno aquellos que lo usan una serie de servicios. Un caso de uso es una forma de expresar cmo alguien o algo externo a un sistema lo usa. Cuando decimos alguien o algo hacemos referencia a que los sistemas son usados no slo por personas, sino tambin por otros sistemas de hardware y software. Por ejemplo, un sistema de ventas, si pretende tener xito, debe ofrecer un servicio para ingresar un nuevo pedido de un cliente. Cuando un usuario accede a este servicio, podemos decir que est ejecutando el caso de uso ingresando pedido.
Diagrama de casos de uso El diagrama de casos de uso representa la forma en cmo un Cliente (Actor) opera con el sistema en desarrollo, adems de la forma, tipo y orden en como los elementos interactan (operaciones o casos de uso). Un diagrama de casos de uso acta como foco en la descripcin de los requisitos del usuario. En l se describen las relaciones entre los requisitos, los usuarios y los componentes primarios. No se describen en detalle los requisitos, ya que esto puede hacerse en otros diagramas o documentos que pueden vincularse a cada caso de uso. Diagrama de clases: Los diagramas de clases son diagramas de estructura esttica que muestran las clases del sistema y sus interrelaciones incluyendo herencia, agregacin, asociacin, entre otros. Los diagramas de clase son el pilar bsico del modelado con UML, siendo utilizados tanto para mostrar lo que es sistema puede hacer, como para mostrar cmo puede ser construido. Los diagramas de clase son los diagramas ms comunes en el modelado de sistemas orientados a objetos. Un diagrama de clase muestra un conjunto de clases, interfaces, y colaboraciones y sus relaciones entre ellos. Los diagramas de clase son importantes no solo para la visualizacin, especificacin y documentacin del modelo estructural, sino tambin para la construccin de sistemas ejecutables. Ingeniera hacia adelante e ingeniera inversa. Estos diagramas de clases tambin pueden verse como un conjunto de clases, interfaces, y colaboraciones y sus relaciones. Grficamente un diagrama de clase es una coleccin de vrtices y arcos.
CONCLUSION Se puede concluir del siguiente informe que un modelo no es ms que plasmar la idea inicial de lo que se quiere llevar a cabo y construir o disear. La abstraccin es la propiedad de la programacin orientada a objetos que permite al diseador a programador plasmar una clase u objeto desde la perspectiva que sea acorde con el problema o situacin que se quiera solucionar, los datos abstractos son un tipo de dato que es definido por el usuario y estos se diferencian de los datos que vienen integrados en los entornos ya que como se menciono anteriormente estos son creados y definidos por el mismo programador, la modularidad no es ms que dividir un programa en partes ms pequeas y manejables para que as de esta manera el programa pueda ser modificado, actualizado o corregido con ms facilidad sin afectar el resto del mismo. Las clases son moldes o prototipos que permitirn al programador instanciar objetos y de esta manera poder hacer que los programas interacten y empiecen su funcionamiento, un objeto es lo que resulta de la instanciacin y puesta en marcha de una clase, adems estos objetos poseen mtodos y caractersticas. El encapsulamiento es la caracterstica de la POO que permite que los atributos de una clase sean accedidos solo por los mtodos de esa misma clase y que no puedan ser accedidos por otras clases ajenas al mismo. La sobre carga es la caracterstica que permite utilizar un mismo identificador y usarlo de distintas maneras en el mismo programa, La herencia es un proceso mediante el cual un objeto puede adquirir o heredar las propiedades de otro objeto. La composicin es una relacin que representa a objetos compuestos por otros objetos. Una agregacin es una relacin que representa a los objetos compuestos. La realizacin es una relacin de contrato con otra clase y se la utiliza para implementar una interfaz. Una ficha o tarjeta CRC (clase, responsabilidad y colaboracin) es una metodologa para el diseo de software orientado por objetos creada por Kent Beck y Ward Cunningham. El sujeto de una oracin corresponde a la persona animal o cosa que realiza la accin. El verbo es una palabra, con estructura bimembre, que indica accin, estado de nimo o acontecimientos de la naturaleza.