37
Programando Orientado a Objetos desde Cero con C# y .NET MSc. Roger Pérez Chávez Jefe Departamento de Informática [email protected] [email protected] Dr. C. Julio A. Telot González Decano Facultad de Informática [email protected] Universidad de Matanzas, Cuba

Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática [email protected] [email protected]

Embed Size (px)

Citation preview

Page 1: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Programando Orientado a Objetos desde Cero con C# y .NET

MSc. Roger Pérez ChávezJefe Departamento de Informática

[email protected]@hotmail.com

Dr. C. Julio A. Telot GonzálezDecano Facultad de Informática

[email protected] de Matanzas, Cuba

Page 2: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Paradigmas para un primer curso de programación (! = uso)

1. Imperativo procedural !!!!!!!!!!!!!!!!!..!

2. Funcional !!

3. Orientado a Objetos (OO) !!!!!!!

Page 3: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentación OO primero (1)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 4: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentación OO primero (2)

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 5: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

  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

Fundamentación OO primero (3)

Page 6: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

¿Por qué no se ha generalizado? (1)

• !¡¡¡¡¡¡¡¡¡ El quéqué está claro !!!!!!!!!! Las justificaciones son convincentes.

• ¿¿¿¿¿¿¿¿¿ El cómocómo ????????Las propuestas no convencen.

Page 7: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

¿Por qué no se ha generalizado? (2)

“Aprendiendo Java 2.0 en 21 Días”

R. Cadenhead et al.

“… la POO se parece mucho a la cerveza…. A la mayoría de la gente que la prueba por primera vez no le gusta, y podría cuestionar la salud mental de quienes cuentan sus alabanzas. Que te hice …---dirían--- para que me hicieras beber esto? Algún tiempo después, sin embargo, se cultiva un gusto por la cerveza en quienes continúan bebiéndola. La POO como la cerveza, es un gusto que se adquiere con el tiempo. Otro parecido de la POO con la cerveza: puede provocar desorientación, causar náuseas y una visión alterada del mundo”

Page 8: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

¿Por qué no se ha generalizado? (3)

Palabras de un colega sobre su primer encuentro con la POO...

“La primera vez que escuché hablar de objetos fue en el primer año de la carrera en una conferencia fuera de curriculum a un profesor que se veía que sabe muchísimo, pues hablaba del modelo de objetos ...... pero yo NO ENTENDI NADANO ENTENDI NADA”

Page 9: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Nuestra propuesta

Programación Orientada a Objetos con C#Parte I Introducción a la Programación

MSc. Roger Pérez Chávez (UMCC)

MSc. Antonio Fernández Orquín (UMCC)Lic. Airel Pérez Suárez (UCI)

Lic. Raudel Hernández León (UCI)

Page 10: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Antecedentes

1. Evento COMAT 1995. Dr. Miguel Katrib Mora (UH).

2. Experiencia de los autores.

3. Curso “.NET y Web Services”, UH, Enero, 2003.

4. Experiencia en la UMCC el semestre anterior con C#.

Page 11: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (1)

Libro de texto estructurado en temasTema 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: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (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: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (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: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (4)Desarrollo teórico Capítulo I.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: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (5)Desarrollo teórico Capítulo I.1.

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 16: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (6)

Desarrollo teórico Capítulo I.1.

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 17: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (7)Desarrollo teórico Capítulo I.1.

Desarrollo del ejemplo:

Clasificación Objetos Responsabilidades

Niño alejandro NombreEdadJuguetes...

Mamá gloria NombreDormir al niño...

... ... ...

Page 18: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (8)

Desarrollo teórico Capítulo I.1.

Conceptos que se formalizan a través de otras preguntas y ejemplos a partir de la situación de análisis:

• Clase y Objeto.• Diseño dirigido por responsabilidades.• Relaciones entre clases. Diagramas de clases.• Clasificación de los atributos.• Encapsulamiento.• Mensajes y métodos. Definición de Algoritmo.

Page 19: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (9)Caso de estudio Capítulo I.1.

Situación de análisis

Imagínese una sesión de entrenamiento de la preselección nacional de atletismo donde se desea realizar pruebas de control a los atletas en las respectivas especialidades ...

De los atletas se registrará el nombre, apellidos, carné de identidad, especialidad y tiempo marcado en el control. El tiempo se mide con un equipo electrónico que funciona de manera similar a un cronómetro.

Un entrenador puede entrenar a más de un atleta, de los entrenadores se conoce el nombre y además son responsables de analizar la inclusión o no de los atletas en el equipo nacional de acuerdo al tiempo que hagan

Page 20: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (10)Ejercicios Capítulo I.1.

Para la situación de análisis que se presenta a continuación, realice un desarrollo similar a los que se hacen para las situaciones de análisis que se presentan a través del presente capítulo

Situación de análisisImagine una tienda que se dedica a vender artículos de vestir, específicamente camisas, zapatos y pantalones. De la venta de los artículos se encarga el dependiente, persona que trabaja para la tienda y se ocupa de atender a los clientes. Particularmente se desea tratar de simular las acciones que realiza el dependiente de la tienda cuando se le solicita información de los artículos en venta.En este caso el dependiente tiene que ser capaz de informar acerca del precio, talla, color y otras características (para las camisas mangas cortas o largas por ejemplo, para los zapatos si tienen cordones, etc.) de un determinado artículo que le soliciten los clientes.

Page 21: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de la propuesta (11)

Bibliografía complementaria Capítulo I.1.

Capítulos 1 y 2 de Introducción a la Programación Orientada a Objetos, T. Budd, Addison-Wesley Iberoamericana, 1994.

Page 22: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Estado actual de la propuesta

• Utilizar el texto y el enfoque subyacente en el presente semestre en dos grupos de la UMCC y cuatro de la UCI.

• Tema II, profundizar en la parametrización de los métodos, tipos de parámetros, primeras nociones del análisis descendente y las enumeraciones.

• Tema III, profundizar sobre el análisis descendente, la implementación de las relaciones de asociación y agregación y la determinación de secuencias intermedias.

• Tema V, incorporar elementos complementarios sobre como documentar los códigos y por ende presentar elementos de XML y atributos.

Page 23: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Trabajo futuro

• Parte II Profundizando en el modelo de objetos.

• Parte III Estructuras de Datos.

Complementar en texto

Programación Orientada a Objetos con C#Parte I Introducción a la Programación

Parte I + Parte II + Parte III = Tesis Doctorado

“Enseñanza de la Programación con un enfoque de Sistema y Orientado a Objetos”

Page 24: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

.NET: The Programmer's Perspective

A Workshop of ECOOP 2003, July 22, 2003

.NET

Goals of the workshop

.NET technology presently attracts much attention in the OO community.We want to offer a forum for discussion of pros and cons.

Page 25: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Evolución hacia .NET (1)

Evolución de los modelos de programación:

• Mainframe\minicomputadoras

• Desktops PCs.

• Redes y paradigma de programación distribuida:

dos niveles (Cliente-Servidor) tres niveles, introduciéndose un nivel intermedio CORBA, DCOM, RMI

Page 26: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Evolución hacia .NET (2)Evolución de Internet:

• Primera generación: páginas estáticas con contenido pasivo, aparecen entonces los primeros estándares (HTML) y navegadores (Netscape).

• Segunda generación: boom de Java, lenguajes de script y conexión a Bases de Datos. Páginas dinámicas y aparecen tecnologías como Microsoft ASP y Java JSP, primeras herramientas para desarrollar páginas Web.

• Tercera generación: Mayor interconexión y movilidad, diferentes dispositivos entre los usuarios. No solo datos, aparecen los servicios Web (Web Services). Internet es el contexto de programación.

Page 27: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

¿Qué ofrece .NET?

• Integración uniforme y sin parches. Consistencia. • Bastaría un lenguaje .NET (por ejemplo, C#), y aprender

ASP .NET y XML.• Simplifica el desarrollo de aplicaciones.• Seguridad. • Componentes reusables y autodocumentados.• Diversos lenguajes generando un mismo lenguaje

intermedio.• Herramienta de desarrollo integrada a la Web. Visual

Studio .NET.

Page 28: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Fundamentos de .NETCuatro componentes principales que constituyen el .NET Framework o Framework de .NET

Commom Language Runtime

Base Class Library

Windows Forms

ADO .NET y XML

Asp .NET Web Forms

Lenguajes de Programación (C#, C++, VB, ...)

Commom Language Specification

Page 29: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Objetivos del Framework (1)• Entorno coherente de POO, los objetos se

pueden almacenar y ejecutar de forma local, ejecutar de forma local pero distribuida en Internet o ejecutar de forma remota.

• Simplificar el desarrollo. Infraestructura de componentes (assemblies).

• Unificar los modelos de programación.

• Integración de los lenguajes.

Page 30: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Objetivos del Framework (2)• Entorno coherente de POO, los objetos se

pueden almacenar y ejecutar de forma local, ejecutar de forma local pero distribuida en Internet o ejecutar de forma remota.

• Reducir la implementación de software y los conflictos de versiones (infierno de las DLLs).

• Garantizar la ejecución segura del código.

• Coherencia entre tipos de aplicaciones muy diferentes, como las basadas en Windows o en el Web

Page 31: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Common Language Runtime (CLR)

• Modelo de programación consistente.• Modelo de programación sencillo.• Desaparece el “infierno de las DLLs”.• Ejecución multiplataforma.• Interoperabilidad.• Gestión de memoria. • Control de tipos.• Tratamiento de excepciones.

Proporciona al código ejecutable un conjunto de servicios del sistema operativo. Es el núcleo de la plataforma .NET

Page 32: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Componentes del CLR

• Microsoft Intermediate Language (MSIL, IL o CIL). Fundamento de la interoperabilidad en los

lenguajes .NET

• JIT Compiler.

• Metadatos.

• Ensamblados.

• Common Type System (CTS)

Page 33: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Base Class Library (BCL)• Está formada por cientos de tipos de datos (alrededor

de 4000 clases).• Permite acceder a los servicios ofrecidos por el CLR y

a muchas funcionalidades necesarias a la hora de escribir aplicaciones.

• Es posible crear nuevas clases que extiendan o usen su funcionalidad y se integren a la perfección con el resto de las clases de la BCL.

• Está escrita en código IL, puede usarse desde cualquier lenguaje compatible con .NET.

• Organización de las clases en espacios de nombres.

Page 34: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Otras tecnologías

• Windows Forms.

• Asp .NET Web Forms.

• ADO .NET y XML.

Page 35: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Common Language Specification (CLS)

• Reglas que han de seguir las definiciones de tipos que se hagan usando un determinado lenguaje .NET si se desea que sean accesibles desde cualquier otro lenguaje .NET (complemento de la interoperabilidad).

• Los tipos de datos básicos admitidos son bool, char, byte, short, int, long, float, double, string y object.

• Las tablas han de tener una o más dimensiones, y el número de dimensiones de cada tabla ha de ser fijo. Además, han de indexarse empezando a contar desde 0

Page 36: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

C#• Microsoft diseñó C# para aprovechar el nuevo entorno o

plataforma .NET. Su lenguaje de lujo.• Lenguaje sencillo de aprender para los programadores

inexpertos.• Permite desarrollar aplicaciones de forma rápida pero a

la vez con gran control.• Integración con el desarrollo de aplicaciones Web,

XML y muchas de las tecnologías emergentes • Combinación de las mejores ideas de lenguajes como

C/C++, Delphi (Object Pascal) y Java con las mejoras de productividad de .NET.

• Lenguaje OO puro.• Recolección automática de basura.

Page 37: Programando Orientado a Objetos desde Cero con C# y.NET MSc. Roger Pérez Chávez Jefe Departamento de Informática roger.perez@umcc.cu rogerperezcu@hotmail.com

Muchas Gracias,

a su disposición

Roger Pérez Chávez

[email protected]

[email protected]

Julio A. Telot González

[email protected]