Introduccion 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 Introduccion Orientada A Objetos as PDF for free.

More details

  • Words: 2,613
  • Pages: 10
CARACTERISTICAS O PILARES DE LA INTRODUCCION ORIENTADA A OBJETOS 1. ABSTRACCION: Ignorancia selectiva: • La abstracción nos ayuda a trabajar con cosas complejas • Se enfoca en lo importante • Ignora lo que no es importante Una clase es una abstracción en la que: • Se enfatizan las características relevantes • Se suprimen las características Una clase debe capturar una y solo una abstracción clave El proceso de abstracción 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. (1) *ABSTRACCION: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. (2) 2. ENCAPSULAMIENTO: 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 del la implementación interna Permite exponer el estado del objeto solo 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

Otro de los pilares de la orientación a objetos es el encapsulamiento. Para entender este principio veamos un ejemplo práctico: Como todos ustedes se imaginarán, no es necesario ser mecánico de automóviles para poder manejar uno. Si el comprender cómo es el funcionamiento interno del motor, la dirección, los frenos, los cilindros, etc. fuera requisito para poder manejar un automóvil, serían muchos menos los conductores certificados y sería mucho más difícil aprender a manejar. Es más, si a cualquier automotriz se le ocurriera cambiar el funcionamiento interno de alguna de estas cosas, probablemente todos los conductores tendrían que volver a aprender cómo funciona el nuevo componente interno para poder seguir manejando sin problemas. Por suerte esto no es así, ya que la complejidad interna del funcionamiento de un automóvil está escondida de los conductores (usuarios). Para poder interactuar con el automóvil, éste nos expone una interfaz sencilla y definida, que no cambia nunca por más que cambien internamente el funcionamiento de sus componentes. Esta interfaz está compuesta por el volante, los pedales, la palanca de cambios, el asiento, etc. De esta forma decimos que el automóvil ha encapsulado su complejidad interna. (1) *ENCAPSULAMIENTO: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente. (2) *FORMAS DE ENCAPSULAR: 1. Estándar (Predeterminado) 2. Abierto: Hace que el miembro de la clase pueda ser accedido desde el exterior de la Clase y cualquier parte del programa. 3. Protegido: Solo es accesible desde la Clase y las clases que heredan (a cualquier nivel). 4. Semi cerrado : Solo es accesible desde la clase heredada 5. Cerrado: Solo es accesible desde la Clases.

En el encapsulamiento hay analizadores que pueden ser semánticos y sintácticos. (3) 3. RELACIONES:

Todo sistema abarca muchas clases y objetos Los objetos contribuyen en el comportamiento de un sistema colaborando entre si • La colaboración se logra a través de las relaciones Existen dos tipos principales de relaciones: • Asociación • Agregación *RELACIONES DE ASOCIACION: Una asociación es una conexión entre dos clases que representan una comunicación • Una asociación puede tener nombre • La comunicación puede ser tanto uní como bidireccional (por defecto) • La multiplicidad es el numero 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 *RELACIONES DE AGREGACION: La agregación es una forma especial de asociación donde un todo se relaciona con sus partes • También se conoce como “una parte de” o una relación de contención Ejemplo: Una puerta es una parte de un vehículo, el vehículo es azul, la puerta es azul, mover el vehículo implica mover la puerta (1) *RELACIONES

Las relaciones entre objetos son, precisamente, los enlaces que permiten a un objeto relacionarse con aquellos que forman parte de la misma organización. Las hay de dos tipos fundamentales: -Relaciones jerárquicas. Son esenciales para la existencia misma de la aplicación porque la construyen. Son bidireccionales, es decir, un objeto es padre de otro cuando el primer objeto se encuentra situado inmediatamente encima del segundo en la organización en la que ambos

forman parte; asimismo, si un objeto es padre de otro, el segundo es hijo del primero. Una organización jerárquica simple puede definirse como aquella en la que un objeto puede tener un solo padre, mientras que en una organización jerárquica compleja un hijo puede tener varios padres). -Relaciones semánticas. Se refieren a las relaciones que no tienen nada que ver con la organización de la que forman parte los objetos que las establecen. Sus propiedades y consecuencia solo dependen de los objetos en sí mismos (de su significado) y no de su posición en la organización. (5) 4. HERENCIA: Es una relación entre clases en el cual una clase comparte la estructura y el comportamiento definido en otra clase (Grady Booch) Cada clase que hereda de otra posee: • Los atributos de la clase base además de los propios • Soporta todos o algunos métodos de la clase base Una subclase hereda de la clase base Herencia “es-un” : Herencia real, donde la subclase es un tipo especifico de la superclase • Un cuadrado es un rectángulo • Un perro es un mamífero • Un automóvil es un vehículo a motor El propósito principal de la herencia es el de organizar mejor las clases que componen una determinada realidad, y poder agruparlas en función de atributos y comportamientos comunes a la vez que cada una se especializa según sus particularidades. 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). (1)

*HERENCIA: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple. (2) 5. POLIMORFISMO: Es la propiedad que tienen los objetos de permitir invocar genéricamente un comportamiento 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í Ejemplo: • La definición del método reside en la clase base • La implementación del método reside en la clase derivada • La invocación es resuelta al momento de ejecución Aquí tenemos un ejemplo práctico de la implementación de polimorfismo en un diseño orientado a objetos. Por un lado tenemos la clase base “Transporte”, que posee los métodos “Avanzar” y “Frenar”. Por otro lado tenemos tres clases distintas derivadas de la clase “Transporte”, cada una de las cuales podrá sobrescribir la implementación de los métodos Avanzar y Frenar para que su comportamiento sea más específico. Ahora bien, como todas heredan de la misma clase base, las clases derivadas pueden ser tratadas genéricamente. Esto quiere decir que podríamos tener un array que almacene objetos de tipo Transporte, y recorrerlo luego para llamar al método “Avanzar” de cada uno. De esta forma, en tiempo de codificación es imposible saber a qué método “Avanzar” se está llamando en realidad (al del Auto? Al del caballo? Al del transbordador?), sino que esta decisión es tomada en tiempo de ejecución en base al tipo particular de objeto que esté instanciado. En pseudocódigo, esto se escribiría de la siguiente manera: Definir arrayTransportes (3) de tipo Transporte

– – –

arrayTransportes(1) = nuevo Automóvil() //Un automóvil ES UN TIPO DE transporte arrayTransportes(2) = nuevo Transbordador() //Un Transbordador ES UN TIPO DE transporte arrayTransportes(3) = nuevo Caballo() //Un Caballo ES UN TIPO DE transporte Por Cada (Transporte t en arrayTransportes) - t.Avanzar() - t.Frenar() Fin (1)

*POLIMORFISMO: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. (2) Clasificación: Se puede clasificar el polimorfismo en dos grandes clases: •

Polimorfismo dinámico (o polimorfismo paramétrico) es aquél en el que el código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que se trabaja. Así, puede ser utilizado a todo tipo de datos compatible.



Polimorfismo estático (o polimorfismo ad hoc) es aquél en el que los tipos a los que se aplica el polimorfismo deben ser explicitados y declarados uno por uno antes de poder ser utilizados. (4) CLASES DE LA INTRODUCCION ORIENTADA A OBJETOS

*¿QUÉ

ES UNA CLASE?

Una clase es una descripción de un grupo de objetos con: • Propiedades en común (atributos) • Comportamiento similar (operaciones) • La misma forma de relacionarse con otros objetos (relaciones)

• Una semántica en común (significan lo mismo) Una clase es una abstracción que: • Enfatiza las características relevantes • Suprime otras características (simplificación) Un objeto es una instancia de una clase La forma más sencilla de entender el concepto de clase es si la vemos como una agrupación de objetos con características similares. Por ejemplo, un auto ES UN tipo particular de vehículo motorizado, con lo cual dentro de su comportamiento podemos encontrar “arrancar” y “frenar”, entre otros. Ahora bien, una motocicleta también ES UN vehículo motorizado, y tiene dentro de su comportamiento “arrancar” y “frenar”. El conjunto de atributos también es compartido entre una motocicleta y un automóvil, aunque sus valores no coincidan necesariamente. Por ejemplo, ambos tienen el atributo “cantidad de ruedas”, sólo que el auto tiene 4 y la motocicleta 2. OBJETOS Y CLASES: Una clase es una definición abstracta de un objeto • Define la estructura y el comportamiento compartidos por los objetos • Sirve como modelo para la creación de objetos Los objetos pueden ser agrupados en clases Otra forma útil de ver una clase es como una plantilla, plano o molde de un conjunto de entidades a partir del cual se crearán luego instancias particulares (los objetos). La interacción de las entidades en el mundo real se produce entre objetos, no entre clases. Las clases no tienen “vida” en el mundo real, los objetos sí. Para poder interactuar con alguna clase deberemos crear una instancia particular de ella, con un conjunto de valores definidos para los atributos. A este proceso se lo conoce como “instanciación de un objeto”. Ejemplo: • Clase: Curso • Estado (Atributos) – Nombre – Ubicación – Días Ofrecidos – Horario de Inicio – Horario de Término



Comportamiento (Métodos) – Agregar un Alumno – Borrar un Alumno – Entregar un Listado del Curso – Determinar si está Completo (1)

*CLASES: Una clase es una pieza de código en la que podemos definir una serie de datos y al mismo tiempo unos métodos (funciones o procedimientos) que nos permitirán acceder a esos datos. Cuando definimos una clase, lo que estamos

haciendo es definir una plantilla, a partir de la cual podemos crear objetos en la memoria. Por tanto, la clase es el molde con el cual podemos crear nuevos objetos. (6) *PROPIEDADES: Todo objeto puede tener cierto número de propiedades,

cada una de las cuales tendrá, a su vez, uno o varios valores. En OOP, las propiedades corresponden a las clásicas "variables" de la programación estructurada. Son, por lo tanto, datos encapsulados dentro del objeto, junto con los métodos (programas) y las relaciones (punteros a otros objetos). Las propiedades de un objeto pueden tener un valor único o pueden contener un conjunto de valores más o menos estructurados (matrices, vectores, listas, etc.). Además, los valores pueden ser de cualquier tipo (numérico, alfabético, etc.) si el sistema de programación lo permite. Pero existe una diferencia con las "variables", y es que las propiedades se pueden heredar de unos objetos a otros. En consecuencia, un objeto puede tener una propiedad de maneras diferentes: -Propiedades propias. Están formadas dentro de la cápsula del objeto. -Propiedades heredadas. Están definidas en un objeto diferente, antepasado de éste (padre, “abuelo", etc.). A veces estas propiedades se llaman propiedad miembro porque el objeto las posee por el mero hecho de ser miembro de una clase. (7) * Propiedades en clases: Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos. (8)

*METODOS: Una operación que realiza acceso a los datos. Podemos definir método como un programa procedimental o procedural escrito en cualquier lenguaje, que está asociado a un objeto determinado y cuya ejecución sólo puede desencadenarse a través de un mensaje recibido por éste o por sus descendientes. Son sinónimos de 'método' todos aquellos términos que se han aplicado tradicionalmente a los programas, como procedimiento, función, rutina, etc. Sin embargo, es conveniente utilizar el término 'método' para que se distingan claramente las propiedades especiales que adquiere un programa en el entorno OOP, que afectan fundamentalmente a la forma de invocarlo (únicamente a través de un mensaje) y a su campo de acción, limitado a un objeto y a sus descendientes, aunque posiblemente no a todos. Si los métodos son programas, se deduce que podrían tener argumentos, o parámetros. Puesto que los métodos pueden heredarse de unos objetos a otros, un objeto puede disponer de un método de dos maneras diferentes: -Métodos propios. Están incluidos dentro de la cápsula del objeto. -Métodos heredados. Están definidos en un objeto diferente, antepasado de éste (padre, “abuelo", etc.). A veces estos métodos se llaman método miembro porque el objeto los posee por el mero hecho de ser miembro de una clase. (7) * Métodos en las clases: Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto. (8) INFOGRAFIA • • • • • •

Introducción orientada a objetos Estrella cero (1) http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_obje tos (2) http://es.wikipedia.org/wiki/Encapsulamiento_(programaci%C3%B3 n_orientada_a_objetos) (3) http://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_or ientada_a_objetos) ((4) http://www.monografias.com/trabajos/objetos/objetos.shtml (5) http://www.elguille.info/NET/dotnet/POO_VB_NET_tp6.htm (6)

• •



http://www.monografias.com/trabajos/objetos/objetos.shtml ((7) http://www.desarrolloweb.com/articulos/499.php (8)

Related Documents