Curso Taller Programación Orientada a Objetos con C# MSc. Roger Pérez Chávez roger.perez@umcc.cu

Post on 13-Jan-2016

32 views 2 download

description

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 - PowerPoint PPT Presentation

Transcript of Curso Taller Programación Orientada a Objetos con C# MSc. Roger Pérez Chávez roger.perez@umcc.cu

Curso TallerProgramación Orientada a Objetos con C#

MSc. Roger Pérez Chávezroger.perez@umcc.cuDr. C. Julio A. Telot Gonzálezjuliotelot@yahoo.comUniversidad 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

cabo una 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.

I. Fundamentos de la propuesta.

II. Estructura de la propuesta.

III. Conceptos básicos del Modelo Orientado a Objetos.

Temática

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)1. Experiencia personal... el cliente

siempre tiene la razón.

2. Resultados aplicación encuesta.

3. “Why Procedural is the Wrong First Paradigm if OOP is the Goal”. J. Bergin. Pace University.

4. Referencia a Stroustrup.

5. “Introducción a la POO”. T. Budd.

6. Referencias de Budd.

Fundamentos (3)

7. “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!”

  Seventh Workshop on Pedagogies and Tools for Learning Object-Oriented Concepts

1. OOPSLA'972. ECOOP'983. OOPSLA'994. ECOOP'005. OOPSLA6. ECOOP '02

• Proyectos de curso

• Ejemplos de clase

• Objetos primero

• Herramientas y entornos

Fundamentos (4)

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ítulosTema 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)Capítulos desarrollados de forma homogénea.

Uso de elementos de la enseñanza problémica.• 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.

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

cabo una 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.

Clases, Objetos, Responsabilidades (3)

Desarrollo del ejemplo:

Clasificación Objetos Responsabilidades

Niño alejandro NombreEdadJuguetes...

Mamá gloria NombreDormir al niño...

... ... ...

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

El comportamiento de los objetos se puede estructurar en términos de las responsabilidades de los mismos.

• Atributos

• Métodos

• Estado

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)

¿Existen las clases y los objetos de forma aislada?

• Dependencias

• Asociaciones

• Generalizaciones

Relaciones entre clases (3)

Diagrama de clases

Nombre de la clase

Atributos

Métodos

Responsabilidades

Relaciones entre clases (4)

Ejemplo de diagrama de clases

Niño

nombreedadjuguetes

CepillarDientesEncenderEfectoElectrodomésticoApagarEfectoElectrodoméstico

Relaciones entre clases (5)

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?

CepilloDientes…

Niño…

Relación de uso

Relaciones entre clases (6)

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á?

11..* hijo Niño Papá

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 ?

Relaciones entre clases (8)

Relación de generalización

Persona

MamáNiño Papá

Clasificación de los atributos

¿Es posible clasificar los atributos de forma general?

Niño

cadena nombreentero edadreal pesológico tieneSueñoJuguete[] juguetes

...

Acceso a las responsabilidades de los objetos

<objeto>.<responsabilidad>

¿Cómo es posible obtener la edad del objeto alejandro?

alejandro.nombre

alejandro.CepillarDientes

alejandro.edad

Otros

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

consola.Imprimir(alejandro.nombre)

alejandro.nombre = “Jorge”

alejandro.edad = -5

Formas del aceso a las responsabilidades

Mensajes y métodos

Mensajes

alejandro ... mamá tengo sueño ...

gloria.DormirNiño(alejandro)

¿Cuál es el mecanismo de interacción entre los objetos?

Algoritmo (1)

1. preparar la leche2. echar la leche en el pomo3. cambiar de ropa al niño4. acostarlo 5. colocar la cabecita sobre la

almohada6. darle a tomar la leche 7. acostarse a su lado hasta que

se duerma

¿Cómo el objeto gloria satisface la demanda del objeto alejandro?

Algoritmo (2)

1. cambiar de ropa al niño2. acostarlo 3. colocar la cabecita sobre la

almohada4. preparar la leche5. echar la leche en el pomo6. darle a tomar la leche 7. acostarse a su lado hasta que

se duerma

Otra variante

Algoritmo (3)¿Qué características cumplen ambas secuencias de pasos que hacen posible que el niño se duerma?

• 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)

1. cambiar de ropa al niño2. acostarlo 3. colocar la cabecita sobre la

almohada4. acostarse a su lado hasta que

se duerma5. darle a tomar la leche 6. echar la leche en el pomo7. preparar la leche

No constituye un algoritmo

Conclusiones