Curso Taller Programación Orientada a Objetos con C# MSc. Roger Pérez Chávez [email protected]

37
Curso Taller Programación Orientada a Objetos con C# MSc. Roger Pérez Chávez [email protected] Dr. C. Julio A. Telot González [email protected] Universidad de Matanzas, Cuba Agosto, 2004

description

Curso Taller Programación Orientada a Objetos con C# MSc. Roger Pérez Chávez [email protected] Dr. C. Julio A. Telot González [email protected] 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 [email protected]

Page 1: 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á[email protected]. C. Julio A. Telot Gonzá[email protected] de Matanzas, Cuba

Agosto, 2004

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

Conceptos Básicos del Modelo de Objetos.

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

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

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

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.

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

Objetivo

Caracterizar los conceptos básicos del Modelo Orientado a Objetos.

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

I. Fundamentos de la propuesta.

II. Estructura de la propuesta.

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

Temática

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

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

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

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.

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

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

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

  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)

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

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.

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

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.

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

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.

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

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

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

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.

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

Clases, Objetos, Responsabilidades (3)

Desarrollo del ejemplo:

Clasificación Objetos Responsabilidades

Niño alejandro NombreEdadJuguetes...

Mamá gloria NombreDormir al niño...

... ... ...

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

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.

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

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.

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

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

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

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.

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

Relaciones entre clases (2)

¿Existen las clases y los objetos de forma aislada?

• Dependencias

• Asociaciones

• Generalizaciones

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

Relaciones entre clases (3)

Diagrama de clases

Nombre de la clase

Atributos

Métodos

Responsabilidades

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

Relaciones entre clases (4)

Ejemplo de diagrama de clases

Niño

nombreedadjuguetes

CepillarDientesEncenderEfectoElectrodomésticoApagarEfectoElectrodoméstico

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

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

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

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

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

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 ?

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

Relaciones entre clases (8)

Relación de generalización

Persona

MamáNiño Papá

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

Clasificación de los atributos

¿Es posible clasificar los atributos de forma general?

Niño

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

...

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

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

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

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)

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

Encapsulamiento

consola.Imprimir(alejandro.nombre)

alejandro.nombre = “Jorge”

alejandro.edad = -5

Formas del aceso a las responsabilidades

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

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?

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

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?

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

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

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

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.

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

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

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

Conclusiones