utpl-programaciÓn avanzada-ii-bimestre-(octubre 2011-febrero 2012)

19
ESCUELA: CIENCIAS DE LA COMPUTACIÓN NOMBRES PROGRAMACIÓN AVANZADA Ing. Daniel Guamán OCTUBRE 2011 FEBRERO 2012 SEGUNDO BIMESTRE

Upload: videoconferencias-utpl

Post on 12-Jun-2015

1.018 views

Category:

Education


4 download

TRANSCRIPT

Page 1: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

ESCUELA: CIENCIAS DE LA COMPUTACIÓN

NOMBRES

PROGRAMACIÓN AVANZADA

Ing. Daniel Guamán

OCTUBRE 2011 – FEBRERO 2012

SEGUNDO BIMESTRE

Page 2: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

2

Esquema de Contenidos

Colecciones

Genéricos

Expresiones Regulares

Conexiones a BDD

Sentencias CRUD

Multiprocesamiento

Page 3: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

3

Colecciones

Son estructuras de datos (objetos).Se pueden realizar operaciones de Get, Set, Find, Clear, Contains, similar a usar sentencias CRUD en BDD.Sirven para simular el procesamiento de lo que se conoce como DataTable y/o DataSet Tipados y no Tipados en programación con VStudio.La interfaz Collection es la interfaz raíz en la jerarquía de colecciones, a partir de la cual se derivan las interfaces Set y List.

Page 4: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

4

Tips ColeccionesList = ordenado

List = puede contener elementos duplicados

Set = Elementos únicos

LinkedList = Valores duplicados

Collections = Interfaz raiz en la jerarquia de Colecciones

Map = No puede contener claves duplicadas

Page 5: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

5

Ejemplo Colecciones 1

//Crea el objeto colecciones arraylistList<String> Cursos = new ArrayList<String>();//Permite añadir los valores a la listaCursos.add(0, "Valor0");Cursos.add(1, "Valor1");Cursos.add(2, "Valor2");int tamanio = Cursos.size();System.out.println("Tamanio de la Collection: " + tamanio);System.out.println("Dado el indice retorna el elemento" + Cursos.get(0));System.out.println("Dando el elemento retorna el valor" + Cursos.indexOf("Valor1"));boolean resultado = Cursos.contains("Valor1");//Evaluar o buscar elemento dentro de la Coleccionif (resultado ==true)

System.out.println("Elemento encontrado: " + resultado + "en posicion es: " + Cursos.get(1));//permite setear o añadir nuevo valor en la collectionString set = Cursos.set(1, "ValorNN");int tamanio1 = Cursos.size();System.out.println("Nuevo elemento en posicion 1: "+ Cursos.get(1));

Page 6: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

6

Ejemplo Colecciones 2

//Haciendo referencia a una Clase java

List <Persona> ListPersonas = new ArrayList<Persona>(); Persona p = new Persona("Daniel","Guaman"); Persona p1 = new Persona("Daniel2","Guaman2");

ListPersonas.add(p); ListPersonas.add(p1); int tamanio2 = ListPersonas.size(); System.out.print("Tamano Persona " + tamanio2);

//Clase Personapublic class Persona{ String Nombre; String Apellido; public Persona(String N, String A) {this.Nombre = N; this.Apellido = A;}}

Page 7: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

7

GenéricosSimilar a trabajar con sobrecarga de Métodos.

Sobrecarga de Métodos: Varias Métodos que se programan de forma diferente y se

obtiene el mismo resultado.

Page 8: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

8

Ejemplo Genéricos (Métodos Sobrecargados)public class Principal{ public static void main(String[] args) { Figura f= new Figura(4,5) {

@Override public double GetArea() { throw new UnsupportedOperationException("Not supported yet."); } }; f.GetArea(); }}abstract class Figura{//Atributosprotected int X1;protected int Y1;//Constructorpublic Figura (int X, int Y){ this.X1 = X; this.Y1 = Y;}

//Metodo Abstractopublic abstract double GetArea();}

Page 9: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

9

Ejemplo Genéricos (Métodos Sobrecargados)class Triangulo extends Figura{ private double base; private double altura;

public Triangulo(int X, int Y, double b, double a){//llamada al contructor de la clase padre super(X,Y); this.base= b; this.altura= a;}public double GetArea(){

return (this.base * this.altura)/2;}class Cuadrado extends Figura{private double lado;public Cuadrado(int X, int Y, double l){//llamada al contructor de la clase padre super(X,Y); this.lado = l;}

public double GetArea(){

return (Math.pow(lado, 2));}

Page 10: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

10

Expresiones Regulares

Sirven para realizar o validar temas como: longitud de cadenas, validacion de números de teléfono, celular, número de seguro social, email, etc.

Para las expresiones regulares se utilizan Pattern y Matcher; el primero para ubicar el patron de comparación y Matcher para poder validar la expresión.

//Pattern expression = Pattern.compile("[1-9]+[1-9]+[0]");Pattern expression = Pattern.compile("[a-z]+@[a-z]+[a-z]+[a-z]+[a-z]");//String test = "110";

String test = "daguaman@utpl"; Matcher matcher = expression.matcher(test); System.out.println("Matcher" + matcher); boolean res = matcher.matches(); System.out.println(res);

Pattern expresion2=Pattern.compile("[ \t]+$");String test2 = "Es una prueba para elimnar espacios";Matcher matcher1 = expresion2.matcher(test2);System.out.println(matcher1);

Page 11: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

11

Conexiones a Base de Datos

Una BDD permite almacenar datos e información.Una BDD posee objetos que son propios de BDD entre los que destacan Tablas, indices, paquetes, procedimientos almacenados, triggers, etc.Un motor de BDD puede ser: Oracle, SQL, MySql, Access, DB2, etc.En java para conectarse a una BDD se necesita importar el paquete java.sql.Para operar con una BDD en java:

Conectarse a la BDD. Abrir la BDD. Operar sobre la BDD. Cerrar la conexión a la BDD.

//Metodo que permite realizar conexion a BDD en este caso Access private static Connection getConnection() throws Exception { Driver d = (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); Connection c = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/BASE/prueba.mdb"); return c; }

Page 12: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

12

Sentencias CRUD

Sentencias SQL que permiten operar sobre una BDD.

Se utilizan con cualquier lenguaje de programación que permita conexión a BDD.

C = Create -> InsertR = Read -> SelectU = UpdateD = Delete

Ejemplos:

SELECT * FROM DUAL;SELECT CAMPO1 FROM DUAL;SELECT CAMPO1, CAMPO2, CAMPO3….. FROM DUALINSERT INTO TABLA VALUES(1,2,”A”);

Page 13: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

13

Ejemplos Sentencias CRUD en java //Objeto Connection Connection conn = getConnection(); //Objeto para manipulas las sentencias SQL java.sql.Statement sentencia = conn.createStatement(); //Ejecucion de la sentencia SQL java.sql.ResultSet rsResultado = sentencia.executeQuery("SELECT * FROM ESTUDIANTES"); //Recorrer las filas resultantes while (rsResultado.next()) { System.out.println(rsResultado.getString("CEDULA")); System.out.println(rsResultado.getString("NOMBRES")); System.out.println(rsResultado.getString("APELLIDOS")); } rsResultado.close(); sentencia.close();

java.sql.Statement sentenciaINS = conn.createStatement();String sql= "INSERT INTO ESTUDIANTES VALUES (7,'1108','BBBBB','XXXXX')";int rsResultadoINS = sentenciaINS.executeUpdate(sql);sentenciaINS.close();java.sql.Statement sentenciaUPD = conn.createStatement();String sqlUPD= "UPDATE ESTUDIANTES SET NOMBRES = 'DANIEL' WHERE ID = 6";int rsResultadoUPD = sentenciaUPD.executeUpdate(sqlUPD);sentenciaUPD.close();conn.close();

Page 14: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

14

Bases de Datos

Gestores o Motores de BDD: SQL Server, Mysql, Oracle, Access.

BDD Livianas: Access, MySql.

BDD contiene tablas y dentro de las tablas se tiene filas y columnas o tuplas y columnas.

Sql es el lenguaje para operar en una BDD.

Page 15: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

15

Multiprocesamiento

Para realizar el multiprocesamiento se necesita de programar HILOS.

Hilos = Thread; poseen prioridad (alta, media, baja)

Dentro de un programa java se puede tener 1, 2 o mas hilos.

Temas similares a multiprocesamiento tienen que ver con el rendimiento del Equipo (PC).

Para ejecutar un hilo se necesita del uso de Start y su ejecución se encuentra dentro de

run.

El uso del multiprocesamiento es similar a los temas estudiados en los temas de

recursividad.

Con multiprocesamiento se puede realizar los siguiente:

Ejecutar un programa que muestre los números pares.

En una GUI poder ingresar valores a una BDD.

En una GUI ubicar un reloj que incremente segundo, minuto y hora.

Page 16: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

16

Multiprocesamientopublic class Hilos2 extends Thread{ public void run() { while(true) {Pares();}}}public void Pares(){ for (int i =0; i<100000; i++) { if (i%2 == 0) System.out.println("Par :" + i);}}//llamada a los hilos para su ejecucion Hilos h1 = new Hilos(); public PruebaHilos() {

h1.start(); Hilos2 h2 = new Hilos2(); h2.start(); }

Page 17: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

17

Preguntas Ejemplo:El término CRUD significa: a) Create, Read, Update y Deleteb) Create, Reset, Update y Deletec) Create, Read, Unique y Deleted) Create, Red, Update, Diference

Un objeto List es un objeto Collections ………..que puede contener elementos duplicadosa) ordenadob) desordenadoc) en arraysd) todas las anteriores

La interfaz…………define a una colección que representa a una línea de esperaa) Setb) Collectionc) Queued) Collections

Una colección es: a) una claseb) un objetoc) una sentencia de controld) todas las anteriores

Page 18: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)

18

Preguntas Ejemplo Ensayo:

Remítase a las presentaciones 6 y 13.

Conocimientos previos:

Creación de Clases.Definición de atributos y métodos de clase.Conocer sentencias CRUD y el uso de getConnection, CreateStament, ExecuteConocer para que se utiliza Set, Clear, IndexOf.

Page 19: UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)