Clases Java
Clases Java
Clases Java
JAVA - NetBeans
Qu es Cliente / Servidor?
Dos aplicaciones, una de las cuales solicita servicios (cliente) y la otra procesa las solicitudes
(servidor)
Es independiente del hardware donde se ejecuta, cliente y servidor pueden ejecutarse en la misma
PC
En algunos casos los papeles se intercambian
Sentencia
SQL
Solicita
servicio
Cliente
Enva
resultados
Aplicacin
VB, C#, PB, Java
Servidor
Procesa
solicitud
Ejecuta
Sentencia
SQL
SQLServer
MySql
Server
Caractersticas
Clasificacin
Los autores hacen distintas clasificaciones de los sistemas Cliente / Servidor
Por los servicios que se atienden
Por la distribucin de las unidades funcionales en capas
Por la distribucin del volumen de las unidades funcionales
Servidores de archivos
Servidores de bases de datos
Servidores de transacciones
Servidores de Groupware
Servidores de objetos
Servidores Web
JAVA - NetBeans
1. Dos capas
Fsico
Lgico
Capa de usuario
Capa de servicios
Capa de
datos
2. Tres capas
Fsico
Lgico
Capa de usuario
Capa de servicios
del negocio
Capa de
datos
JAVA - NetBeans
3. N - capas
Capa de usuario
Capa de
datos
Capa de servicios de
Internet
Fsico
Lgico
2.
Elementos de construccin
Cliente
Middleware
Servidor
JAVA - NetBeans
El elemento Cliente
El elemento Servidor
El elemento Middleware
JAVA - NetBeans
Asiste nte
V e rifica r m a tricula
Coordina dor
Desarrollar:
1. Teniendo en cuenta el diagrama de casos de uso, disear la Base de datos y
migrarla al SQL Server 20xx
JAVA - NetBeans
JAVA - NetBeans
JAVA - NetBeans
import java.sql.*;
Clases de acceso a datos
java.sql.Connection: Sirve para conectarse a una base de datos de SQL Server, etc.
java.sql.Statement: Sirve para enviar comandos de ejecucin desde la aplicacin a la base de
datos.
java.sql. ResultSet: Sirve para almacenar los resultados devueltos desde la base de datos como
consecuencia de alguna consulta realizada.
JAVA - NetBeans
Nombre del
ODBC.
odbcNombre BD
Nombre del
Servidor
. / (local)
10
JAVA - NetBeans
OJO,
nuestra
BD
11
JAVA - NetBeans
Paso 8: Finalmente si quieren comprobar que todo est bien, presionar el botn Probar origen
de datos y deber de mostrarse la siguiente pantalla.
12
JAVA - NetBeans
ODBC creado.
13
JAVA - NetBeans
Manejo de Excepciones
El manejo de excepciones se logra con el bloque try
try {
// cdigo
} catch (Exception e )
{
// cdigo que se hace cargo del error reportado en e
}
El bloque try puede manejar mltiples excepciones:
try {
// cdigo
} catch (StackError e )
{
// cdigo para manejar el error de stack
}
Captura de Excepciones (completo)
Ing. Oscar Ascn Valdivia
14
JAVA - NetBeans
try {
//sentencias
} catch (e-type1 e ) {
// sentencias
} catch (e-type2 e ) {
// sentencias
} ...
finally {
//sentencias
}
La clusula finally es ejecutada con posterioridad cualquiera sea la condicin de trmino del try
(sin o con error). Esta seccin permite dejar las cosas consistentes antes del trmino del bloque
try.
Ejemplo: Divisin de nmeros
Lgica correcta
Controlar error
15
JAVA - NetBeans
package agenda;
//Paso 1: importar las librerias de acceso a datos
import java.sql.*;
import javax.swing.JOptionPane;
public class frmconectar extends javax.swing.JFrame {
//Paso 2: crear variables de acceso a datos
Connection con;
public frmconectar() {
initComponents();
}
//Paso 3: Crear un mtodo para la conexin de la BD
private void conectar()
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:odbcventas","sa","");
JOptionPane.showMessageDialog(rootPane,"Yeeeeeee, logre conectar Java con mi BD",
"Felicidades",JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane, ex.getMessage());
}
}
private void btnconectarActionPerformed(java.awt.event.ActionEvent evt) {
//Paso 4: llamar al metodo conectar
conectar();
}
16
JAVA - NetBeans
package conectarmysql;
import javax.swing.JOptionPane;
import java.sql.*;
public class frmconectar extends javax.swing.JFrame {
String bd="ventas";
String login="root";
String clave="";
String url="jdbc:mysql://localhost/"+bd;
Connection con;
private void btnconectarActionPerformed(java.awt.event.ActionEvent evt) {
try
{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection(url,login,clave);
JOptionPane.showMessageDialog(null,
"Conexion
JOptionPane.INFORMATION_MESSAGE);
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,
"Conexion
JOptionPane.INFORMATION_MESSAGE);
}
}
Ing. Oscar Ascn Valdivia
exitosa",
No
exitosa",
"Base
Datos",
"Base
17
Datos",
JAVA - NetBeans
SELECT
INSERT
UPDATE
DELETE
Resultados
BASE
DATOS
Requerimientos
Consultas Bsicas
La Utilidad de las bases de datos relacionales es permitir a los usuarios consultar o acceder a los datos
almacenados en ellas de una manera sencilla e intuitiva.
L
Applicacin
Cliente
Visual Basic
C#
PowerBuilder
Java
TransactSQL Server
ORACLE
MySql
Modelo Datos
18
JAVA - NetBeans
TIPO DE SENTENCIAS:
2. SELECT
2.1. Definicin
Obtiene las filas de la base de datos y permite realizar la seleccin de una o varias filas o
columnas de una o varias tablas. hay tres componentes bsicos en la instruccin SELECT:
SELECT, FROM y WHERE.
2.2. Sintaxis Bsica
SELECT * | lista_columnas
FROM tabla
[ WHERE condicin_filas ]
Donde:
lista_columnas es la lista de columnas a mostrar en el resultado de la consulta. Si se
especifica * se mostrarn todas las columnas de la tabla.
condicin_filas es una expresin lgica que indica que las filas a mostrar son aquellas
para las que el valor de la expresin es verdadero.
2.3. Clusulas
2.3.1. Select:
Especifica las columnas que va a devolver la consulta.
Argumentos:
DISTINCT: Especifica que slo pueden aparecer filas exclusivas en el conjunto de
resultados. Los valores NULL se consideran iguales a efectos de la palabra clave
DISTINCT.
2.3.2. From
Especifica las tablas de las que se van a obtener filas. La clusula FROM es necesaria
excepto cuando la lista de seleccin slo contiene constantes, variables y expresiones
aritmticas (no nombres de columna).
2.3.3. Where
Especifica una condicin de bsqueda para restringir las filas que se van a devolver.
Argumentos:
LIKE: Determina si una cadena de caracteres dada coincide o no con un
determinado modelo. Un modelo puede incluir caracteres normales y caracteres
comodn.
Carcter %: Cualquier cadena de cero o ms caracteres.
Ejemplo: WHERE apellidos LIKE '%ana%'
Busca todos los apellidos de los alumnos que contengan la palabra 'ana'
en cualquier parte de los apellidos.
BETWEEN: Especifica un intervalo inclusivo de valores. Utilice AND para
separar los valores inicial y final.
19
JAVA - NetBeans
20
JAVA - NetBeans
package agenda;
import javax.swing.table.*;
import java.sql.*;
import javax.swing.JOptionPane;
Datos",
21
JAVA - NetBeans
con.close();
stmt.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
}
private void limpiartabla()
{
int x=tdatos.getRowCount();
for (int i = 0; i < x; i++) {
_________________________________________
}
}
}
2. Mostrar todos los datos de la tabla producto, donde el precio de venta este entre dos valores
22
JAVA - NetBeans
3. Mostrar todos los datos de la tabla cliente donde su apellido paterno empiece con algn carcter
ingresado por el usuario
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
_______________________
_______________________
_______________________
_______________________
_______________________
_______________________
t=tbldatos.getRowCount();
txttotal.setText(String.valueOf(t));
}
con.close();
stmt.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
Trabajo Prctico
Desarrollar las siguientes consultas SQL en el Lenguaje de programacin JAVA, utilizando la Base de
Datos Ventas.
1. Mostrar todos los datos de la tabla venta donde la fecha de venta se encuentre entre un rango de
valores ingresados por el usuario
2. Mostrar todos los datos de la tabla producto donde la descripcin empiece con algn carcter
ingresado por el usuario.
3. Mostrar todos los datos de la tabla producto donde el precio de venta este entre dos valores
4. Mostrar Nombre, apellidos y direccin del cliente donde la direccin sea igual a una direccin
ingresada
5. Mostrar Nombre y Apellidos de la tabla Vendedor donde el apellido paterno empiece con algn
carcter ingresado
6. Seleccionar todos los campos de la tabla cliente donde su apellidos empiecen con algn carcter
ingresado por el usuario y su direccin sea igual a una direccin seleccionada por el usuario.
Mostrar el total de registros.
23
JAVA - NetBeans
7. Seleccionar todos los campos de la tabla producto donde la descripcin empiecen con algn
carcter ingresado por el usuario y su precio de venta sea mayor a un valor ingresado por el usuario.
Mostrar el total de registros.
8. Disear la siguiente venta y programar las consultas.
Nota: Las consultas deben de estar inmersas dentro de una opcin de Menu (Consultas), las cuales se
acceder con una pantalla de seguridad que se encuentre validado para 3 intentos. (debe de validar a
los usuarios con una tabla usuario de la base de datos).
24
JAVA - NetBeans
25
JAVA - NetBeans
extends
26
Datos",
JAVA - NetBeans
cliente as c
inner join venta as v on(c.cod_cli=v.cod_cli)where c.dir_cli = '"+valor+"'";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
while(____________________________){
_________________________________
datos[0]=rs.getString(1);
datos[1]=rs.getString(2);
datos[2]=rs.getString(3);
datos[3]=rs.getString(4);
_______________________________
t=tbldatos.getRowCount();
txttotal.setText(String.valueOf(t));
}
con.close();
stmt.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
}
private void direccion()
{
conectar();
try{
String sql="select distinct dir_cli from cliente";
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
__________(rs.next()){
cbodireccion.addItem(rs.getString(1));
}
con.__________________();
stmt.__________________();
}catch(Exception ex){
JOptionPane.showMessageDialog(rootPane,ex.getMessage());
}
}
Ing. Oscar Ascn Valdivia
27
JAVA - NetBeans
2. Mostrar todos los campos de la tabla detventa donde el cdigo del producto sea igual a un valor
seleccionado por el usuario, mostrar la cantidad de registros.
4.
Mostrar al vendedor que atendieron a los clientes y la fecha de venta segn el apellido del vendedor
(bsqueda interactiva)
5. Mostrar los productos que se llev el cliente segn el nmero de factura seleccionado
28
JAVA - NetBeans
29
JAVA - NetBeans
e. Mostrar a todos los pacientes que se atendieron (nombre, apellido, direccin, fecha cita) segn un
servicio seleccionado, adems deber demostrar la cantidad de pacientes. (2 ptos)
f. Mostrar a todos los pacientes que se atendieron segn la direccin del paciente, adems deber
demostrar la cantidad de pacientes (2 ptos)
30
JAVA - NetBeans
ACCESO A DATOS
SENTENCIA DE INSERCIN: INSERT
Definicin
Agrega o inserta una nueva fila a una tabla.
Sintaxis Bsica
INSERT INTO tabla (lista_columnas)
VALUES (valor1, valor2,valorn)
Donde:
lista_columnas se trata de una lista de una o ms columnas en las que se insertarn los
datos; lista_columnas debe estar entre parntesis y delimitada con comas.
valor1, valor2,valorn son los valores que se van a insertar en la tabla.
Clusulas
Into: Es una palabra clave opcional que se puede utilizar entre INSERT y la tabla de destino.
Values: Presenta la lista de valores de datos que se van a insertar. Debe haber un valor de datos para
cada columna definida en lista_columnas (si se especific) o en la tabla. La lista de valores debe estar
entre parntesis.
Si los valores de la lista VALUES no estn en el mismo orden que las columnas de la tabla o no tienen
un valor para cada columna de la tabla, debe utilizarse lista_columnas para especificar explcitamente
la columna que almacena cada valor de entrada.
SENTENCIA DE ACTUALIZACIN: UPDATE
Definicin
Cambia o modifica los datos de una o varias filas de una determinada tabla.
Sintaxis Bsica
UPDATE tabla
SET
Columna1 = valor1,
Columna2 = valor2,
..
Columnan = valorn
[ WHERE condicin_filas ]
Donde:
lista_columnas se trata de una lista de una o ms columnas las cuales sern modificadas
o actualizadas por la lista de valores las cuales deben de estar separadas por coma.
tabla es el nombre de la tabla que va a eliminar las filas.
valor1, valor2,valorn son los valores que se van a ser asignadas a las columnas.
condicin_filas es una expresin lgica que indica que las filas que se van a modificar
son aquellas para las que el valor de la expresin es verdadero.
Clusulas
Set: Especifica la lista de nombres de columnas o variables que se van a actualizar.
Where: Especifica las condiciones que limitan a las filas que se actualizan.
Ing. Oscar Ascn Valdivia
31
JAVA - NetBeans
Nota: Toda actualizacin a la Base de datos necesita de una instruccin Select para verificar el
resultado
32
JAVA - NetBeans
package Ventas;
//Paso 1: Importar las libreras de acceso a datos
import _______________________;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class frmclientito extends javax.swing.JFrame {
//Paso 2: Crear variables de acceso a datos
Connection con;
ResultSet rs;
Statement stmt;
//Paso 4: Crear una variable por cada campo de la tabla
String co,no,ap,di;
DefaultTableModel tdatos=new DefaultTableModel();
public frmclientito() {
initComponents();
String titulos[]={"Codigo","Nombres","Apellidos","Direccion"};
tdatos.setColumnIdentifiers(titulos);
tbldatos.setModel(tdatos);
mostrar();
}
33
JAVA - NetBeans
34
JAVA - NetBeans
luego implementar un formulario de mantenimiento por cada tabla de la base de datos ventas.
35
JAVA - NetBeans
Caso prctico:
1. Implementar la siguiente interfaz tanto para el cliente, Vendedor, Venta, Producto; utilizar
diferentes prototipos de pantallas para su implementacin, deber permitir realizar mantenimiento y
bsquedas a la Base de Datos.
36
JAVA - NetBeans
De este modo se definira una clase de nombre <nombreClase> cuyos miembros son los definidos en
<miembros> Los miembros de una clase son los datos y mtodos de los que van a disponer todos los
objetos de la misma. Un ejemplo de cmo declarar una clase de nombre A que no tenga ningn
miembro es la siguiente:
class A
{}
Campos: Un campo es un dato comn a todos los objetos de una determinada clase. Para
definir cules son los campos de los que una clase dispone se usa la siguiente sintaxis dentro de
la zona sealada como <miembros> en la definicin de la misma:
<tipoCampo> <nombreCampo>;
class Persona
{
string Nombre;
int Edad;
string DNI;
}
37
JAVA - NetBeans
cambiar
su
p.Edad = 20;
Todo mtodo puede devolver un objeto como resultado de la ejecucin de las instrucciones que
lo forman, y el tipo de dato al que pertenece este objeto es lo que se indica en <tipoDevuelto>. Si
no devuelve nada se indica void, y si devuelve algo es obligatorio finalizar la ejecucin de sus
instrucciones con alguna instruccin return <objeto>; que indique qu objeto ha de devolverse.
La sintaxis usada para llamar a los mtodos de un objeto es la misma que la usada para llamar a
sus campos, slo que ahora tras el nombre del mtodo al que
se desea llamar hay que
indicar entre parntesis cules son los valores que se desea dar a los parmetros del mtodo al
hacer la llamada. O sea, se escribe:
<objeto>.<mtodo>(<parmetros>)
38
JAVA - NetBeans
Es importante sealar que en una misma clase pueden definirse varios mtodos con el mismo
nombre siempre y cuando tomen diferente nmero o tipo de parmetros. A esto se le conoce
como sobrecargar de mtodos, y es posible ya que cuando se les llame el compilador sabr a
cual llamar a partir de <parmetros> pasados en la llamada.
Creacin de objetos
Operador new
La utilidad del operador new, que precisamente es crear objetos y cuya sintaxis es:
new <nombreTipo>(<parametros>)
Este operador crea un nuevo objeto del tipo cuyo nombre se le indica y llama durante su proceso de
creacin al constructor del mismo apropiado segn los valores que se le pasen en <parametros>,
devolviendo una referencia al objeto recin creado. Hay que resaltar el hecho de que new no devuelve
el propio objeto creado, sino una referencia a la direccin de memoria dinmica donde en realidad se
ha creado.
El constructor recibe ese nombre debido a que su cdigo suele usarse precisamente para construir el
objeto, para inicializar sus miembros. Por ejemplo, a nuestra clase de ejemplo Persona le podramos
aadir un constructor dejndola as:
class Persona
{
string Nombre; // Campo de cada objeto Persona que almacena su nombre
int Edad;
// Campo de cada objeto Persona que almacena su edad
string DNI;
// Campo de cada objeto Persona que almacena su DNI
void Cumpleaos() // Incrementa en uno la edad del objeto Persona
{
Edad++;
}
Persona (string nombre, int edad, string dni) // Constructor
{
Nombre = nombre;
Edad = edad;
DNI= dni;
}
}
Como se ve en el cdigo, el constructor toma como parmetros los valores con los que deseemos
inicializar el objeto a crear. Gracias a l, podemos crear un objeto Persona de nombre Jos, de 22 aos
de edad y DNI 32734949 as:
new Persona(Jos, 22, 32734949)
En realidad un objeto puede tener mltiples constructores, aunque para diferenciar a unos de otros es
obligatorio que se diferencien en el nmero u orden de los parmetros que aceptan, ya que el nombre
de todos ellos ha de coincidir con el nombre de la clase de la que son miembros. De ese modo, cuando
39
JAVA - NetBeans
Gracias a este constructor introducido automticamente por el compilador, si Coche es una clase en
cuya definicin no se ha incluido ningn constructor, siempre ser posible crear uno nuevo usando el
operador new as:
Coche c = new Coche(); // Crea coche c llamando al constructor por defecto de Coche
Hay que tener en cuenta una cosa: el constructor por defecto es slo incluido por el compilador si no
hemos definido ningn otro constructor. Por tanto, si tenemos una clase en la que hayamos definido
algn constructor con parmetros pero ninguno sin parmetros no ser vlido crear objetos de la
misma llamando al constructor sin parmetros, pues el compilador no lo habr definido
automticamente. Por ejemplo, con la ltima versin de la clase de ejemplo Persona es invlido hacer:
Persona p = new Persona(); // ERROR: El nico constructor de persona toma 3 parmetros
Herencia
Concepto de herencia
El mecanismo de herencia es uno de los pilares fundamentales en los que se basa la programacin
orientada a objetos. Es un mecanismo que permite definir nuevas clases a partir de otras ya definidas
de modo que si en la definicin de una clase indicamos que sta deriva de otra, entonces la primera -a
la que se le suele llamar clase hija- ser tratada por el compilador automticamente como si su
definicin incluyese la definicin de la segunda a la que se le suele llamar clase padre o clase base.
Las clases que derivan de otras se definen usando la siguiente sintaxis:
40
JAVA - NetBeans
A los miembros definidos en <miembrosHijas> se le aadirn los que hubisemos definido en la clase
padre. Por ejemplo, a partir de la clase Persona puede crearse una clase Trabajador as:
class Trabajador extends Persona
{
public int Sueldo;
public Trabajador(string nombre, int edad, string nif, int sueldo)
: base(nombre, edad, nif)
{
Sueldo = sueldo;
}
}
Los objetos de esta clase Trabajador contarn con los mismos miembros que los objetos Persona y
adems incorporarn un nuevo campo llamado Sueldo que almacenar el dinero que cada trabajador
gane.
Un ejemplo que pone de manifiesto cmo funciona la herencia es el siguiente:
class Persona
{
public string Nombre; // Campo de cada objeto Persona que almacena su nombre
public int Edad;
// Campo de cada objeto Persona que almacena su edad
public string DNI;
// Campo de cada objeto Persona que almacena su DNI
void Cumpleaos() // Incrementa en uno de edad del objeto Persona
{
Edad++;
}
public Persona (string nombre, int edad, string nif) // Constructor de Persona
{
Nombre = nombre;
Edad = edad;
NIF = nif;
}
}
class Trabajador extends Persona
{
public int Sueldo; // Campo de cada objeto Trabajador que almacena cunto gana
Trabajador(string nombre, int edad, string dni, int sueldo)
{
// Inicializamos cada Trabajador en base al constructor de Persona
Sueldo = sueldo;
}
41
JAVA - NetBeans
package Clases;
import javax.swing.JOptionPane;
public class Cliente {
private String dni;
private String nombre;
private String apellido;
private String direccion;
private double sueldo;
dni : String
nombre : String
apellido : String
direccion : String
sueldo : double
Agregar()
Calcular()
public Cliente() {
}
public Cliente(String dni, String nombre, String apellido, String direccion, double sueldo) {
this.dni = dni;
this.nombre = nombre;
this.apellido = apellido;
this.direccion = direccion;
this.sueldo = sueldo;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
42
JAVA - NetBeans
Formulario Cliente
package Formularios;
import Clases.Cliente;
public class frmcliente extends javax.swing.JFrame {
private Cliente oc=new Cliente();
43
JAVA - NetBeans
Practica:
1.
Alumno
codigo : String
nombre : String
1
apellido : String
email : String
Matricula
1..*
Codigo
1..*
Fecha
Observacion
Asignardatos()
Agregar()
1..*
dni
nombre
apellido
sueldo
afiliacion
Asignardatos()
Calcularsueldo()
1
Curso
codigo
descripcion
costo
Asignardatos()
Agregar()
2.
44