Programacion Orientada A Objetos

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Programacion Orientada A Objetos as PDF for free.

More details

  • Words: 1,820
  • Pages: 8
PROGRAMACION ORIENTADA A OBJETOS 1. CARACTERISTICAS: 1.1 ABSTRACCION Permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar. Ignorancia Selectiva •

La abstracción nos ayuda a trabajar con cosas complejas



Se enfoca en lo importante



Ignora lo que no es importante (simplifica)

Una clase es una abstracción en la que: •

Se enfatizan las características relevantes



Se suprimen otras características

Una clase debe capturar una y solo una abstracción clave [1] 1.2 HERENCIA La herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene las atributos y métodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a los atributos y métodos heredados. Esta particularidad permite crear una estructura jerárquica de clases cada vez más especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases que ofrecen una base que puede especializarse a voluntad (la compañía que vende estas clases tiende a proteger las datos miembro usando la encapsulación). [2] Cabe aclarar además que hay dos tipos de herencias: -

Herencia Simple: una clase derivada puede heredar sólo de una clase base (los lenguajes .NET soportan este tipo de herencia)

-

Herencia Múltiple: una clase derivada puede heredar de una o más clases base (C++ es un ejemplo de lenguaje que soporta este tipo de herencia). [3]

1.3 ENCAPSULAMIENTO El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento que veremos a continuación. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesará será conocer qué hace la Clase pero no será necesario saber cómo lo hace.[4]

 Principio que establece que los atributos propios de un objeto no deben ser visibles desde otros objetos -

Deben ser declarados como privados

 Permite abstraer al resto del mundo de la complejidad de la implementación interna  Permite exponer el estado del objeto sólo a través del comportamiento que le hayamos definido mediante miembros públicos  ¿Por qué es útil? -

Punto de Control/Validación

-

Mejor respuesta ante los Cambios[5]

1.4 POLIMORFISMO Es la propiedad que tienen los objetos de permitir invocar genéricamente un comportamiento (método) cuya implementación será delegada al objeto correspondiente recién en tiempo de ejecución. El polimorfismo tiende a existir en las relaciones de herencia, pero no siempre es así. [6] Polimorfismo quiere decir "un objeto y muchas formas". Esta propiedad permite que un objeto presente diferentes comportamientos en función del contexto en que se encuentre. Por ejemplo un método puede presentar diferentes implementaciones en función de los argumentos que recibe, recibir diferentes números de parámetros para realizar una misma operación, y realizar

diferentes acciones dependiendo del nivel de abstracción en que sea llamado.[7]

1.5 RELACIONES Permiten que el objeto se inserte en la organización y están formadas esencialmente por punteros a otros objetos. 1.5.1 RELACION DE ASOCIACION: -

Una asociación es una conexión entre dos clases que representa una comunicación. Una asociación puede tener nombre La comunicación puede ser tanto uni como bi-direccional (por defecto) La multiplicidad es el número de instancias que participan en una asociación

Ejemplo: -

Una Persona es Dueña de un Vehículo Un Vehículo Pertenece a una Persona Persona

-dueño

Vehiculo

1.5.1.1 RELACION DE AGREGACION -

-

La agregación es una forma especial de asociación donde un todo se relaciona con sus partes o También se conoce como “una parte de” o una relación de contención Ejemplo: o Una Puerta es una parte de un Vehículo o El Vehículo es azul, la Puerta es Azul o Mover el Vehículo implica mover la Puerta Vehiculo

Puerta

-color +Mover()

[8] 1.5.1.1 RELACION DE COMPOSICION Dos objetos están estrictamente limitados por una relación complementaria. Uno no se entiende sin el otro, esto es, cada uno por separado no tiene

sentido. El tiempo de vida de cada uno de los objetos es dependiente.

1.5.2 RELACION DE HERENCIA Donde un objeto adquiere las propiedades y métodos de un objeto padre. Se representa mediante un triángulo. La relación de dependencia que se representa mediante una línea discontinua. Utilizada fundamentalmente para la relación entre paquetes. [9]

2. ELEMENTOS 2.1 CLASE Una clase es una descripción de un conjunto de objetos casi idénticos. Una clase consta de métodos y datos que resumen las características comunes de los objetos, incluyendo una descripción de cómo crear un nuevo objeto de la clase. En otras palabras, las clases contienen los anteproyectos para crear objetos.[10]  Una clase es una descripción de un grupo de objetos con: o Propiedades en común (atributos) o Comportamiento similar (operaciones) o La misma forma de relacionarse con otros objetos (relaciones) o Una semántica en común (significan lo mismo)  Una clase es una abstracción que: o Enfatiza las características relevantes o Suprime otras características (simplificación)  Un objeto es una instancia de una clase 2.1.1 METODOS Los métodos de clase son aquellos que no necesitan que una clase se instancie para que los métodos de dicha clase puedan ser invocados, es decir, no es necesario crear un objeto para invocar sus métodos.[11] 2.1.1.1 SOBRECARGA (OVERLOAD)

Una de las características que también nos ofrece los lenguajes orientados a objetos es la posibilidad de definir varias funciones de las clases con un mismo nombre, de esta forma, podremos crear versiones diferentes, por ejemplo para que reciban argumentos de distintos tipos sin necesidad de cambiarle el nombre. Supongamos que queremos hacer una función que realice cualquier tipo de operación sobre dos valores numéricos, sería lógico pensar que si esos valores son de tipo entero, el resultado que devuelva la función también debería ser de tipo entero, en caso de que los valores a usar en la operación son de tipo flotante, el resultado podría devolverlo de ese mismo tipo. En los lenguajes no orientado a objetos, tendríamos que crear dos funciones con nombres diferentes, por ejemplo: sumaInt y sumaFloat. Pero la sobrecarga nos permite crear dos funciones que se llamen suma y el compilador utilizará la adecuada según el tipo de datos que pasemos como argumentos. El único requisito para poder crear sobrecargas de métodos es que las diferentes versiones se diferencien en los argumentos, ya sea porque sean de diferentes tipos de datos o porque el número de argumentos usados sea diferente, de esa forma el compilador no tendrá ningún problema en saber cual debe usar en cada ocasión. La sobrecarga la podemos aplicar tanto a los constructores como a cualquier otro método de la clase.[12] 2.1.1.2 SOBRE ESCRITURA DE MÉTODOS • La sobre escritura de métodos es una característica más de la herencia en Java. Es decir, en Java las nuevas clases se pueden definir extendiendo clases ya existentes. Aquí surgen los conceptos de Subclase que sería la clase obtenida, y superclase, que sería la clase que está siendo extendida, tal como también ya se ha explicado. • Cuando una nueva clase se extiende desde otra que ya existía, todas las variables y métodos que son miembros de la superclase (y todos aquellos miembros de los antecesores de la superclase) serán también miembros de la subclase.[13] 2.1.2 ATRIBUTOS Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables. Las variables de instancia también denominados miembros dato, son declaradas en la clase pero sus valores son fijados y cambiados en el objeto. Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los automóviles.[14]

2.1.3 PROPIEDADES Las propiedades permiten implementar el encapsulamiento, impidiendo el acceso directo a los atributos de una clase y proporcionando un mecanismo para poder obtener y asignar sus valores. Nótese que como VB.NET no distingue entre mayúsculas y minúsculas no es posible utilizar para el miembro de la clase el mismo nombre que para la Propiedad. Sin embargo, es importante que ambos tengan nombres significativos para la lógica de la aplicación. No se recomienda el agregado de prefijos o sufijos a los nombres.[15]

2.2 OBJETOS La programación orientada a objetos consiste en ordenar datos en conjuntos modulares de elementos de información del mundo real (denominado un dominio). Estos elementos de datos se llaman objetos. Estos datos se agrupan de acuerdo a las características principales del mundo real de estos elementos (tamaño, color, etc.). El enfoque de objetos es una idea que se ha probado con creces. Simula fue el primer lenguaje de programación en implementar el concepto de clases en 1967. En 1976, Smalltalk implementó los conceptos de encapsulación, agrupación y herencia (los conceptos principales de la programación orientada a objetos). Por otra parte, se han implementado varios lenguajes de programación orientada a objetos a escala global (Eiffel, Objective C, Loops, etc.). La dificultad que presenta este enfoque es la creación de una representación abstracta, en forma de objetos, de entidades que realmente existen (perro, auto, lámpara eléctrica...) o que existen virtualmente (seguridad social, clima...). [16] 2.3 INTERFACES Una interface es una clase sin datos miembro que solo está hecha de funciones sin implementación (prototipos de funciones sin cuerpo). Cualquier clase que derive de una interface debe implementar el cuerpo de las funciones de la interface.

Las interfaces pueden ser descriptas como abstractas porque siempre requieren de una implementación. Por ser abstractas las interfaces tienen mayor parecido a lo que hacen las plantillas que a lo que hacen las clases. A diferencia de las clases, no pueden nunca ser usadas tal cual, solo tienen significado en el contexto de la herencia. Dado que las interfaces carecen de

una implementación solo puede actuar como un modelo para la creación de una clase derivada.[17]

WEBGRAFIA [1] http://www.mslatam.com/latam/msdn/comunidad/dce2005 [2] http://es.kioskea.net/contents/poo/heritage.php3 [3] http://www.mslatam.com/latam/msdn/comunidad/dce2005 [4] http://java.ciberaula.com/articulo/tecnologia_orientada_objetos/ [5], http://www.mslatam.com/latam/msdn/comunidad/dce2005 [6] http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_1.htm [7], http://www.mslatam.com/latam/msdn/comunidad/dce2005 [8], http://www.mslatam.com/latam/msdn/comunidad/dce2005

[9] http://tensores.blogspot.com/2007/08/relacin-de-agregacin-vscomposicin.html [10] http://www.pol.una.py/archivos/asi/paradigmas/programacion_orientada_objeto s.pdf [11] http://sophia.javeriana.edu.co/~lfranky/poo/sem04-c2AtributosMetodosJava.pdf [12]http://www.elguille.info/NET/dotnet/POO_VB_NET_tp6.htm [13]http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.ht m [15] http://www.mslatam.com/latam/msdn/comunidad/dce2005

[16] http://es.kioskea.net/contents/poo/objet.php3 [17]http://www.clubdesarrolladores.com/articulos/mostrar/54-la-programacionorientada-a-objetos-oop-en-php-5

Related Documents