370 likes | 636 Views
Curso Taller Programación Orientada a Objetos con C# MSc. Roger Pérez Chávez roger.perez@umcc.cu Dr. C. Julio A. Telot González juliotelot@yahoo.com Universidad de Matanzas, Cuba Agosto, 2004. Conceptos Básicos del Modelo de Objetos. Motivaci ó n (1). Situación de análisis
E N D
Curso Taller Programación Orientada a Objetos con C# MSc. Roger Pérez Chávez roger.perez@umcc.cu Dr. C. Julio A. Telot González juliotelot@yahoo.com Universidad de Matanzas, Cuba Agosto, 2004
Conceptos Básicos del Modelo de Objetos.
Motivación (1) Situación de análisis Un pequeño niño de dos años de edad puede decirle a su papá: estos son mis juguetes y señalar hacia un velocípedo, dos camiones y tres soldaditos, este es mi cepillo, etc. Incluso, en el carro de su papá (VW Golf año 85), es capaz de decirle que arranque, pite o ponga la música. De igual forma, al interrogársele, el niño dice su nombre (Alejandro) y el de sus padres (Gloria y Alexis). Por lo general, llegada la hora de dormir, Alejandro le dice a su mamá: tengo sueño; entonces el receptor de este mensaje (mamá) se ocupa de dormir al niño y para ello debe llevar a cabouna serie de acciones ...
Motivación (2) Pregunta: ¿Por qué un niño es capaz de decir o hacer las cosas que se relacionan en la situación de análisis? ... porque desde edades muy tempranas los seres humanos son capaces de identificar y clasificar elementos o entidades (objetos) del mundo que le rodea. Incluso, de determinar las características y las funcionalidades (responsabilidades) de determinados elementos; así como relacionarse con el entorno y particularmente comunicarse con sus semejantes.
Objetivo Caracterizar los conceptos básicos del Modelo Orientado a Objetos.
Temática • Fundamentos de la propuesta. • Estructura de la propuesta. • Conceptos básicos del Modelo Orientado a Objetos.
Fundamentos (1) El enfoque tradicional o evolutivo es fruto de una visión equivocada del profesor que cree necesario enseñar la programación siguiendo el orden que él ha conocido los paradigmas. B. Meyer
Fundamentos (2) Experiencia personal... el cliente siempre tiene la razón. Resultados aplicación encuesta. “Why Procedural is the Wrong FirstParadigm if OOP is the Goal”. J. Bergin.Pace University. Referencia a Stroustrup. “Introducción a la POO”. T. Budd. Referencias de Budd.
Fundamentos (3) “A Fondo C#”. T. Archer.advierte que si un estudiante ha tenido alguna experiencia previa de programación pero no con el paradigma OO, debe estar prevenido:“¡la experiencia anterior con otros lenguajes no OO no le servirá de mucho!”
Fundamentos (4) Seventh Workshop on Pedagogies and Tools for Learning Object-Oriented Concepts • Proyectos de curso • Ejemplos de clase • Objetos primero • Herramientas y entornos • OOPSLA'97 • ECOOP'98 • OOPSLA'99 • ECOOP'00 • OOPSLA • ECOOP '02
Estructura (1) Tema I: Secuenciación. Aplicaciones simples en modo consola. Tema II: Análisis de casos. Encapsulamiento. Tema III: Iteración. Arreglos. Tema IV: Recursividad. Búsqueda y Ordenamiento. Tema V: Apéndices.
Estructura (2) Temas desarrollados en capítulos Tema I: Secuenciación. Aplicaciones simples en modo consola. Capítulo I.1: Introducción al modelo Orientado a Objetos. Capítulo I.2: Implementación de clases en C#. Secuenciación. Capítulo I.3: Aplicaciones simples en modo consola. Secuenciación.
Estructura (3) • Desarrollo teórico a través de situaciones de análisis, preguntas y ejemplos. Preparación de las conferencias. • Casos de estudio. Autopreparación de los estudiantes. • Ejercicios. Desarrollo de las clases prácticas. • Bibliografía complementaria. Profundización. Capítulos desarrollados de forma homogénea. Uso de elementos de la enseñanza problémica.
Clases, Objetos, Responsabilidades (1) Situación de análisis Un pequeño niño de dos años de edad puede decirle a su papá: estos son mis juguetes y señalar hacia un velocípedo, dos camiones y tres soldaditos, este es mi cepillo, etc. Incluso, en el carro de su papá (VW Golf año 85), es capaz de decirle que arranque, pite o ponga la música. De igual forma, al interrogársele, el niño dice su nombre (Alejandro) y el de sus padres (Gloria y Alexis). Por lo general, llegada la hora de dormir, Alejandro le dice a su mamá: tengo sueño; entonces el receptor de este mensaje (mamá) se ocupa de dormir al niño y para ello debe llevar a cabouna serie de acciones ...
Clases, Objetos, Responsabilidades (2) Ejemplo: Determinar algunos de los objetos que aparecen en la situación de análisis presentada con anterioridad y las responsabilidades que aparezcan de forma explícita. Establezca además algún tipo de clasificación para los objetos hallados.
Desarrollo del ejemplo: Clases, Objetos, Responsabilidades (3)
Clases y Objetos (1) Los conceptos básicos del paradigma OO son clase y objeto. En el modelo OO se combina la estructura y el comportamiento de los datos en una única entidad, los objetos. Los objetos son simplemente entidades que tienen sentido en el contexto de una aplicación (dominio del problema). Todos los objetos son ejemplares o instancias de alguna clase.
Clases y Objetos (2) Los objetos con las mismas responsabilidades pueden ser agrupados en una clase. Las clases son abstracciones que generalizan dominios de objetos. Ejercicio: Determinar los objetos presentes en un juego de ajedrez.
Diseño dirigido por responsabilidades • Atributos • Métodos • Estado El comportamiento de los objetos se puede estructurar en términos de las responsabilidades de los mismos.
Relaciones entre clases (1) La clase Niño tiene una responsabilidad que es “Cepillarse los dientes”, la cual es imposible realizar sin el uso de un objeto o instancia de una clase que se podría denominar Cepillo de dientes. alejandro (instancia de la clase Niño) es hijo de alexis (instancia de la clase Papá) y a su vez alexis es padre de alejandro. Aunque no se ha expresado explícitamente, las clases Niño, Mamá y Papá tienen responsabilidades comunes por lo que pueden a su vez ser agrupadas en una clase más general Persona.
Relaciones entre clases (2) • Dependencias • Asociaciones • Generalizaciones ¿Existen las clases y los objetos de forma aislada?
Nombre de la clase Atributos Métodos Relaciones entre clases (3) Diagrama de clases Responsabilidades
Niño nombre edad juguetes CepillarDientes EncenderEfectoElectrodoméstico ApagarEfectoElectrodoméstico Relaciones entre clases (4) Ejemplo de diagrama de clases
Niño … CepilloDientes … La clase Niño tiene una responsabilidad que se ha denotado CepillarDientes, la cual es imposible de realizar sin el uso de un objeto o instancia de una clase que podríamos denominar CepilloDientes. ¿Qué tipo de relación se establece entre las clases Niño y CepilloDientes? Relaciones entre clases (5) Relación de uso
hijo 1 1..* Papá Niño alejandro (instancia de la clase Niño) es hijo de alexis (instancia de la clase Papá) y a su vez alexis es padre de alejandro. ¿Qué tipo de relación se establece entre las clases Niño y Papá? Relaciones entre clases (6) Relación de asociación
Relaciones entre clases (7) Aunque no se ha expresado explícitamente, las clases Niño, Mamá y Papá tienen responsabilidades comunes por lo que pueden a su vez ser agrupadas en una clase más general Persona. ¿Qué tipo de relación se establece entre las clases Niño, Mamá, Papá y Persona ?
Mamá Niño Papá Persona Relación de generalización Relaciones entre clases (8)
Niño cadena nombre entero edad real peso lógico tieneSueño Juguete[] juguetes ... Clasificación de los atributos ¿Es posible clasificar los atributos de forma general?
Acceso a las responsabilidades de los objetos <objeto>.<responsabilidad> ¿Cómo es posible obtener la edad del objeto alejandro? alejandro.edad Otros alejandro.nombre alejandro.CepillarDientes
Parametrización de los métodos ¿Cómo gloria (madre de ambos niños) podría dormir a alejandro y a carlos utilizando el método DormirNiño()? gloria.DormirNiño(alejandro) gloria.DormirNiño(carlos) DormirNiño(Niño unNiño)
Encapsulamiento Formas del aceso a las responsabilidades consola.Imprimir(alejandro.nombre) alejandro.nombre = “Jorge” alejandro.edad = -5
Mensajes y métodos ¿Cuál es el mecanismo de interacción entre los objetos? Mensajes alejandro ... mamá tengo sueño... gloria.DormirNiño(alejandro)
¿Cómo el objeto gloria satisface la demanda del objeto alejandro? Algoritmo(1) • preparar la leche • echar la leche en el pomo • cambiar de ropa al niño • acostarlo • colocar la cabecita sobre la almohada • darle a tomar la leche • acostarse a su lado hasta que se duerma
Otra variante Algoritmo(2) • cambiar de ropa al niño • acostarlo • colocar la cabecita sobre la almohada • preparar la leche • echar la leche en el pomo • darle a tomar la leche • acostarse a su lado hasta que se duerma
¿Qué características cumplen ambas secuencias de pasos que hacen posible que el niño se duerma? Algoritmo(3) • El número de acciones es finita. • Todas las acciones son posibles de realizar, en este caso por gloria. • El resultado esperado se obtiene en un tiempo finito. Informalmente, una secuencia de pasos que cumpla con estas características recibe el nombre de algoritmo.
Algoritmo(4) • cambiar de ropa al niño • acostarlo • colocar la cabecita sobre la almohada • acostarse a su lado hasta que se duerma • darle a tomar la leche • echar la leche en el pomo • preparar la leche No constituye un algoritmo