Programacion Avanzada I - Editada

170
Programación Avanzada I MAE Carlos Alberto Zelaya Ir MAE Carlos Alberto Zelaya Ir í í as as Repaso Repaso Programaci Programaci ó ó n Orientada a n Orientada a Objetos Objetos

Transcript of Programacion Avanzada I - Editada

  • Programacin Avanzada IMAE Carlos Alberto Zelaya IrMAE Carlos Alberto Zelaya Irasas

    Repaso Repaso ProgramaciProgramacin Orientada a n Orientada a ObjetosObjetos

  • Porqu Programacin Orientada a Objetos?

    z A medida que se van desarrollando los lenguajes, se va desarrollando tambin la posibilidad de resolver problemas ms complejos. En la evolucin de cada lenguaje, llega un momento en que los programadores comienzan a tener dificultades a la hora de manejar problemas de cierto tamao y sofisticacin.

  • De la Programacin Estructurada a la Programacin Orientada a Objetosz El estilo ms bsico de programacin es el

    procedural, en el cual un solo programa contiene todas las declaraciones, instrucciones y estructuras de control necesarias para su total funcionamiento.

    z El siguiente nivel es el estilo modular (incorporando el uso de funciones) el cual propone la divisin de un programa en componentes o mdulos. Un mdulo tiene sus propios datos (variables) y su conjunto de instrucciones que manipulan los datos. Estos datos permanecen ocultos para el programa (o mdulo) que invoca a un mdulo dado.

    z El estilo modular introduce a la programacin un concepto: Estado. El estado de un mdulo resulta de la combinacin de las variables internas del mdulo.

  • De la Programacin Estructurada a la Programacin Orientada a Objetos

    z La razn para adoptar un estilo modular es sencilla: Muchas veces se realizan procesos que se repiten y en los que solo cambia un factor

    z La programacin modular tiene inconvenientes:z Los mdulos no son extensibles. No es posible realizar

    cambios incrementales a un mdulo sin abrir su cdigo.z No es posible basar un mdulo en otro ya existente.z Un mdulo no puede compartir el tipo de otro.

    Recurdese que en los lenguajes procedurales y modulares, los datos estructurados y sin estructura tienen un tipo.

  • De la Programacin Estructurada a la Programacin Orientada a Objetosz La Programacin Orientada a Objetos da el

    siguiente paso lgico a la programacin modular al agregar herencia y polimorfismo al mdulo.

    z La POO estructura un programa dividindolo en una cantidad determinada de objetos de alto nivel. Cada objeto le da forma a algn aspecto del problema que se intenta resolver.

    z La secuencia de llamadas a procedimientos (funciones) ya no es el enfoque principal en POO. En vez de eso, los objetos interactan entre si para dar lugar al flujo total del programa.

    z En cierto modo, un programa OO se convierte en una simulacin real del problema que se intenta resolver.

  • Lo que NO es la Programacin Orientada a Objetos (POO)

    z POO no es un sistema de comunicacin con los programas basados en ratones, ventanas, iconos, etc.

    z No es un lenguaje. Sin embargo para hacer programas orientados a objetos en un 100% se necesitan mecanismos inherentes al lenguaje en el que se quiera aplicar.

  • Lo que SI es la Programacin Orientada a Objetos (POO)

    z POO es un conjunto de tcnicas y reglas que nos permiten incrementar enormemente nuestra capacidad de produccin de software y as poder afrontar proyectos de mayor envergadura.

  • Programacin Orientada a Objetos (POO): Ejemplo

    z Supongamos que se requiere desarrollar un programa OO para implementar un carrito de compras en lnea o una terminal de punto de venta.

    z Un programa OO contendr los objetos artculo, carrito de compras, cuponesy cajero.

    z Cada uno de esos objetos interactuarcon los dems para conformar el programa.

    z Por ejemplo, cuando el cajero procese un pedido, tendr que revisar el precio de cada artculo.

  • Programacin Orientada a Objetos (POO): Otro ejemplo

    z Si tenemos un auto y queremos que sea ms rpido, no se construye un auto nuevo. Simplemente se le cambia el carburador, se le ponen llantas ms anchas y se le agrega un sistema turbo. Todo el resto de las piezas del auto se siguen usando.

    z Vindolo desde la perspectiva de OO lo que se ha hecho es:z Modificar dos cualidades/propiedades/atributos de

    nuestro objeto: El carburador y las llantas.z Hemos agregado un mtodo nuevo: El sistema turbo.

    z En programacin tradicional hubiramos tenido que construir un auto nuevo.

  • Programacin Orientada a Objetos (POO): Notasz La POO combina el enfoque procedural y el

    modular.z En POO si queremos construir un objeto que

    comparte ciertas cualidades con otro que ya tenemos creado, no tenemos que crearlo desde el principio. Simplemente decidimos que queremos utilizar del antiguo en el nuevo y que carctersticasle queremos agregar al nuevo.

    z La reusabilidad del cdigo es mucho mayor que en el caso de las funciones y su portabilidad es mayor.

    z Hay ms! En POO podemos incorporar objetos que otros programadores han desarrolladosin tener que saber como los han construido ellos!

  • Programacin Orientada a Objetos (POO): Lenguajesz En POO hay lenguajes puros e hbridos.z Un lenguaje es POO puro cuando se ajusta

    completamente a los principios que esta tcnica propone y contempla la posibilidad de trabajar exclusivamente con clases.

    z Un lenguaje es POO hbrido cuando ya exista antes de la POO y simplemente ha incorporado en mayor o menor medida facilidades para trabajar con clases.

    z C++ es un lenguaje POO hbrido. Java es puroPOO.

  • Programacin Orientada a Objetos (POO): Conceptos

    z Los conceptos bsicos de la POO son:z Clasez Objetoz Herenciaz Encapsulacinz Polimorfismo

  • Programacin Orientada a Objetos (POO): Conceptos - Clasez Una clase es simplemente una

    abstraccin de nuestra experiencia sensitiva.

    z El ser humano tiende a agrupar seres o cosas (objetos) con caractersticas similares en grupos (clases).

    z Existen millones de vasos diferentes, pero reconocemos un vaso en cuanto lo vemos.

  • Programacin Orientada a Objetos (POO): Conceptos - Clasez Cada clase tiene cualidades que le hacen

    diferente de otras.z Ver ejemplo de la Clasificacin Taxonmica de los

    vertebrados en material OOP.PDF (Pag.18 en adelante).

    z Existen clases y subclases.z Las subclases comparten cualidades de la clase

    superior y tienen cualidades que las hacen distintas de la clase principal.

    z Las clases superiores son ms generales que las inferiores. Lo que hacemos con las clases inferiores es dotarlas de ms cualidades (atributos).

  • Programacin Orientada a Objetos (POO): Conceptos - Clase

    z Hay cualidades que ciertas clases compartencon otras pero que no son exactamente iguales en ambas clases. Por ejemplo: Tanto la clase hombre como la clase len se derivan de la clase vertebrado, y ambos poseen la cualidad columna vertebral. Sin embargo, en el hombre la columna vertebral est en posicin vertical y en el len en posicin horizontal.

  • Programacin Orientada a Objetos (POO): Conceptos - Clase

    z Un concepto muy importante en POO es el de clase abstracta.

    z Por ejemplo: Existe la clase mamfero, pero no hay ningn ser que sea solamente mamfero (no hay una instancin directa a esta clase).

    z De igual modo la clase que se crea al principio de una jerarqua de clases, generalmente no es instanciada. Es creada solo para que contenga aquellas cualidades y mtodos que son comunes a todas las subclases que se deriven de ella.

  • Programacin Orientada a Objetos (POO): Conceptos - Clasez Ejemplo de Clase Mamfero:

    Datos MtodosColor DesplazarseTamao MasticarPeso DigerirCantidad de dientes RespirarCuadrpedo/bpedo ParpadearEdad Dormir

  • Programacin Orientada a Objetos (POO): Conceptos - Clasez Ejemplo de Clase Cassette:

    Datos MtodosPeso Rebobinar la cintaDimensiones Avanzar la cintaColor GrabarPotencia Reproducir

  • Programacin Orientada a Objetos (POO): Conceptos - Clasez Ahora veamos un ejemplo ms cercano a la

    informtica: Una ventana. Clase Ventana:Datos Mtodos

    Tipo de letra encabezado

    Minimizarse

    Etiqueta de encabezado

    Maximizarse

    Color de Fondo CerrarseColor de letra encabezado

    Abrirse

  • Programacin Orientada a Objetos (POO): Conceptos - Clasez Ahora un ejemplo an ms cercano, en este caso a la

    programacin: la declaracin de una variable.z Una clase es un nuevo tipo de dato y un objeto cada

    una de las instancias que creamos de ese tipo de dato.

    z Al decir:int numero1;

    z estamos creando un objeto llamado numero1 que pertenece a la clase int (nmeros enteros).

    z Para crear un objeto de la clase ventana lo hariamosde una manera muy similar:ventana nueva_ventana = new ventana()

  • Programacin Orientada a Objetos (POO): Conceptos - Clase

    z Como puede verse, en esencia la POOlo que nos permite es ampliar el tipo de datos con los que se puede trabajar.

  • Programacin Orientada a Objetos (POO): Conceptos - Objeto

    z Todos los hombres comparten las caractersticas de la clase hombre. Sin embargo todos los hombres son distintos entre s, en estatura, pigmentacin, etc.

    z A cada uno de los hombre particulares se les llama objetos de la clase hombre.

    z Cada nio que nace es una instanciacin de la clase hombre.

  • Programacin Orientada a Objetos (POO): Conceptos - Objetoz En POO un objeto es un conjunto de datos

    (sinnimos: atributos, cualidades, propiedades, carctersticas) y mtodos (Sinnimos: comportamientos, operaciones, procedimientos).

    z Los datos en un objeto son valores particularespara los atributos propios de la clase a la que pertenece.

    z Los datos de una clase son siempre los mismos para todos los objetos de la clase, e igualmente los mtodos, pero para cada instanciacin de la clase (sus objetos) los valores de esos datos sern distintos.

    z La aplicacin de los mtodos dar distintos resultados dependiendo de los valores con los que trabaje.

  • Programacin Orientada a Objetos (POO): Conceptos - Objeto

    z Un objeto lo podemos considerar como un arreglo multidimensional, donde se almacenan los datos de ese objeto y sus mtodos que no seran ms que punteros a funciones que trabajan con esos datos.

  • Programacin Orientada a Objetos (POO): Conceptos - Encapsulacin

    z Encapsulacin es la caracterstica de la POO que hace que un objeto sea una caja negra. Se le enva un mensaje al objeto y este responde ejecutando el mtodo apropiado.

    z Un mtodo de una clase puede llamar a mtodos de la misma clase.

    z Gracias a la encapsulacin una clase que ha sido programada y probada puede usarse sin temor a que la programacin de otros objetos basados en dichas clases tengan errores.

  • Programacin Orientada a Objetos (POO): Conceptos - Encapsulacinz En lugar de considerar el programa como una

    enorme entidad, la encapsulacin permite dividir un programa en componentes ms pequeos e independientes.

    z Cada componente es autnomo y realiza su labor independientemente de los demascomponentes.

    z La encapsulacin mantiene esa independencia ocultando los detalles internos de cada componente, mediante una interfaz externa.

  • Programacin Orientada a Objetos (POO): Conceptos - Encapsulacin

    z Una interfaz lista los servicios proporcionados por un componente. La interfaz acta como un contrato con el mundo exterior que define exactamente lo que una entidad externa puede hacer con el objeto.

    z Una interfaz es un panel de control para el objeto.

  • Programacin Orientada a Objetos (POO): Conceptos - Encapsulacin

    z Al definir una interfaz puede especificarse cuales mtodos sern definidos como pblicos, privados y protegidos.

    z Los mtodos pblicos son aquellos que estn disponibles para todo aquel que cree objetos basados en la clase.

    z Los mtodos privados son aquellos que solo son invocados por otros mtodos de la clase.

    z Cuando un comportamiento se desee poner a disposicin del mundo exterior, debe tener acceso pblico. Lo que se desee ocultar debe tener acceso protegido o privado.

  • Programacin Orientada a Objetos (POO): Conceptos - Encapsulacin

    z Porqu utilizar encapsulacin?z Independencia: Se puede reutilizar el objeto en

    cualquier parte. Cuando se encapsulan de forma apropiada los objetos, estos no estn limitados a un programa en particular. Para utilizarlo solo hay que poner en accin su interfaz.

    z Transparencia: La encapsulacin le permite hacer cambios transparentes al objeto, en tanto no se altere la interfaz.

    z Autonoma: El uso de un objeto encapsulado no causar efectos secundarios inesperados entre el objeto y el resto del programa. Puesto que el objeto es autnomo, no tendr ninguna interaccin con el programa ms all de lo establecido por la interfaz.

  • Programacin Orientada a Objetos (POO): Conceptos - Herencia

    z Esta es la cualidad ms importante de un programa POO. La que dar mayor potencia y productividad, ahorrando horas de codificacin y de depuracin de errores.

    z La herencia permite reutilizar e las subclasestodo el cdigo escrito para las superclases, codificando nicamente las diferencias que entre las superclases y las subclases.

    z A la clase heredada se le llama subclase o clase hija y a la clase que hereda se le llama superclase o clase padre.

  • Programacin Orientada a Objetos (POO): Conceptos - Herencia

    z Ejemplo:z Veamos que hereda la clase len de sus

    clases padre:Clase Lo que hereda

    Vertebrados Espina dorsalCarnvoros Al ser adulto se

    alimenta de carneMamiferos Se alimenta de leche

    materna

  • Programacin Orientada a Objetos (POO): Conceptos - Herencia

    z Un ejemplo ms informtico:z Suponga que se ha construido una clase con

    tres mtodos: uno para leer nmeros enteros desde el teclado, otro para sumarlos, otro para calcular el ISV de la sumatoria de los mismos y finalmente otro para almacenar el resultado en un archivo de texto.

    z Si desea tener la misma clase, pero para sumar nmeros reales solo necesita definir una subclase que herede de la clase anterior y en la que nicamente se redefina el mtodo de lectura desde el teclado.

  • Programacin Orientada a Objetos (POO): Conceptos - Herencia

    z Al heredar, una clase heredada toma el comportamiento de su superclase, pero puesto que esta puede derivar de otra, y esta de otra, etc., una clase toma el comportamiento de todas las clases de la jerarqua del rbol al que pertenece.

    z Se heredan los datos y los mtodos, por tanto ambos pueden ser redefinidos en las clases hijas aunque lo ms comn es redefinir mtodos, no datos.

  • Programacin Orientada a Objetos (POO): Conceptos - Herencia

    z Clase base directaz Es la superclase desde la cual una subclase, o clase

    derivada, explcitamente hereda.z Clase base indirecta

    z Recibe la herencia de dos o ms niveles de la jerarqua de clases

    z Herencia simplez Una clase se deriva a partir de una clase base

    z Herencia mltiplez Una clase derivada (subclase) hereda desde mltiples

    clases base (superclases), las cuales posiblemente ni siquiera estn relacionadas entre s.

  • Programacin Orientada a Objetos (POO): Conceptos - Herencia

    z Tipos de herencia.z Public

    z Cada objeto de una subclase es tambin un objeto de a superclase de la que se deriva. Sin embargo los objetos de la superclase NO son objetos de la subclase. Por ejemplo: Todos los vehiculos son medios de transporte, pero no todos los medios de transporte son vehculos.

    z Privatez Es una alternativa a la composicin. Se puede acceder a

    los miembros pblicos de la superclase, mediante funciones miembro public de la superclase.

  • Programacin Orientada a Objetos (POO): Conceptos - Polimorfismo

    z Polimorfismo es la cualidad que tienen los objetos para responder de distinto modo a un mismo mensaje.

    z Por ejemplo, si para los objetos de las clases automvil, barco y avin (todas derivadas de la clase medio de transporte) invocamos el mtodo desplazarse, cada uno de ellos ejecutar la accin de manera diferente.

    z De igual manera, si tenemos tres objetos de la clase barco y deseamos que solo uno de ellos se desplace basta con invocar al mtodo desplazarse para el objeto especfico y eso no afectar el comportamiento de los dems objetos.

  • Programacin Orientada a Objetos (POO): Conceptos - Polimorfismo

    z En programacin tradicional necesitaramos definir un nombre distinto para el mtodo desplazarse en cada subclase, para que el mismo no se confundiera con el de la clase principal. No es el caso en Programacin Orientada a Objetos.

    z De esta manera el nmero de mtodos que tenemos que recordar al programar se reducen ostensiblemente.

  • Programacin Orientada a Objetos (POO): Conceptos - Sobrecarga

    z Sobrecarga es un tipo especial de polimorfismo.

    z Varios mtodos de una misma clase (incluso los constructores) pueden tener el mismo nombre, siempre y cuando el tipo o el nmero de parmetros que reciban sea diferente.

  • Programacin Avanzada I

    .NET - Conceptos bsicos de la plataforma

  • Introduccin

    z La plataforma .NET no es ms que un conjunto de tecnologas para desarrollar y utilizar componentes que nos permitan crear formularios web, servicios web y aplicaciones Windows.

  • Introduccin

  • Introduccin

  • CLR [Common Language Runtime]

    z Proporciona algo similar a la mquina virtual de Java, eliminando adems los problemas de versiones habituales de las DLLs de Windows ("DLL hell"). Desde el punto de vista del desarrollador, se facilita su trabajo al poner a su disposicin una variedad de lenguajes que funcionan en una plataforma comn.

  • CLR [Common Language Runtime]

  • Assemblies

    z Constituyen la unidad lgica de despliegue en la plataforma .NET.

    z Un assembly incluye metadatos acerca de los componentes incluidos en el assembly (versiones, tipos, dependencias...), metadatos acerca de los tipos incluidos (propiedades, atributos, mtodos, signaturas, clases base...),

    z El cdigo intermedio MSIL (Microsoft Intermediate Language, similar a los bytecodes de Java) y los recursos adicionales que sean necesarios (imgenes, textos...). En definitiva, viene a ser algo parecido a los ficheros JAR (Java archives) de Java.

    z En la plataforma .NET, una aplicacin est formada por uno o varios assemblies. Al poder coexistir distintas versiones de un assembly, se eliminan muchos de los problemas que caracterizan a las aplicaciones tpicas de Windows, facilitando el despliegue, actualizacin y eliminacin de aplicaciones. De hecho, una aplicacin concreta podra utilizar simultneamente varias versiones de un assembly.

  • Biblioteca de clases .NET

  • Biblioteca de clases .NET

  • Biblioteca de clases .NET

  • ADO.NET

    z Similar a ADO, proporciona acceso a datos de forma independiente al lenguaje de programacin que utilicemos. Los datos se pueden ver y procesar de forma relacional (tablas) o jerrquica (XML).

  • Desarrollo de aplicaciones

    z Formularios Windowsz Los formularios Windows estn construidos sobre

    la base de la plataforma .NET y permiten construir complejas aplicaciones Windows en un entorno de desarrollo visual de aplicaciones (RAD: RapidApplication Development

    z Formularios webz Los formularios web, que se construyen con

    ASP.NET, constituyen la evolucin natural y lgica de ASP. Siguiendo el mismo estilo que su antecesor (editar una pgina y listo)

  • Soporte para mltiples lenguajes

  • Visual Studio .NETEntorno de Desarrollo

    z Herramientas

  • Visual Studio .NETEntorno de Desarrollo

    z El editor

  • El lenguaje de programacin C#

    z Introduccinz C# (ledo en ingls "C Sharp" y en espaol

    "C Almohadilla") es el nuevo lenguaje de propsito general diseado por Microsoft para su plataforma .NET.

  • El lenguaje de programacin C#

    z Sencillez. z Modernidad. z Orientacin a objetos.

    z Encapsulacin: adems de public, private y protected C# aade el modificador internal.z C# slo admite herencia simple.z Todos los mtodos son por defecto sellados y que los redefinibles hayan de marcarse

    con el modificador virtual.z Orientacin a componentes. z Gestin automtica de memoria. z Seguridad de tipos. z Instrucciones seguras. z Sistema de tipos unificado. z Extensibilidad de operadores. z Extensibilidad de modificadores. z Versionable. z Eficiente. z Compatible.

  • Hola, mundo!

  • Ejemplo Limpiar Pantalla

  • Clculo del Valor de un Paquete Turstico

    Diagrama de ClasesDiagrama de Clases

  • Compra Boleto de Metro

    Diagrama de ClasesDiagrama de Clases

  • Programacin Avanzada I

    Estructuras de Control y Ciclos

  • Sentencias condicionales

    C#: sentencia if con varios formatos

    if (x > 10) if (x < 10) if (x < 10) if (x < 10) HacerAlgo(); { { {

    Hacer1(); Hacer1(); Hacer1(); Hacer2(); } }

    } else else if (x > 20){ {

    Hacer2(); Hacer2();} }

    else{

    Hacer3();}

  • Sentencia case

    int a = 0;switch(a) {

    case 1:{//CODIGO 1break;

    }case 2: {//CODIGO 2

    break;}default:{//CODIGO DEFAULT

    break;}

    }

  • Sentencia for

    //Partes: declaracin, prueba, accinfor (int i=1; i < 10; i++){}

  • Sentencia for/each

    zz For/Each For/Each permitepermite recorrerrecorrer arreglosarreglos y y coleccionescolecciones

    string[] nombres = new string[5];foreach(string auxNombre in nombres){

    //auxNombre es de SOLO LECTURA

    }

  • Sentencia while

    bool condicion = true;while (condicion == true){

    //En algn momento poner condicion = false

    }

  • Programacin Avanzada I

    Arreglos:Vectores, Matrices y Estructuras

  • Vectores y matrices

    z En C# las tablas pueden ser multidimensionales, su ndice inicial es 0.

    z Sea cual sea el tipo de elementos que contengan las tablas, son objetos que derivan de System.Array. En esta clase tambin estdisponible la propiedad Length.

    z El tamao del vector se determina cuando se instancia.

    z La declaracin emplea los parntesis vacos [ ] entre el tipo y el nombre para determinar el nmero de dimensiones (Rank).

    z En C# el rango es parte del tipo. El nmero de elementos no lo es.

  • Vectores y matricesDefinicin

    z stringstring[] a = [] a = newnew stringstring[10];[10];z "a" es un vector de 10 cadenas

    zz intint[] primos = [] primos = newnew intint[9];[9];z "primos" es un vector de 9 enteros

    zz Un vector puede inicializarse a la misma Un vector puede inicializarse a la misma vez que se declara: vez que se declara: z int[] primo1 = new int[10]

    {1,2,3,5,7,11,13,17,19,23}; z int[] primo2 = new int[] {1,2,3,5,7,11,13,17,19,23};z int[] primo3 = {1,2,3,5,7,11,13,17,19,23};

  • Vectores y matricesDefinicinzz Los vectores pueden dimensionarse Los vectores pueden dimensionarse

    dindinmicamente:micamente:

    Console.Write ("Num. casillas: "); string strTam = Console.ReadLine(); int tam = Convert.ToInt16(strTam); int[] VecDin = new int[tam]; for (int i=0; i

  • Matrices

    zz C#C# permite tanto permite tanto matrices rectangularesmatrices rectangulares (todas las (todas las filas tienen el mismo nfilas tienen el mismo nmero de columnas) como mero de columnas) como matrices dentadasmatrices dentadas..

    int [,] array2D; // Declara un a referencia // (no se instancia ningn objeto)

    array2D = new int [2,3]; // Instancia un objeto de la clase // System.Array y le asigna 6 casillas // (2 filas con 3 columnas cada una)

    int [,] array2D = new int [2,3] {{1,0,4} {3,2,5}};

  • Matrices

    z Una matriz dentada no es ms que una tabla cuyos elementos son a su vez tablas, pudindose as anidar cualquier nmero de tablas.

    z Cada tabla puede tener un nmeropropio de casillas.

    z Ver ejemplo

  • Matrices

    z Ver ejemplo Ventas (Pgina 375, Superutilidades para C#)

  • Programacin Avanzada I

    Programacin Orientada a Objetos y C#

  • Conceptos Bsicos

    z Encapsulacinz Proporciona la encapsulacin por medio de

    la estructura y la clasez Herencia z El mecanismo de herencia lo proporciona la

    clasez Polimorfismoz La clase exhibe polimorfismo por medio de

    la palabra reservada virtual

  • Encapsulacin de Datos

    z Permite recolectar toda la informacin acerca de un objeto y colocarla en una unidad diferenciada, a la que luego se puede acceder mediante un nico identificador.

    z El objeto completo puede pasarse a funciones utilizando un nico nombre de variable.

  • Ejemplo Prctico

    z Si se quisiera crear un grupo de clases para contener registros de bases de datos para libros y pelculas, se deben identificar los datos que stos tienen en comn.

    z Luego se identifican las diferenciasz Libros:

    z Autor z Contador de Pginas

    z Pelculas:z No necesariamente tienen autoresz Duracinz Medio (VHS o DVD)

  • Ejemplo Prctico

    z Se tiene entonces una Clase Librera, de la cual se derivan las clases:z Librosz Pelcula

    Ver ejemplo pagina 261 (Super Utileras de C#)

    Libreria

    PelculasLibros

  • Diagrama de Clases VS-2005

  • Creando la Clase clsLibreria

    using System;using System.Collections.Generic;using System.Windows.Forms;

    namespace PantallaInicio{

    public class clsLibreria{

    //Constructor de la Claseprotected clsLibreria() { }

    public string Titulo;public int Copyright;

    }}

  • Creando la clase clsLibro

    public class clsLibro : clsLibreria{

    public string Autor;public int Paginas;

    public clsLibro(string titulo, string autor, int copyright)

    {Titulo = titulo;Autor = autor;Copyright = copyright;

    }}

  • Redefiniendo un mtodo

    public override string ToString(){

    return (string.Format("El libro {0} +({1}) de {2} tiene {3} paginas",

    Titulo,Copyright,Autor,Paginas));}

  • Matrices de objetos

    z Definicin de un arreglo de la clase clsLibro:

    public clsLibro[] arrLibros = new clsLibro[10];

    z Instanciar los objetos del arreglo:for (int i = 0; i < 10; i++){

    arrLibros[i] = new clsLibro("","",0);}

  • Matrices de Objetos

    z Asignacin de Valores:

    arrLibros[contador].Titulo = textBox1.Text;arrLibros[contador].Autor = textBox2.Text;

    arrLibros[contador].Copyright = int.Parse(textBox3.Text);

  • Matrices de Objetos

    private void button3_Click(object sender, EventArgs e)

    {Form2 TrabajarConPeliculas;TrabajarConPeliculas = new Form2();TrabajarConPeliculas.Show();

    }

  • Controles GUI

    z Ejemplo ComboBox y TextBoxz Tablas de Multiplicar

  • Controles GUI Ejemplo Tablas de Multiplicar

    z ComboBoxz Llenar ComboBox

    private void Tablas_Load(object sender, EventArgs e)

    {for (int i = 1; i < 11; i++)

    comboBox1.Items.Add(i);}

  • Controles GUI Ejemplo Tablas de Multiplicarz Leer ComboBox y llenar TextBox

    int operacion;string linea;textBox1.Clear();for (int i = 1; i < 11; i++) {

    operacion = i * int.Parse(comboBox1.Text);linea = i + " X " + comboBox1.Text + " = " + operacion + Environment.NewLine;textBox1.Text = textBox1.Text + linea;

    }

  • Manejo de strings y Arreglos

    z Ejemplo Diccionario

  • Manejo de strings y Arreglos

    z Ejemplo Diccionarioz string[] resultado;

    z palabra = textBox1.Text.Trim();z palabra = palabra.ToUpper();

    z resultado = d.BuscarInicio(palabra);

    z foreach (string s in resultado)z textBox2.Text = textBox2.Text + s +

    Environment.NewLine;

  • Manejo de strings y Arreglos

    public string[] BuscarFinal(string palabra){

    string[] resultado;int cantidad = 0;int[] posiciones = new int[diccionario.Length];

    for (int i = 0; i < diccionario.Length; i++)if (diccionario[i].EndsWith(palabra)){

    posiciones[cantidad] = i;cantidad++;

    }

    resultado = new string[cantidad];for (int i = 0; i < cantidad; i++)

    resultado[i] = diccionario[posiciones[i]];

    return (resultado);}

  • Manejo de strings y Arreglos

    public string[] Buscar(string palabra){

    string[] resultado;int cantidad = 0;int[] posiciones = new int[diccionario.Length];

    for (int i = 0; i < diccionario.Length; i++)if (diccionario[i].IndexOf(palabra) >= 0){

    posiciones[cantidad] = i;cantidad++;

    }

    resultado = new string[cantidad];for (int i = 0; i < cantidad; i++)

    resultado[i] = diccionario[posiciones[i]];

    return (resultado);}

  • Manejo de strings y Arreglos

    public string[] BuscarInicio(string palabra){

    string[] resultado;int cantidad = 0;int[] posiciones = new int[diccionario.Length];

    for (int i = 0; i < diccionario.Length; i++)if (diccionario[i].StartsWith(palabra)){

    posiciones[cantidad] = i;cantidad++;

    }

    resultado = new string[cantidad];for (int i = 0; i < cantidad; i++)

    resultado[i] = diccionario[posiciones[i]];

    return (resultado);}

  • Manejo de strings y Arreglos

    z Fin Ejemplo Diccionario

  • El Tiro de Penal!!

    z Ejercicio para resolver en Laboratorio

  • Programacin Avanzada I

    Segundo ParcialConectividad a Bases de DatosConectividad a Bases de Datos

  • Conectividad a Bases de DatosResumenIntroduccinModelo Relacional de Bases de DatosGeneralidades de las Bases de Datos Relacionales: La Base de datoslibros

    SQLConsulta Bsica SELECTLa Clusula WHERELa Clusula ORDER BYCmo fusionar varias tablas: INNER JOINLa instruccin INSERT La Instruccin UPDATELa Instruccin DELETE

    Creacin de la base de datos libros en SQL Server 2005Manipulacin de Bases de Datos con ADO .NET

    Conectando y consultanto una base de datosConsultas a la base de datos libros

  • Introduccin

    z Base de datosz Coleccin organizada de datosz Las mas popurales son las bases de datos

    relacionales

    z DBMSz Sistema Manejador de Bases de Datos (Database

    management system )z Almacena y organiza los datos

  • Modelo de Bases de DatosRelacionaleszBase de datos Relacionalz Tabla

    zFilas, columnasz Llave Primaria

    z Identificador nico de los datos

  • Introduccin (Cont.)

    z RDBMSz Sistema Manejador de Base de Datos

    Relacionalesz SQL Server, Oracle, Sybase, DB, Infromix,

    MySQLz SQL

    z Bases de datos relacionalesz Lenguaje de consulta estructurado (Structured

    Query Language)

  • Modelo de Bases de DatosRelacionales

    z SQLz Lenguaje estndar para acceder a una base de datos relacional,

    estandarizado por el American National Standards Institute(ANSI): SQL-92. En gran parte, los distintos DBMS utilizan todos el mismo SQL, si bien cada vendedor le ha aadido sus propias extensiones. El lenguaje SQL se divide en:

    z DDL (Data Definition Language), utilizado para crear y modificar la estructura de la base de datos (p.ej. CREATE TABLE).

    z DML (Data Manipulation Language), empleado para manipular los datos almacenados en la base de datos (p.ej. consultas con la sentencia SELECT).

    z DCL (Data Control Language), para establecer permisos de acceso (GRANT, REVOKE, DENY) y gestionar transacciones (COMMIT y ROLLBACK).

  • Modelo de Bases de DatosRelacionales

    Numero Nombre Departamento Salario Ubicacion

    23603 Jones 413 1100 New Jersey

    24568 Kerwin 413 2000 New Jersey

    34589 Larson 642 1800 Los Angeles

    35761 Myers 611 1400 Orlando

    47132 Neumann 413 9000 New Jersey

    78321 Stephens 611 8500 Orlando

    Fila

    ColumnaLlave Primaria

    Datos de ejemplo para la tabla Empleado

  • Modelo de Bases de DatosRelacionales (Cont.)

    Departamento Ubicacion

    413 New Jersey

    611 Orlando

    642 Los Angeles

    Resultado de seleccionar datos distintos de Departamento y Ubicacion

    de la tabla Empleado

  • Generalidades de las bases de datos relacionales

    z Base de datos librosz Cuatro tablas

    z autores, editoriales, isbnAutor y titulos

    z Relaciones de las tablas

  • La Base de datos libros

    Columna Descripcin idAutor Nmero de identificacin del autor en la base de datos, esta

    columna representa la clave principal de la tabla

    nombrePila Nombre de pila del autor (una cadena) apellidoPaterno Apellido Paterno del autor (una cadena) Tabla Autores de la base de datos libros.

    idAutor nombrePila apellidoPaterno 1 Harvey Deitel 2 Paul Deitel 3 Tem Nieto 4 Sean Santry Datos de ejemplo de la tabla autores

  • La Base de datos librosColumna Descripcin idEditorial El nmero de identificacin (ID) de la

    editorial en la base de datos. Es la llave principal de la tabla

    nombreEditorial El nombre de la editoral (una cadena) Tabla editoriales de la base de datos libros

    idEditorial nombreEditorial1 Prentice Hall2 Prentice Hall PTG

    Datos de la tabla editoriales

  • La Base de datos librosColumna Descripcin isbn Nmero ISBN del libro (una cadena). Llave primaria de

    la tabla titulo Titulo del libro (una cadena). numeroEdicion Nmero de Edicion del libro (un entero). copyright Ao de edicin (Copyright) del libro (una cadena) idEditorial Nmero de Identificacin de la editorial (un entero).

    Llave extranjera para la tabla editoriales archivoImagen Nombre del archivo que contiene la imagen de la

    portada del libro (una cadena) precio Precio de venta sugerido para el libro (un nmero real) Tabla titulos de la base de datos libros

  • La Base de datos librosisbn titulo Numero

    Edicioncopy-right

    idEditorial Archivo Imagen

    precio0130895725 C How to

    Program 3 2001 1 chtp3.jpg 74.95

    0130384747 C++ How to Program

    4 2002 1 cpphtp4.jpg 74.95

    0130461342 Java Web Services for Experienced Programmers

    1 2002 1 jwsfep1.jpg 54.95

    0131016210 Java How to Program

    5 2003 1 jhtp5.jpg 74.95

    0130852473 The Complete Java 2 Training Course

    5 2002 2 javactc5.jpg 109.95

    0130895601 Advanced Java 2 Platform How to Program

    1 2002 1 advjhtp1.jpg 74.95

    Datos de ejemplo de la tabla titulos

  • La Base de datos librosColumna Descripcion idAutor Identificacion del autor, llave extranjera para la tabla de

    autores isbn El ISBN del libro, llave extranjera para la tabla titulos Tabla isbnAutor

    idAutor isbn idAutor isbn1 0130895725 2 01391630502 0130895725 3 01308292932 0132261197 3 01302841732 0130895717 3 01302841812 0135289106 4 0130895601

    Datos de ejemplo de la tabla isbnAutor .

  • La Base de datos libros

    isbnAutor

    idAutor

    isbn

    autores

    idAutor

    nombrePila

    apellidoPaterno

    editoriales

    idEditorial

    nombreEditorial

    titulos

    isbn

    titulo

    numeroEdicion

    copyright

    idEditorial

    archivoimagen

    precio

    1 8 1

    81

    8

    Relaciones de tablas en la base de datos libros

  • SQLz SQL descripcin generalz SQL palabras clave (keywords)

    SQL keyword DescripcinSELECT Recupera datos de una o mas tablasFROM Tablas involucradas en cada consulta, se requiere para cada

    SELECT . WHERE Criterios de seleccin que determinan cuales filas se van a

    Recuperar, borrar o actualizarGROUP BY Criterios para agrupar filasORDER BY Criterios para ordenar filasINNER JOIN Fusionar filas de varias tablasINSERT Insertar filas en una tabla especificadaUPDATE Actualizar filas en una tabla especificadaDELETE Eliminar filas en una tabla especificada

    .SQL SQL palabraspalabras clave clave parapara consultasconsultas

  • Consulta Bsica SELECT

    z Consulta bsica SELECT z SELECT * FROM nombreTabla

    z SELECT * FROM autores

  • Consulta Bsica SELECT

    z Recuperar ciertas columnas de la tablaz select idAutor,nombrePila from autores

  • Clusula WHERE

    z Especificar criterio de selccinz SELECT columna1, columna2, FROM

    NombreTabla WHERE criterioz SELECT titulo, numeroEdicion, copyright

    FROM titulosWHERE copyright > 2000

    z Operadores de condicin en la clusulaWHEREz , =, =, z LIKE

    z Caracteres comodines % y _

  • Clusula WHERE (Cont.)

  • Clusula WHERE(Cont.)

  • Clusula WHERE(Cont.)

  • Clusula ORDER BY

    z Clusula ORDER BY opcionalz SELECT columna1, columna2, FROM

    nombreTabla ORDER BY columna ASCz SELECT columna1, columna2, FROM

    nombreTabla ORDER BY columna DESCz ORDER BY campos mltiplesz ORDER BY columna1 tipoOrden, columna2

    tipoOrden, z Combinar WHERE y ORDER BY

  • Clusula ORDER BY

  • Clusula ORDER BY

  • Clusula ORDER BY

  • Clusula ORDER BY

  • Fusionar datos de varias tablas

    z Los datos se guardan en tablasseparadas para evitar redundacia.

    z Debido a esto a veces es necesariofusionar datos de varias tablas en unasola consulta

  • Fusionar datos de variastablas(Cont.)

  • La instruccin INSERT

    z Inserta una fila dentro de una tablaz INSERT INTO nombreTabla ( columna1, , columnaN )

    VALUES ( valor1, , valorN )z INSERT INTO autores ( nombrePila, apellidoPaterno)

    VALUES ( Sue, Smith )idAutor nombrePila apellidoPaterno1 Harvey Deitel2 Paul Deitel3 Tem Nieto4 Sean Santry5 Sue Smith

    Datos en la tabla autores, despus del INSERT

  • La instruccin UPDATEz Modicar datos de una tabla

    z UPDATE nombreTablaSET columna1 = valor1, , columnaN = valorNWHERE criterios

    z UPDATE autoresSET apellidoPaterno = JonesWHERE apellidoPaterno = Smith AND nombrePila =

    SueauthorID firstName lastName1 Harvey Deitel2 Paul Deitel3 Tem Nieto4 Sean Santry5 Sue JonesFig. 23.23 Datos en tabla autores despus de UPDATE

  • La instruccin DELETEz Elimina datos de una tablaz DELETE FROM nombreTabla WHERE criterios

    z DELETE FROM autoresWHERE apellidoPaterno = Jones AND

    nombrePila = Sue

    authorID firstName lastName1 Harvey Deitel2 Paul Deitel3 Tem Nieto4 Sean SantryFig. 23.24 Datos tabla autores despus de DELETE

  • Creando Base de Datos librosen SQL Server 2005

  • Manipulando Bases de Datoscon ADO.NETz Objetivos Generalesz Conectarse a una Base de Datosz Consultar una Base de Datosz Desplegar los resultados de la consulta

  • Manipulando Bases de Datoscon ADO.NETz Bases de datosz Interfaces de acceso a bases de datosz Arquitectura ADO.NETz Clases ADO.NETz Transacciones en ADO.NETz Data Binding

  • Interfaces de acceso a bases de datos

    z Evolucin histrica de los "estndares" propuestos por Microsoft:

    z ODBC (Open Database Connectivity)z DAO (Data Access Objects): utiliza automatizacin

    OLE y ActiveX.z RDO (Remote Data Objects): Fuertemente acoplado

    a ODBC, orientado al desarrollo de aplicaciones cliente/servidor.

    z OLE DB: Construido sobre COM, permite acceder a bases de datos tanto relacionales como no relacionales

    z ADO (ActiveX Data Objects): Ofrece un interfaz orientado a objetos

  • Interfaces de acceso a bases de datos

  • Interfaces de acceso a bases de datos

    z ADO .NET es una coleccin de clases, interfaces, estructuras y tipos enumerados que permiten acceder a los datos almacenados en una base de datos desde la plataforma .NET. Si bien se puede considerar una versin mejorada de ADO, no comparte con ste su jerarqua de

    clases (aunque s su funcionalidad).

  • Arquitectura ADO.NET

    z El funcionamiento de ADO.NET se basa esencialmente en utilizar los siguientes componentes:

    z Data Provider (proveedor de datos): Proporciona un acceso uniforme a conjuntos de datos (bases de datos relacionales o informacin ID3 de ficheros MP3). Su papel el similar al de un controlador ODBC o JDBC.

    z DataSet: El componente ms importante, puede almacenar datos provenientes de mltiples consultas (esto es, mltiples tablas).

    z DataAdapter: Sirve de enlace entre el contenedor de conjuntos de datos (DataSet) y la base de datos (Data Provider).

  • Arquitectura ADO.NET

    z Adicionalmente:z DataReader: para realizar eficientemente lecturas

    de grandes cantidades de datos que no caben en memoria

    z DataRelation: establecer una reunin entre dos tablas

    z Connection: utilizada por DataAdapter para conectarse a la base de datos

    z Command: permite especificar las rdenes, generalmente en SQL, que nos permiten consultar y modificar el contenido de la base de datos ( select, insert, delete y update).

  • Funcionamiento tpico de ADO.NET

    z Se crean un objeto Connection especificando la cadena de conexin.

    z Se crea un DataAdapter.z Se crea un objeto Command asociado al DataAdapter,

    con la conexin adecuada y la sentencia SQL que haya de ejecutarse.

    z Se crea un DataTable donde almacenar los datos.z Se abre la conexin.z Se rellena el DataSet con datos a travs del

    DataAdapter.z Se cierra la conexin.z Se trabaja con los datos almacenados en el DataSet.

  • Clases ADO.NET

    z Interfaz IDbConnectionz Interfaz IDbCommandz Interfaz IDataReaderz Clase DataSet

  • Transacciones en ADO.NET

    z En ADO.NET, los lmites de las transacciones se indican manualmente. Los objetos de la clase Connectiontienen un mtodo BeginTransaction que devuelve una transaccin (objeto de tipo Transaction). La transaccin finaliza cuando se llama al mtodo Commit o Rollback del objeto Transaction devuelto por BeginTransaction.

  • Data Binding en Visual Studio .NET

    z Se puede optar por asistentes del tipo de DataForm wizard... o, cuando stos no nos ofrecen la funcionalidad suficiente para nuestras aplicaciones, podemos programarlo nosotros mismos (algo que no es difcil y nos da bastante ms control sobre nuestra aplicacin):

    z Se crean los objetos ADO.NET necesarios (Connection, DataSet, Command y DataAdapter).

    z Se enlazan los controles de la interfaz con las columnas del DataSet, lo que se consigue aadiendo un objeto System.Windows.Forms.Binding a la propiedad DataBindings del control. Los objetos de tipo Binding nos permiten enlazar una propiedad de un control a una columna de unDataSet.

    z Se implementa la forma de recorrer los registros, haciendo uso del objeto BindingContext asociado al formulario (cuyas propiedades Position y Count nos permiten movernos por el conjunto de datos).

    z Se implementan las operaciones sobre la base de datos (con los comandos asociados al DataAdapter.

  • Conectndose y consultandouna base de datoszMostrarAutoresz Muestra el contenido completo de la base

    de datos autoresz Despliega el contenido de la tabla en un

    objeto TextBox, con Multilinea

    z Ver Ejercicio MostrarAutores

  • Consulta Mostrar Autores

  • Consultar Un Autor

  • Utilizacin DataGridView

  • Utilizacin DataGridView

  • Utilizacin DataGridView

  • Utilizacin DataGridView

  • z Incluir los flash de Manejo de datos con ambiente grafico

  • Programacin Avanzada IMAE Carlos Alberto Zelaya IrMAE Carlos Alberto Zelaya Irasas

    Tercer ParcialTercer ParcialSubprocesamientoSubprocesamiento MMltipleltipleRelaciRelacin Productorn Productor--ConsumidorConsumidor

  • Subprocesamiento Mltiple (Multithreading)z Introduccinz Estados de los Threads: Ciclo de Vida de un hilo de

    ejecucinz Prioridades de los hilos de ejecucinz Crear y Ejecutar Threads z Sincronizacin de Threadsz Relacin Productor/Consumidor sin sincronizacinz Relacin Productor/Consumidor con sincronizacinz Relacin Productor/Consumidor: Buffer Circular

  • Introduccin

    z Histricamente la concurrencia se ha implementado en forma de funcionesprimitivas del sistema operativo, disponiblespara programadores experimentados.z El subprocesamiento mltiple, mejora el

    rendimiento de los programasz C y C++ no manejan subprocesamiento mltiple.z La programacin de subprocesos es dependiente

    de la plataforma

  • Estado de los subprocesos: Ciclo de vida de un subproceso

    z Estado de los subprocesosz Estado de Nacimiento

    z El subproceso fue creado y permanece as hasta que se llama al mtodo start de la clase Thread.

    z Estado Listoz El mtodo start ha sido invocadoz El proceso puede ahora ejecutarse

    z Estado de Ejecucinz Asigna el subproceso a un procesador y comienza a

    ejecutarse

  • Estado de los subprocesos: Ciclo de vida de un subproceso

    z Estado Muertoz Sucede cuando su mtodo run ha sido completado o ha

    sucedido una excepcin no atrapadaz Eventualmente ser eliminado de la memoria

    z Estado Bloqueadoz Cuando intenta ejecutar una tarea de entrada-salida que

    no puede ser completada de manera inmmediata.z Estado de Espera

    z Cuando encuentra cdigo que no puede ejecutar en esemomento

    z Estado Inactivoz Cuando se llama al mtodo sleep de la clase Thread para

    cambiar el estado por unos milisegundos

  • Primer Ejemplo Multithreading

  • Primer Ejemplo Multithreading

    z Ejemplo de Ejecucin

    Main()

    printer2.Imprimir

    printer2.Imprimir

    printer1.ImprimirMensajeImpresora printer1 = new MensajeImpresora();MensajeImpresora printer2 = new MensajeImpresora();MensajeImpresora printer3 = new MensajeImpresora(); thre

    ad1.Sta

    rt()

    thread2.Start()

    thread3.Start()

    Thread thread1 = new Thread(printer1.Imprimir); Thread thread2 = new Thread(printer2.Imprimir); Thread thread3 = new Thread(printer3.Imprimir);

  • Ejemplo Multithreading GUI

  • Ejemplo Multithreading GUI

    Cuando un hilo llegue a un valor que sea multiplo de 1000, se pausa. En ese mismomomento se activa el hilo que estabainactivo. Esto se repetir indefinidamente.

  • Solucin paso a paso - 1

  • Solucin paso a paso - 2

  • Solucin paso a paso - 3

  • Solucin paso a paso - 4

  • Relacin Productor/Consumidor sin Sincronizacin - Ejemplo

    z En una relacin productor /consumidor:z La parte correspondiente al productor

    genera datosz La parte correspondiente al consumidor lee

    los datosz Ambos desde un objeto compartido (buffer)

  • Relacin Productor/Consumidor sin Sincronizacin - Ejemplo

    z Bufferz Regin compartida de la memoria

    z Subproceso Productorz Genera los datos que se aaden al bufferz Escribe el buffer vaco

    z Subproceso consumidorz Lee los datos del buffer

  • Relacin Productor/Consumidor sin Sincronizacin - Ejemplo

    z El programa de ejemplo consta de:z Interfaz buffer

    z Mtodo establecer (set)z Mtodo Obtener (get)

    z Clase Productorz Coloca valor en el bufferz Contiene:

    z ubicacionCompartidaz tiempoRandomDormirz Constructorz Mtodo Producir

  • Relacin Productor/Consumidor sin Sincronizacin - Ejemplo

    z Clase Consumidorz Recupera Valor del bufferz Contiene:

    z ubicacionCompartidaz Mtodo Consumirz Contructor

    z Clase BufferSinSincronizarz Implementa la interfaz Buferz Declara objeto compartido entre productor y consumidorz Implementa los mtodos set y get

    z SinSincronizarTestz Contiene:

    z Mtodo mainz Crea instancia de objeto BufferSinSincronizar compartidoz Crea hilos y establece delegados

    z Este ejemplo muesta los problemas que se pueden ocasionar al no existir la sincronizacin

  • Relacin Productor/Consumidor sin Sincronizacin Ejemplo, Salida

  • Relacin Productor/Consumidor Sincronizada - Ejemplo

    z Bufferz Regin compartida de la memoria

    z Subproceso Productorz Genera los datos que se aaden al bufferz Escribe el buffer vaco

    z Subproceso consumidorz Lee los datos del buffer

  • Relacin Productor/Consumidor Sincronizada - Ejemplo

    z El programa de ejemplo consta de:z Interfaz buffer

    z Mtodo establecer (set)z Mtodo Obtener (get)

    z Clase Productorz Coloca valor en el bufferz Contiene:

    z ubicacionCompartidaz tiempoRandomDormirz Constructorz Mtodo Producir

  • Relacin Productor/Consumidor Sincronizada - Ejemplo

    z Clase Consumidorz Recupera Valor del bufferz Contiene:

    z ubicacionCompartidaz Mtodo Consumirz Contructor

    z Clase BufferSincronizadoz Implementa la interfaz Buferz Declara objeto compartido entre productor y consumidorz Implementa los mtodos set y getz Sincroniza la ejecucin de los hilos, utilizando objeto.Wait y

    objeto.Pulsez SincronizadoTest

    z Contiene:z Mtodo mainz Crea instancia de objeto BufferSincronizado compartidoz Crea hilos y establece delegados

    z Este ejemplo muestra como se evitan los problemas de desincronizacindel ejemplo anterior

  • Relacin Productor/Consumidor Sincronizada - Ejemplo

  • Creacin de un Chat

    z Pasos bsicos, lado Servidor:z Paso 1: crear TcpListenerz Paso 2: TcpListener espera por una

    requisicin de conexinz Paso 3: establece conexin luego de

    peticin del clientez Paso 4: lee el string de datos enviada por el

    clientez Paso 5: cerrar conexin

  • Creacin de un Chat

    z Pasos bsicos, lado Cliente:z Paso 1: crear TcpClient y Conectar al

    Servidorz Paso 2: obtener NetworkStream Asociado

    con el TcpClientz Paso 3: fase de procesamientoz Paso 4: cerrar conexin

    Programacin Avanzada IMAE Carlos Alberto Zelaya IrasPorqu Programacin Orientada a Objetos?De la Programacin Estructurada a la Programacin Orientada a ObjetosDe la Programacin Estructurada a la Programacin Orientada a ObjetosDe la Programacin Estructurada a la Programacin Orientada a ObjetosLo que NO es la Programacin Orientada a Objetos (POO)Lo que SI es la Programacin Orientada a Objetos (POO)Programacin Orientada a Objetos (POO): EjemploProgramacin Orientada a Objetos (POO): Otro ejemploProgramacin Orientada a Objetos (POO): NotasProgramacin Orientada a Objetos (POO): LenguajesProgramacin Orientada a Objetos (POO): ConceptosProgramacin Orientada a Objetos (POO): Conceptos - ClaseProgramacin Orientada a Objetos (POO): Conceptos - ClaseProgramacin Orientada a Objetos (POO): Conceptos - ClaseProgramacin Orientada a Objetos (POO): Conceptos - ClaseProgramacin Orientada a Objetos (POO): Conceptos - ClaseProgramacin Orientada a Objetos (POO): Conceptos - ClaseProgramacin Orientada a Objetos (POO): Conceptos - ClaseProgramacin Orientada a Objetos (POO): Conceptos - ClaseProgramacin Orientada a Objetos (POO): Conceptos - ClaseProgramacin Orientada a Objetos (POO): Conceptos - ObjetoProgramacin Orientada a Objetos (POO): Conceptos - ObjetoProgramacin Orientada a Objetos (POO): Conceptos - ObjetoProgramacin Orientada a Objetos (POO): Conceptos - EncapsulacinProgramacin Orientada a Objetos (POO): Conceptos - EncapsulacinProgramacin Orientada a Objetos (POO): Conceptos - EncapsulacinProgramacin Orientada a Objetos (POO): Conceptos - EncapsulacinProgramacin Orientada a Objetos (POO): Conceptos - EncapsulacinProgramacin Orientada a Objetos (POO): Conceptos - HerenciaProgramacin Orientada a Objetos (POO): Conceptos - HerenciaProgramacin Orientada a Objetos (POO): Conceptos - HerenciaProgramacin Orientada a Objetos (POO): Conceptos - HerenciaProgramacin Orientada a Objetos (POO): Conceptos - HerenciaProgramacin Orientada a Objetos (POO): Conceptos - HerenciaProgramacin Orientada a Objetos (POO): Conceptos - PolimorfismoProgramacin Orientada a Objetos (POO): Conceptos - PolimorfismoProgramacin Orientada a Objetos (POO): Conceptos - SobrecargaProgramacin Avanzada IIntroduccinIntroduccinIntroduccinCLR [Common Language Runtime]CLR [Common Language Runtime]AssembliesBiblioteca de clases .NETBiblioteca de clases .NETBiblioteca de clases .NETADO.NETDesarrollo de aplicacionesSoporte para mltiples lenguajesVisual Studio .NETEntorno de DesarrolloVisual Studio .NETEntorno de DesarrolloEl lenguaje de programacin C#El lenguaje de programacin C#Hola, mundo!Ejemplo Limpiar PantallaClculo del Valor de un Paquete TursticoCompra Boleto de MetroProgramacin Avanzada ISentencias condicionalesSentencia caseSentencia forSentencia for/eachSentencia whileProgramacin Avanzada IVectores y matricesVectores y matricesDefinicinVectores y matricesDefinicinMatricesMatricesMatricesProgramacin Avanzada IConceptos BsicosEncapsulacin de DatosEjemplo PrcticoEjemplo PrcticoDiagrama de Clases VS-2005Creando la Clase clsLibreriaCreando la clase clsLibroRedefiniendo un mtodoMatrices de objetosMatrices de ObjetosMatrices de ObjetosControles GUIControles GUI Ejemplo Tablas de MultiplicarControles GUI Ejemplo Tablas de MultiplicarManejo de strings y ArreglosManejo de strings y ArreglosManejo de strings y ArreglosManejo de strings y ArreglosManejo de strings y ArreglosManejo de strings y ArreglosEl Tiro de Penal!!Programacin Avanzada IConectividad a Bases de DatosIntroduccinModelo de Bases de Datos RelacionalesIntroduccin (Cont.)Modelo de Bases de Datos RelacionalesModelo de Bases de Datos RelacionalesModelo de Bases de Datos Relacionales (Cont.)Generalidades de las bases de datos relacionalesLa Base de datos librosLa Base de datos librosLa Base de datos librosLa Base de datos librosLa Base de datos librosLa Base de datos librosSQLConsulta Bsica SELECTConsulta Bsica SELECTClusula WHEREClusula WHERE (Cont.)Clusula WHERE(Cont.)Clusula WHERE(Cont.)Clusula ORDER BYClusula ORDER BYClusula ORDER BYClusula ORDER BYClusula ORDER BYFusionar datos de varias tablasFusionar datos de varias tablas(Cont.)La instruccin INSERTLa instruccin UPDATELa instruccin DELETECreando Base de Datos libros en SQL Server 2005Manipulando Bases de Datos con ADO.NETManipulando Bases de Datos con ADO.NETInterfaces de acceso a bases de datosInterfaces de acceso a bases de datosInterfaces de acceso a bases de datosArquitectura ADO.NETArquitectura ADO.NETFuncionamiento tpico de ADO.NETClases ADO.NETTransacciones en ADO.NETData Binding en Visual Studio .NETConectndose y consultando una base de datosConsulta Mostrar AutoresConsultar Un AutorUtilizacin DataGridViewUtilizacin DataGridViewUtilizacin DataGridViewUtilizacin DataGridViewProgramacin Avanzada IMAE Carlos Alberto Zelaya IrasSubprocesamiento Mltiple (Multithreading)IntroduccinEstado de los subprocesos: Ciclo de vida de un subprocesoEstado de los subprocesos: Ciclo de vida de un subprocesoPrimer Ejemplo MultithreadingPrimer Ejemplo MultithreadingEjemplo Multithreading GUIEjemplo Multithreading GUISolucin paso a paso - 1Solucin paso a paso - 2Solucin paso a paso - 3Solucin paso a paso - 4Relacin Productor/Consumidor sin Sincronizacin - EjemploRelacin Productor/Consumidor sin Sincronizacin - EjemploRelacin Productor/Consumidor sin Sincronizacin - EjemploRelacin Productor/Consumidor sin Sincronizacin - EjemploRelacin Productor/Consumidor sin Sincronizacin Ejemplo, SalidaRelacin Productor/Consumidor Sincronizada - EjemploRelacin Productor/Consumidor Sincronizada - EjemploRelacin Productor/Consumidor Sincronizada - EjemploRelacin Productor/Consumidor Sincronizada - EjemploCreacin de un ChatCreacin de un Chat