680 likes | 1.32k Views
UNIDAD 1. CONCEPTOS BASICOS DEL MODELO ORIENTADO A OBJETOS Objetivo Particular: Conocer los conceptos básicos del enfoque Orientada a Objetos (POO). 1.1 Reconocimiento de objetos y clases del mundo real y su interacción.
E N D
UNIDAD 1. CONCEPTOS BASICOS DEL MODELO ORIENTADO A OBJETOSObjetivo Particular:Conocer los conceptos básicos del enfoque Orientada a Objetos (POO). Programación Orientada a Objetos
1.1 Reconocimiento de objetos y clases del mundo real y su interacción un programa orientado a objetos funciona a través de objetos interactuando unos con otros a través de mensajes. Programación Orientada a Objetos
EJEMPLOS DE RECONOCIMIENTO DE OBJETOS: Avión Atributos tiene alas, turbinas, llantas, ventanillas, cuerpo metálico, asientos, color. etc. Comportamiento vuela, transporta cargas pesadas aéreamente., Pasajero Atributos Nombre, Apellido, Edad, Dirección, RFC, CURP,… Comportamiento: CompraBoleto, Embarca, Desembarca, Vuela Piloto Atributos Nombre, Apellido, Edad, Puesto, CURP, Antigüedad,… Comportamiento Checa Tarjeta, Cobra un Salario, Vuela Avión Programación Orientada a Objetos
1.2 La abstracción y el encapsulamiento como un proceso natural La abstracción es el proceso de capturar los detalles fundamentales de un objeto mientras suprimen o ignoran los detalles. La abstracción proporciona un mecanismo crucial para permitir que las personas comprendan, se comuniquen y razonen sistemas complejos. Programación Orientada a Objetos
1.2 La abstracción y el encapsulamiento como un proceso natural Encapsulamiento: (ocultación de información), es el proceso de ocultar todos los detalles de un objeto que no contribuyen a sus características esenciales. Programación Orientada a Objetos
1.3 La POO y la complejidad del software • La complejidad del software según Booch: • la complejidad del dominio del problema, • la dificultad de gestionar el proceso de desarrollo, • la flexibilidad que se puede alcanzar a través del software y • los problemas de caracterizar el comportamiento de sistemas discretos. Programación Orientada a Objetos
Complejidad del dominio del problema Este se produce cuando el cliente debe decirle al desarrollador del sistema lo que necesita. Programación Orientada a Objetos
La dificultad de gestionar el proceso de desarrollo el poder llevar a cabo el proceso de planteamiento, ejecución y control de un proyecto, desde su comienzo hasta su conclusión, a fin de cumplir con el mismo en un plazo de tiempo determinado, con un costo y nivel de calidad determinados, a través de la movilización de recursos técnicos, financieros y humanos. Programación Orientada a Objetos
La posible flexibilidad a través del software El software desarrollado debe ofrecer flexibilidad para poder expresar cualquier tipo de abstracción. Programación Orientada a Objetos
los problemas de caracterizar el comportamiento de sistemas discretos: Se tienen sistemas con un número finito de estados discretos, como no existen herramientas matemáticas para modelar el comportamiento completo de los grandes sistemas discretos, se debe aceptar la pérdida de cierto grado de confianza en cuanto a que las salidas sean correctas.
1.4 Conceptos del ciclo de vida del Software Las etapas básicas y los principios del modelo OO del ciclo de vida del software son: • 1. Especificación de requerimientos. • 2. Análisis. • 3. Diseño. • 4. Programación. • 5. Mantenimiento. Programación Orientada a Objetos
1.4.1 Especificaciones de requerimientos. Comprende las tareas relacionadas con la determinación de las necesidades o de las condiciones a satisfacer para un software nuevo o modificado, tomando en cuenta los diversos requerimientos de los clientes.
1.4.2 Análisis Orientado a Objetos • Definición. Es un método de análisis que examina los requisitos desde la perspectiva de las clases y objetos que se encuentran en el vocabulario del dominio del problema. Documentos de deben tenerse o desarrollarse durante el análisis; los cuales se convierten en el diseño del sistema: • Especificación de requisitos o requerimientos. • Diagramas de casos de uso. • Escenarios y subescenarios. • Prototipos y su evaluación.
Caso de uso. Es una técnica para la captura de requisitos potenciales de un nuevo sistema o una actualización de software. Cada caso de uso proporciona uno o más escenarios que indican cómo debería interactuar el sistema con el usuario o con otro sistema para conseguir un objetivo específico.
Escenarios Es una descripción parcial y concreta del comportamiento de un sistema en una determinada situación.
Prototipo. Es una representación de aquellos aspectos del software que serán visibles para el cliente (por ejemplo, la configuración de la interfaz con el usuario y el formato de los despliegues de salida). El prototipo, es evaluado por el cliente para una retroalimentación; gracias a ésta se refinan los requisitos del software que se desarrollará.
Programación: Codificación en el lenguaje de programación, SGBD seleccionado; incluye pruebas, correcciones y verificaciones por parte de un usuario hasta obtener la versión final. Mantenimiento: implica el hacer que el SI trabaje correctamente durante un determinado tiempo. .
1.4.3 Programación Orientada a Objetos y características Es el proceso de dividir una solución en una cantidad determinada de objetos constituyentes Su uso induce a los programadores a pensar en términos de objetos, en vez de procedimientos, cuando planifican su código. Un objeto agrupa datos encapsulados y procedimientos para representar una entidad. El diseño orientado a objetos es la disciplina que define los objetos y sus interacciones para resolver un problema de negocio que fue identificado y documentado durante el análisis orientado a objetos.
CLASE Descripción de los datos y operaciones que escriben el comportamiento de un cierto tipo de elementos homogéneos. Avión Atributos Entero: n_asientos, n_llantas, n_ventanillas: Cadena: color, modelo;. Métodos vuela(), transporta cargas(), carga combustible(). Atributo: Propiedad común a todos los objetos de una clase. Método: Definición e implementación de las operaciones que pueden realizar todos los objetos de una clase.
OBJETO Avión 1 N_asientos: 34 N_llantas: 12 Color: blanco Modelo : 1234 Vuela (), transporta cargas (), carga combustible (). Ejemplo concreto de una clase (instancia) Avión Atributos Entero: n_asientos, n_llantas, n_ventanillas: Cadena: color, modelo;. Métodos vuela(), transporta cargas (), carga combustible (). Avión 2 N_asientos: 120 N_llantas: 20 Color: negro Modelo : 4567 Vuela (), transporta cargas (), carga combustible ().
ESTADO Conjunto de valores de los atributos de un objeto en un determinado momento. Avión 2 N_asientos: 120 N_llantas: 20 Color: negro Modelo : 4567 Vuela (520 KM/H)
MENSAJE Invocación de un método de una clase sobre un objeto de dicha clase en un instante determinado. avión TRANSPORTA_CARGA()
1.5 Elementos primordiales en el modelo OO. La programación Orientada a Objetos trata de cumplir las necesidades de los usuarios finales, estás tareas se realizan mediante la modelización del mundo real, el soporte fundamental es el modelo objeto. Los elementos más importantes de este modelo son: Abstracción Encapsulamiento Modularidad Jerarquía y Herencia Polimorfismo
1.5.1.- Abstracción Es el ver a un objeto con las características principales, es decir, que las características irrelevantes ya son innecesarias y se encapsulan para poder ver al objeto de una forma más simple. Programación Orientada a Objetos
ABSTRACCIÓN Abstracción es estructuras de datos se realiza mediante un tipo abstracto de dato TAD. TAD: Modelo matemático de una estructura de dato que especifica el tipo de dato almacenado, las operaciones soportadas por ellos y tipos de los parámetros de las operaciones. Programación Orientada a Objetos
ABSTRACCIÓN TAD: Especifica que hace cada operación, pero no como lo hace. En java TAD CLASE CLASE Define los datos que se están almacenando y las operaciones soportadas por los objetos. Programación Orientada a Objetos
1.5.2.- Encapsulamiento Es el proceso por el cual se ocultan las características innecesarias y se dejan únicamente los atributos necesarios para poder identificar al objeto en cuestión. Programación Orientada a Objetos
ENCAPSULACIÓN En Java, los fundamentos de la encapsulación están en la clase. Una clase define la estructura y el comportamiento (datos y código) que se compartirá por un conjunto de objetos. Programación Orientada a Objetos
ENCAPSULAMIENTO CLASE CONTIENE: Datos definidos variables miembro o variables de instancia. El código que actúa sobre los datos miembros método o métodos. Variables de Instancia privadas Métodos Públicos Métodos Privados Programación Orientada a Objetos
ENCAPSULAMIENTO “ Se oculta lo que sucede dentro de una clase” Una de las ventajas principales del encapsulamiento es que proporciona al programador libertad en la implementación de los detalles de un sistema. La única restricción que tendrá el programador es mantener la interfaz abstracta que ven los usuarios externos. Programación Orientada a Objetos
1.5.3.- Modularidad La Modularidad te permite subdividir a una aplicación en partes más pequeñas llamadas módulos, y cada una de ellas debe ser independiente de la aplicación en si. Programación Orientada a Objetos
1.5.4.- Jerarquía y Herencia La jerarquía permite una ordenación de todas las abstracciones hechas; mientras que herencia es la capacidad de compartir, datos, métodos, objetos, y otras cosas, es decir la herencia define una relación entre clases. Programación Orientada a Objetos
Avión 1.5.4.- Jerarquía y Herencia A340-600 Boeing Jet Una clase puede no tener padres, en su caso es una clase base o clase raíz. Una clase puede no tener descendientes (hijos), en cuyo caso es una clase hoja. Si la clase sólo tiene una clase padre, tiene herencia simple, si tiene más de una clase tiene herencia múltiple. Programación Orientada a Objetos
1.5.5 Polimorfismo Es la posibilidad de que una entidad tome muchas formas. En términos prácticos, el polimorfismo permite referirse a objetos de clases diferentes mediante el mismo elemento de programa y realizar la misma operación de diferentes formas, según sea el objeto que se referencia en ese momento. El polimorfismo adquiere su máxima expresión en la derivación o extensión de clases, es decir, cuando se obtiene una clase a partir de una clase ya existente, mediante la propiedad de derivación de clases o herencia.
1.5.5 Polimorfismo area() _____ _____ area( char x) _____ _____ area( int x) _____ _____ • Suponer una jerarquía de clases de figuras de dos dimensiones. Cada clase puede tener un método que se llame igual, por ejemplo “área()” pero cada clase tendrá una formula de cálculo de área diferente según la clase.
1.6 Historia de los paradigmas en el desarrollo del software. Paradigmas: Representan un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. Los más comunes son el desarrollo en cascada(metodología de desarrollo en cascada es: Análisis de requisitos, Diseño, Programación, Prueba, Implantación, Mantenimiento),. Los enfoques generales para la escritura del código han sido: • Programación “espagueti”. Sin una secuencia de ejecución definida. Sin módulos. • Programación estructurada. Se usan los módulos (basados en procedimientos) y las sentencias de programación estructuradas. • POO. Se afina el concepto de módulo al incluir datos y procedimientos (en una “clase”). Incluye nuevos conceptos como herencia, polimorfismo, etc.
1.6 Historia de los paradigmas en el desarrollo del software. Algunos paradigmas de programación específicos (procedimientos computacionales para resolver un problema), son: • El desarrollo en espiral • El desarrollo por prototipos • El desarrollo incremental, • Orientado a Objetos.
1.6 Historia de los paradigmas en el desarrollo del software. Los Lenguajes de Programación según su nivel de acercamiento con el “hardware” se clasifican en: • Lenguaje máquina (0, 1). • Lenguaje ensamblador. • Lenguajes de tercer nivel (palabras en inglés). • Lenguajes declarativo (indicar que hacer y que se desea obtener; y no como hacerlo). Desde el punto de vistas de las metodologías que se aplican para el ciclo de vida del software, algunas son: • Ciclo vida clásico o cascada. • Modelo en espiral. • Prototipos.
1.7 Beneficios del modelo de objetos y de la POO sobre otros paradigmas. La programación orientada a objetos beneficia a los desarrolladores debido a que: • Los programas son fáciles de diseñar debido a que los objetos reflejan elementos del mundo real. • Las aplicaciones son más sencillas para los usuarios debido a que los datos innecesarios están ocultos. • Los objetos son unidades autocontenidas. • La productividad se incrementa debido a que puede reutilizar el código. • Los sistemas son fáciles de mantener y se adaptan a las cambiantes necesidades de negocios. • Es más fácil crear nuevos tipos de objetos a partir de los ya existentes. • Simplifica los datos complejos. • Reduce la complejidad de la transacción. • Confiabilidad. • Robustez. • Capacidad de ampliación. • La OO permite una modelación más natural de los sistemas, parecido a como un humano los visualiza. El modelo refleja mejor la realidad. • La OO proporciona soporte para todas las etapas del ciclo de vida del software.
1.7 Beneficios del modelo de objetos y de la POO sobre otros paradigmas. • La LPOO permite crear TDA (tipos de datos abstractos). Es decir nuevos tipos de datos que no están predefinidos en el LP pero son necesarios para el usuario. • Los LPOO proporcionan un rico conjunto de clases predefinidas que se pueden usar en las aplicaciones. • Reutilización. Las clases se construyen a partir de otras clases.
1.7 Beneficios del modelo de objetos y de la POO sobre otros paradigmas. Fiabilidad. Productividad del desarrollador. Calidad. Mantenimiento. Costo. Escalabilidad. Adaptabilidad (mejor independencia e interoperabilidad).