Sunteți pe pagina 1din 80

TALLER

Desarrollo de Aplicaciones
Profesionales con Tecnologas .NET

Sorey Garca
(@soreygarcia)

AGENDA
Sesin 1 (Junio 28 4:30 P.M. a 6:30 P.M.)
Introduccin a los conceptos bsicos
Orientacin a Objetos
.NET Framework

TALLER: Aprendiendo a C#.NET y LINQ con


Winforms

ADVERTENCIA!
Este taller es para personas con conocimientos
bsicos, y tambin para aquellos que
necesitan refrescarse o renovarse un poco.
Los temas sern abordados en sus formas ms
simples con el nimo de dar las herramientas
necesarias para abordar las dos sesiones del
taller.

ADVERTENCIA!
Hacer una aplicacin profesional no
necesariamente significa hacer algo
elaborado o tcnicamente complejo, significa
construir software pensando en su
crecimiento, evolucin y mantenimiento
futuro.

Un par de consejos antes de


empezar

Antes de intentar aprender algo ten presente

simple

lo complejo, alguna vez fue


,
entiende lo primero lo simple.

El problema est en la
no en la

tcnica,

herramienta

Manejar correctamente los conceptos te


ayudar a defenderte en

cualquier herramienta

Tu preocpate por aprender a razonar y pensar,


para aprender a usar las herramientas, estn los
tutoriales

Listos?

Qu es la

orientacin a objetos?

La orientacin a objetos es un

paradigma de
programacin

Si bien esta definicin

es correcta, el problema est, en

que tanto lo comprendemos

Intentemos algo simple

La orientacin a objetos es

una forma de ver las situaciones y


de analizar el entorno

es una forma de entender

un problema

identificando las entidades


principales que se encuentran en el

Identificar los conceptos relevantes

o las entidades involucradas


El propsito de la programacin orientada a objetos
en un problema significa
consiste en proporcionar una solucin informtica identificando
los conceptos

relevantes presentes en el problema

conceptos relevantes = entidades

abstraer los detalles y

particularidades y emitir un

concepto genrico

Esto se logra identificando las

caractersticas comunes de un grupo de objetos


y las acciones que realizan o bien que producen
algn efecto sobre ellos

La programacin 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
manipularn de esas entidades y las acciones de las que estas
son responsables dentro del sistema.

El lenguaje de programacin es

la herramienta
para resolver el

problema

El propsito de la POO no tiene que ver con


el lenguaje de programacin
Sobre el lenguaje de programacin lo que
podemos decir es que este soporta unas y otras caractersticas
de la Orientacin a Objetos
Tambin podemos decir que cada quien elige la herramienta
que satisface las necesidades de su proyecto, tanto a nivel de
implementacin como de conocimiento disponible en su
recurso humano

Y aunque es claro que existe ms


de una herramienta para

resolver un

problema

Es seguro que tambin hay


formas ms
de hacerlo

fciles

Veamos algunos

conceptos clave

Qu es un

Objeto?

Un

Objeto es

Cualquier Cosa

!En serio!

Cualquier Cosa

Cualquier Cosa

de la que puedas emitir un concepto.

Es decir

Cualquier Cosa

todo es un objeto.

Veamos,

Este es un objeto

Es un automvil
de plstico, rojo
con 4 llantas y 2 puertas

Si realizramos el proceso mental lentamente,


nos daramos cuenta de que al ver el objeto

emitimos un concepto preconcebido


es decir

automvil

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

A ese concepto conocido que representa una


agrupacin de objetos

lo llamamos

Clase

Una clase es como un molde de galletas

este determina la forma y caractersticas que

la galleta (el

objeto) va a tener, sin ser el objeto real

La clase es una

los objetos son todos los que podamos crear

mentalmente a partir de dicha clase o concepto

Recuerdan eso de la abstraccin?


Pues bien

Una clase esta compuesta por

caractersticas (atributos o propiedades)


y por comportamientos (acciones o mtodos)
esos que elegimos como generalidades del conjunto de objetos
comunes de nuestro

problema a resolver

As entonces

entidad
=
concepto relevante
=
clase

Las caractersticas y comportamientos de una


clase son determinadas por el contexto del problema o
escenario
Esto en programacin quiere decir, que dentro de
un sistema, solo implementamos los atributos y

mtodos relacionados con el mbito del


problema que estamos solucionando.

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 mtodos que

interfaz

ofrece se les conoce como la


al
cdigo usado para construir las clases se le

conoce como la implementacin de la


clase.

Los objetos se comunican se comunican


con otros a travs de

mensajes

Un mensaje es una comunicacin dirigida a un objeto,


que le ordena que ejecute uno de sus mtodos con
ciertos parmetros asociados al evento que lo gener.

Wikipedia

Con respecto a la comunicacin entre


objetos tenemos ms principios
alta cohesin y el bajo acoplamiento

Cuando decimos que un objeto tiene una


alta cohesin hablamos de que sus
caractersticas y comportamientos estn
estrechamente relacionados
La relacin que tienen esta determinada por el contexto del
problema a resolver

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 dems ayudar a
que ese objeto pueda ser usado en otros contexto

Los principios que dirigen la orientacin a objetos son

la modularidad y la reusabilidad

Qu son?

En trminos simples la modularidad


significa trabajar por partes
Esas partes deberan ser lo ms independientes posibles, como piezas
de Lego, de esa forma podras usar diferentes piezas en la
construccin de otro sistema

y la reusabilidad significa

No se invente la rueda!
Lo que ya esta hecho es para usarse y algunas de las cosas
que no estn hechas, deben construirse pensando en que
alguien necesitar usarlo alguna vez.
Por otro lado recuerde, reusar no es simplemente
copiar y pegar cdigo.

UN CONSEJO!
No inventarse la rueda no
significa, que no mejores la
rueda.

Por ltimo, veamos algunas caractersticas de la

Programacin Orientada a Objetos

Encapsulamiento

Herencia

Polimorfismo

Empecemos a conocer nuestro problema


Qu tal algo que todos conocemos?

Aplicacin de Aforo a Campus Party

Conferencia
+Nombre
+Descripcion
+FechaHora

Zona
+Nombre

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

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

tiene como ponentes

1..*

Campusero

<<enumeration>>
TipoCampusero
+Participante
+Ponente
+Colaborador
+NoAplica

tiene asociados
0..*

+Identificacion
+Nombres
+Apellidos
+CorreoElectronico
+Clave
+IniciarSesion()
+FinalizarSesion()
+InscribirCampusero()
+ActualizarCampusero()
+GenerarAcreditacion()
+AsignarServicio()

puede adquirir

0..*

Servicio
+Nombre
+Descripcion
+Valor
+CrearServicio()
+EliminarServicio()
+ActualizarServicio()
+ConsultarServicio()
+ConsultarServicios()

Area
+Nombre
+RegistrarArea()
+ActualizarArea()
+EliminarArea()

Qu es un

Framework?

Recuerdan esto?

No se invente la rueda....

Vemoslo as

Los edificios de una ciudad son todos los tipos de


software que podemos construir

Suponga que usted necesita construir un edificio

Ahora imagine que a usted le tocara construir


cada una de las partes

Cunto tiempo cree que tardara


en terminar?
Lo mismo sucede con el software, si cada vez
tuviramos que construir todos los componentes que
lo conforman, tardaramos mucho ms tiempo

Qu es un framework?
Un framework es, bsicamente, un conjunto de
clases que interactan en forma cooperativa para
dar solucin a una determinada necesidad.

Ahora un poco menos conceptual...


En trminos simples un framework es un conjunto
de clases base agrupadas en componentes, que
pueden ser reutilizadas para la construccin de
nuevo software

Las caractersticas principales


de un framework son:

Estar enfocado en un tema

y el ser altamente

especfico

reutilizable.

Microsoft .NET
.NET es el conjunto de tecnologas 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
programacin y modelo de componentes con los que
hayan sido desarrollados.

Qu es Visual Studio .NET?


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

Lnea de Tiempo

.NET Framework 4

2010
2010

2008
2008

2007

2005

.NET Framework 3.5

.NET Framework 3.0

Beta

.NET Framework 2.0

Qu es .NET Framework?

.NET Framework
Es una Plataforma de Desarrollo, la cual esta
compuesta por:
Un entorno de ejecucin (Runtime)
Bibliotecas de funcionalidad (Class Library)
Lenguajes de programacin
Compiladores

Qu NO es?

NO es un sistema operativo
NO es un lenguaje de programacin
NO es un entorno de desarrollo
NO es un servidor de aplicaciones

Qu es el .NET Framework?
Un conjunto de tecnologas que me permiten:
Unir las aplicaciones Web actuales que estn aisladas, de
manera muy fcil
Acceder a informacin en cualquier momento, en cualquier
lugar
Simplificar el desarrollo y la implementacin
Desarrollar aplicaciones para cualquier dispositivo, sin
necesidad de mucho esfuerzo.
Reutilizar mucho cdigo
Hacer ms, con menos

Algunas Caractersticas
Completamente Orientado a Objetos
Multilenguaje
Modelo de programacin nico para todo tipo de
aplicaciones y dispositivos de hardware
Se integra fcilmente con aplicaciones existentes
desarrolladas en plataformas Microsoft o en otras
plataformas.

Lnea de Tiempo

.NET Framework

Visual Studio 6.0

Visual Basic
VBA
Visual FoxPro
VBScript
C++
J++
JScript
ASP

2000

Visual Studio .NET 2003


.NET Framework 1.1
.NET Compact Framework

Visual Studio 2008


.NET Framework 3.0 3.5
.NET Compact Framework

J#

2001

Visual Studio .NET 2002


.NET Framework 1.0

Visual Basic .NET


C#

2002

2003

2004

2005

Visual Studio 2005


.NET Framework 2.0
.NET Compact Framework 2.0

2006

2008

2010

Visual Studio 2010


.NET Framework 4.0
F#

Microsoft .NET Framework 2.0


VB

C++

C#

J#

Common Language Specification


Windows
Forms

ADO.NET: Datos y XML


Biblioteca de Clases Base
Common Language Runtime

Visual Studio .NET

ASP.NET: Servicios Web


y Web Forms

Qu son los dems?


VB

C#

IronPhyton

J#

Ruby

CLS y CTS
ASP.NET

WPF

WCS

ADO.NET

WCF

LINQ

Windows
Forms

WF

Add-in
Framework

WF & WCF
Enhancements

Additional

Dynamic Data

Enhancements

Entity
Framework

MVC

Data Services

Biblioteca de Clases
Common Language Runtime (CLR)
Windows 7, Windows Vista, Windows XP, Windows Server 2008

Microsoft .NET Framework


Presentacin
ASP.NET
(WebForms,
MVC, Dynamic
Data)

Windows
Presentation
Foundation

WinForms

Servicios
Data Services

Windows
Communication
Foundation

Velocity

Windows
Workflow
Foundation

Acceso a Datos
ADO.NET

Entity
Framework

LINQ to SQL

Core
Parallel
Extensions

Managed
Extensibility
Framework

LINQ

Languages

Common Language Runtime

Dynamic
Language
Runtime

Base Class
Library

Common Language Runtime (CLR)


Es el motor de ejecucin 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

Como trabaja el CLR?

Cdigo
Fuente

Cualquier lenguaje
.NET

Compilador

Assembly
(MSIL)

Biblioteca
o Ejecutable

Tiempos: Compilacin y Ejecucin


Compilacin
Cdigo
Fuente

Compilador
Lenguaje

Ejecucin
Cdigo
Nativo

JIT Compiler

Cdigo
MSIL
Metadata

Antes de la
instalacin o cuando
se ejecuta por
primera vez

Modelo de Ejecucin del CLR


Cdigo
Fuente

VB.NET
Compilador
VB.NET

Cdigo
Manejado

Assembly
Cdigo MSIL

C#

C++.NET

Compilador
C#

Compilador
C++ .NET

Assembly
Cdigo MSIL

Assembly
Cdigo MSIL

Common Language Runtime


Compilador JIT
Cdigo Nativo

Sistema Operativo (Windows)

Componente
No Manejado

Estructura de un proyecto .NET


Solucin
Proyectos (Assemblies)
Namespaces
Clases

Archivos de configuracin
Recursos adicionales

Estructura de un Assembly
Descripcin de Tipos
MiBiblioteca.DLL
Metadata
Recursos
Cdigo Compilado
MSIL

Clases
Clases Base
Interfaces Implementadas
Atributos de las Clases
Mtodos de las Clases

Manifiesto del Assembly


Nombre
Versin
Cultura
Otros Assemblies
Permisos de Seguridad
Tipos Externos

TAREA
Para desarrollar la siguiente sesin 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

ACOMPAAMIENTO

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

LOS ESPERAMOS EN LA
SESIN 2
30 de Junio 10 a.m. a 12 m.

S-ar putea să vă placă și