Вы находитесь на странице: 1из 177

Java Lenguaje de programacin

Mdulo 1
Temario
Introduccin.
Lenguaje Java.
Arreglos.
Orientacin a objetos (OO).
Estructuras de datos.
Manejo de errores.
Manipulacin de archivos (I/O).
Acceso a base de datos (JDBC).

10/11/2017 2
Temario
Introduccin.
Lenguaje Java.
Arreglos.
Orientacin a objetos (OO).
Estructuras de datos.
Manejo de errores.
Manipulacin de archivos (I/O).
Acceso a base de datos (JDBC).

10/11/2017 3
Introduccin Historia
Desarrollado por SUN http://www.sun.com
Inicialmente fue enfocado a electrodomsticos:
Muchos artculos elctricos con microprocesadores.
Potencial de desarrollo de aplicaciones para televisores,
lavadoras, refrigeradores, etc..
Distintas marcas y modelos de electrodomsticos.
Se busca la portabilidad.
Su nombre era firstPerson.
No tuvo mucho xito.

10/11/2017 4
Introduccin Caractersticas
Caractersticas de Java
Portabilidad (con ese fin naci).
Orientado a objeto (est de moda).
Robusto (manejo de errores antes de que
ocurran).
Pensando en el programador (Recolector de
basura).
No hay punteros.

10/11/2017 5
Introduccin Definiciones
Qu es la portabilidad?
Se refiere a la capacidad de un programa de ejecutarse en diferentes
sistemas con mnimas modificaciones.
Qu es la seguridad?
A seguridad informtica, generalmente consiste en asegurar que los
recursos del sistema de informacin (Material informtico o
programas) de una organizacin sean utilizados de la manera que se
decidi.
Qu es la eficiencia?
La capacidad del software de ejecutarse en un tiempo razonable para
el usuario.

10/11/2017 6
Introduccin Comparacin

10/11/2017 7
Introduccin Por qu Java es portable?

Gracias a la mquina virtual de Java (en ingls Java


Virtual Machine, JVM).
JVM es un programa nativo ejecutable en una
plataforma especfica.
La JVM es capaz de interpretar y ejecutar
instrucciones expresadas en un cdigo binario
especial (Java bytecode).
El bytecode es generado por el compilador del
lenguaje Java.

10/11/2017 8
Introduccin Compilacin tradicional

10/11/2017 9
Introduccin Compilacin Java

10/11/2017 10
Introduccin Distintas mquinas virtuales

10/11/2017 11
Introduccin Distintas mquinas virtuales

10/11/2017 12
Temario
Introduccin.
Lenguaje Java.
Arreglos.
Orientacin a objetos (OO).
Estructuras de datos.
Manejo de errores.
Manipulacin de archivos (I/O).
Acceso a base de datos (JDBC).

10/11/2017 13
Lenguaje Java Java Development Kit (JDK)

Es el entorno de desarrollo oficial de SUN:


http://java.sun.com/j2se/downloads/index.html
Disponible para mltiples plataformas:
Win 98, Me, NT, 2000, XP, Linux, Solaris (SUN).
Win 98, Me, NT, 2000, XP, Linux, AIX, OS/2, OS/400,
z/OS (IBM).
Machintos (Apple).

10/11/2017 14
Lenguaje Java Java Development Kit
(JDK)
La primera versin era
JDK 1.0.0, fue
reemplazada por JDK
1.1.0.
El nombre ha sido
intercambiado entre
JDK y SDK (Software
Development Kit).

10/11/2017 15
Lenguaje Java Instalacin de JDK
Ejecutar el instalador visual (win32) o el
instalador de Linux (.sh/.bin/.rpm).
Configurar las variables de entorno:
set PATH=C:\j2sdk1.4.2_10;%PATH% (win32).
export PATH=(rutaInstalacion):$PATH (Linux).

10/11/2017 16
Lenguaje Java Componentes del JDK

Compilador de Java. javac


Intrprete de Java (JVM). java
Intrprete de applets Java. appletviewer
Depurador de Java. jdb
Generador de documentacin. javadoc
Integrador de C y C++ (JNI). javah
Desensamblador. javap

10/11/2017 17
Lenguaje Java Java Runtime Environment
(JRE)
Se refiere a la JVM.
Es el software necesario para ejecutar el
bytecode.
JDK es JRE ms herramientas de desarrollo
(javac).

10/11/2017 18
Lenguaje Java Primer programa

10/11/2017 19
Lenguaje Java Primer programa
El archivo debe llamarse
HolaMundo.java
Se compila con: javac
HolaMundo.java
Se ejecuta con: java
HolaMundo
El resultado es: Hola
Mundo!

10/11/2017 20
Lenguaje Java Sintaxis
Existen dos formas de comentar el cdigo:
// Comentario de una lnea
/* Comentario
De ms de una lnea */
Existe una sintaxis de comentarios para
generar documentacin (javadoc).

10/11/2017 21
Lenguaje Java Sintaxis
Una sentencia es una lnea
de cdigo terminada con
punto y coma ;.
Un bloque es un conjunto
de sentencias agrupadas
entre llave {}.
Los bloques de cdigo
pueden estar anidados.

10/11/2017 22
Lenguaje Java Identificadores
Son las palabras que se les pueden dar a clases
mtodos y variables.
Se debe tener en cuenta lo siguientes:
Debe empezar con una letra, subrayado (_) o dlar ($).
Despus del primer carcter pueden usar nmeros.
Distingue entre las maysculas y las minsculas.
No pueden coincidir con las palabras claves (keyword).

10/11/2017 23
Lenguaje Java Palabras claves

10/11/2017 24
Lenguaje Java Variables
Son contenedores de datos identificados mediante
nombres (identificadores).
El identificador se utiliza para referir al dato que
contiene.
Cada variable debe llevar un tipo que describa el
dato que contiene.
Por lo tanto una variable debe tener:
Un tipo.
Un identificador.
Un valor.

10/11/2017 25
Lenguaje Java Declaracin de
variables
Es la sentencia mediante la
cual se le asigna un tipo y
un identificador.
Adicionalmente se le puede
asignar un valor inicial.

10/11/2017 26
Lenguaje Java Tipo de datos
Existen dos tipo de datos
genricos:
Tipos primitivos (nativos,
atmicos).
Tipos complejos.

10/11/2017 27
Lenguaje Java Tipo de datos primitivos
Tipo Lo que almacena Rango
byte 1 byte (8 bits) de -128 a 127
short 2 byte (16 bits) de -32768 a 32767
int 4 byte (32 bits) de -2147483648 a 2147483647
long 8 byte (64 bits) de -2-63 a 263 - 1
float 4 byte (32 bits) 6 dgitos significativos (10-46 , 1038)
double 8 byte (64 bits) 15 dgitos significativos (10-324 , 10308)
char 2 bytes (16 bits) Comprende el cdigo ASCII
boolean 1 byte (8 bits) false y true

10/11/2017 28
Lenguaje Java Tipo de datos
complejos
Son referencia a un objeto (instancia).
Su valor por omisin es null.
En la variable compleja se guarda la referencia
(puntero) a la zona de memoria donde est guardado
el objeto.

10/11/2017 29
Lenguaje Java Tipo de datos
complejos
Tipo nativo Equivalente complejo
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

10/11/2017 30
Lenguaje Java mbito de las variables

Es la zona de cdigo donde se puede referenciar


dicha variable con su identificador.
El lugar de definicin de la variable establece su
mbito.
Los mbitos pueden ser:
Atributos (o variable miembro).
Parmetros de mtodos.
Variables locales.
Variables de bloques.

10/11/2017 31
Lenguaje Java mbito de las variables

10/11/2017 32
Lenguaje Java mbito de las
variables

10/11/2017 33
Lenguaje Java Conversin entre tipos
(Casting)
Existen conversiones implcitas y explcitas.
Las conversiones implcitas se resuelven en tiempo de
compilacin.
Las conversiones explcitas se resuelven en tiempo de
ejecucin.

10/11/2017 34
Lenguaje Java Conversin entre tipos
(Casting)
Identificar que sentencias son incorrectas.

10/11/2017 35
Lenguaje Java Conversin entre tipos
(Casting)
Solucin

10/11/2017 36
Lenguaje Java Operadores
Operadores unarios.
Operadores binarios.
Operadores terniarios.

10/11/2017 37
Lenguaje Java Operadores

Descripcin Smbolo Expresin Resultado


Multiplicacin * 2*5 10
Resto de una divisin entera % 5%2 1
Suma + 13+1 14
Resta - 2-4 -2
Decremento -- 2-- 1
Menos unario - -(2+4) -6
Divisin / 20/2 10

10/11/2017 38
Lenguaje Java Control de flujo
Sin el control de flujo el cdigo ser ejecutado
linealmente sin interrupciones.
Existen cuatro tipos de sentencia de control:
Bucles: while , do-while y for.
Bifurcaciones: if-then-else y switch-case.
Gestin de excepciones: try-catch-finally y throw.
De ruptura: break, continue, label: y return.

10/11/2017 39
Lenguaje Java while y do-while
La sentencia while se utiliza para
ejecutar continuamente un
cdigo mientras que la condicin
del while sea true.
La sentencia do-while es
parecida al while, pero asegura
que el bloque de cdigo sea
ejecutado al menos una vez.

10/11/2017 40
Lenguaje Java for
La sentencia for facilita ejecutar un bloque de cdigo un
nmero determinado de veces.
Consiste de una inicializacin, una condicin y un incremento.
Las variables de inicializaciones son locales al for.
El incremento es opcional.

10/11/2017 41
Lenguaje Java if-then-else
Esta sentencia permite
elegir que bloque de
cdigo ejecutar entre dos
posibilidades.

10/11/2017 42
Lenguaje Java switch-case
Esta sentencia evala una
expresin del tipo int o que
pueda ser convertida a int
en forma implcita.
Existe una opcin que se
ejecuta si ninguna de las
anteriores coincide
(default).

10/11/2017 43
Lenguaje Java Ruptura
Break: Sirve para detener la ejecucin de tanto los
bucles como la sentencia switch. Por lo tanto,
continua con la lnea siguientes al bucle o el switch.
Continue: Sirve para detener la ejecucin de un
bucle y vuelve a evaluar su condicin.
Return: Sirve para finalizar la ejecucin de un
mtodo.

10/11/2017 44
Lenguaje Java Mtodos
El uso de mtodos tiene diversas ventajas:
Agrupa cdigo.
Pueden ser llamados muchas veces.
Facilita la lectura del cdigo.
Los mtodos en Java pueden retornar un tipo de datos o vaco
(void).
Los mtodos pueden recibir parmetros.
Los mtodos se invocan usando su nombre y llenando sus
parmetros.
Un mtodo puede llamar a otro mtodo.
Los mtodos se defines dentro del cuerpo de la clase.

10/11/2017 45
Lenguaje Java Mtodos

10/11/2017 46
Lenguaje Java Paquetes (Package)
Las clases se organizan en
paquetes.
Para usar una clase de otro
paquete, se debe importar la
clase.
Una excepcin son las clases del
paquete java.lang.
El programador puede crear sus
propios paquetes con el fin de
organizar su cdigo.

10/11/2017 47
Lenguaje Java Normas de codificacin
El nombre de las clases comienza con mayscula.
El nombre de los mtodos comienza con minscula.
El nombre de las variables comienza con minscula.
Si el nombre de la clase, el mtodo o la variable consiste de
varias palabras, entonces las primeras letras de las palabras
siguientes deben comenzar con mayscula.
Ejemplos:
int contadorAuxiliarTemporal = 0;
public static void metodoQueNoRetornaNada(){}
public class ClasePrincipal{}

10/11/2017 48
Temario
Introduccin.
Lenguaje Java.
Arreglos.
Orientacin a objetos (OO).
Estructuras de datos.
Manejo de errores.
Manipulacin de archivos (I/O).
Acceso a base de datos (JDBC).

10/11/2017 49
Arreglos
Son un conjunto o agrupacin de variables del
mismo tipo cuyo acceso se realiza por ndices.
Los arreglos (arrays) de dos o ms dimensiones se
denominan matrices que pueden tener tantas
dimensiones como se desee.
Los arreglos en Java empiezan del subndice cero.
Para acceder a una celda del arreglo se utiliza su
posicin.
Es posible conocer el largo de un arreglo.

10/11/2017 50
Arreglos

10/11/2017 51
Arreglos Ejercicios
Inicializar un arreglos con los primero 100
nmeros (1-100).
Inicializar un arreglo con los primeros 100
nmeros pares ( 0,2,4,6,..) e imprimir los
primeros 10 nmeros en el mismo ciclo.

10/11/2017 52
Arreglos Solucin

10/11/2017 53
Arreglos Ejercicios
Usar arreglos para crear la estructura piramidal.

10/11/2017 54
Arreglos Solucin

10/11/2017 55
Temario
Introduccin.
Lenguaje Java.
Arreglos.
Orientacin a objetos (OO).
Estructuras de datos.
Manejo de errores.
Manipulacin de archivos (I/O).
Acceso a base de datos (JDBC).

10/11/2017 56
Orientacin a objetos (OO) Introduccin
La Programacin Orientada a Objetos (POO u OOP segn
siglas en ingls) es un paradigma de programacin que define
los programas en trminos de "clases de objetos.
Objetos que son entidades que combinan estado (es decir,
datos), comportamiento (esto es, procedimientos o mtodos)
e identidad (propiedad del objeto que lo diferencia del resto).
La POO expresa un programa como un conjunto de estos
objetos, que colaboran entre ellos para realizar tareas.

10/11/2017 57
Orientacin a objetos (OO) Introduccin

Esto difiere de los lenguajes procedurales


tradicionales, en los que los datos y los
procedimientos estn separados y sin relacin.
Estos mtodos estn pensados para hacer los
programas y mdulos ms fciles de escribir,
mantener y reutilizar.

10/11/2017 58
Orientacin a objetos (OO) Introduccin

La POO anima al programador a pensar en los


programas principalmente en trminos de tipos de
datos, y en segundo lugar en las operaciones
("mtodos") especficas a esos tipos de datos.
Los lenguajes procedurales animan al programador a
pensar sobre todo en trminos de procedimientos, y
en segundo lugar en los datos que esos
procedimientos manejan.

10/11/2017 59
Orientacin a objetos (OO) Introduccin

Los programadores que emplean lenguajes


procedurales, escriben funciones y despus
les pasan datos.
Los programadores que emplean lenguajes
orientados a objetos definen objetos con
datos y mtodos, y despus envan mensajes a
los objetos diciendo que realicen esos
mtodos en s mismos.

10/11/2017 60
Orientacin a objetos (OO) Historia
Tiene su origen con el lenguaje Simula67, que se
usaba para simular naves y explosiones.
Ms tarde fue refinado en el lenguaje Smalltalk.
Smalltalk es el nico lenguaje de OO puro.
La POO tom gran fuerza a mediados de los ochentas
con la aparicin de C++.
Otros lenguaje incorporaron la OO, tal como Ada,
BASIC, Lisp y Pascal.

10/11/2017 61
Orientacin a objetos (OO) Algunos
lenguajes
ActionScript Lexico (en castellano)
Ada 95 Objective-C
C++ Ocaml
C# PHP 5
Clarion Python
Delphi Ruby
Eiffel Smalltalk
Java Visual Basic

10/11/2017 62
Orientacin a objetos (OO) Algunos
lenguajes
Simula67

Lexico

Eiffel C++

10/11/2017 63
Orientacin a objetos (OO)
Programacin procedural
Modelo mental anmalo.
Nuestra imagen del mundo se apoya en los seres, a los que
asignamos nombres sustantivos, mientras la programacin
clsica se basa en el comportamiento, representado
usualmente por verbos.
Es difcil modificar y extender los programas, pues suele haber
datos compartidos por varios subprogramas, que introducen
interacciones ocultas entre ellos.
Es difcil mantener los programas.
Es difcil reutilizar los programas.

10/11/2017 64
Orientacin a objetos (OO) POO
Objeto: entidad provista de un conjunto de propiedades o
atributos (datos) y de comportamiento o funcionalidad
("mtodos").
Corresponden a los objetos reales del mundo que nos rodea,
o a objetos internos del sistema (del programa).
Clase: definiciones de las propiedades y comportamiento de
un tipo de objeto concreto.
La instanciacin es la lectura de estas definiciones y la
creacin de un objeto a partir de ellas.

10/11/2017 65
Orientacin a objetos (OO) POO
Mtodo: algoritmo asociado a un objeto (o a una
clase de objetos), cuya ejecucin se desencadena
tras la recepcin de un "mensaje".
Desde el punto de vista del comportamiento, es lo
que el objeto puede hacer.
Un mtodo puede producir un cambio en las
propiedades del objeto, y/o la generacin de un
"evento" con un nuevo mensaje para otro objeto del
sistema.

10/11/2017 66
Orientacin a objetos (OO) POO
Evento: un suceso en el sistema (tal como una
interaccin del usuario con la mquina, o un mensaje
enviado por un objeto).
El sistema maneja el evento enviando el mensaje
adecuado al objeto pertinente.
Mensaje: una comunicacin dirigida a un objeto, que
le ordena que ejecute uno de sus mtodos con
ciertos parmetros asociados al evento que lo
gener.

10/11/2017 67
Orientacin a objetos (OO) POO
Propiedad o atributo: contenedor de un tipo de
datos asociados a un objeto (o a una clase de
objetos), que hace los datos visibles desde fuera del
objeto, y cuyo valor puede ser alterado por la
ejecucin de algn mtodo.
Estado interno: es una propiedad invisible de los
objetos, que puede ser nicamente accedida y
alterada por un mtodo del objeto, y que se utiliza
para indicar distintas situaciones posibles para el
objeto (o clase de objetos).

10/11/2017 68
Orientacin a objetos (OO) La forma
de pensar

10/11/2017 69
Orientacin a objetos (OO) La forma
de pensar

10/11/2017 70
Orientacin a objetos (OO) La forma
de pensar

10/11/2017 71
Orientacin a objetos (OO) La forma
de pensar

10/11/2017 72
Orientacin a objetos (OO) La forma
de pensar

10/11/2017 73
Orientacin a objetos (OO) Ejemplo

10/11/2017 74
Orientacin a objetos (OO) Ejemplo

10/11/2017 75
Orientacin a objetos (OO) Objetos y
clases
Una clase es un plano que
sirve para crear una instancia
(objeto).
Los objetos son realizados o
instanciados a partir de una
clase usando el operador new.

10/11/2017 76
Orientacin a objetos (OO)
Constructores
Una funcin especial son los
constructores, que se ejecutan al usar el
operador new inicializando la clase.
Puede haber ms de un constructor.
El constructor no retorna nada.
Debe tener el nombre de la clase.
Existe uno por omisin (sin parmetros).
El constructor NO es un mtodo.

10/11/2017 77
Orientacin a objetos (OO)
Encapsulamiento u Ocultamiento
Cada objeto est aislado del exterior.
El aislamiento protege a los datos asociados a
un objeto contra su modificacin por quien no
tenga derecho a acceder a ellos.
Esto elimina efectos secundarios e
interacciones no deseadas.

10/11/2017 78
Orientacin a objetos (OO)
Encapsulamiento u Ocultamiento
El encapsulamiento de variables y mtodos en un
componente de software provee dos principales
beneficios a los desarrolladores:
Modularidad, esto es, el cdigo fuente de un objeto puede
ser escrito, as como darle mantenimiento,
independientemente del cdigo fuente de otros objetos.
Ocultamiento de la informacin, es decir, un objeto tiene
una "interfaz publica" que otros objetos pueden utilizar
para comunicarse con l.

10/11/2017 79
Orientacin a objetos (OO) Herencia
Es uno de los mecanismos de la POO, por medio del
cual una clase se deriva de otra de manera que
extiende su funcionalidad.
Partir de las situaciones ms generales e ir derivando
hacia las ms particulares, creando categoras, de la
misma forma en que piensa el ser humano.
La herencia nos permite una forma de armar una
estructura con nuestras clases.

10/11/2017 80
Orientacin a objetos (OO) Herencia
ejemplo
Queremos clasificar los animales (Perros, Gatos y
Salmones).
Escribir el cdigo desde cero para cada uno de ellos
sera tedioso y poco intuitivo.
Los perros y gatos son mamferos.
Los salmones son peces.
Y todos son animales.
Sera lgico elaborar una clase que tenga todas sus
caractersticas en comn.

10/11/2017 81
Orientacin a objetos (OO) Herencia
ejemplo

10/11/2017 82
Orientacin a objetos (OO) Herencia
ejemplo

10/11/2017 83
Orientacin a objetos (OO) Herencia
resumen
Se basa en la existencia de relaciones de
generalizacin/especializacin entre clases.
Las clases se disponen en una jerarqua, donde
una clase hereda los atributos y mtodos de las
clases superiores en la jerarqua.
Una clase puede tener sus propios atributos y
mtodos adicionales a lo heredado.
Una clase puede modificar los atributos y
mtodos heredados.
La implementacin de la herencia se realiza
mediante la clave: extends.

10/11/2017 84
Orientacin a objetos (OO) Herencia
resumen
Las clases por encima en la jerarqua a una clase
dada, se denominan superclases.
Las clases por debajo en la jerarqua a una clase
dada, se denominan subclases.
Una clase puede ser superclase y subclase al
mismo tiempo.
Tipos de herencia:
Simple.
Mltiple (no soportada en Java).

10/11/2017 85
Orientacin a objetos (OO) Herencia
ejercicios
Haga el objeto Salmn.
El salmn puede ser de agua dulce o de agua
salada.
Agregue la velocidad mxima.

10/11/2017 86
Orientacin a objetos (OO)
Polimorfismo
Polimorfismo en herencia.
Sobre carga de constructores.
Sobre carga de mtodos.
Sobre escritura de mtodos.

10/11/2017 87
Orientacin a objetos (OO)
Polimorfismo

10/11/2017 88
Orientacin a objetos (OO)
Polimorfismo

10/11/2017 89
Orientacin a objetos (OO) Clases
abstractas
Una clase abstracta no tiene definido el cdigo de todos sus
mtodos.
Debe ser marcada como abstract.
Una clase abstracta est hecha para ser heredada.
Por lo tanto una clase abstracta no puede ser final.
Una clase que hereda a una clase abstracta debe implementar
sus mtodos abstractos.
Una clase abstracta no puede ser instanciada.

10/11/2017 90
Orientacin a objetos (OO) Clases
abstractas ejemplo

10/11/2017 91
Orientacin a objetos (OO) Clases
abstractas ejemplo

10/11/2017 92
Orientacin a objetos (OO) Clases
abstractas ejemplo

10/11/2017 93
Orientacin a objetos (OO) Interfaces
Las interfaces en Java nos solucionan en parte la no
existencia de la herencia mltiple.
Las interfaces son un tipo de clase especial que no
implementa ninguno de sus mtodos.
Todos sus mtodos son abstractos. Por lo tanto no se
pueden instanciar.
La declaracin de una interface Java se realiza
mediante la clave: interface seguido de su
nombre.

10/11/2017 94
Orientacin a objetos (OO) Interfaces
El objetivo de un mtodo abstracto es forzar una interfaz (API)
pero no una implementacin.
De las interfaces no se hereda, se implementa. Y se realiza
mediante la clave: implements.
Una clase puede implementar mltiples interfaces.
Una clase puede heredar de otra clase y a la vez implementar
mltiples interfaces.
Una interface puede tambin definir constantes.
Si una clase que implementa una interface, no implementa
todos sus mtodos, deber ser definida como abstracta.

10/11/2017 95
Orientacin a objetos (OO) Interfaces
ejemplo

10/11/2017 96
Orientacin a objetos (OO) Interfaces
vs. Clase abstracta
Una interface no puede implementar ningn
mtodo.
Una clase puede implementar n interfaces pero solo
heredar de una clase.
Una interface no forma parte de la jerarqua de
clases. Clases dispares pueden implementar la
mismo interface.

10/11/2017 97
Orientacin a objetos (OO) Clases,
Subclases, Abstractas

e Interfaces
Haremos una clase que no herede de nadie cuando la clase no pase
la prueba de Es-Un.
Haremos una subclase cuando necesitemos hacer una
especializacin de la superclase mediante sobre escritura o
aadiendo nuevos mtodos.
Haremos una clase abstracta cuando queramos definir un grupo
genrico de clases y adems tengamos algunos mtodos
implementados que reutilizar. Tambin cuando no queramos que
nadie instancie dicha clase.
Haremos una interface cuando queramos definir un grupo genrico
de clases y no tengamos mtodos implementados que reutilizar. O
cuando nos veamos forzados por la falta de herencia mltiple en
Java.

10/11/2017 98
Orientacin a objetos (OO) Cuadro
comparativo
Lenguaje OO debe tener como mnimo:
a) Encapsulacin.
b) Herencia.
c) Polimorfismo.
Adicionalmente, en un lenguaje OO puede suceder que:
d) Todos los tipos de datos predefinidos en el lenguaje sean objetos.
e) Todos los tipos de datos que puedan ser definidos por los
programadores sean objetos.
f) Todas las posibles operaciones se realicen enviando mensajes entre
objetos.

10/11/2017 99
Orientacin a objetos (OO) Cuadro
comparativo
Caractersticas Fortran 77 C++ C# Java Smalltalk Eiffel
a) NO SI SI SI SI SI
b) NO SI SI SI SI SI
c) NO SI SI SI SI SI
d) NO NO NO NO SI SI
e) NO NO NO SI SI SI
f) NO NO NO NO SI SI

10/11/2017 100
Orientacin a objetos (OO)
Modificadores
final:
En un atributo: no modificable
En un mtodo: no se puede redefinir en un heredero
static: pertenece a la clase (no a una instancia)
synchronized: sincronizado (solo mtodos)
Acceso:
public: puede ser usado por cualquier clase
protected : solo puede ser vista por clases dentro del paquete y
herederos
private: solo puede ser vista por esta clase (no herederos).
Si no se indica un acceso se asume package, slo puede ser vista por
otras clases en el mismo paquete.

10/11/2017 101
Orientacin a objetos (OO) Frases
finales
Solamente hay dos cosas equivocadas en C++: el concepto inicial y
la implementacin. (Bertrand Meyer, creador de Eiffel).
La programacin orientada a objetos es, en cierto sentido, slo un
truco de programacin que usa indireccin. Es un truco que los
buenos programadores llevan aos usando. (Bjarne Stroustrup,
creador de C++).
Convertir C en un lenguaje orientado a objetos es como tratar de
convertir un perro en un pulpo clavndole ms piernas. (Steve
Taylor).
C te trata como un adulto consentido. Pascal te trata como un chico
desobediente. Ada te trata como un criminal. (Bruce Powel
Douglass).

10/11/2017 102
Orientacin a objetos (OO) Frases
finales
Ah, Java. Todo el rendimiento de Smalltalk combinado con la
claridad sintctica de C++. (Annimo).
Conocer la sintaxis de Java no convierte a nadie en un
ingeniero de software. (John Knight).
Cualquier programador lo suficientemente persistente y
empecinado conseguir escribir cdigo al estilo Fortran o
Cobol en cualquier lenguaje de programacin que utilice.
(Annimo. Odo en la Universidad de Valencia)
Saying that Java is nice because it works on all OS's
is like saying that anal sex is nice because it works on
all genders. (Annimo. bash.org)

10/11/2017 103
Orientacin a objetos (OO) Frases
finales
Los objetos en el sentido de la orientacin a objetos
han estado presentes entre nosotros desde que se
desarroll la conciencia en la especie humana, pero
se ha tardado miles de aos en aprovecharlos como
tcnica. Cunto tiempo ms se necesitar para
extraer el mximo rendimiento de la OO? [...] Quiz
necesitemos un cambio conceptual antes que una
sucesin frentica de cambios tcnicos.
Howard Humphrey (2002)

10/11/2017 104
Orientacin a objetos (OO) Ejercicios
1 parte 1/3
Desarrollar una clase llamada Punto que:
Tenga dos atributos private de tipo double.
Tenga un constructor con dos parmetros de tipo double
que inicialice los dos atributos.
Tenga un constructor por omisin (sin parmetros) que
inicialice los dos atributos al valor que se quiera.
Tenga un getter para cada uno de los atributos.
Tenga un mtodo calcularDistanciaDesde que recibe un
parmetro de tipo Punto y que devuelve un double.

10/11/2017 105
Orientacin a objetos (OO) Ejercicios
1 parte 2/3
Desarrollar una clase llamada Circulo que:
Tenga dos atributos private de tipo Punto y double.
Tenga un constructor con dos parmetros de tipo Punto y double que inicialice
los dos atributos.
Tenga un constructor por omisin (sin parmetros) que inicialice los dos
atributos al valor que se quiera.
Tenga un constructor con tres parmetros de tipo double que inicialice los
atributos.
Tenga un getter para cada uno de los atributos.
Tenga un mtodo calcularArea que no recibe ningn parmetro y devuelve un
double.
Tenga un mtodo calcularPerimetro que no recibe ningn parmetro y
devuelve un double.

10/11/2017 106
Orientacin a objetos (OO) Ejercicios
1 parte 3/3
Desarrollar una clase llamada Triangulo que:
Tenga tres atributos private de tipo Punto.
Tenga un constructor con tres parmetros de tipo Punto que inicialice
los tres atributos.
Tenga un constructor por omisin (sin parmetros) que inicialice los
tres atributos al valor que se quiera.
Tenga un constructor con seis parmetros de tipo double que inicialice
los tres atributos.
Tenga un getter para cada uno de los atributos.
Tenga un mtodo calcularArea que no recibe ningn parmetro y
devuelve un double.
Tenga un mtodo calcularPerimetro que no recibe ningn parmetro y
devuelve un double.

10/11/2017 107
Orientacin a objetos (OO) Ejercicios
2 parte 1/4
Desarrollar una clase llamada Asignatura que:
Tenga dos atributos private de tipo int (el identificador) y
de tipo double (la calificacin).
Tenga un constructor con un parmetro de tipo int.
Tenga un getter para cada uno de los atributos.
Tenga un setter para la calificacin.

10/11/2017 108
Orientacin a objetos (OO) Ejercicios
2 parte 2/4
Desarrollar una clase llamada Alumno que:
Tenga tres atributos private de tipo Asignatura.
Tenga un constructor con tres parmetros de tipo
Asignatura que inicialice los tres atributos.
Tenga un constructor con tres parmetros de tipo int que
inicialice los tres atributos.
Tenga un getter para cada uno de los atributos.

10/11/2017 109
Orientacin a objetos (OO) Ejercicios
2 parte 3/4
Desarrollar una clase llamada Profesor que:
Tenga un mtodo ponerNotas que recibe un parmetro de
tipo Alumno y que no devuelve nada. Pondr una
calificacin aleatoria a cada una de las asignaturas del
alumno.
Tenga un mtodo calcularMedia que recibe un parmetro
de tipo Alumno y devuelve un double.
Nota: Para calcular un nmero aleatorio usaremos
Math.random() que devuelve
un double entre 0.0 y 1.0.

10/11/2017 110
Orientacin a objetos (OO) Ejercicios
2 parte 4/4
Desarrollar una clase llamada
AplicacionColegio que en su mtodo main:
Cree e inicialice tres Asignaturas.
Cree un Alumno con las tres Asignaturas.
Cree un Profesor que le ponga calificaciones al
Alumno y muestre por pantalla la media del
Alumno.

10/11/2017 111
Orientacin a objetos (OO) Ejercicios
3 parte 1/4
Desarrollar una clase llamada Motor que:
Tenga dos atributos private de tipo int (litros de aceite) y
de tipo int (CV).
Tenga un constructor con un parmetro de tipo int para los
CV. Los litros de aceite por omisin sern 0.
Tenga un getter para cada uno de los atributos.
Tenga un setter para los litros.

10/11/2017 112
Orientacin a objetos (OO) Ejercicios
3 parte 2/4
Desarrollar una clase llamada Auto que:
Tenga un atributo private de tipo Motor, un atributo de
tipo String (marca), otro de tipo String (modelo) y otro de
tipo double con el precio acumulado con las averas.
Tenga un constructor con dos parmetros de tipo String
que inicialice la marca y el modelo y el motor.
Tenga un getter para cada uno de los atributos.
Un mtodo acumularAveria que incrementar el importe
gastado en averas.

10/11/2017 113
Orientacin a objetos (OO) Ejercicios
3 parte 3/4
Desarrollar una clase llamada Taller que:
Tendr tres atributos, un auto, un String con la avera asociada y
el nmero de autos que ha ido atendiendo.
El taller solo podr atender a un auto en cada momento.
Controlar esta condicin.
Tenga un mtodo aceptarAuto que recibe un parmetro de tipo
Auto y la avera asociada. El taller solo podr atender a un auto
en cada momento. Si ya est atendiendo uno, que devuelva un
false.
Tenga un mtodo devolverAuto que dejar al taller en estado de
aceptar un nuevo auto.

10/11/2017 114
Orientacin a objetos (OO) Ejercicios
3 parte 4/4
Desarrollar una clase llamada AplicacionTaller que en su
mtodo main:
Cree un taller.
Cree 2 autos.
El taller ir aceptando los autos y devolvindolos, acumulando
un importe aleatorio (Math.random()) de la avera tratada.
Si la avera del auto es aceite incrementar en 10 los litros de
aceite.
Los autos entrarn al menos 2 veces en el taller.
Mostrar la informacin de los autos al final del main.

10/11/2017 115
Temario
Introduccin.
Lenguaje Java.
Arreglos.
Orientacin a objetos (OO).
Estructuras de datos.
Manejo de errores.
Manipulacin de archivos (I/O).
Acceso a base de datos (JDBC).

10/11/2017 116
Estructuras de datos
Es una forma de organizar un conjunto de
datos con el objetivo de facilitar la
manipulacin de estos datos como un todo o
individualmente.

10/11/2017 117
Estructuras de datos Clases bsicas
(String)
java.lang.
String.
StringBuffer

10/11/2017 118
Estructuras de datos Clases bsicas
(String)
java.util.StringTokenizer

10/11/2017 119
Estructuras de datos Clases bsicas
(String) Ejercicios
Recibir una frase como argumento de la
aplicacin y ejecutar las siguientes
operaciones:
Imprimir las palabras de la frase, una en cada
lnea.
Imprimir las palabras de la frase en mitad
mayscula y mitad minscula.
Imprimir la frase escrita al revs.

10/11/2017 120
Estructuras de datos Colecciones
Una coleccin es simplemente un objeto que
agrupa varios elementos en uno solo.
Se utilizan para guardar y manipular datos as como transmitir
informacin entre mtodos.
En Java tenemos un framework de colecciones:
Interfaces: representaciones abstractas de las colecciones que
permiten usarlas sin conocer sus detalles.
Implementaciones: colecciones concretas.
Algoritmos: mtodos que permiten realizar operaciones como
bsquedas, ordenaciones, etc.

10/11/2017 121
Estructuras de datos Colecciones

10/11/2017 122
Estructuras de datos Colecciones
Todas las colecciones se encuentran en el paquete java.util.*;
java.util.Collection es la raz de la jerarqua de las
colecciones.
Existirn especializaciones que permitan elementos
duplicados o no, que permitan ordenar los elementos o no,
etc.
Esta clase contiene la definicin de todos los mtodos
genricos que deben implementar las colecciones.

10/11/2017 123
Estructuras de datos Colecciones
(Iterator)
El interfaz Iterator representa un componente que
permite iterar sobre los elementos de una coleccin.
Todas las colecciones ofrecen una implementacin
de Iterator por medio del mtodo: public Iterator
iterator(); Sus mtodos son:
boolean hasNext(); // Si tiene mas elementos.
Object next(); // Devuelve el primer elemento y se queda
apuntando al siguiente.

10/11/2017 124
Estructuras de datos Colecciones
(Set)
El interfaz Set hereda del interfaz Collection. Pero no
aade la definicin de ningn mtodo nuevo.
Representa colecciones que no permiten tener
elementos duplicados.
Para saber si un elemento est duplicado, hace uso
del mtodo:
public boolean equals(Object o);
Existen distintas implementaciones de este interfaz.

10/11/2017 125
Estructuras de datos Colecciones
(Set)

10/11/2017 126
Estructuras de datos Colecciones
(Set)

10/11/2017 127
Estructuras de datos Colecciones
(List)
El interfaz List hereda del interfaz Collection.
Representa colecciones con elementos en secuencia.
Es decir, con orden.
Permite tener duplicados.
Es accesible mediante ndice, de manera que se
puede:
Acceder a un elemento concreto de una posicin.
Insertar un elemento en una posicin concreta.

10/11/2017 128
Estructuras de datos Colecciones
(List)

10/11/2017 129
Estructuras de datos Colecciones
(List)

10/11/2017 130
Estructuras de datos Colecciones
(List)

10/11/2017 131
Estructuras de datos Map
La interfaz Map no hereda del interfaz
Collection.
Representa colecciones con parejas de
elementos: clave y valor.
No permite tener claves duplicadas. Pero si
valores duplicados.

10/11/2017 132
Estructuras de datos Map

10/11/2017 133
Estructuras de datos Map
Los mtodos de esta interfaz son:
Object put(Object key, Object value); // Inserta una pareja.
Object get(Object key); // Accede al valor de una clave.
Object remove(Object key); // Elimina una pareja.
boolean containsKey(Object key); // Comprueba la
existencia de una clave.
boolean containsValue(Object value); // Comprueba la
existencia de un valor.

10/11/2017 134
Estructuras de datos Map (HashMap)

10/11/2017 135
Estructuras de datos Map
(HashTable)

10/11/2017 136
Estructuras de datos Ejercicio 1 1/2
Haga una clase Cliente, que tenga lo siguiente:
Un atributo String nombres.
Un atributo String apellidos.
Un atributo Date fnacimiento.
Un atributo rut.
Un mtodo getEdad.
Un constructor por omisin.
Los getters y setters correspondientes.

10/11/2017 137
Estructuras de datos Ejercicio 1 2/2
Haga un clase AplicacionCliente que permita ingresar
clientes aceptando repeticin de rut y que imprima
la informacin de todos los clientes al salir (use
Collection).
Haga un clase AplicacionCliente2 que permita
ingresar clientes sin repeticin de rut y que imprima
la informacin de todos los clientes al salir (use
Map).

10/11/2017 138
Temario
Introduccin.
Lenguaje Java.
Arreglos.
Orientacin a objetos (OO).
Estructuras de datos.
Manejo de errores.
Manipulacin de archivos (I/O).
Acceso a base de datos (JDBC).

10/11/2017 139
Manejo de errores
Una excepcin es una condicin anormal que se produce en
una porcin de cdigo durante su ejecucin.
La existencia de las excepciones permite:
Encapsular en clases los errores.
Separar el flujo de ejecucin normal del tratamiento de errores.
Las excepciones se pueden: o tratar o relanzar para que sean
tratadas por otro mtodo del stack.
Pueden ser:
Verificadas : Requieren un control explcito (en tiempo de
compilacin).
No verificadas: No requieren un control explicito y pueden ocurrir en
cualquier momento (en tiempo de ejecucin).

10/11/2017 140
Manejo de errores Verificadas vs. No
verificadas
Verificadas (checked):
Su tratamiento es obligatorio y el compilador as lo
chequea.
Todas aquellas clases hijas de java.lang.Exception
No verificadas (unchecked):
Su tratamiento no es obligatorio y el compilador no lo
chequea.
Todas aquellas clases hijas de java.lang.Error o de
java.lang.RuntimeException.

10/11/2017 141
Manejo de errores
Se manejan mediante bloques try & catch:
try
{
// Cdigo susceptible de lanzar una excepcin.
}
catch(tipo-excepcin ex)
{
// Cdigo de tratamiento de la excepcin.
}
catch(tipo-excepcin ex)
{
// Cdigo de tratamiento de la excepcin.
}
finally
{
// Cdigo que se ejecuta siempre.
}

10/11/2017 142
Manejo de errores En tiempo de
compilacin

10/11/2017 143
Manejo de errores En tiempo de
ejecucin

10/11/2017 144
Manejo de errores
Las excepciones se pueden atrapar usando try-catch-finally.
Las excepciones pueden ser relanzadas, de esta manera es
otra parte del programa que se encargar de atraparlo.
Muchas clases Java envan excepciones.
Se pueden crear nuevas excepciones:
Verificadas : heredando de
java.lang.Exception
No verificadas: heredando de
java.lang.RuntimeException

10/11/2017 145
Manejo de errores Atrapar
excepciones

10/11/2017 146
Manejo de errores Relanzar
excepciones

10/11/2017 147
Manejo de errores Ejercicio 1
Haga un programa de conversin de monedas con el
siguiente men:
(Pesos,Dlar,Euros): P
Ingreso la cantidad: 1570
Su valor en Dlar es : 2.99
Su valor en Euros es: 2.49
Se deben manejar los posibles errores usando
excepciones.
Los mensajes de error deben ser claros y referentes
al tipo de error.

10/11/2017 148
Manejo de errores Ejercicio 2 1/2
Modifique el ejercicio del cliente realizado en Estructura de
datos de la siguiente forma:
El ingreso de cliente se realiza va consola.
Existe un nico rut por cliente.
Si se ingresa un rut ya existente debe permitir la posibilidad de
modificar el cliente.
El formato de rut debe ser (999-9|k|K).
Si las validaciones fallan se debe lanzar una excepcin de negocios.
Al finalizar el ingreso de clientes estos deben ser desplegadas en
pantalla y ordenadas por fecha de nacimiento de mayor a menor.
Siga el sistema de navegacin.

10/11/2017 149
Manejo de errores Ejercicio 2 2/2

10/11/2017 150
Temario
Introduccin.
Lenguaje Java.
Arreglos.
Orientacin a objetos (OO).
Estructuras de datos.
Manejo de errores.
Manipulacin de archivos (I/O).
Acceso a base de datos (JDBC).

10/11/2017 151
Manipulacin de archivos (I/O)
La entrada/salida en Java se gestiona mediante los
streams.
Un stream tiene un origen y un destino, y por l fluye
la informacin.
Se lee de un origen.
Se escribe en un destino.
Se manejan independientemente del origen o del
destino.
Se encuentran en el paquete java.io.*;

10/11/2017 152
Manipulacin de archivos (I/O) Byte
Stream
Leen o escriben bytes (8 bits).
Para leer hay que usar la clase java.io.InputStream o
cualquiera de las clases que heredan de ella.
Para escribir hay que usar la clase java.io.OutputStream o
cualquiera de las clases que heredan de ella.
Pero ambas clases no pueden ser instanciadas puesto que son
abstractas. Se reciben como resultado de la ejecucin de
algn mtodo.
Suelen usarse para manejar imgenes, sonidos, etc.

10/11/2017 153
Manipulacin de archivos (I/O)
Character Stream
Leen o escriben caracteres (16 bits).
Para leer hay que usar la clase java.io.Reader o
cualquiera de las clases que heredan de ella.
Para escribir hay que usar la clase java.io.Writer o
cualquiera de las clases que heredan de ella.
Pero ambas clases no pueden ser instanciadas
puesto que son abstractas. Se reciben como
resultado de la ejecucin de algn mtodo.
Suelen usarse para manejar textos

10/11/2017 154
Manipulacin de archivos (I/O)
InputStream y Reader
Ambas tienen mtodos parecidos pero con distintos
parmetros.
java.io.InputStream:
int read();
int read(byte[] b);
int read(byte[] b, int off, int len);
java.io.Reader:
int read();
int read(char[] c);
int read(char[] c, int off, int len);

10/11/2017 155
Manipulacin de archivos (I/O)
OutputStream y Writer
Ambas tienen mtodos parecidos pero con distintos
parmetros.
java.io.OutputStream:
void write(int b);
void write(byte[] b);
void write(byte[] b, int off, int len);
java.io.Writer:
void write(int c);
void write(char[] b);
void write(char[] b, int off, int len);

10/11/2017 156
Manipulacin de archivos (I/O)
Ejemplos, Copiar un archivo

10/11/2017 157
Manipulacin de archivos (I/O)
Ejemplos, Leer de un archivo

10/11/2017 158
Manipulacin de archivos (I/O)
Ejemplos, Escribir a un archivo

10/11/2017 159
Manipulacin de archivos (I/O)
Ejemplos, Directorios

10/11/2017 160
Manipulacin de archivos (I/O)
Ejercicio 1
Haga un programa que reciba el nombre de
una carpeta (directorio) y que imprima el
nombre de todo su contenido con su tamao.
Adems debe imprimir el nombre y tamao
de los archivos de las subcarpetas
(recursivamente).

10/11/2017 161
Manipulacin de archivos (I/O)
Ejercicio 2
Extienda el ejercicio 2 de Manejo de errores para que
cumpla con lo siguiente:
La informacin de los clientes debe ser guardada en un archivo con el
siguiente formato:
#
Rut.
Nombres.
Apellidos.
Fecha nacimiento.
#
(ms cliente...).
Este archivo se debe crear si no existe, y si existe se deben cargar los
clientes en memoria.

10/11/2017 162
Temario
Introduccin.
Lenguaje Java.
Arreglos.
Orientacin a objetos (OO).
Estructuras de datos.
Manejo de errores.
Manipulacin de archivos (I/O).
Acceso a base de datos (JDBC).

10/11/2017 mmohamed@dcc.uchile.cl 163


Acceso a base de datos (JDBC)
JDBC
Java Data Base Connectivity
JDBC: API formada por conjunto de clases e interfaces en Java que permite
ejecutar sentencias SQL sobre una base de datos.
Ofrece un estndar de conexin a cualquier base de datos disponible en el
mercado.
Permite obtener los datos de manera cmoda y fcil en ambientes cliente-
servidor a travs de Internet/Intranet.
JDBC permite:
Establecer una conexin con una base de datos.
Enviar sentencias SQL.
Procesar los resultados de estas sentencias.

10/11/2017 164
Acceso a base de datos (JDBC)
La clase que se encarga de cargar inicialmente todos los
drivers JDBC es DriverManager.
Una aplicacin utiliza DriverManager para obtener un objeto
de tipo conexin Connection con una base de datos. Dicha
conexin se establece con una URL del tipo:
jdbc:subprotocolo//servidor:puerto/base de datos.
Teniendo este Connection, es posible crear sentencias
ejecutables (Statement).
Estas sentencias pueden entregar uno o ms resultados que
se devuelven como objetos de tipo ResultSet.

10/11/2017 165
Acceso a base de datos (JDBC)
Los pasos para efectuar conexin a una base
de datos es:
Cargar el driver de la base.
Establecer una comunicacin.
Enviar sentencias a la base.
Recuperar el resultado.
Nota: Se debe agregar al CLASSPATH el JAR del
driver (depende de la BD).

10/11/2017 166
Acceso a base de datos (JDBC) Cargar
el driver

10/11/2017 167
Acceso a base de datos (JDBC)
Conexin
Las conexiones sirven para:
Representar la conexin.
Realizar commit y rollback.
Controlar autocommit.
Obtener acceso al catlogo de la base.
Etc...

10/11/2017 168
Acceso a base de datos (JDBC)
Statements
Para ejecutar SQL existen 3 formatos:
Statement: SQL genrico
PreparedStatement: SQL con parmetros
CallableStatement: SQL con parmetros OUT
Los 3 formatos se pueden usar para consultar y
actualizar.
statement.executeQuery();
statement.executeUpdate();
statement.execute();

10/11/2017 169
Acceso a base de datos (JDBC)
Statements
Statement es el ms simple, ya que permite ejecutar SQL directamente.

PreparedStatement es preferible por su manejo de parmetros.

10/11/2017 170
Acceso a base de datos (JDBC)
ResultSet
Para obtener resultados se requiere de otro mtodo:
executeQuery
El retorno es un objeto que permite iterar sobre las
filas una a una.

10/11/2017 171
Acceso a base de datos (JDBC)
ResultSet
Par leer los datos desde la fila actual del ResultSet existen
varios mtodos:
getInt(colName);
getString(colName);
getFloat(colName);
getBigDecimal(colName);
getDate(colName);: java.sql.Date
getTime(colName); : java.sql.Time
getAsciiStream(colName);
getBinaryStream(colName);
getObject(colName);

10/11/2017 172
Acceso a base de datos (JDBC)
MetaData
Un objeto ResultSet contiene informacin adicional
a las filas: columnas, nombres de campos, nulls,
tablas, etc.

10/11/2017 173
Acceso a base de datos (JDBC)
Ejercicio 1
Haga un programa que verifique el nombre de un usuario y su
clave.
La tabla usuarios tiene el siguiente formato:
Columna rut VARCHAR(16).
Columna clave VARCHAR(16).
Columna nombres VARCHAR(32).
Columna apellidos VARCHAR(64).
Si las entradas son correctas debe saludar al usuario
indicando su nombre completo.
Si las entradas son incorrectas debe enviar un mensaje de
error.

10/11/2017 174
Acceso a base de datos (JDBC)
Ejercicio 2
Haga un programa que reciba el nombre de
una tabla desde la consola y despliega su
contenida indicando el nombre de cada
columna, su tipo y todas sus filas.

10/11/2017 175
Acceso a base de datos (JDBC)
Ejercicio 3
Agregue la columna fnacimiento a la tabla usuarios del
ejercicio 1 (debe ser del tipo Date).
Haga un programa que permita insertar nuevos usuarios a la
tabla usuarios indicada en el ejercicio 1.
Considere la columna rut como llave primaria (PK).
Haga las validaciones correspondientes.
Finalmente permita la modificacin de usuarios existentes.

10/11/2017 176
Acceso a base de datos (JDBC)
Ejercicio 4
Modifique el ejercicio 2 de Manejo de
errores para que cumpla con lo siguiente:
Los clientes sern grabados en la tabla cliente.
La columna rut es la llave primaria (PK).

10/11/2017 177

Вам также может понравиться