TALLERDesarrollo de Aplicaciones Profesionales con Tecnologías .NET
Sorey García(@soreygarcia)
AGENDASesión 1Introducción a los conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)
AGENDASesión 2 (2 horas)TALLER: Construyendo aplicación profesional.Presentación (Winforms, ASP.NET)Lógica de NegocioAcceso a Datos (LINQ, SQL Server 2008)
¡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.
¡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.
Un par de consejos antes de empezar…
Antes de intentar aprender algo ten presente…lo complejo, alguna vez… fue simple,entiende lo primero lo simple.
El problema está en la técnica, no en la herramienta
Manejar correctamente los conceptos te ayudará a defenderte en cualquier herramientaTu preocúpate por aprender a razonar y pensar, para aprender a usar las herramientas están los tutoriales
¿Listos?
AGENDASesión 1Introducción a los conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)
¿Qué es la orientación a objetos?
La orientación a objetos es un paradigma de programación
Si bien esta definición es correcta, el problema está, en que tanto lo comprendemos…
Intentemos algo simple…La orientación a objetos es una forma de ver las situaciones y de analizar el entorno…
…es una forma de entender un problemaidentificando las entidades principales que se encuentran en el
Identificar los conceptos relevantes o las entidades involucradas en un problema significa…El propósito de la programación orientada a objetosconsiste en proporcionar una solución informática identificando los conceptos relevantespresentes en el problemaconceptos relevantes  = entidadesabstraer los detalles y particularidades y emitir un concepto genérico
Esto se logra identificando lascaracterísticas comunesde un grupo de objetosy las accionesque realizan  o bien que producen algún efecto sobre ellos
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.
El lenguaje de programación es la herramienta para resolver elproblema
El propósitode la POO no tiene que ver con el lenguaje de programaciónSobre el lenguaje de programación lo que podemos decir es que este soporta unas y otras característicasde la Orientación a ObjetosTambié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
Y aunque es claro que existe más de una herramienta pararesolver unproblema
Es seguro que también hay formas más fáciles de hacerlo…
Veamos algunosconceptos 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 objetoEs un automóvil de plástico, rojocon 4 llantas y 2 puertas
Si realizáramos el proceso mental lentamente, nos daríamos cuenta de que al ver el objetoemitimos un concepto preconcebidoes decirautomóvil
En la imagen cada uno de los elementos que vemos es considerado un objetoSin embargo de todos ellos podemos emitir un concepto conocido y para ello usamos la palabra globo
A ese concepto conocidoque representa una agrupación de objetos…lo llamamosClase
Unaclase es como un molde de galletas…… este determina la forma y característicasque la galleta (el objeto) va a tener, sin ser el objeto real
La clasees una… …los objetosson todos los que podamos crear mentalmente a partir de dicha claseo concepto
¿Recuerdan eso de la abstracción?Pues bien…Una claseesta 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
Así entonces…entidad= concepto relevante = clase
Las característicasy comportamientosde una clase son determinadas por el contexto del problema o escenarioEsto en programación quiere decir, que dentro de un sistema, solo implementamos los atributosy métodosrelacionados con el ámbito del problema que estamos solucionando.
Veamos algunos conceptos adicionales…A los valores que tienen los atributos de un objetose les conoce como el estado del objeto, y a los atributos y métodos que ofrece se les conoce como la interfazal código usado para construir las clases se le conoce como la implementaciónde la clase.
Los objetosse comunican se comunican con otros a través de mensajesUn 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
Con respecto a la comunicación entre objetos tenemos más principiosalta cohesión y el bajo acoplamiento
Cuando decimos que un objeto tiene una alta cohesiónhablamos de que sus características y comportamientos están estrechamente relacionadosLa relación 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 otrosEl hacer un objeto independiente de los demás ayudará a que ese objeto pueda ser usado en otros contexto
Los principios que dirigen la orientación a objetos son…… la modularidad y la reusabilidadQué son?
En términos simples la modularidadsignifica 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
y la reusabilidadsignifica¡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.
Por último, veamos algunas características de la Programación Orientada a Objetos
Encapsulamiento
Herencia
Polimorfismo
Empecemos a conocer nuestro problema¿Qué tal algo que todos conocemos?Aplicación de Aforo a Campus Party
Algunos Objetos(Diagrama pendiente)
AGENDASesión 1Introducción a los conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Aprendiendo .NET con C# (1 hora)
¿Qué es una aplicación distribuida?
Es una aplicación con distintos componentesque se ejecutan en entornos separados, normalmente en diferentes plataformas conectadas a través de una redWikipedia
¿Se entendió?Veamos que tanto…
¿Cuales son los componentesque se distribuyen? ¿Qué criterios se usan para determinar que conforma un componente?¿A través de que mecanismos se realiza la comunicación entre componentes distribuidos?¿Qué es un componente?
Algunos Conceptos…ProtocolosCliente/ServidorCapasDespliegueWebservicesUMLServiciosObjetosInterfacesNivelesComunicaciónInteroperabilidadArquitecturaLógica de NegocioAcceso a DatosInterfaz de UsuarioPaquetesComponentes
Vamos por partes…¿A qué se refiere la distribución?Las distribución refiere a la construcción de software por partes, a las cuales les son asignadas un conjunto específicode responsabilidades  dentro de un sistema.
Esta distribución como bien enunciaba la definición formal, habla de que las partes o componentes se encuentran en entornos separados, sin embargo, lo que tiene implícito esta definición, es que para realizar esta separación física primero debe tenerse clara la separación lógicade las partes de una aplicación, esto quiere decir que programáticamente existe una forma de separaro agruparlos componentes.
La separación físicano es en todas las ocasiones “maquinas diferentes” de acuerdo a la arquitectura también puede ser la ubicación de un conjunto de funcionalidades en archivos, rutas o tecnologías diferentes dentro de la misma máquina
Ahora bien, cuando hablemos de distribución lógica lo entenderemos como separación por “Capas” (layers) y cuando hablemos de distribución física usaremos el término separación en “Niveles” (tiers)
La separación por capas y niveles hace parte de la arquitectura del sistema y es definida por el arquitecto de la aplicación.
“Las capasdentro de una arquitectura son un conjunto de servicios especializados que pueden ser accesibles por múltiples clientes y que deben ser fácilmente reutilizables.”
Las capas además, según el escenarioy tipo de aplicación, están separadas físicamente.Si, físicamente! Lo que significa que una capa puede ser a su vez un nivel
Una capa puede contener muchoscomponentes, un mismo componente puede ubicarse en variascapas de acuerdo a su naturaleza y a las consideraciones explicitas de la arquitectura… como? No hay problema, lo iremos entendiendo, de eso se trata…
¿Qué es un componente?Veamos una definición formal...Un componentees un elementode software que encapsulauna serie de funcionalidades. Un componentees una unidad independiente, que puede ser utilizado en conjunto con otros componentes para formar un sistema más complejo.
Cada componente de un sistema puede verse como un paqueteo móduloUn componente esta compuesto por elementos que pueden ser clasesy/o recursos complementarios como archivos de configuración, imágenes, entre otros. Y a su vez esas clases y recursos pueden están agrupados dentro del componente en subpaquetes, de acuerdo a su naturaleza o necesidades de negocio.
En este punto visualizamos varios conceptos que podemos presentar de la siguiente forma…AplicaciónNivelesCapasComponentesPaquetesClasesOtros RecursosSub paquetes
Ahora bien…El paradigma básico de la separación por capas establece al menos 3 partes distintas dentro de una aplicaciónLa PresentaciónLa Lógica de NegocioEl Acceso a Datos y los Datos
La Presentación o interfaz de usuario se refiere al mecanismo de interacción del usuario con el sistemaLos tipos de interfaces de software más comunes son las aplicaciones de ventanas y web Los tipos de interfaces de hardware más comunes son el ratón, el teclado, el micrófono, pantallas táctiles, dispositivos de audio
La Lógica de Negocio refiere el conjunto de reglas que determinan específicamente como funciona un sistema, según su naturaleza, y bajo que parámetros y condiciones de acuerdo a las necesidades de los clientes y usuarios.
El acceso a datos refiere al medio a través del cual podemos acceder y manipular los datospersistentes de un sistemaEl almacenamiento de datos refiere a la forma en que se encuentran guardados dichos datos, por ejemplo, en archivos o bases de datos.
Así nos encontramos con componentes de diferentes tiposEjecutables, Páginas Web, Librerías, Controles, Procedimientos Almacenados, Servicios Web…
Después de conocer estos conceptos básicos, podemos pasar entonces a ver, los diferentes tipos de aplicaciónAplicaciones MonolíticasAplicaciones Cliente/ServidorAplicaciones de 3 CapasAplicaciones de N Capas
Una aplicación monolítica o de una capa es aquella cuya interfaz, lógica de negocio y acceso a datos se encuentran mezclados o altamente acoplados, esto dificulta que pueda hacerse una separación lógica y física donde alguna de las partes pueda ser reutilizable.
Una aplicación Cliente/Servidor o aplicación de doscapas es aquella donde los datos y la lógica de negocio se encuentran separados de la interfaz, este tipo de aplicación también es denominada, cliente liviano.Otro escenario válido para una aplicación Cliente/Servidor, se da separando los datos de la interfaz y la lógica de negocio, este tipo de aplicación también es denominado, cliente pesado.
Una aplicación 3 capas es aquella donde la interfaz, la lógica de negocio, el acceso a datos y los datos se encuentran separados.
¡ATENCIÓN!Es muy importante entender, que la separación de la que se habla no es necesariamente física, como ya se había dicho antes, la primera separación que se da es lógica y debemos reiterar que la separación lógica es programática.
Ahora, para hacer un trabajo bien hecho, hay que reconocer que las consideraciones asociadas al desarrollo por capas…
¿Que consideraciones deberíamos tener en cuenta cuando pensamos en la Capa de Presentación?
¿Y las consideraciones de la Capa de Lógica de Negocios?
¿Y las consideraciones de la Capa de Acceso a Datos?
Bueno y si ya están separadas las 3 capas principales, ¿qué es entonces una de aplicación de N capas?
Pues bien, la evolución de la tecnología y las redes de comunicaciones, hacen que cada día se generen nuevos escenarios de intercambio de información entre empresas, y entre los mismos sistemas existentes dentro de las empresas, de forma que se satisfagan las necesidades constantes y cambiantes de clientes y usuarios, para quienes debe resultar transparenteel obtener información de un sistema u otro.
Otra de las razones importantes por las que surge este concepto, es debido a que en la evolución del desarrollo de software, se ha identificado la necesidad de crear nuevas capas, especializadas en funciones especificas, diferentes a las 3 identificadas previamente.Tal es el caso de la seguridad, el control de excepciones, el transporte de datos entre capas, la generación de trazas de errores, entre otros.
UsuariosAuditoria y Control  de ExcepcionesSeguridadComunicaciónComponentes de Interfaz de UsuarioComponentes de Proceso de Interfaz de UsuarioInterfaces de ServicioFlujos de NegocioComponentes de negocioEntidades de NegocioComponentesAccesoDatosAgentes de ServicioServiciosExternosOrígenes de DatosUnapropuestaMicrosoft Patterns & Practices
¿Qué arquitectura tendrá nuestro ejemplo de Campus Party?(Diagrama pendiente)
AGENDASesión 1Introducción a los conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)
¿Qué es un Framework?¿Recuerdan esto?“No se invente la rueda....”
Veámoslo 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…
¿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…
¿Qué es un Framework?Un frameworkes, básicamente, un conjunto de clases que interactúan en forma cooperativapara dar solución a una determinada necesidad.
Ahora un poco menos conceptual...En términos simples un frameworkes un conjunto de clases base agrupadas en componentes, que pueden ser reutilizadas para la construcción de nuevo software
He ahí la razón para entender los conceptos inicialesBien sea por que vas a usar un framework o por que quieres construir uno
Las características principales de un frameworkson: Estar enfocado en un tema específico y el ser altamente reutilizable.
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.
¿Qué es Visual Studio .NET?Es entorno de desarrollo (IDE), la herramienta sobre la cual los programadores desarrollan el software
BetaLínea de Tiempo.NET Framework 42010200820102008.NET Framework 3.5.NET Framework 3.020072005.NET Framework 2.0
¿Qué es .NET Framework?
Es una Plataforma de Desarrollo, la cual estacompuesta por:Un entorno de ejecución (Runtime)
Bibliotecas de funcionalidad (Class Library)
Lenguajes de programación
Compiladores.NET Framework
¿Qué NO es?NO es un sistema operativoNO es un lenguaje de programaciónNO es un entorno de desarrolloNO es un servidor de aplicaciones
¿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ácilAcceder a información en cualquier momento, en cualquier lugarSimplificar el desarrollo y la implementaciónDesarrollar aplicaciones para cualquier dispositivo, sin necesidad de mucho esfuerzo.Reutilizar mucho códigoHacer más, con menos
Algunas CaracterísticasCompletamente Orientado a ObjetosMultilenguajeModelo de programación único para todo tipo de aplicaciones y dispositivos de hardwareSe integra fácilmente con aplicaciones existentes desarrolladas en plataformas Microsoft o en otras plataformas.
Línea de Tiempo .NET FrameworkVisual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASPVisual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#Visual Studio 2008.NET Framework 3.0 – 3.5.NET Compact Framework2000              2001         2002         2003         2004    2005    2006    2008      2010Visual Studio 2005.NET Framework 2.0.NET Compact Framework 2.0Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#Visual Studio 2010.NET Framework 4.0F#
VBC++C#Visual Studio .NETJ#…Common Language SpecificationASP.NET: Servicios Weby Web FormsWindowsFormsADO.NET: Datos y XMLBiblioteca de Clases BaseCommon Language RuntimeMicrosoft .NET Framework 2.0
¿Qué son los demás?2.0.NET Framework 2.0VBC#J#IronPhytonRuby…3.0.NET Framework 3.0CLS y CTSASP.NETWPFWCSWF & WCF EnhancementsDynamic DataADO.NETLINQAdditional EnhancementsEntity FrameworkWCFWFAdd-in FrameworkWindowsFormsMVCData ServicesBiblioteca de ClasesCommonLanguage Runtime (CLR)Windows 7, Windows Vista,Windows XP,Windows Server 2008
Microsoft .NET FrameworkPresentaciónAcceso a DatosServiciosWindows Presentation FoundationASP.NET(WebForms, MVC, Dynamic Data)Entity FrameworkADO.NETData ServicesWindows Communication FoundationWinFormsLINQ to SQLWindows Workflow Foundation“Velocity”CoreBase Class LibraryDynamic Language RuntimeLanguagesManaged Extensibility FrameworkLINQParallel ExtensionsCommon Language Runtime
Common Language Runtime (CLR)Es el motor de ejecución de .NETCaracteristicas:Compilacion Just In Time (JIT)Gestion de Memoria (Garbage Collector)Gestion de Errores (excepciones)Ejecucion basada en componentes (assemblies)Gestion de seguridadMultithreading
¿Como trabaja el CLR?Assembly (MSIL)CompiladorBibliotecao EjecutableCódigo FuenteCualquierlenguaje .NET
CódigoMSILCódigoFuenteCompiladorLenguajeMetadataEjecuciónJIT CompilerCódigoNativoTiempos: Compilación y EjecuciónCompilaciónAntes de la instalación o cuando se ejecutaporprimeravez
Modelo de Ejecución del CLRCódigoFuenteVB.NETC++.NETC#ComponenteNo ManejadoCompilador VB.NETCompiladorC#CompiladorC++ .NETCódigo ManejadoAssemblyCódigo MSILAssemblyCódigo MSILAssemblyCódigo MSILCommon Language RuntimeCompilador JITCódigo NativoSistema Operativo (Windows)
Estructura de un proyecto .NETSoluciónProyectos (Assemblies)NamespacesClasesArchivos de configuraciónRecursos adicionales
Descripción de TiposClasesClases BaseInterfaces ImplementadasAtributos de las ClasesMétodos de las ClasesMiBiblioteca.DLLMetadataManifiesto del AssemblyCódigo CompiladoMSILNombreVersiónCulturaRecursosOtros AssembliesPermisos de SeguridadTipos ExternosEstructura de un Assembly
AGENDASesión 1Introducción a los conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)

Taller campus party .net

  • 1.
    TALLERDesarrollo de AplicacionesProfesionales con Tecnologías .NET
  • 2.
  • 3.
    AGENDASesión 1Introducción alos conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)
  • 4.
    AGENDASesión 2 (2horas)TALLER: Construyendo aplicación profesional.Presentación (Winforms, ASP.NET)Lógica de NegocioAcceso a Datos (LINQ, SQL Server 2008)
  • 5.
    ¡ADVERTENCIA!Este taller espara 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.
  • 6.
    ¡ADVERTENCIA!Hacer una aplicaciónprofesional no necesariamente significa hacer algo elaborado o técnicamente complejo, significa construir software pensando en su crecimiento, evolución y mantenimiento futuro.
  • 7.
    Un par deconsejos antes de empezar…
  • 8.
    Antes de intentaraprender algo ten presente…lo complejo, alguna vez… fue simple,entiende lo primero lo simple.
  • 9.
    El problema estáen la técnica, no en la herramienta
  • 10.
    Manejar correctamente losconceptos te ayudará a defenderte en cualquier herramientaTu preocúpate por aprender a razonar y pensar, para aprender a usar las herramientas están los tutoriales
  • 11.
  • 12.
    AGENDASesión 1Introducción alos conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)
  • 13.
    ¿Qué es laorientación a objetos?
  • 14.
    La orientación aobjetos es un paradigma de programación
  • 15.
    Si bien estadefinición es correcta, el problema está, en que tanto lo comprendemos…
  • 16.
    Intentemos algo simple…Laorientación a objetos es una forma de ver las situaciones y de analizar el entorno…
  • 17.
    …es una formade entender un problemaidentificando las entidades principales que se encuentran en el
  • 18.
    Identificar los conceptosrelevantes o las entidades involucradas en un problema significa…El propósito de la programación orientada a objetosconsiste en proporcionar una solución informática identificando los conceptos relevantespresentes en el problemaconceptos relevantes = entidadesabstraer los detalles y particularidades y emitir un concepto genérico
  • 19.
    Esto se lograidentificando lascaracterísticas comunesde un grupo de objetosy las accionesque realizan o bien que producen algún efecto sobre ellos
  • 20.
    La programación orientadaa 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.
  • 21.
    El lenguaje deprogramación es la herramienta para resolver elproblema
  • 22.
    El propósitode laPOO no tiene que ver con el lenguaje de programaciónSobre el lenguaje de programación lo que podemos decir es que este soporta unas y otras característicasde la Orientación a ObjetosTambié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
  • 23.
    Y aunque esclaro que existe más de una herramienta pararesolver unproblema
  • 24.
    Es seguro quetambién hay formas más fáciles de hacerlo…
  • 25.
  • 26.
  • 27.
    Un Objeto es…Cualquier Cosa
  • 28.
  • 29.
    Cualquier Cosa…de laque puedas emitir un concepto.Es decir…Cualquier Cosa,todo es un objeto.
  • 30.
    Veamos, Este esun objetoEs un automóvil de plástico, rojocon 4 llantas y 2 puertas
  • 31.
    Si realizáramos elproceso mental lentamente, nos daríamos cuenta de que al ver el objetoemitimos un concepto preconcebidoes decirautomóvil
  • 32.
    En la imagencada uno de los elementos que vemos es considerado un objetoSin embargo de todos ellos podemos emitir un concepto conocido y para ello usamos la palabra globo
  • 33.
    A ese conceptoconocidoque representa una agrupación de objetos…lo llamamosClase
  • 34.
    Unaclase es comoun molde de galletas…… este determina la forma y característicasque la galleta (el objeto) va a tener, sin ser el objeto real
  • 35.
    La clasees una……los objetosson todos los que podamos crear mentalmente a partir de dicha claseo concepto
  • 36.
    ¿Recuerdan eso dela abstracción?Pues bien…Una claseesta 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
  • 37.
  • 38.
    Las característicasy comportamientosdeuna clase son determinadas por el contexto del problema o escenarioEsto en programación quiere decir, que dentro de un sistema, solo implementamos los atributosy métodosrelacionados con el ámbito del problema que estamos solucionando.
  • 39.
    Veamos algunos conceptosadicionales…A los valores que tienen los atributos de un objetose les conoce como el estado del objeto, y a los atributos y métodos que ofrece se les conoce como la interfazal código usado para construir las clases se le conoce como la implementaciónde la clase.
  • 40.
    Los objetosse comunicanse comunican con otros a través de mensajesUn 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
  • 41.
    Con respecto ala comunicación entre objetos tenemos más principiosalta cohesión y el bajo acoplamiento
  • 42.
    Cuando decimos queun objeto tiene una alta cohesiónhablamos de que sus características y comportamientos están estrechamente relacionadosLa relación que tienen esta determinada por el contexto del problema a resolver
  • 43.
    Cuando decimos queun objeto tiene una bajo acoplamiento hablamos del nivel de independencia que tiene un objeto con respecto a otrosEl hacer un objeto independiente de los demás ayudará a que ese objeto pueda ser usado en otros contexto
  • 44.
    Los principios quedirigen la orientación a objetos son…… la modularidad y la reusabilidadQué son?
  • 45.
    En términos simplesla modularidadsignifica 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
  • 46.
    y la reusabilidadsignifica¡Nose 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.
  • 47.
    Por último, veamosalgunas características de la Programación Orientada a Objetos
  • 48.
  • 49.
  • 50.
  • 51.
    Empecemos a conocernuestro problema¿Qué tal algo que todos conocemos?Aplicación de Aforo a Campus Party
  • 52.
  • 53.
    AGENDASesión 1Introducción alos conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Aprendiendo .NET con C# (1 hora)
  • 54.
    ¿Qué es unaaplicación distribuida?
  • 55.
    Es una aplicacióncon distintos componentesque se ejecutan en entornos separados, normalmente en diferentes plataformas conectadas a través de una redWikipedia
  • 56.
  • 57.
    ¿Cuales son loscomponentesque se distribuyen? ¿Qué criterios se usan para determinar que conforma un componente?¿A través de que mecanismos se realiza la comunicación entre componentes distribuidos?¿Qué es un componente?
  • 58.
  • 59.
    Vamos por partes…¿Aqué se refiere la distribución?Las distribución refiere a la construcción de software por partes, a las cuales les son asignadas un conjunto específicode responsabilidades dentro de un sistema.
  • 60.
    Esta distribución comobien enunciaba la definición formal, habla de que las partes o componentes se encuentran en entornos separados, sin embargo, lo que tiene implícito esta definición, es que para realizar esta separación física primero debe tenerse clara la separación lógicade las partes de una aplicación, esto quiere decir que programáticamente existe una forma de separaro agruparlos componentes.
  • 61.
    La separación físicanoes en todas las ocasiones “maquinas diferentes” de acuerdo a la arquitectura también puede ser la ubicación de un conjunto de funcionalidades en archivos, rutas o tecnologías diferentes dentro de la misma máquina
  • 62.
    Ahora bien, cuandohablemos de distribución lógica lo entenderemos como separación por “Capas” (layers) y cuando hablemos de distribución física usaremos el término separación en “Niveles” (tiers)
  • 63.
    La separación porcapas y niveles hace parte de la arquitectura del sistema y es definida por el arquitecto de la aplicación.
  • 64.
    “Las capasdentro deuna arquitectura son un conjunto de servicios especializados que pueden ser accesibles por múltiples clientes y que deben ser fácilmente reutilizables.”
  • 65.
    Las capas además,según el escenarioy tipo de aplicación, están separadas físicamente.Si, físicamente! Lo que significa que una capa puede ser a su vez un nivel
  • 66.
    Una capa puedecontener muchoscomponentes, un mismo componente puede ubicarse en variascapas de acuerdo a su naturaleza y a las consideraciones explicitas de la arquitectura… como? No hay problema, lo iremos entendiendo, de eso se trata…
  • 67.
    ¿Qué es uncomponente?Veamos una definición formal...Un componentees un elementode software que encapsulauna serie de funcionalidades. Un componentees una unidad independiente, que puede ser utilizado en conjunto con otros componentes para formar un sistema más complejo.
  • 68.
    Cada componente deun sistema puede verse como un paqueteo móduloUn componente esta compuesto por elementos que pueden ser clasesy/o recursos complementarios como archivos de configuración, imágenes, entre otros. Y a su vez esas clases y recursos pueden están agrupados dentro del componente en subpaquetes, de acuerdo a su naturaleza o necesidades de negocio.
  • 69.
    En este puntovisualizamos varios conceptos que podemos presentar de la siguiente forma…AplicaciónNivelesCapasComponentesPaquetesClasesOtros RecursosSub paquetes
  • 70.
    Ahora bien…El paradigmabásico de la separación por capas establece al menos 3 partes distintas dentro de una aplicaciónLa PresentaciónLa Lógica de NegocioEl Acceso a Datos y los Datos
  • 71.
    La Presentación ointerfaz de usuario se refiere al mecanismo de interacción del usuario con el sistemaLos tipos de interfaces de software más comunes son las aplicaciones de ventanas y web Los tipos de interfaces de hardware más comunes son el ratón, el teclado, el micrófono, pantallas táctiles, dispositivos de audio
  • 72.
    La Lógica deNegocio refiere el conjunto de reglas que determinan específicamente como funciona un sistema, según su naturaleza, y bajo que parámetros y condiciones de acuerdo a las necesidades de los clientes y usuarios.
  • 73.
    El acceso adatos refiere al medio a través del cual podemos acceder y manipular los datospersistentes de un sistemaEl almacenamiento de datos refiere a la forma en que se encuentran guardados dichos datos, por ejemplo, en archivos o bases de datos.
  • 74.
    Así nos encontramoscon componentes de diferentes tiposEjecutables, Páginas Web, Librerías, Controles, Procedimientos Almacenados, Servicios Web…
  • 75.
    Después de conocerestos conceptos básicos, podemos pasar entonces a ver, los diferentes tipos de aplicaciónAplicaciones MonolíticasAplicaciones Cliente/ServidorAplicaciones de 3 CapasAplicaciones de N Capas
  • 76.
    Una aplicación monolíticao de una capa es aquella cuya interfaz, lógica de negocio y acceso a datos se encuentran mezclados o altamente acoplados, esto dificulta que pueda hacerse una separación lógica y física donde alguna de las partes pueda ser reutilizable.
  • 77.
    Una aplicación Cliente/Servidoro aplicación de doscapas es aquella donde los datos y la lógica de negocio se encuentran separados de la interfaz, este tipo de aplicación también es denominada, cliente liviano.Otro escenario válido para una aplicación Cliente/Servidor, se da separando los datos de la interfaz y la lógica de negocio, este tipo de aplicación también es denominado, cliente pesado.
  • 78.
    Una aplicación 3capas es aquella donde la interfaz, la lógica de negocio, el acceso a datos y los datos se encuentran separados.
  • 79.
    ¡ATENCIÓN!Es muy importanteentender, que la separación de la que se habla no es necesariamente física, como ya se había dicho antes, la primera separación que se da es lógica y debemos reiterar que la separación lógica es programática.
  • 80.
    Ahora, para hacerun trabajo bien hecho, hay que reconocer que las consideraciones asociadas al desarrollo por capas…
  • 81.
    ¿Que consideraciones deberíamostener en cuenta cuando pensamos en la Capa de Presentación?
  • 82.
    ¿Y las consideracionesde la Capa de Lógica de Negocios?
  • 83.
    ¿Y las consideracionesde la Capa de Acceso a Datos?
  • 84.
    Bueno y siya están separadas las 3 capas principales, ¿qué es entonces una de aplicación de N capas?
  • 85.
    Pues bien, laevolución de la tecnología y las redes de comunicaciones, hacen que cada día se generen nuevos escenarios de intercambio de información entre empresas, y entre los mismos sistemas existentes dentro de las empresas, de forma que se satisfagan las necesidades constantes y cambiantes de clientes y usuarios, para quienes debe resultar transparenteel obtener información de un sistema u otro.
  • 86.
    Otra de lasrazones importantes por las que surge este concepto, es debido a que en la evolución del desarrollo de software, se ha identificado la necesidad de crear nuevas capas, especializadas en funciones especificas, diferentes a las 3 identificadas previamente.Tal es el caso de la seguridad, el control de excepciones, el transporte de datos entre capas, la generación de trazas de errores, entre otros.
  • 87.
    UsuariosAuditoria y Control de ExcepcionesSeguridadComunicaciónComponentes de Interfaz de UsuarioComponentes de Proceso de Interfaz de UsuarioInterfaces de ServicioFlujos de NegocioComponentes de negocioEntidades de NegocioComponentesAccesoDatosAgentes de ServicioServiciosExternosOrígenes de DatosUnapropuestaMicrosoft Patterns & Practices
  • 88.
    ¿Qué arquitectura tendránuestro ejemplo de Campus Party?(Diagrama pendiente)
  • 89.
    AGENDASesión 1Introducción alos conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)
  • 90.
    ¿Qué es unFramework?¿Recuerdan esto?“No se invente la rueda....”
  • 91.
    Veámoslo así…Los edificiosde una ciudad son todos los tipos de software que podemos construir
  • 92.
    Suponga que ustednecesita construir un edificio…
  • 93.
    Ahora imagine quea usted le tocara construir cada una de las partes…
  • 94.
    ¿Cuánto tiempo creeque 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…
  • 95.
    ¿Qué es unFramework?Un frameworkes, básicamente, un conjunto de clases que interactúan en forma cooperativapara dar solución a una determinada necesidad.
  • 96.
    Ahora un pocomenos conceptual...En términos simples un frameworkes un conjunto de clases base agrupadas en componentes, que pueden ser reutilizadas para la construcción de nuevo software
  • 97.
    He ahí larazón para entender los conceptos inicialesBien sea por que vas a usar un framework o por que quieres construir uno
  • 98.
    Las características principalesde un frameworkson: Estar enfocado en un tema específico y el ser altamente reutilizable.
  • 99.
    Microsoft .NET.NET esel 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.
  • 100.
    ¿Qué es VisualStudio .NET?Es entorno de desarrollo (IDE), la herramienta sobre la cual los programadores desarrollan el software
  • 101.
    BetaLínea de Tiempo.NETFramework 42010200820102008.NET Framework 3.5.NET Framework 3.020072005.NET Framework 2.0
  • 102.
    ¿Qué es .NETFramework?
  • 103.
    Es una Plataformade Desarrollo, la cual estacompuesta por:Un entorno de ejecución (Runtime)
  • 104.
  • 105.
  • 106.
  • 107.
    ¿Qué NO es?NOes un sistema operativoNO es un lenguaje de programaciónNO es un entorno de desarrolloNO es un servidor de aplicaciones
  • 108.
    ¿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ácilAcceder a información en cualquier momento, en cualquier lugarSimplificar el desarrollo y la implementaciónDesarrollar aplicaciones para cualquier dispositivo, sin necesidad de mucho esfuerzo.Reutilizar mucho códigoHacer más, con menos
  • 109.
    Algunas CaracterísticasCompletamente Orientadoa ObjetosMultilenguajeModelo de programación único para todo tipo de aplicaciones y dispositivos de hardwareSe integra fácilmente con aplicaciones existentes desarrolladas en plataformas Microsoft o en otras plataformas.
  • 110.
    Línea de Tiempo.NET FrameworkVisual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASPVisual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#Visual Studio 2008.NET Framework 3.0 – 3.5.NET Compact Framework2000 2001 2002 2003 2004 2005 2006 2008 2010Visual Studio 2005.NET Framework 2.0.NET Compact Framework 2.0Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#Visual Studio 2010.NET Framework 4.0F#
  • 111.
    VBC++C#Visual Studio .NETJ#…CommonLanguage SpecificationASP.NET: Servicios Weby Web FormsWindowsFormsADO.NET: Datos y XMLBiblioteca de Clases BaseCommon Language RuntimeMicrosoft .NET Framework 2.0
  • 112.
    ¿Qué son losdemás?2.0.NET Framework 2.0VBC#J#IronPhytonRuby…3.0.NET Framework 3.0CLS y CTSASP.NETWPFWCSWF & WCF EnhancementsDynamic DataADO.NETLINQAdditional EnhancementsEntity FrameworkWCFWFAdd-in FrameworkWindowsFormsMVCData ServicesBiblioteca de ClasesCommonLanguage Runtime (CLR)Windows 7, Windows Vista,Windows XP,Windows Server 2008
  • 113.
    Microsoft .NET FrameworkPresentaciónAccesoa DatosServiciosWindows Presentation FoundationASP.NET(WebForms, MVC, Dynamic Data)Entity FrameworkADO.NETData ServicesWindows Communication FoundationWinFormsLINQ to SQLWindows Workflow Foundation“Velocity”CoreBase Class LibraryDynamic Language RuntimeLanguagesManaged Extensibility FrameworkLINQParallel ExtensionsCommon Language Runtime
  • 114.
    Common Language Runtime(CLR)Es el motor de ejecución de .NETCaracteristicas:Compilacion Just In Time (JIT)Gestion de Memoria (Garbage Collector)Gestion de Errores (excepciones)Ejecucion basada en componentes (assemblies)Gestion de seguridadMultithreading
  • 115.
    ¿Como trabaja elCLR?Assembly (MSIL)CompiladorBibliotecao EjecutableCódigo FuenteCualquierlenguaje .NET
  • 116.
    CódigoMSILCódigoFuenteCompiladorLenguajeMetadataEjecuciónJIT CompilerCódigoNativoTiempos: Compilacióny EjecuciónCompilaciónAntes de la instalación o cuando se ejecutaporprimeravez
  • 117.
    Modelo de Ejecucióndel CLRCódigoFuenteVB.NETC++.NETC#ComponenteNo ManejadoCompilador VB.NETCompiladorC#CompiladorC++ .NETCódigo ManejadoAssemblyCódigo MSILAssemblyCódigo MSILAssemblyCódigo MSILCommon Language RuntimeCompilador JITCódigo NativoSistema Operativo (Windows)
  • 118.
    Estructura de unproyecto .NETSoluciónProyectos (Assemblies)NamespacesClasesArchivos de configuraciónRecursos adicionales
  • 119.
    Descripción de TiposClasesClasesBaseInterfaces ImplementadasAtributos de las ClasesMétodos de las ClasesMiBiblioteca.DLLMetadataManifiesto del AssemblyCódigo CompiladoMSILNombreVersiónCulturaRecursosOtros AssembliesPermisos de SeguridadTipos ExternosEstructura de un Assembly
  • 120.
    AGENDASesión 1Introducción alos conceptos básicos ( 1 hora)Orientación a ObjetosAplicaciones Distribuidas.NET FrameworkTALLER: Entendiendo y construyendo la base de nuestro proyecto (1 hora)
  • 121.
    TAREA Para desarrollarla siguiente sesión del taller se espera que se traiga una idea de proyecto para implementarSi no quieres crear una nueva idea igual puedes bajar el material y el avance del que estamos trabajando en www.avanet.org
  • 122.
  • 123.
    LOS ESPERAMOS ENLA SESIÓN 230 de Junio – 10 a.m. a 12 m.