Características programacion orientada a objetos (POO)



Comments



Description

Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas) DCE0_FundamentosDeProgramacion DCE0_ProgramacionOO_C#_VBNETCARACTERÍSTICAS POO ABSTRACCIÓN 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 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. HERENCIA Es una relación entre clases en la cual una clase comparte la estructura y 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 de los métodos de la clase base Una subclase hereda de una clase base La herencia (en la POO) es una potente arma que podemos utilizar para varias cosas, entre ellas, por ejemplo, ahorrar líneas de código heredando de otras clases, compartiendo variables miembro o función miembro. También podemos generar superclases abstractas para definir comportamientos genéricos que necesitemos. La herencia es una de las características que más se hace notar a la hora de escribir código, o reutilizar código de otros programadores. (1) ENCAPSULAMIENTO Principio que establece que los atributos propios de un objeto no deben ser visibles desde otros objetos  Deben ser declarados como privados (1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacionorientada-a-objetos-herencia.html (2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas) DCE0_FundamentosDeProgramacion DCE0_ProgramacionOO_C#_VBNET 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 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 como 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. 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í Ejemplo: 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? (1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacionorientada-a-objetos-herencia.html (2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas) DCE0_FundamentosDeProgramacion DCE0_ProgramacionOO_C#_VBNET 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 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 ASOCIACIÓN 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: (1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacionorientada-a-objetos-herencia.html (2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas) DCE0_FundamentosDeProgramacion DCE0_ProgramacionOO_C#_VBNET  Una Persona es Dueña de un Vehículo  Un Vehículo Pertenece a una Persona Persona -dueño Vehiculo Esta se divide: • • Composición Agregación RELACIÓN DE COMPOSICIÓN • (2) Agregar o componer varios objetos para obtener una mayor funcionalidad ! • Un objeto se puede construir a partir de otros objetos RELACIONES DE AGREGACIÓN 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)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacionorientada-a-objetos-herencia.html (2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas) DCE0_FundamentosDeProgramacion DCE0_ProgramacionOO_C#_VBNET Vehiculo -color +Mover() Puerta ELEMENTOS DE LA POO (PROGRAMACIÓN ORIENTADA A OBJETOS) En la actualidad, el paradigma de orientación a objetos es sin lugar a dudas el más utilizado por las empresas de todo el mundo a la hora de encarar desarrollos de aplicaciones de software, ya que permite representar de manera relativamente simple modelos y realidades muy complejas y esto hace que el software sea más fácil de programar, comprender y mantener. Por otra parte, luego de más de 20 años de investigación y desarrollo sobre Orientación a Objetos pareciera ser que la industria se ha dado cuenta que el paradigma está lo suficientemente maduro como para dar soporte a las aplicaciones más importantes del mundo actual. ¿Qué es un objeto? Informalmente, un objeto representa una entidad del mundo real Entidades Físicas  (Ej.: Vehículo, Casa, Producto) Entidades Conceptuales  (Ej.: Proceso Químico, Transacción Bancaria) Entidades de Software  (Ej.: Lista Enlazada, Interfaz Gráfica) Definición Formal (Rumbaugh):  “Un objeto es un concepto, abstracción o cosa con un significado y límites claros en el problema en cuestión” Un objeto posee (Booch):  Estado  Comportamiento  Identidad En resumen un objeto es una abstracción de la realidad que tiene un significado concreto y claro para el problema que se está modelando. ¿QUÉ ES UNA CLASE? Una clase es una descripción de un grupo de objetos con: (1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacionorientada-a-objetos-herencia.html (2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas) DCE0_FundamentosDeProgramacion DCE0_ProgramacionOO_C#_VBNET  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 METODOS Existe una clasificación de los métodos según su objetivo: 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. Un método NO es una función. Una función tiene 0 o más argumentos, el método tiene SIEMPRE 1 o más. Ese argumento obligatorio Con el nombre de una función disponemos de una implementación, con un método tenemos la posibilidad de una implementación por objeto (empleando el mismo nombre). (1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacionorientada-a-objetos-herencia.html (2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas) DCE0_FundamentosDeProgramacion DCE0_ProgramacionOO_C#_VBNET SOBRECARGA DE MÉTODOS • La sobrecarga de métodos es la creación de varios métodos con el mismo nombre pero con diferentes firmas y definiciones. SOBRE ESCRITURA DE MÉTODOS • La sobreescritura 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. • ATRIBUTOS Características de cada objeto o propiedades del mismo 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. Mensajes (Comentarios) C# soporta 3 tipos de comentarios string nombre = “Juan”; // Comentario de una sola línea /* Comentario con mas de una línea*/ /// <summary> /// Documentación XML que puede ser consumida por otras /// herramientas para mostrar ayuda dinámica o generar /// documentación en varios formatos /// </summary> (1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacionorientada-a-objetos-herencia.html (2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas) DCE0_FundamentosDeProgramacion DCE0_ProgramacionOO_C#_VBNET public class Matematica { /// <summary> /// Calcula la suma de dos números enteros /// </summary> /// <param name="x">El primer operando de la suma</param> /// <param name="y">El segundo operando de la suma</param> /// <returns> La suma entera de ambos operandos</returns> public int Sumar (int x, int y) {return x + y;} VB.NET soporta dos tipos de comentarios 'Comentario simple Dim nombre As String = “Juan” ''' <summary> ''' Documentación XML que describe un tipo y sus miembros ''' </summary> ''' <param name="x">El primer operando de la suma</param> ''' <param name="y">El segundo operando de la suma</param> ''' <returns> La suma entera de ambos operandos</returns> Public Function Sumar (x as Integer, y as Integer) as Integer return x + y End Function INTERFACES Recurso de diseño soportado por los lenguajes orientados a objetos que permite definir comportamiento Permite que clases que no están estrechamente relacionadas entre sí deban tener el mismo comportamiento La implementación de una interfaz es un contrato que obliga a la clase a implementar todos los métodos definidos en la interfaz (1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacionorientada-a-objetos-herencia.html (2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf Mayor Cantidad del tema, tomado de: (Programador 5 Estrellas) DCE0_FundamentosDeProgramacion DCE0_ProgramacionOO_C#_VBNET Vehiculo Aereo Acuatico Terrestre Avión Barco Automóvil Se crean las interfaces que definen comportamiento Hidroavión deberá definir los comportamientos de cada una de las interfaces que implemente «interface» Acuatico +Navegar() «interface» Aereo +Volar() Hidroavion (1)http://www.joanballestermoragues.com/blog/ingenieria-software/analisis-sistemas/programacionorientada-a-objetos-herencia.html (2) http://www.pol.una.py/archivos/asi/paradigmas/01ConceptosOO.pdf
Copyright © 2024 DOKUMEN.SITE Inc.