Fundamentos de POO orientadas a .Net

80
TALLER Desarrollo de Aplicaciones Profesionales con Tecnologías .NET

description

Fundamentos de POO orientadas a .Net

Transcript of Fundamentos de POO orientadas a .Net

Page 1: Fundamentos de POO orientadas a .Net

TALLERDesarrollo de Aplicaciones

Profesionales con Tecnologías .NET

Page 2: Fundamentos de POO orientadas a .Net

Sorey García(@soreygarcia)

Page 3: Fundamentos de POO orientadas a .Net

AGENDA

• Sesión 1 (Junio 28 4:30 P.M. a 6:30 P.M.)– Introducción a los conceptos básicos

• Orientación a Objetos• .NET Framework

– TALLER: Aprendiendo a C#.NET y LINQ con Winforms

Page 4: Fundamentos de POO orientadas a .Net

¡ADVERTENCIA!

Este taller es para personas con conocimientos básicos, y también

para aquellos que necesitan refrescarse o renovarse un poco.

Los temas serán abordados en sus formas más simples con el ánimo de dar las herramientas necesarias para

abordar las dos sesiones del taller.

Page 5: Fundamentos de POO orientadas a .Net

¡ADVERTENCIA!

Hacer una aplicación profesional no necesariamente significa hacer algo elaborado o técnicamente complejo, significa construir software pensando

en su crecimiento, evolución y mantenimiento futuro.

Page 6: Fundamentos de POO orientadas a .Net

Un par de consejos antes de empezar…

Page 7: Fundamentos de POO orientadas a .Net

Antes de intentar aprender algo ten presente…

lo complejo, alguna vez… fue simple,entiende lo primero lo simple.

Page 8: Fundamentos de POO orientadas a .Net

El problema está en la técnica,

no en la herramienta

Page 9: Fundamentos de POO orientadas a .Net

Manejar correctamente los conceptos te ayudará a defenderte en

cualquier herramienta

Tu preocúpate por aprender a razonar y pensar, para aprender a usar las herramientas, están los tutoriales

Page 10: Fundamentos de POO orientadas a .Net

¿Listos?

Page 11: Fundamentos de POO orientadas a .Net

¿Qué es la

orientación a objetos?

Page 12: Fundamentos de POO orientadas a .Net

La orientación a objetos es un

paradigma de programación

Page 13: Fundamentos de POO orientadas a .Net

Si bien esta definición es correcta, el

problema está, en que tanto lo comprendemos…

Page 14: Fundamentos de POO orientadas a .Net

Intentemos algo simple…

La orientación a objetos es

una forma de ver las situaciones y de analizar

el entorno…

Page 15: Fundamentos de POO orientadas a .Net

…es una forma de entender un problema

identificando las entidades principales que se encuentran en el

Page 16: Fundamentos de POO orientadas a .Net

El propósito de la programación orientada a objetos consiste en

proporcionar una solución informática identificando

los conceptos relevantes presentes en el problema

conceptos relevantes = entidades

Identificar los conceptos relevantes

o las entidades involucradas en un problema significa…

abstraer los detalles y particularidades y emitir un

concepto genérico

Page 17: Fundamentos de POO orientadas a .Net

Esto se logra identificando las

características comunes de un grupo de objetos

y las acciones que realizan o bien que producen algún efecto sobre ellos

Page 18: Fundamentos de POO orientadas a .Net

La programación orientada a objetos (POO) es por tanto

una forma de desarrollar software, pensando en las entidades

principales del problema que dicho sistema pretende resolver y por tanto los datos que se manipularán de esas entidades y las acciones de las que estas son responsables dentro del

sistema.

Page 19: Fundamentos de POO orientadas a .Net

El lenguaje de programación es

la herramienta para resolver el problema

Page 20: Fundamentos de POO orientadas a .Net

El propósito de la POO no tiene que ver con el lenguaje de programación

Sobre el lenguaje de programación lo que podemos decir es que este soporta unas y otras características

de la Orientación a Objetos

También podemos decir que cada quien elige la herramienta que satisface las necesidades de su

proyecto, tanto a nivel de implementación como de conocimiento disponible en su recurso humano

Page 21: Fundamentos de POO orientadas a .Net

Y aunque es claro que existe más de una herramienta para

resolver un problema

Page 22: Fundamentos de POO orientadas a .Net

Es seguro que también hay

formas más fáciles de hacerlo…

Page 23: Fundamentos de POO orientadas a .Net

Veamos algunos

conceptos clave…

Page 24: Fundamentos de POO orientadas a .Net

¿Qué es un Objeto?

Page 25: Fundamentos de POO orientadas a .Net

Cualquier Cosa

Un Objeto es…

Page 26: Fundamentos de POO orientadas a .Net

!En serio!

Cualquier Cosa

Page 27: Fundamentos de POO orientadas a .Net

Cualquier Cosa…de la que puedas emitir un concepto.

Cualquier Cosa,

todo es un objeto.

Es decir…

Page 28: Fundamentos de POO orientadas a .Net

Veamos,

Este es un objeto

Es un automóvil de plástico, rojo

con 4 llantas y 2 puertas

Page 29: Fundamentos de POO orientadas a .Net

Si realizáramos el proceso mental lentamente,

nos daríamos cuenta de que al ver el objeto

emitimos un concepto preconcebido

es decir automóvil

Page 30: Fundamentos de POO orientadas a .Net

En la imagen cada uno de los elementos que vemos es considerado

un objeto

Sin embargo de todos ellos

podemos emitir un concepto conocido y para ello usamos la palabra globo

Page 31: Fundamentos de POO orientadas a .Net

A ese concepto conocido que representa una agrupación de objetos

…lo llamamos Clase

Page 32: Fundamentos de POO orientadas a .Net

Una clase es como un molde de galletas…

… este determina la forma y

características que

la galleta (el objeto) va a tener, sin ser el objeto real

Page 33: Fundamentos de POO orientadas a .Net

La clase es una…

…los objetos son todos los que podamos

crear mentalmente a partir de dicha clase o concepto

Page 34: Fundamentos de POO orientadas a .Net

¿Recuerdan eso de la abstracción?

Pues bien…

Una clase esta compuesta por

características (atributos o propiedades)

y por comportamientos (acciones o métodos)

…esos que elegimos como generalidades del conjunto de

objetos comunes de nuestro problema a resolver

Page 35: Fundamentos de POO orientadas a .Net

Así entonces…

entidad =

concepto relevante =

clase

Page 36: Fundamentos de POO orientadas a .Net

Las características y

comportamientos de una clase son determinadas por el contexto del problema

o escenario

Esto en programación quiere decir, que dentro de un sistema, solo

implementamos los atributos y

métodos relacionados con el ámbito del problema que estamos

solucionando.

Page 37: Fundamentos de POO orientadas a .Net

Veamos algunos conceptos adicionales…

A los valores que tienen los atributos

de un objeto se les conoce como

el estado del objeto, y a los atributos y métodos que ofrece se les

conoce como la interfaz al código usado para construir las clases

se le conoce como la

implementación de la clase.

Page 38: Fundamentos de POO orientadas a .Net

Los objetos se comunican se comunican con otros a través de

mensajes

Un mensaje es una comunicación dirigida a un objeto, que le ordena que ejecute uno de

sus métodos con ciertos parámetros asociados al evento que lo generó.

Wikipedia

Page 39: Fundamentos de POO orientadas a .Net

Con respecto a la comunicación entre objetos tenemos más

principiosalta cohesión y el bajo

acoplamiento

Page 40: Fundamentos de POO orientadas a .Net

Cuando decimos que un objeto tiene una

alta cohesión hablamos de que sus características y comportamientos

están estrechamente relacionados

La relación que tienen esta determinada por el contexto del problema a resolver

Page 41: Fundamentos de POO orientadas a .Net

Cuando decimos que un objeto tiene una bajo acoplamiento

hablamos del nivel de independencia que tiene un objeto con respecto a otros

El hacer un objeto independiente de los demás ayudará a que ese objeto pueda ser usado en otros

contexto

Page 42: Fundamentos de POO orientadas a .Net

… la modularidad y la reusabilidad

Qué son?

Los principios que dirigen la orientación a objetos son…

Page 43: Fundamentos de POO orientadas a .Net

En términos simples la modularidad significa

trabajar por partes…

Esas partes deberían ser lo más independientes posibles, como piezas de Lego, de esa forma podrías usar diferentes

piezas en la construcción de otro sistema

Page 44: Fundamentos de POO orientadas a .Net

y la reusabilidad significa

¡No se invente la rueda!

Lo que ya esta hecho es para usarse y algunas de las cosas que no están hechas, deben construirse

pensando en que alguien necesitará usarlo alguna vez.

Por otro lado recuerde, reusar no es simplemente

copiar y pegar código.

Page 45: Fundamentos de POO orientadas a .Net

¡UN CONSEJO!

No inventarse la rueda no significa, que no mejores la

rueda.

Page 46: Fundamentos de POO orientadas a .Net

Por último, veamos algunas características de la

Programación Orientada a Objetos

Page 47: Fundamentos de POO orientadas a .Net

Encapsulamiento

Page 48: Fundamentos de POO orientadas a .Net

Herencia

Page 49: Fundamentos de POO orientadas a .Net

Polimorfismo

Page 50: Fundamentos de POO orientadas a .Net

Empecemos a conocer nuestro problema

¿Qué tal algo que todos conocemos?

Aplicación de Aforo a Campus Party

Page 51: Fundamentos de POO orientadas a .Net

TipoCampusero<<enumeration>>

+Participante+Ponente+Colaborador+NoAplica

Campusero

+Identificacion+Nombres+Apellidos+CorreoElectronico+Clave

+IniciarSesion()+FinalizarSesion()+InscribirCampusero()+ActualizarCampusero()+GenerarAcreditacion()+AsignarServicio()

Zona

+Nombre

+RegistrarZona()+ActualizarZona()+EliminarZona()

Area

+Nombre

+RegistrarArea()+ActualizarArea()+EliminarArea()

Conferencia

+Nombre+Descripcion+FechaHora

+RegistrarConferencia()+ActualizarConferencia()+CancelarConferencia()

tiene asociados

0..*

tiene como ponentes1..*

Servicio

+Nombre+Descripcion+Valor

+CrearServicio()+EliminarServicio()+ActualizarServicio()+ConsultarServicio()+ConsultarServicios()

puede adquirir0..*

Page 52: Fundamentos de POO orientadas a .Net

¿Recuerdan esto?

“No se invente la rueda....”

¿Qué es un

Framework?

Page 53: Fundamentos de POO orientadas a .Net

Los edificios de una ciudad son todos los tipos de software que podemos construir

Veámoslo así…

Page 54: Fundamentos de POO orientadas a .Net

Suponga que usted necesita construir un edificio…

Page 55: Fundamentos de POO orientadas a .Net

Ahora imagine que a usted le tocara

construir cada una de las partes…

Page 56: Fundamentos de POO orientadas a .Net

¿Cuánto tiempo cree que tardaría

en terminar?

Lo mismo sucede con el software, si cada vez tuviéramos que construir todos los componentes que lo conforman,

tardaríamos mucho más tiempo…

Page 57: Fundamentos de POO orientadas a .Net

Un framework es, básicamente, un conjunto de clases que interactúan en

forma cooperativa para dar solución a una determinada necesidad.

¿Qué es un framework?

Page 58: Fundamentos de POO orientadas a .Net

En términos simples un framework es un

conjunto de clases base agrupadas en componentes, que pueden ser reutilizadas

para la construcción de nuevo software

Ahora un poco menos conceptual...

Page 59: Fundamentos de POO orientadas a .Net

Las características principales de un framework son:

Estar enfocado en un tema específico

y el ser altamente reutilizable.

Page 60: Fundamentos de POO orientadas a .Net

Microsoft .NET

.NET es el conjunto de tecnologías en las que Microsoft ha trabajado con el objetivo de

obtener una plataforma sencilla y potente para distribuir el software en forma de servicios que puedan ser suministrados

remotamente y que puedan comunicarse y combinarse unos con otros de manera

totalmente independiente de la plataforma, lenguaje de programación y

modelo de componentes con los que hayan sido desarrollados.

Page 61: Fundamentos de POO orientadas a .Net

¿Qué es Visual Studio .NET?

Es entorno de desarrollo (IDE), la herramienta sobre la cual los programadores desarrollan el software

Page 62: Fundamentos de POO orientadas a .Net

Línea de Tiempo

2005

2007

2008

Beta

2008

.NET Framework 3.0

.NET Framework 3.5

.NET Framework 2.0

2010.NET Framework 4

2010

Page 63: Fundamentos de POO orientadas a .Net

¿Qué es .NET Framework?

Page 64: Fundamentos de POO orientadas a .Net

Es una Plataforma de Desarrollo, la cual esta

compuesta por:

Un entorno de ejecución (Runtime)Bibliotecas de funcionalidad (Class Library)Lenguajes de programación Compiladores

.NET Framework

Page 65: Fundamentos de POO orientadas a .Net

¿Qué NO es?

• NO es un sistema operativo• NO es un lenguaje de programación• NO es un entorno de desarrollo• NO es un servidor de aplicaciones

Page 66: Fundamentos de POO orientadas a .Net

¿Qué es el .NET Framework?• Un conjunto de tecnologías que me

permiten:– Unir las aplicaciones Web actuales que están

aisladas, de manera muy fácil– Acceder a información en cualquier momento, en

cualquier lugar– Simplificar el desarrollo y la implementación– Desarrollar aplicaciones para cualquier

dispositivo, sin necesidad de mucho esfuerzo.– Reutilizar mucho código– Hacer más, con menos

Page 67: Fundamentos de POO orientadas a .Net

Algunas Características• Completamente Orientado a Objetos• Multilenguaje• Modelo de programación único para todo

tipo de aplicaciones y dispositivos de hardware

• Se integra fácilmente con aplicaciones existentes desarrolladas en plataformas Microsoft o en otras plataformas.

Page 68: Fundamentos de POO orientadas a .Net

Línea de Tiempo

.NET FrameworkVisual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASP

Visual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#

Visual Studio 2008.NET Framework 3.0 – 3.5.NET Compact Framework

2000 2001 2002 2003 2004 2005 2006 2008 2010

Visual Studio 2005.NET Framework 2.0.NET Compact Framework 2.0

Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#

Visual Studio 2010.NET Framework 4.0F#

Page 69: Fundamentos de POO orientadas a .Net

Microsoft .NET Framework 2.0

Biblioteca de Clases Base

Common Language Specification

Common Language Runtime

ADO.NET: Datos y XML

VB C++ C#V

isu

al S

tud

io .N

ET

ASP.NET: Servicios Weby Web Forms

J# …

WindowsForms

Page 70: Fundamentos de POO orientadas a .Net

Windows 7, Windows Vista, Windows XP, Windows Server 2008

Common Language Runtime (CLR)

Biblioteca de Clases

ASP.NET WPF

WCF

WF

WCS

CLS y CTS

VB C# J# IronPhyton

¿Qué son los demás?

ADO.NET LINQ

Add-in Framework

WindowsForms

WF & WCF

Enhancements

Additional

Enhancements

MVC

Dynamic Data

Entity Framework

Data Services

Ruby …

Page 71: Fundamentos de POO orientadas a .Net

Microsoft .NET Framework

Core

Servicios

Base Class Library

Common Language Runtime

Windows Workflow

Foundation

Managed Extensibility Framework

Data Services

Windows Communicat

ion Foundation

“Velocity”

PresentaciónWindows

Presentation

Foundation

ASP.NET(WebForms,

MVC, Dynamic

Data)

Acceso a Datos

Entity Framework

LINQ

ADO.NET

Parallel Extensions

WinForms LINQ to SQL

LanguagesDynamic Language Runtime

Page 72: Fundamentos de POO orientadas a .Net

Common Language Runtime (CLR)• Es el motor de ejecución de .NET• Caracteristicas:

– Compilacion Just In Time (JIT)– Gestion de Memoria (Garbage Collector)– Gestion de Errores (excepciones)– Ejecucion basada en componentes

(assemblies)– Gestion de seguridad– Multithreading

Page 73: Fundamentos de POO orientadas a .Net

¿Como trabaja el CLR?

Código Fuente

Cualquier lenguaje .NET

Compilador

Assembly (MSIL)

Bibliotecao Ejecutable

Page 74: Fundamentos de POO orientadas a .Net

Tiempos: Compilación y Ejecución

Compilación

Antes de la instalación o cuando se ejecuta por primera vez

Ejecución

JIT Compiler

Código Nativo

MSILCódigo

Metadata

CódigoFuente

CompiladorLenguaje

Page 75: Fundamentos de POO orientadas a .Net

VB.NETCódigoFuente

Compilador VB.NET

C++.NETC#

AssemblyCódigo MSIL

Sistema Operativo (Windows)

Common Language Runtime

Compilador JIT

Código Nativo

Código Manejado

ComponenteNo Manejado

Modelo de Ejecución del CLR

CompiladorC#

CompiladorC++ .NET

AssemblyCódigo MSIL

AssemblyCódigo MSIL

Page 76: Fundamentos de POO orientadas a .Net

Estructura de un proyecto .NET

• Solución– Proyectos (Assemblies)

• Namespaces– Clases

• Archivos de configuración• Recursos adicionales

Page 77: Fundamentos de POO orientadas a .Net

Estructura de un Assembly

Metadata

Código CompiladoMSIL

Recursos

MiBiblioteca.DLL

Descripción de Tipos

ClasesClases BaseInterfaces ImplementadasAtributos de las ClasesMétodos de las Clases

NombreVersiónCultura

Manifiesto del Assembly

Otros AssembliesPermisos de SeguridadTipos Externos

Page 78: Fundamentos de POO orientadas a .Net

TAREA

• Para desarrollar la siguiente sesión del taller se espera que se traiga una idea de proyecto para implementar

• Si no quieres crear una nueva idea igual puedes bajar el material y el avance del que estamos trabajando en www.avanet.org

Page 79: Fundamentos de POO orientadas a .Net

• @soreygarcia• @mteheran• @dramirez2009• @khriztianmoreno• @jodageeks• @andreslon• @pavelespitia• @dxp2• @hernandgr (virtual)• @magicovercast (virtual)• @elianaca (virtual)

ACOMPAÑAMIENTO

Page 80: Fundamentos de POO orientadas a .Net

LOS ESPERAMOS EN LA SESIÓN 2

30 de Junio – 10 a.m. a 12 m.