El Leguaje Orientacin al objeto Qu es orientacin
El Leguaje Orientación al objeto
¿Qué es orientación a objeto ? n n n Es solo una manera de organizar el código. No es que ahora se puedan hacer cosas que antes no se podían !!! Los datos que usa un programa se organizan en objetos Los objeos son una colección de variables asociadas a métodos Métodos que modifican las variables o “estado” de un objeto Métodos que retornan valores que reflejan el “estado” del objeto (valor de sus variables)
¿Por qué orientación al objeto ? n Una estrategia para poder desarrollar programas más grandes, más libres de errores y en menos tiempo: Software engineering
Java Viene con muchas clases de objetos definidos n n n Vector: un arreglo de objetos sin límite String: para manejar strings File. Reader, File Writer, Random. Access. File: para manejar archivos Hash. Table: para mantener tablas de hashing Socket: para establecer comunicaciones Etc.
Algunas clases estan definidas a medias!!! n La idea es que el programador las completa n n n Applets Servlets Threads EJB (hay varias clases distintas) Etc. .
Cómo se define una clase nueva n Definir una nueva clase básicamente significa n n Definición de las variables que contendrá un objeto Definición de los métodos que se le podrán aplicar a un objeto de esta clase La definición de una clase debe ir en un archivo llamado Classname. java Por convención, el nombre de las clases debe empezar con mayúscula n Console String Clock Student
Ejemplo: una clase Clok n n Las variables son las posiciones de los punteros: segundero, minutero y horario Los métodos son para poner los valores y preguntar “¿qué hora es? ” Establecer valores de los punteros Preguntar la hora
El libro telefónico n n Las variables son listas de números y nombres Los métodos son para registrar un nuevo par (nombre, número), preguntar el teléfono dado un nombre, cambiar un teléfono o borrar un par • Poner nuevo par (nombre, número) • Cambiar el número dado un nombre • Borrar un par (nombre, número) • Dado un nombre preguntar el teléfono
El registro de un estudiante n n Las variables son los datos relevantes del estudiante (nombre, edad, dirección, etc. . ) Los métodos son para establecer valores y recuperar estos datos Poner valores Name: Sakano Tepe Address: Musashino-shi. Year Born: 1977 Recuperar valores
Clases y objetos n n Todo objeto es de una cierta clase La clase define el tipo de objeto, esto es: n Qué variables contiene n Qué métodos pueden ser aplicados a un objeto de esta clase Objecto A de clase clock Clase Clock Objecto B de clase clock
Diseño de los métodos (1) n Clock A = new Clock( ); Clock A; A = new Clock(); Crea un nuevo objeto Clock n n n A. set. Time(15, 35, 45); int i = A. get. Hour( ); String s = A. get. Time() Pone los valores en 15, 35 y 45 recupera el valor del puntero horario recupera un String con hh: mm: ss
Diseño de los métodos (2) n Phonebook B = new Phonebook( ); Crea un libro de teléfonos vacío n B. add. Entry(“Simón Vera”, 422596160); Simón Vera 422596160 n Dados nombre y número como parámetros crea un entry long l = B. get. Number(“Simón Vera” ); Simón Vera 422596160 Dado un nombre como parámetro recupera el número
La clase Clock • Un Clock tendrá tres variables (attributes, campos) int hours int minutes int seconds • Cada vez que se cree un nuevo objeto Clock sus tres variables valdrán 0 (medianoche) • El método set. Time() va a poner una nueva hora. Este método requerirá tres parámetros: hh, mm, ss • También tendremos 3 métodos que retornarán el valor de cada puntero (por ejemplo • El método get. Time() retorna un String con la hora en el formato hh: mm: ss
Escribamos el archivo Clock. java, compilémolos y usémolos en un programa Clock A = new Clock( ); A. set. Time(15, 30, 20); int h = A. get. Hour( ); int m = A. get. Minutes(); int s = A. get. Minutes(); String s = get. Time(); 15 hours 30 minutes 20 seconds Por convención, los nombres de variables y metodos empiezan minúscuas Clock. java Program. Clock 1 Program. Clock 2
¿ Cómo correr un código Java ? n n Depende del tipo de código que estemos desarrollando (si es un applet, servelt, etc. ) En todo caso siempre se dará que el sistema en el cual el código fue desplegado echará a correr un método especial dentro de la clase Evento comando Public class AA { Metodo 1{…. Metodo 2{…. Sistema (web container Application container JVW)
El caso más sencillo: stand alone n En el caso queramos echar a andar un programa standalone se escribe dentro de la clase un método n n public static void(main(String args[]) Si echamos a andar la máquina virtual de java con el nombre de una clase existente se llamará a este método n java classname Sistema Operativo Java AA main JVM public class AA { public staic main(…)
Desarrollo y ejecución de programas stand-alone 1. Escribir el código fuente en un archivo con extensión Java con un editor de texto 2. Compilarlo con el Compilador (javac) para generar el archivo clase con extensión class 3. Ejecutarlo con la JMV (java) My. Prog. java Java source code Compilador java (javac) My. Prog. class Java class file Java VM (java)
Desarrollo y ejecución de Applets 1. Escribir el código fuente en un archivo con extensión Java con un editor de texto 2. Compilarlo con el Compilador (javac) para generar el archivo clase con extensión class 3. Ponerlo en el servidor web junto con una página que contengauna referencia al applet (tag) 4. Invocar con un browser la página web
Desarrollo y ejecución de Applets My. Applet. java My. Applet. class Java class file Java source code Pagina. html Applet tag Pagina. html <applet code=My. Applet. class > <parameters> </applet> My. Applet. class GET Pagina. html My. Applet. class Pagina. html
Desarrollo y ejecución de Servlets 1. Escribir el código fuente en un archivo con extensión Java con un editor de texto 2. Compilarlo con el Compilador (javac) para generar el archivo clase con extensión class 3. Ponerlo en el servidor web en el lugar apropiado 4. Invocar con un browser el servlet (directamente o a través de un botón action de un form de HTML)
Desarrollo y ejecución de Servlets My. Servlet. java My. Servlet. class Java class file Java source code Código HTML GET My. Servlet. class
Programas Stand alone en el caso de un IDE como Net. Beans n n n Abrir la herramienta Crear un proyecto Java Application Crear archivos dentro del proyecto n n Clases, alguna un metodo main Eventualmente incluir algunas bibliotecas externas Compilarlo Correrlo
Herencia n n Es una de las cualidades más poderosas de un lenguaje OO Permite extender una clase ya existente (perteneciente al lenguaje o programada por el usuario) Objetos de esta nueva clase también lo serán de la clase que extienden (esto es importante ya que se pueden utilizar en los mismos contextos de la clase original) Ver Clock 2 Nueva clase BB extends AA Clase Original AA - Hereda todos los métodos y variables - Declara nuevos métodos y variables - Sobreescribe métodos (muchas veces métodos que no hacían nada)
Heredando clases existentes n n Como habíamos dicho al principio, herencia se usa para implementar clases especiales en java Dos ejemplos importantes: applets y servlets En java existen estas dos clases que implementan lo básico para que los objetos se comporten como tales Lo que el usuario “completa” es “customizar” la reacción de estos objetos al ser invocados ciertos métodos por el ambiente donde están
Desarrollo y ejecución de Applets 1. Escribir el código fuente en un archivo con extensión Java con un editor de texto 2. Compilarlo con el Compilador (javac) para generar el archivo clase con extensión class 3. Ponerlo en el servidor web junto con una página que contengauna referencia al applet (tag) 4. Invocar con un browser la página web
Desarrollo y ejecución de Applets My. Applet. java My. Applet. class Java class file Java source code Pagina. html Applet tag Pagina. html <applet code=My. Applet. class > <parameters> </applet> My. Applet. class GET Pagina. html My. Applet. class Pagina. html
Activacion de los métodos del Applet n n Los métodos los activa el browser que los bajó Estos métodos son: init (cuando se carga), start (cuando se muestra), stop (cuando se deja de mostrar por cambio de página o scrolling), destroy (cuando se cierra el browser) Sistema Operativo controles public class AA extends Applet{ public void init(){. . . } public void start() {. . . } public void stop() {. . . }. . . Web Browser (explorer, netscape, etc)
Desarrollo y ejecución de Servlets 1. Escribir el código fuente en un archivo con extensión Java con un editor de texto 2. Compilarlo con el Compilador (javac) para generar el archivo clase con extensión class 3. Ponerlo en el servidor web en el lugar apropiado 4. Invocar con un browser el servlet (directamente o a través de un botón action de un form de HTML)
Desarrollo y ejecución de Servlets My. Servlet. java My. Servlet. class Java class file Java source code Código HTML GET My. Servlet. class
Servlets en el caso de un IDE como Net. Beans n n n Abrir la herramienta Crear un proyecto web Crear archivos dentro del proyecto n n servlets, html, JSP Eventualmente incluir algunas bibliotecas externas Compilarlo Correrlo
Un segundo ejemplo n n n Vamos a implementar un web counter Va a contabilizar cuántas veces un servlet de esta clase ha sido creado (init) Cuántas veces han sido llamadas todas las instancias Cuantas veces ha sido llamada la instancia que se contacto ver Count. java
Parámetros desde el cliente n Es posible pasar parámetros en la línea de invocación URL n n El servlet puede preguntar por los valores de los parámetros si conoce el nombre de ellos de la siguente manera: n n n http: //host: port/servlet? param 1=value 1¶m 2=value 2. . String value = req. get. Parameter(param 1); Parámetros pueden ser solamente strings ver Servlet. Parameter 1. java invocarlo con n http: //host: port/Servlet. Parameter 1? name=nelson
Lo ideal es hacerlo con Forms n n n Una Form es una página html que puede contener objetos gráficos para recolectar información la que manda al servidor como una URL: Podemos usar el mismo servlet !!!! n mirar Servlet. Parameter 1. html Ejemplo 2: n Submit. Resume. java invocado por Submit. Resume. html
Session Tracking n n n Session tracking es un mecanismo que pueden los servlets para mantener información acerca del estado de los requests de un usuario durante una sesión Una sesión es un diálogo de una instancia de un browser cliente con el server en un período de tiempo limitado (normalmente 30 minutos). Se pueden asociar objetos de información a la sesión, los cuales se conservan en el servlet La sesión no la maneja el programador sino el el servidor web, el programador la consulta Ver Session. Servlet
Algunos métodos n n n n n Http. Session sesion = request. get. Session(true) crea un objeto sesión si no existía sesion. is. New()retorna verdadero si la sesión se creó recientemente sesion. put. Attribute/Value(String nombre, Object valor) asocia a la sesión un par nombre-valor (value se usa hasta v 2. 2) Object o = sesion. get. Attribute/Value(“nombre”)retorna el objeto asociado a ese nombre para la sesión sesion. remove. Attribute/Value(“nombre”)elimina el objeto asociado a ese nombre para la sesión Enumeration[]valores = sesion. get. Attribute. Names() String[]valores = sesion. Value. Names() retorna un arreglo/enumeración de nombres de atributos/valores que hay en la sesión long l = sesion. get. Creation. Time()retorna el tiempo (en milisegundos desde el 1. 1. 70 0: 0: 0 ) en que fue creada Long l = sesion. last. Accessed. Time() retorna el tiempo del último acceso (en milisegundos) sesion. set. Max. Inactive. Interval(int seconds)pone el máximo intervalo antes de que automáticamente se destruya la sesión
Usando Cookies n n n Cookies son otra forma con la cual el servlet puede seguirle la pista a un cliente A través de una cookie el selvlet puede mandar información al cliente para que la guarde y la entregue cada vez que lo contacta. Los Servlets envían cookies a los clientes agregando campos al encabezado de respuesta Http que se envía. Los clientes automaticamente retornan cookies cuando contactan a un servidor mandándolo como campos adicionales en los encabezados HTTP request. Cookies los cookies tienen un nombre y un valor (ambos strings) Adicionalmente puede guardar un comentario Un server puede pasar más de una cookie a un cliente.
Usando Cookies n Para mandar una cookie 1. Instanciar un objeto Cookie 2. Poner atributos (par nombre-valor) 3. Mandar la cookie Para recuperar la información de una cookie, 1. Recuperar todas las cookies del cliente 2. Encontrar la cookie que se necesita por su nombre 3. Recuperar su valor
Ejemplos de Cookies n El ejemplo Cookies. java muestra los tiempos cuando el cliente contactó por primera vez al servlet (vía método do. Get) y el tiempo cuando lo contactó oprimiendo un botón que llama al método do. Post
¿ Cookies o Sessions ? n n n Con sessions la información la almacena y administra el servidor por lo que el servidor tiene un estado que tiene que administrar cuidadosamente Con Cookies es el cliente el que tiene la información, lo que implica que esta va y viene cada vez que se contacta al servidor El cliente puede prohibir el uso de cookies si quiere
Las JSP n n Son páginas HTML a las que se le inserta código que produce servlets Se usan cuando la parte estática de la página que se debe generar es relativamente importante (la parte que no cambia) Al cargarse una página JSP esta se compila, se genera el servlet y se ejecuta Por esto, la primera invocación a una JSP demora más que las siguientes
Contenido de una JSP n Una JSP, aparte de código HTML puede contener 3 tipos de constructos : n n n Elementos de scripting: son los elementos que definen el comportamiento dinámico del servlet, es decir su código directivas: afectan la estructira general del servlet que resulta de la JSP acciones: permiten redirigir el request a otra instancia JSP, servlet o página HTML
Elementos de scripting n n n 1. Expresiones de la forma <%= expresión %>, son evaluadas e insertadas en el output del servlet 2. Scriptlets de la forma <% code %>, que son insertadas en el método _jsp. Service el cual es el método llamado cuando se contacta a la página jsp 3. Declaraciones de la forma <%! code %>, que son insertadas en el cuerpo de la clase del servlet, fuera de todo método, definiendo así variables de instancia
Variables predefinidas n Para simplificar las expresiones, existen variables predefinidas que se pueden usar. Las más importantes son: n n request, el Http. Servlet. Request response, el Http. Servlet. Response session, el Http. Session asociada al request out, el Print. Writer usado para mandar output al cliente
Un Ejemplo (Ejemplo 1. jsp) <HTML> <HEAD> <TITLE>JSP Expressions</TITLE> </HEAD> <BODY> <H 2>JSP Expressions</H 2> <UL> <LI>Current time: <%= new java. util. Date() %> <LI>Your hostname: <%= request. get. Remote. Host() %> <LI>Your session ID: <%= session. get. Id() %> <LI>The <CODE>test. Param</CODE> form parameter: <%= request. get. Parameter("test. Param") %> </UL> </BODY> </HTML>
Explicaciones • El servidor crea un servlet, lo compila y llama al método _jsp. Service que contiene todas las sentencias escritas entre <% y %> • El texto HTML es mandado al cliente por vía out. print(. . ) • Las expresiones se evalúan y se insertan en el texto que se manda, por lo cual la expresión <LI>Current time: <%= new java. util. Date() %> equivaldría en un servlet a hacer out. println(“<LI>Current time: “+ new java. util. Date() );
Java Database Connectivity JDBC n n n JDBC es una API, formada por conjunto de clases e interfaces en el lenguaje de programación Java, para ejecutar sentencias SQL sobre una base de datos (externa). Ofrece un estándar de conexión a cualquier base de datos disponible en el mercado. Permite obtener los datos en forma fácil y cómoda en ambientes cliente-servidor a través de Internet/Intranet.
¿Qué hace JDBC? n n Permite establecer una conexión a una base de datos. Permite enviar sentencias SQL. Permite procesar los resultados de estas sentencias. Las clases que permiten esto están en el paquete java. sql (hay que importarlo)
Cargando el Driver n n Es necesario primero cargar una clase con el driver de la base de datos (esto lo provee el vendedor de la DBMS) Ejemplo: Class c = Class. for. Name(“com. informix. jdbc. Ifx. Driver"); Calss. for. Name(“com. novell. sql. LDAPDriver”); Class. for. Name("com. mysql. jdbc. Driver"); n n Esto es particular según la base de datos que se usa Luego hay que crear una instancia de la clase c. new. Instance();
Estableciendo la Conexión Connection con = Driver. Manager. get. Connection ( url, "login", "password"); n n Un objeto “Connection” representa una conexión a una base de datos. La clase “Driver. Manager” intenta ubicar el controlador que pueda conectarse a la base de datos representada en la URL. n jdbc: mysql: //localhost/test
Enviando sentencias SQL n JDBC permite enviar cualquier tipo de sentencia SQL. Aunque ésta fuera dependiente de la base de datos sólo se correría el riesgo de incompatibilidad al cambiar de base de datos.
. . . Enviando sentencias SQL n JDBC provee 3 clases: n n n “Statement”: Este objeto es usado para enviar sentecias SQL simples. Es creado por el método “create. Statement”. “Prepared. Statement”: Este objeto es usado para sentencias que requieren uno o más parámetros. La sentencia es precompilada y guardada para uso futuro. “Callable. Statement”: Es usado para ejecutar procedimientos almacenados en la base de datos.
La clase Statement n n Statement stmt = con. create. Statement(); En este momento la statement existe pero no tiene una sentencia SQL para ejecutar. Esta se puede pasar con los métodos n n execute. Update(String), usada para crear/modificar tablas (no hay resultados), típicamente para create, update, delete. . . execute. Query(String) para hacer consultas, retornan resultados en un objeto de la clase Result. Set, típicamente para select
Ejemplos de excute. Update n n n stmt. execute. Update(“create table alumno (nombre varchar(32), matricula integer, direccion varchar(40), añonac integer, . . . ); stmt. execute. Update(“insert into alumnos (‘Valeria Valencia ’, 00998852678, ‘Calle bonita 223 Vitacura Stgo’, 1974, . . . ); stmt. execute. Update(“update alumnos set direccion = ‘? ? ? ’ where nombre = ‘Valeria Valencia’ ”);
Ejemplos de excute. Query n n n stmt. execute. Query(“select * from alumnos “ + “where añonac = 1974”); Los resultados de una consulta se reciben en un objeto de la clase Result. Set rs = stmt. execute. Query(. . ); Un Result. Set se puede ver como una enumeración de filas que representan el resultado Existen métodos adecuados para recorrer los elementos de esta enumeración y recuperar los valores de las columnas (campos)
El Result. Set rs = stmt. execute. Query(“select nombre where direccion like Santiago”); while (rs. next()) { String s = rs. get. String(“nombre”); int y = rs. get. Int(“año”); System. out. println(s+” “+y); } n Result. Set rs contiene una colección de filas con los resultados de la pregunta. La instrucción next avanza un puntero que indica en qué fila estamos actualmente. Al principio está antes de la primera fila, por lo cual se hace necesario ejecutar un next() para situarse en la primera
- Slides: 55