Académique Documents
Professionnel Documents
Culture Documents
1
CAPITULO I
1.1 INTRODUCCIO
Programacin no Estructurada,
Programacin procedimental,
Programacin modular,
Programacin orientada a objetos
Se basa o divide en mdulos donde cada modelo tiene relacionado un conjunto de procesos.
El lenguaje base de la programacin estructurada es el Lenguaje C, cada proceso tiene una
entrada y una salida por lo que no se puede reutilizar el cdigo fuente generado en cada
proceso. En la programacin modular, los procedimientos con una funcionalidad comn
son agrupados en mdulos separados. Un programa por consiguiente, ya no consiste
solamente de una seccin. Ahora est dividido en varias secciones ms pequeas que
interactan a travs de llamadas a procedimientos y que integran el programa en su
totalidad.
datos
modulo1
programa procesos
principal
modulo2
procesos
Cada mdulo puede contener sus propios datos. Esto permite que cada mdulo maneje un
estado interno que es modificado por las llamadas a procedimientos de ese mdulo. Sin
embargo, solamente hay un estado por mdulo y cada mdulo existe cuando ms una vez
en todo el programa.
Procesos en C
2
COMPILACIN .C
ENCADENAR .obj
ARCHIVO .EXE
Fig 2.
profesor estudiante
sistema
universidad
administracin
Procesos en Java
Un proceso en Java genera un archivo con extensin de java (.java), luego pasa al
compilador generando un archivo (.class) finalmente llega a la Maquina Virtual de Java
para generar el archivo ejecutable (.exe), este lenguaje no depende de la plataforma que se
est trabajando.
COMPILACIN .java
MVJ .class
ARCHIVO .EXE
3
1.2 INTRODUCCIN A JAVA
1.3 QU ES JAVA
Java 2 (antes llamado Java 1.2 o JDK 1.2) es la tercera versin importante del lenguaje de
programacin Java.
Aunque tambin otros lenguajes de programacin permiten crear aplicaciones de este tipo,
Java incorpora en su propio API estas funcionalidades.
4
1.4 EL ENTORNO DE DESARROLLO DE JAVA
Existen distintos programas que permiten desarrollar cdigo Java. La compaa Sun,
creadora de Java, distribuye gratuitamente el Java Development Kit (JDK). Se trata de un
conjunto de programas y libreras que permiten desarrollar, compilar y ejecutar
programas en Java.
En otro caso muestra la lnea o lneas errneas. En el JDK de Sun dicho compilador se
llama javac.exe. Tiene numerosas opciones, algunas de las cuales varan de una versin a
otra.
5
II
ABSTRACCIN Y
MODELADO
6
CAPITULO II
2.1 ABSTRACCIN Y MODELADO
2.1.1 CARCTERISTICAS
Si nos detenemos un momento para observar o notar el lugar en el cual nos encontramos,
observando con claridad los detalles de los objetos los cuales nos rodean. Enfocndonos en
los detalles y analizndolos, estaramos adquiriendo grandes cantidades de informacin.
Un ejemplo de anlisis para una mesa seria:
Una de las habilidades innatas de los seres humanos es la abstraccin, la cual nos evita
procesar todos estos detalles de lo que nos rodea y se enfocan en obtener las
caractersticas importantes de los objetos o situaciones.
7
2.1.4 Organizacin de la abstraccin en una clasificacin de jerarqua
El cerebro humano no solo abstrae los detalles tambin los clasifica en forma sistemtica
por categoras de acuerdo a criterios establecidos. Este proceso es conocido como
clasificacin, la clasificacin nos permite organizar la informacin bajo ciertos parmetros,
as la informacin est relacionada.
Se debe hacer en base a los propsitos del enfoque del sistema tomando en cuenta el
mantenimiento y expansin del mismo, para esto precisemos los detalles (Provedos por el
usuario y los que nosotros observamos) relevantes y esenciales para el desarrollo del
sistema.
Una vez determinados los aspectos esenciales para el sistema se deben modelar las
abstracciones; modelar es el proceso por el cual realizamos el esquema del sistema que
vamos a implementar.
PARA RECORDAR
1. Abstraccin es una tcnica fundamental que las personas usan para percibir el
mundo real.
2. Desarrollar una Abstraccin del problema de ser automtica es un primer paso
necesario de todo el desarrollo de software.
3. Organizar la informacin en las jerarquas de clasificacin sobre la base de reglas
que cuidadosamente estructuramos ayuda para que no sean demasiado generales
o demasiado restrictivas.
4. Se vuelve a utilizar la Abstraccin a menudo cuando intentamos hacer un modelo
de un nuevo concepto.
5. Producir una Abstraccin de un sistema debe desarrollarse, conociendo un
modelo, en algunos sentidos las costumbre ligadas a nosotros, y con todo
paradjicamente es una de las cosas ms firmes de los desarrolladores de
software Tener en cuenta que el ciclo vital de un proyecto de sistemas de
informacin. Es tambin uno de los ms importantes.
8
2.2 Ejercicios:
1. Bosqueje una jerarqua de clase que relata todas las siguientes clases en una
manera razonable:
FOOD
CONSUMABLE
DAIRY
PRODUCT
GREEN
BEEF PORK SPINACH BANANA APPLE
BEAN
Buena definicin.
Tamao de la tv.
La marca.
El precio.
La resolucin.
Niveles radiacin.
DVD, TV cable, video.
La frecuencia de operacin.
La operacin del voltaje.
9
La marca
La resolucin
El tamao de la pantalla
El precio real y el precio comercial
La oferta y la demanda
Los nuevos modelos de TV
El Fabricante?
3. Seleccione una rea problemtica que le gustara (a usted) trabajar de modelo de una
perspectiva orientada a objetos. Idealmente, ste ser un problema en el que usted est en
realidad yendo para estar trabajando en su lugar de empleo, o que usted tiene un inters
agudo. Suponga que usted va a escribir un programa de automatizacin un poco de
aspecto de esta rea problemtica; escribir una visin general una pgina de los requisitos
para este programa, despus de los requerimientos de sistema de registro del estudiante.
Asegrese que su primer prrafo resume el propsito del sistema, cuando el primer prrafo
en el SRS estudio de casos lo hace. Tambin, enfatice los requisitos funcionales - eso es,
que un usuario final un tcnico podra decir respecto a cmo debe actuar - y evitar decir
requerimientos tcnicos - por ejemplo el sistema, "Este sistema debe funcionar en una
plataforma de Windows NT, y debe usar protocolo de TCP/IP a ".
Nuestro usuario desea un juego de peleas que tenga varios personajes, armas y escenarios;
los personajes pueden realizar diferentes golpes, se les puede cambiar el nombre y se
pueden modificar sus caractersticas. Hay diferentes niveles de dificultades y hay la opcin
de multi-jugadores. El juego deber incluir detalles de erotismo, sangre y realismo. La
opcin de trucos y claves tambin deber estar disponible.
Como podemos cambiar las caractersticas del personaje lo primero es ver que
caractersticas dejaremos cambiar. Nosotros hemos escogido las siguientes: nombre, ropa,
color del pelo, armas y poderes.
Crearemos a partir de un escenario diferentes lugares para los encuentros, en los cuales
cada uno tenga su msica de fondo y dejaremos cambiar de los escenarios solamente los
horarios de las peleas.
Con respecto a los niveles de dificultades los poderes son nuestro punto de partida, puesto
que para niveles ms difciles le daremos al personaje contrincante la libertad de poderes.
10
III
CLASES Y OBJETOS
11
CAPITULO III
3.1 Entidad del mundo Real:
3.2 Objeto:
Los objetos son la esencia fundamental de los sistemas orientados a objetos. Segn la
definicin del Diccionario de Merrian-Websters, un objeto es algo material que puede ser
percibido por nuestros sentidos.
Los objetos son la abstraccin de las cosas del mundo real, los cuales tienen ciertas
propiedades y funciones.
Una vez hecha la abstraccin de este objeto podemos definir qu representara un objeto
de software de la siguiente manera: Es una construccin que une los datos y las funciones
que juntas representan la abstraccin del mundo real de un objeto. Los valores de un
atributo para un objeto definen un estado.
Los atributos definen las caractersticas que tienen un objeto y las funciones muestran
como los objetos acceden a sus datos para modificar y mantener sus atributos.
Un objeto es una unidad que contiene los datos y las funciones que operan sobre esos
datos; en los objetos se encuentra toda la informacin que permite identificarlo frente a
otros objetos pertenecientes a otra clase.
Para poder describir todos los objetos de un programa, conviene agrupar stos en clases.
3.3 Atributos
Los atributos son las caractersticas individuales que diferencian un objeto de otro y
determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables
12
denominadas de instancia, y cada objeto particular puede tener valores distintos para estas
variables.
La descomposicin podra llegar en este caso hasta el objeto tornillo o cable, segn sea la
profundizacin y detalle del diseo.
EJEMPLO:
Auto = Motor + Ruedas + Volante + Asientos + Acelerador + Freno + Caja de cambios +...
Motor = Batera + Tanque de gasolina + Bugas +...
Algunos de los atributos de una clase pueden ser representados por tipos predeterminados
provedos por el lenguaje de Java, mientras que los tipos de algunas u otras clases son
dejados sin especificar temporalmente. Ahora se toma en cuenta los tipos definidos por
usuario con respecto a uno de estos atributos de una clase determinada. Por ejemplo:
13
Estudiante
ATRIBUTOS TIPO DE DATOS ORIGEN
nombre String primitivo
id_Estudiante String primitivo
fecha_Nacim Fecha Usuario
inspector Profesor Usuario
En este caso de la clase estudiante se observa que los atributos nombre, id_Estudiante son
tipos de datos primitivos (String) y los atributos fecha_Nacimiento e inspector son del tipo
de datos definidos por el usuario en este caso las clases Fecha y Profesor creadas
anteriormente para el uso de la clase Estudiante en donde podemos observar que pueden
ser atributos de esta clase.
3.6 Clase:
Una clase es una abstraccin que describe las caractersticas comunes de todos los
miembros en un grupo de objetos similares. En este punto de definicin, se incluye los
siguientes conceptos de formalizacin. A las caractersticas propias se les llamar atributos
y a las caractersticas funcionales se les llamar mtodos.
La estructura de datos, la cual est definida por los campos con sus respectivos
nombres y tipos de datos (ATRIBUTOS).
Los mtodos, que describen el comportamiento y las funcionalidades que tienen
cada objeto.
EJEMPLO:
Las siguientes clases estn definidas por cada uno de sus atributos y mtodos..
14
Las clases pueden ser diferenciadas de objetos de la siguiente manera por lo tanto:
Una clase define las caractersticas, los atributos, los mtodos que cada objeto que
pertenece a la clase debe poseer.
El trmino instanciacin es usado para designar un objeto el cual est construido en base a
una clase ya definida.
De una definicin de clase sola por ejemplo, Estudiante - podemos crear muchos objetos
con las estructuras de datos idnticas y comportamientos. Otra manera de hacer
referencia a un objeto, es como un ejemplo de una clase especial por ejemplo, "Un objeto
estudiante es un ejemplo de la clase estudiante. " (Hablaremos del proceso fsico de
ejemplificar objetos cuando ocurre en Java).
Un objeto es una instancia de una clase entonces, se pueden crear muchas instancias de
una clase. La creacin de un objeto de una clase se llama creacin de una instancia de la
clase.
Aqu se relacionan de forma analgica las propiedades de los objetos con los sistemas de
bases de datos relacionales de la siguiente forma:
Cada clase de un objeto es anloga a una tabla en una base de datos relacional.
Cada registro o fila en una tabla es anloga a diferentes objetos.
Cada columna en una tabla corresponde a diferentes atributos en un objeto.
Esta correspondencia entre objetos y registros tienen muchas fallas, sin embargo los
objetos tienen funcionalidad mientras un registro no necesariamente la tiene.
15
Clases como tipos de datos abstractos
As como se pueden declarar tipos de datos primitivos, de la misma forma se pueden crear
tipos de datos abstractos en funcin de una clase u objeto.
Cuando tenemos una clase en la cual uno o ms atributos estos pueden ser referenciados a
otros objetos cuando nos referimos a la clase como una composicin de clases. Para que un
lenguaje sea considerado como orientado a objetos debe cumplir con las propiedades de
herencia y polimorfismo.
3.11 Encapsulacin:
3.12 Abstraccin:
3.13 Polimorfismo:
Significa que un nombre se puede utilizar para especificar una clase genrica de acciones.
16
3.14 Herencia:
La herencia permite que se puedan definir nuevas clases basadas en clases existentes, lo
cual facilita reutilizar cdigo previamente desarrollado. Si una clase deriva de otra
(extends) hereda todas sus variables y mtodos. La clase derivada puede aadir nuevas
variables y mtodos y/o redefinir las variables y mtodos heredados.
En Java, a diferencia de otros lenguajes orientados a objetos, una clase slo puede derivar
de una nica clase, con lo cual no es posible realizar herencia mltiple en base a clases. Sin
embargo es posible simular la herencia mltiple en base a las interfaces.
Por lo tanto la herencia es un proceso mediante el cual un objeto puede adquirir las
propiedades de otro objeto.
3.15 Jerarqua:
3.16 Mtodos:
Para poder implementar un sistema podemos tener las siguientes prioridades o pasos a
seguir:
1. requerimientos
2. identificar los objetos
3. agrupar los objetos que tengan caracterstica y funcionalidades comunes.
4. abstraccin de los grupos de objetos.
5. encapsulamiento.
6. relaciones que se dan entre las clases.
Cuando nombrar clases, comenzamos con una letra mayscula, pero usamos caso mezclado
para el nombre en general: estudiante, curso, catedrtico, etctera. Cuando el nombre de
una clase tiene una frase de ms de 1 palabra, como "Catlogo de curso", empezamos cada
palabra con una letra mayscula, y concatenamos las palabras sin usar espacios, correr, o
subrayarlos para separarlos por ejemplo, CatalogoCurso. Este estilo es sabido como
cubierta de Pascal.
17
Los mtodos y atributos debern cumplir con las siguientes restricciones de descripcin:
Para poder implementar un sistema podemos tener las siguientes prioridades o pasos a seguir:
1. requerimientos
2. identificar los objetos
3. agrupar los objetos que tengan caracterstica y funcionalidades comunes.
4. abstraccin de los grupos de objetos.
5. encapsulamiento.
6. relaciones que se dan entre las clases.
18
19
PARA RECORDAR
3.19 Ejercicios:
Aula
Departamento
Grado
Cules de los atributos de cada una de estas clases podran ser declaradas para
implementar tipo de datos en Java, y cules podran ser declarados como tipo de
datos abstractos. Explique su razn fundamental.
Classroom
Attributes:
String edificio
String piso
String nombre
integer capacidad
String tipo
20
Methods:
Classroom ()
Classroom (String, String, String, integer, String)
Classroom (Classroom)
getEdificio ()
getPiso ()
getNombre ()
getCapacidad ()
getTipo ()
setEdificio (String)
setNombre (String)
setPiso (String)
setTipo (String)
setCapacidad (int)
imprimir()
Department
Attributes
String coordinador
String nombreDepartamento
String edificio
String tipoformacion
String escuela
Methods:
Department ()
Department (String, String, String, String, String)
Department (Department)
getEdificio ()
getNombreDepartamento ()
getCordinador ()
getEscuela ()
getTipoFormacion ()
setEdificio (String)
setNombreDepartamento (String)
setCordinador(String)
setEscuela (String)
setTipoFormacion (String)
imprimir()
Degree
Attributes
String grado
21
String numeroAlumnos
String edificio
String jornada
String profesor
Methods:
Degree ()
Degree (String, String, String, String, String)
Degree (Degree)
getGrado ()
getNumeroAlumnos ()
getEdificio ()
getJornada()
getProfesor ()
setGrado (String)
setNumeroAlumnos (String)
setEdificio(String)
setJornada (String)
setProfesor (String)
imprimir()
Personage
Attributes
String nombre
double estatura
String colorCabello
String traje
Methods:
Personaje ()
Personaje (String, double, String, String)
Personaje(Personaje)
getNombre ()
getEstatura ()
getColorCabello()
getTraje()
setNombre (String)
setEstatura (double)
setColorCabello(String)
setTraje(String)
22
Escenario
Attributes
String color
String tipo
String nombre
Methods:
Escenario ()
Escenario(String, String, String)
Escenario (Escenario)
getNombre ()
getColor ()
getTipo()
setNombre (String)
setColor (String)
setTipo (String)
Arma
Attributes
String color
String tipo
String nombre
double tamao
int nivelDeDao
Methods:
Armas ()
Armas (String, String, String,double,int)
Armas (Armas)
getNombre ()
getTamao ()
getColor ()
getTipo()
getNivelDeDao ()
setNombre (String)
setColor (String)
setTipo (String)
setTamao (double)
setNivelDeDao (int)
Golpe
Attributes
23
String clasificacion
String tipo
String nombre
int nivelDeDao
Methods:
Golpe ()
Golpe (String, String, String,int)
Golpe (Golpe)
getNombre ()
getClasificacion ()
getTipo()
getNivelDeDao()
setNombre (String)
setClasificacion (String)
setTipo(String)
setNivelDeDao(int)
24
IV
CONSTRUCTORES Y METODOS
25
CAPITULO IV
4.1 CONSTRUCTORES
Java inicializa siempre con valores por defecto las variables miembros de clases y objetos.
El segundo paso en la inicializacin correcta de objetos es el uso de constructores.
Los constructores no tienen valor de retorno (ni siquiera void) y su nombre es el mismo
que el de la clase. Su argumento implcito es el objeto que se est creando.
Una clase tiene varios constructores, que se diferencian por el tipo y nmero de sus
argumentos.
Son funciones que se ejecutan una sola vez cuando se crea el objeto.
Un constructor se crea y se ejecuta una sola vez.
El nmero de constructores depende de los requerimientos.
Un constructor inicializa los atributos de los objetos.
No tienen el concepto de retorno (nunca retornan valores).
Los constructores son del tipo Pblicos.
El constructor se llama de forma automtica cuando se crea un objeto, para situarlo
en memoria e inicializar los miembros dato declarados en la clase.
4.2 SOBRECARGA
26
En la clase Punto se define los siguientes constructores:
4.4 ACCESORIOS
Los mtodos de clase al igual que las variables de clase, se aplican a la clase como un todo
y no a sus instancias. Para acceder a las variables o mtodos de clase se utiliza el mismo
operador punto (.). Se puede acceder a las variables y mtodos de clase a travs de un
objeto, est permitido y se recomienda utilizar mejor el nombre de la clase
El operador new
El operador new crea una instancia de una clase (objetos) y devuelve una referencia a ese
objeto. Por ejemplo:
EJERCICIO DE APLICACIN
27
Punto
-x : double -centro
-y : double
+Punto()
+Punto(entrada initialX : double, entrada initialY : double) *
+Punto(entrada initialPunto : Punto)
+getX() : double
+getY() : double
+setX(entrada valueX : double) : void *
+setY(entrada valueY : double) : void
+moverX(entrada incrementoX : double) : void
+moverY(entrada incrementoY : double) : void Circulo
+imprimirPunto() : void
-centro : Punto
-radio : double
+Circulo()
+Circulo(entrada initialCentro : Punto, entrada initialRadio : double)
+Circulo(entrada initialCirculo : Circulo)
+getRadio() : double
+getCentro() : Punto
+setRadio(entrada valueRadio : double) : void
+setCentro(entrada valueCentro : Punto) : void
+moverCentro(entrada incrementoCentro : Punto) : void
Creacin de objetos:
28
Circulo (h, 30): inicializa los valores de z mediante el constructor por parmetros.
z. setRadio( 5 );
z. getCentro( )
29
V
TIPOS DE DATOS
30
CAPITULO V
El lenguaje de Java define ocho tipos primitivos (todos estos nombres de tipo son palabras
reservadas de Java), de la siguiente manera.
Datos Tamao
Byte 8 bits
Short 16 bits
Int 32 bits
Long 64 bits
Datos Tamao
float 32 bits
double 64 bits
Datos Tamao
char 16 bits
boolean ---------
Boolean: una variable que puede asumir uno de dos valores: verdadero o falso (ambos de
estos valores son palabras reservadas en Java) solamente. Las variables Boolean son
usadas como indicadores para marcar si un poco de cdigo debe ser llevado a cabo
condicionalmente, a menudo como en el siguiente fragmento de cdigo
Operadores aritmticos
31
El lenguaje de Java provee varios operadores aritmticos bsicos, como se muestra a
continuacin:
Operador Descripcin
+ Suma
- Resta
= Multiplicacin
/ Divisin
% Porcentaje (el porcentaje cuando el operando a la izquierda del
operador de % es dividido por el operando a la derecha; por ej. 3 =
1 10 %, porque 3 entra en 10 tres veces, dejando un restante de 1)
Los operadores (+) y (-) tambin pueden ser usados como operadores unarios para
demostrar los nmeros seguros o negativos: - 3.7, +42.
Adems de los operadores de asignacin simple, (=), hay varios operadores de asignacin
compuestos especializados, que combinan la asignacin variable con una operacin
aritmtica, como se indica a continuacin
Operador Descripcin
+= a += b es equivalente a = a + b
-= a -= b es equivalente a = a - b
*= a *= b es equivalente a = a * b
/= a /= b es equivalente a = a / b
%= a %= b es equivalente a = a % b
Los dos operadores aritmticos finales que miraremos son el incremento (++) y
decremento (--), que son usados para aumentar o reducir el valor de una variable int en 1
o de un punto flotante (float, double) el valor de 1.0. Son conocidos como los operadores
unarios porque son aplicados a una variable sola, mientras que los operadores de archivo
binario combinan los valores de dos expresiones como se habl.
Un lgico del que la expresin compara dos (fcil o complicado) exp1 de expresiones y
exp2 en una manera especificada, resolver a un valor de boolean verdadero o falso.
Para crear las expresiones lgicas, Java provee a los operadores relacionales
32
Operador Descripcin
exp2 == exp1 Exp2 verdadero si exp1 iguala exp2 (el uso de un signo igual doble
para evaluar la igualdad).
exp1 > exp2 Verdadero si exp1 es ms grande que exp2.
exp1 >= exp2 Verdadero si exp1 es ms grande o igual a lo exp2.
exp1 <= exp2 Verdadero si exp1 es inferior o igual a lo exp2.
exp1 != exp2 Verdadero si exp1 no es igual a lo exp2 (el signo! es ledo como
"Not").
!exp La expresin Lgica NOT Verdadero si exp es falso, y falso si
exp es verdadera.
exp1 || exp2 La expresin compuesta o Lgica OR es verdadera si exp1 o
exp2 es verdadero
exp1 && exp2 La expresin compuesta o Lgica AND es verdadera solamente
si tanto exp1 como exp2 son verdad.
!exp "Not"; el valor de una expresin lgica de verdadero a falso y Vice
versa
CLASES DE ENVOLTURA
En ocasiones es muy conveniente poder tratar los datos primitivos (int, boolean, etc.)
como objetos. Los contenedores definidos por el API en el package java.util (Arrays
dinmicos, listas enlazadas, colecciones, conjuntos, etc.) utilizan como unidad de
almacenamiento la clase Object. Object es la raz de toda la jerarqua de objetos en Java,
estos contenedores pueden almacenar cualquier tipo de objetos.
El API de Java incorpora las clases de envoltura (wrapper class), que no son ms que dotar
a los datos primitivos con un envoltorio que permita tratarlos como objetos.
33
Las clases de envoltura tienen siempre la primera letra en maysculas.
LA CLASE String
La clase String es un envolvente para el tipo de datos primitivo de cadena que proporciona
mtodos y propiedades que le permiten manipular tipos de valores de cadena primitivos.
Un objeto String representa una cadena alfanumrica de un valor constante que no puede
ser cambiada despus de haber sido creada.
Para crear un string nulo (aqul que no contiene caracteres) se puede hacer de estas dos
formas
34
Llamando al mtodo startsWith:
Comparacin de strings
INTEGER
Mtodo Descripcin
Integer(int valor) Constructores a partir de int y String
Integer(String valor)
int intValue() / byte byteValue() / float Devuelve el valor en distintos formatos, int, long, float, etc.
floatValue() . . .
boolean equals(Object obj) Devuelve true si el objeto con el que se compara es un Integer y su valor es el
mismo.
static Integer getInteger(String s) Devuelve un Integer a partir de una cadena de caracteres. Esttico
static int parseInt(String s) Devuelve un int a partir de un String. Esttico.
static String toBinaryString(int i) Convierte un entero a su representacin en String en binario, octal,
static String toOctalString(int i) hexadecimal, etc. Estticos
static String toHexString(int i)
static String toString(int i)
String toString()
static Integer valueOf(String s) Devuelve un Integer a partir de un String. Esttico.
DOUBLE
Mtodo Descripcin
Double(int valor) Constructores a partir de int y String
35
Double(String valor)
double doubleValue() / byte byteValue() / Devuelve el valor en distintos formatos, int, long, float, etc.
float floatValue() . . .
boolean equals(Object obj) Devuelve true si el objeto con el que se compara es un Double y su valor es el
mismo.
boolean isInfinite(); Devuelve true a partir de una cadena de caracteres. Esttico
static double parseDouble(String s) Devuelve un double a partir de un String. Esttico.
Convierte un double a su representacin en String en hexadecimal, etc.
static String toHexString(double i) Estticos
static String toString(double i)
String toString()
static Double valueOf(String s) Devuelve un Double a partir de un String. Esttico.
La Clase Character
Declaraciones char c = a;
Character C;
Comprobaciones Booleanas: boolean q = Character.isLowerCase(c); :true
boolean w = Character.isUpperCase(c); :false
boolean qw = Character.isDigit(c); :false
boolean y = Character.isSpace(c); :false
Traslaciones de Caracteres char c2 = Character.toLowerCase(c); :a
char c3 = Character.toLowerCase(c); :A
Traslaciones de carcter/digito int i = Character.digit(c,base); :-1
char c = Character.forDigit(i,base); :
Mtodos de la Clase Character C = new Character(J); : J
char c = C.charValue(); : J
String s = C.toString(); :J
La Clase Float
Declaraciones float f, k;
Float F;
Valores de Float f = Float.POSITIVE_INFINITY; : infinity
g = Float.NEGATIVE_INFINITE; :-infinity
h = Float.NaN; : h = NaN
i = Float.MAX_VALUE; :3.4E38
j = Float.MIN_VALUE; 1.4E-45
Conversiones de Clase/Cadena k = Float.valueOf(3.14);
String s = Float.toString(k);
Comprobaciones boolean b = Float.isNaN(k); :False
boolean c = Float.isInfinite(k); :False
36
La Clase Long
Declaraciones long l;
Long L;
Valores de Long L = Long.MIN_VALUE;
l = Long.MAX_VALUE;
Mtodos de Long String a = Long.toString(l,base);
String b = Long.toString(l);
int c = L.intValue; :0
long d = L.longValue(); :-92233720
float e = L.floatValue(); :-9.22E18
double f = L.doubleValue(); :-9.223372E18
String g = L.toString(); -92233720
int h = L.hashCode(); -2147486348
boolean j = L.equals(L); :true
LA CLASE STRINGBUFFER
Es una clase que implanta un buffer dinmico y tiene mtodos que permiten su
manipulacin de una manera sencilla.
Esta clase tambin se encuentra definida en el package java.lang
Debido a la manipulacin de datos esta clase consume mas recursos del sistema
StringBuffer();
StringBuffer( int len );
StringBuffer( String str );
37
Metodos de la clase stringBuffer
Obtener informacion
El cambio de tamao de un StringBuffer necesita varias funciones especficas para
manipular el tamao de las cadenas:
int length();
char charAt( int index );
void getChars( int srcBegin,int srcEnd,char
dst[],intdstBegin );
String toString(); void setLength( int newlength );
void setCharAt( int index,char ch ); int capacity();
void ensureCapacity( int minimum );
void copyWhenShared();
EJEMPLO
class CadAppend {
public static void main( String args[] ) {
// Crea un StringBuffer inicializado a un texto por defecto
StringBuffer str = new StringBuffer( "Hola" );
CLASE STRINGTOKENIZER
Esta clase nos ayuda a dividir un string en substrings o tokens, en base a otro string
separador denominado delimitador. Los delimitadores marcan la separacin entre los
smbolos que se encuentran en la cadena de entrada. El delimitador puede ser una coma,
un punto y coma o dos puntos. El conjunto de delimitadores por defecto son los caracteres
de espacio habituales: espacio, tabulador, lnea nueva y retorno de carro. Supongamos un
string consistente en el nombre, y los dos apellidos de una persona separados por espacios
en blanco. La clase StringTokenizer nos ayuda a romper dicho string en tres substrings
basado en que el carcter delimitador es un espacio en blanco. Cuando se usa la clase
StringTokenizer se pone al principio del cdigo fuente la siguiente sentencia import.
38
import java.util.StringTokenizer;
package ejem;
import java.util.StringTokenizer;
Public class Ejemplo {
static String cadena = "titulo=Tutorial de
Java:" +
"idioma=castellano:" +
"autor=Agustn Froufe:" +
"e-mail=froufe@arrakis.es";
public static void main( String args[] ) {
StringTokenizer st = new StringTokenizer(
cadena,"=:" );
while( st.hasMoreTokens() ) {
String clave = st.nextToken();
String valor = st.nextToken();
System.out.println( clave + "\t" + valor
);
}
}
Para convertir un String a un} tipo primitivo, debemos usar una clase envoltura. Todo tipo
primitivo tiene asociada una clase envoltura. Estas clases nos permiten tratar a los tipos
primitivos como objetos. Adems, estas clases contienen mtodos que permiten la
manipulacin de estos objetos, apropiados para el tipo de datos.
En casi todos los casos, la clase envoltura tiene el mismo nombre que el tipo de datos
primitivo con la primera letra en maysculas.
byte Byte
char Character
float Float
short Short
double Double
int Integer
39
PARA RECORDAR
16. El lenguaje de Java define ocho tipos primitivos Cuando una clase deriva
de otra, hereda todas sus variables y mtodos.
17. En ocasiones es muy conveniente poder tratar los datos primitivos (int,
boolean, etc.) como objetos
18. Object es la raz de toda la jerarqua de objetos en Java, estos
contenedores pueden almacenar cualquier tipo de objetos.
19. Un objeto String representa una cadena alfanumrica de un valor
constante que no puede ser cambiada despus de haber sido creada.
20. El API de Java incorpora las clases de envoltura (wrapper class), que no
son ms que dotar a los datos primitivos con un envoltorio que permita
tratarlos como objetos
40
VI
EXCEPCIONES
41
CAPITULO VI
6.1 EXCEPCIONES
Este hecho asoma su desagradable cara con tanta frecuencia durante la ejecucin de
programas que los autores consideramos seriamente aadir, al ttulo de este captulo.
En el lenguaje Java, una Exception es un cierto tipo de error o una condicin anormal que
se ha producido durante la ejecucin de un programa. Algunas excepciones son fatales y
provocan que se deba finalizar la ejecucin del programa. En este caso conviene terminar
ordenadamente y dar un mensaje explicando el tipo de error que se ha producido. Otras,
como por ejemplo no encontrar un fichero en el que hay que leer o escribir algo, pueden
ser recuperables. En este caso el programa debe dar al usuario la oportunidad de corregir
el error (indicando una nueva localizacin del fichero no encontrado).
Error inesperado en tiempo de ejecucin. Al lanzar una excepcin se crea un objeto de tipo
excepcin. Al producirse un error se generar un mensaje el depender del propio error.
As tenemos varios mensajes, que conforman las subclases de la clase Exception.
42
Una parte de la jerarqua de la clase Throwable.
java.lang.ArithmeticException
java.lang.ArrayIndexOutOfBoundsException
java.lang.ArrayStoreException
java.io.EOFException .
java.io.FileNotFoundException
java.lang.IllegalArgumentException
java.lang.IllegalThreadStateException
java.lang.IndexOutOfBoundsException
java.lang.InterruptedIOException
java.io.lOException
java.net.MalformedRLException
java.lang.NegativeArraySizeException
java.lang.NullPointerException
java.lang.NumberFormatException
43
java.lang.ArithmeticException: Indica que algo anda mal en una expresin
aritmtica, como sera la divisin entre cero.
44
java.lang.StringIndexOutOfBoundsException: Indica el intento de usar un
ndice String inapropiado. La clase Exception en s es muy sencilla.
Exception()
Exception(String message)
La palabra clave try se usa antes de un bloque de instrucciones (es decir, un conjunto de
cero o ms instrucciones delimitadas con llaves) que podr generar una excepcin.
Anteceder un bloque de cdigo con try indica la intencin de manejar algunas de las
excepciones que se generen en el bloque o todas ellas. Si no surgen excepciones mientras
se ejecutan las instrucciones del bloque, no se emprenden acciones especiales, como si la
palabra try no se hubiera incluido.
45
{
offset = x / n;
catch (ArithmeticException
e) {
offset = 10;
// excepcin.
46
En este punto, vale la pena resaltar dos aspectos importantes. En primer trmino, ntese
que la semntica de try...catch permite suponer que si se ejecuta una instruccin del bloque
try, ninguna de las instrucciones previas gener excepciones, puesto que el control no
vuelve al bloque mencionado una vez que sale de l.2 En segundo lugar, las clusulas catch
se examinan de arriba abajo, hasta llegar a la primera que tiene un argumento compatible
con la excepcin generada (en el sentido usual de compatibilidad de argumentos), con
omisin de todas las clusulas subsiguientes. Ello significa que se deben enumerar tales
clusulas en orden decreciente de especificidad. Por ejemplo, el cdigo siguiente sera un
desperdicio de esfuerzo, ya que la segunda clusula catch nunca se ejecutara:
try
. .
{
...
}
catch (Exception e)
Salvo que el control vuelva al bloque desde arriba en un momento ulterior de la ejecucin
normal, como ocurrir, por ejemplo, en un ciclo.
Un bloque try debe ir seguido inmediatamente de una o ms clusulas catch, ya que el uno
no puede existir sin las otras, y a la inversa, no se puede escribir un bloque try sin al
menos una clusula catch subsiguiente, ni un conjunto de clusulas catch que no est
precedido inmediatamente de un bloque try.
throw instanciaExcepcin;
47
Cuando se ejecuta una instruccin throw, se enva exceptionInstance al ambiente en
tiempo de ejecucin, de igual modo que una excepcin generada por Java, por ejemplo, al
toparse con algo como una matriz fuera de lmites. Luego, el programa puede usar el par
try...catch para manejar la excepcin en la forma usual. A manera de ejemplo, supngase
que se tiene una secuencia de instrucciones, la cual requiere que la variable n sea par a fin
de funcionar correctamente. Podra manejarse este requisito al generar una excepcin
apropiada, como sigue:
El siguiente es un ejemplo de un mtodo que indica la posibilidad de que surja uno de dos
tipos de excepciones, IllegalArgumentException, que genera en forma explcita una de las
instrucciones, o NullPointerException, que genera el mtodo equals(s) si la instancia de
String que realiza la llamada es null.
48
String wantCookie(String s) throws
IllegalArgumentExceptionNullPointerException
if (s.equals("Cookie"))
return "Thanksi";
else
PARA RECORDAR
49
6.12 EJERCICIOS:
package exception;
int n = 10;
int d = 0;
int r = div(n,d);
System.out.println("Res "+r);
}
try {
return vn/vd;
} catch(ArithmeticException e) {
return 0;
}
}
}
50
A continuacin capturamos la excepcin dentro de la funcin main que se produce al
hacer la divisin para cero
package exception;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
int n = 5;
int d = 0;
int []a = {1,2,3};
int v = a[10];
int r = n/d;
} catch(ArithmeticException e) {
System.out.println("Error division pa
cero");
} catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Fuera de rango");
}
51
VII
HERENCIA
52
CAPITULO VII
Herencia
La herencia es una metodologa de clases, para que una clase hija pueda heredar las
caractersticas (propiedades y mtodos) de su clase padre. Se puede construir una clase a
partir de otra mediante el mecanismo de la herencia. Para indicar que una clase deriva de
otra se utiliza la palabra extends, como por ejemplo:
Cuando una clase deriva de otra, hereda todas sus variables y mtodos. Estas funciones y
variables de miembro pueden ser redefinidas en la clase derivada, que puede tambin
definir o aadir nuevas variables y mtodos. En cierta forma es como si la sub-clase (la
clase derivada) contuviera un objeto de la super clase; en realidad lo ampla con nuevas
variables y mtodos.
Java permite mltiples niveles de herencia, pero no permite que una clase derive de varias
(no es posible la herencia mltiple). Se pueden crear tantas clases derivadas de una misma
clase como se quiera.
Todas las clases de Java creadas por el programador tienen una super-clase. Cuando no se
indica explcitamente una super-clase con la palabra extends, la clase deriva de
java.lang.Object, que es la clase raz de toda la jerarqua de clases de Java. Como
consecuencia, todas las clases tienen algunos mtodos que han heredado de Object.
La composicin (el que una clase contenga un objeto de otra clase como variable miembro)
se diferencia de la herencia en que incorpora los datos del objeto miembro, pero no sus
mtodos o interface (si dicha variable miembro se hace private).
La clase Object
Como ya se ha dicho, la clase Object es la raz de toda la jerarqua de clases de Java. Todas
las clases de Java derivan de Object. La clase Object tiene mtodos interesantes para
cualquier objeto que son heredados por cualquier clase. Entre ellos se pueden citar los
siguientes:
53
equals(): Indica si dos objetos son o no iguales. Devuelve true si son iguales, tanto
si son referencias al mismo objeto como si son objetos distintos con iguales valores
de las variables miembro.
toString(): Devuelve un String que contiene una representacin del objeto como
cadena de caracteres, por ejemplo para imprimirlo o exportarlo.
finalize(): Este mtodo ya se ha visto al hablar de los finalizadores.
getClass() Devuelve un objeto de la clase Class, al cual se le pueden aplicar mtodos para
determinar el nombre de la clase, su super-clase, las interfaces implementadas, etc. Se
puede crear un objeto de la misma clase que otro sin saber de qu clase es.
notify(), notifyAll() y wait() Son mtodos relacionados con las threads
Una clase puede redefinir (volver a definir) cualquiera de los mtodos heredados de su
super-clase que no sean final. El nuevo mtodo sustituye al heredado para todos los efectos
en la clase que lo ha redefinido.
Los mtodos de la super-clase que han sido redefinidos pueden ser todava accedidos por
medio de la palabra super desde los mtodos de la clase derivada, aunque con este sistema
slo se puede subir un nivel en la jerarqua de clases.
Los mtodos redefinidos pueden ampliar los derechos de acceso de la super-clase (por
ejemplo ser public, en vez de protected o package), pero nunca restringirlos.
Los mtodos de clase o static no pueden ser redefinidos en las clases derivadas.
Esta llamada en cadena a los constructores de las super-clases llega hasta el origen de la
jerarqua de clases, esto es al constructor de Object.
54
Como ya se ha dicho, si el programador no prepara un constructor por defecto, el
compilador crea uno, inicializando las variables de los tipos primitivos a sus valores por
defecto, y los Strings y dems referencias a objetos a null. Antes, incluir una llamada al
constructor de la super-clase.
Esto hace que el finalizador de la sub-clase deba realizar todas sus tareas primero y luego
llamar al finalizador de la super-clase en la forma super.finalize(). Los mtodos finalize()
deben ser al menos protected, ya que el mtodo finalize() de Object lo es, y no est
permitido reducir los permisos de acceso en la herencia.
Ejemplo:
Pondremos nuestra atencin sobre la abstraccin funcional del objeto Guitarra. Todas las
guitarras, ya sean Elctricas, ElectroAcsticas o normales, cumplen con caractersticas
similares como nmero de cuerdas, mtodo de afinacin, cambio de tono, cambio de
postura y rasgueo entre otras.
Si no se siguiera con una metodologa de herencia, por cada clase (Guitarra Electrica y
ElectroAcstica) se tendra que repetir la definicin de todos los atributos y mtodos que
pertenecen a la clase padre Guitarra, que corresponde a la abstraccin ms amplia del
concepto "Guitarra".
Clase: Guitarra
ATRIBUTOS
tono
numeroDeCuerdas
METODOS
afinar()
pulsarCuerda()
rasguear()
cambiarTono()
cambiarPostura()
Clase: GuitarraElectrica
ATRIBUTOS
tono
55
numeroDeCuerdas
numeroDeCapsulas
volumen
agudo
bajo
METODOS
afinar()
pulsarCuerda()
rasguear()
cambiarTono()
microAfinar()
conectarCable()
amplificar()
Clase: GuitarraElectroAcustica
ATRIBUTOS
tono
numeroDeCuerdas
numeroDeCapsulas
volumen
agudo
bajo
METODOS
nivelDeVolumen
afinar()
pulsarCuerda()
conectarCable()
amplificar()
cambiarTono()
Mediante el uso de la herencia, se puede definir una clase "Guitarra" que cumpla con todas
las caractersticas generales del concepto guitarra y sus evoluciones, con el fin de acotar el
nmero de especificaciones de las clases "GuitarraElectrica" y "ElectroAcstica", y
permitir la herencia a stas ltimas clases con las caractersticas del objeto padre.
56
Modelo dependiente con herencia
PARA RECORDAR
57
EJERCICIOS
PRODUCTO
package herencia2do;
public Producto() {
codigo = "null";
descripcion = "null";
precio = 0.0;
}
this.codigo = codigo;
this.descripcion = descripcion;
this.precio = precio;
}
return codigo;
}
return descripcion;
}
return precio;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
this.descripcion = descripcion;
}
this.precio = precio;
}
58
System.out.println("\t\tPRODUCTO");
System.out.println("\t\t\t\tCodigo : " + codigo);
System.out.println("\t\t\t\tDescripcion : " + descripcion);
System.out.println("\t\t\t\tPrecio : " + precio);
}
}
MOLDE
package herencia2do;
public Licuadora() {
super();
numeroRev = 0;
tamao = "";
}
public Licuadora(String codigo, String descripcion, double precio, int initialNr, String
initialTamao) {
super(codigo, descripcion, precio);
numeroRev = initialNr;
tamao = initialTamao;
}
public int getNumeroRev() {
return numeroRev;
}
public void setNumeroRev(int numeroRev) {
this.numeroRev = numeroRev;
}
public String getTamao() {
return tamao;
}
public void setTamao(String tamao) {
this.tamao = tamao;
}
return super.getPrecio()-0.5;
}
super.imprimir();
System.out.println("\t\t\t\tNumero de revoluciones : " + numeroRev);
System.out.println("\t\t\t\ttamao : " + tamao);
}
59
LICUADORA
package herencia2do;
public Licuadora() {
super();
numeroRev = 0;
tamao = "";
}
public Licuadora(String codigo, String descripcion, double precio, int initialNr, String
initialTamao) {
super(codigo, descripcion, precio);
numeroRev = initialNr;
tamao = initialTamao;
}
public int getNumeroRev() {
return numeroRev;
}
public void setNumeroRev(int numeroRev) {
this.numeroRev = numeroRev;
}
public String getTamao() {
return tamao;
}
public void setTamao(String tamao) {
this.tamao = tamao;
}
return super.getPrecio()-0.5;
}
super.imprimir();
System.out.println("\t\t\t\tNumero de revoluciones : " + numeroRev);
System.out.println("\t\t\t\ttamao : " + tamao);
}
60
CHOCOLATE
package herencia2do;
public Chocolate() {
super();
aroma = "null";
pais = "null";
}
super();
this.pais = pais;
this.aroma = aroma;
}
return aroma;
}
return pais;
}
this.aroma = aroma;
}
this.pais = pais;
}
imprimir();
System.out.println("\t\t\t\tAroma : " + aroma);
System.out.println("\t\t\t\tPais : " + pais);
}
61
public double CalcularImpuesto() {
return super.getPrecio()*1.1;
CATALOGO
package herencia2do;
import java.io.IOException;
public Catalogo() {
codigo = "123";
max = 100;
productos = new Producto[max];
this.codigo = codigo;
}
62
}
this.numeroProductos = numeroProductos;
}
return max;
}
this.max = max;
}
productos[numeroProductos++] = valueProducto;
}
}
if(numeroProductos!=0) {
int total;
total = max - numeroProductos;
System.out.println("Total Catalogo de productos: " + total);
return true;
}
else
System.out.println("!No hay Productos en el catalogo");
return false;
}
if(numeroProductos!=0) {
System.out.println("\n\t\tNOMBRE PRODUCTOS\n");
for(int i = 0; i < numeroProductos; i++) {
String a = productos[i].getCodigo();
System.out.println("\t\t\t" + a);
}
return true;
}
else {
63
return false;
}
}
System.out.println("\n\t\tCatalogo");
System.out.println("\t\tcodigo : " + codigo);
System.out.println("\t\tNumero productos : " + numeroProductos);
for(int i = 0; i < numeroProductos; i++) {
productos[i].imprimir();
}
}
int Indice=0;
for(int i=0;i<numeroProductos;i++)
{
if(productos[i].equals(DatoBuscar))
{
Indice=i;
return true;
}
}
return false;
}
boolean saber=true;
do {
int j =0;
p[j]= new Producto();
System.out.println ("Ingrese codigo : ");
p[j].setCodigo(LeerT.Leer());
System.out.println ("Ingrese descripcion : ");
p[j].setDescripcion(LeerT.Leer());
System.out.println ("Ingrese precio : ");
64
p[j].setPrecio(Double.parseDouble(LeerT.Leer()));
b.addProducto(p[j]);
j++;
System.out.println ("Desea crear otro Producto(s/n):");
String opc =LeerT.Leer();
if(opc.equals ("n") || opc.equals ("N"))saber=false;
}while(saber);
}
}
BODEGA
package herencia2do;
import java.util.*;
public class Bodega {
public Bodega () {
if(!buscarArticuloCodigo(valueProducto)){
articulos.add(valueProducto);
System.out.println("Se agrego ");
}
else {
System.out.println("ya existe");
}
}
if(articulos.size()!=0){
System.out.println("si existe el producto");
return articulos.contains(p);
}
System.out.println("NO existe el producto");
return false;
}
if(i.next().equals(valueP)) {
}return true;
}return false;
}
65
/*Una funcin de todos los nombres*/
for(Producto p: articulos){
aromas.add(((Chocolate)p).getAroma());
}
}
return aromas;
}
double suma = 0;
for(Producto p: articulos) {
suma += p.getPrecio();
}
}
return suma;
66
APLICA
package herencia2do;
almacen.addArticulo(c);
almacen.addArticulo(l);
almacen.addArticulo(m);
almacen.addArticulo(c1);
almacen.addArticulo(c2);
almacen.buscarArticuloCodigo(c2);
System.out.println("Impuesto"+c.CalcularImpuesto());
System.out.println("Impuesto"+l.CalcularImpuesto());
System.out.println("Impuesto"+m.CalcularImpuesto());
if(almacen.buscarArticulo(c2)) {
System.out.println("Si existe");
}
else {
System.out.println("No existe");
}
}
67
Resultado
68
VIII
ARRAY LIST
69
CAPTULO VIII
8. ArrayList
8.1. Mtodos
int size()
boolean isEmpty()
boolean contains(Object o)
void add(E o)
E get(int index)
public E set(index, E o)
E remove(int index)
70
Ejemplo
Clase Bus
max = valueMax;
}
pasajeros[numeroPasajeros++] = valuePasajero;
}
}
if(numeroPasajeros!=0) {
int total;
total = max - numeroPasajeros;
System.out.println("Asientos Libres : " + total);
return true;
}
else
System.out.println("!No hay Pasajeros en el Bus");
return false;
}
if(numeroPasajeros!=0) {
System.out.println("\n\t\tNOMBRE PASAJEROS\n");
for(int i = 0; i < numeroPasajeros; i++) {
String a = pasajeros[i].getNombre();
System.out.println("\t\t\t" + a);
}
return true;
}
else {
//Funcin que imprime los datos del Bus, as tambin sus pasajeros
public void Imprimir() {
System.out.println("\n\t\tB U S");
System.out.println("\t\tPlaca : " + placa);
System.out.println("\t\tNumero Pasajeros : " + numeroPasajeros);
for(int i = 0; i < numeroPasajeros; i++) {
pasajeros[i].Imprimir();
}
}
}
71
Clase Pasajero
package manejoBus;
nombre = "";
cedula = "";
pasaje = 0.0;
}
this.nombre = nombre;
this.cedula = cedula;
this.pasaje = pasaje;
}
return cedula;
}
return nombre;
}
return pasaje;
}
this.cedula = cedula;
}
this.nombre = nombre;
}
this.pasaje = pasaje;
}
System.out.println("\n\t\t\tPASAJERO");
System.out.println("\t\t\tNombre : " + nombre);
System.out.println("\t\t\tCedula : " + cedula);
System.out.println("\t\t\tPasaje : " + pasaje);
}
}
72
Clase para leer de Teclado
package manejoBus;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//Mtodo para leer datos del tipo String con posibles excepciones
public static String Leer(){
try {
Dato = br.readLine();
br.skip(System.in.available());
}
catch( IOException e) {
System.out.println(e.getMessage());
}
return Dato;
}
int n = Integer.parseInt(Leer());
return n;
}
//Mtodo para leer datos del tipo char con posibles excepciones
public static char LeerTecla() {
try {
char n = (char)System.in.read();
return n;
}
catch(IOException e) {
System.out.println(e.getMessage());
}
return 0;
}
}
73
Aplicacin
package manejoBus;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
int continuar = 1;
//Men que permite manipular las clases
do {
try {
System.out.println("\t1. Ingresar Pasajero");
System.out.println("\t2. Ver Bus");
System.out.println("\t3. Asientos Libres");
System.out.println("\t4. Nombre Pasajeros");
System.out.println("\t5. Salir");
switch(opcion) {
case 1:
SubirPasajero();
break;
case 2:
b.Imprimir();
break;
case 3:
b.AsientosLibres();
break;
case 4:
b.nombrePasajeros();
case 5:
continuar = 0;
break;
default:
System.out.println("!Ingrese un numero
correcto");
}
if(opcion == 5) {
return;
}
}catch(NumberFormatException e) {
}
}while(true);
}
74
//Mtodo para ingresar pasajeros al Bus mediante un men
public static void SubirPasajero() throws IOException {
int j = 0;
int i = 1;
do {
i = 1;
}
else {
break;
}
}while (i == 1);
}
}
Resultado
Men
75
Opcin 1
Opcin 2
76
Opcin 3 y 4
77
IX
CLASES ABSTRACTAS
78
CAPTULO IX
9. CLASES Y MTODOS ABSTRACTOS
9.1. Clases:
Una clase abstracta (abstract) es una clase de la que no se pueden crear objetos.
Su utilidad es permitir que otras clases deriven de ella.
Las clases abstractas se declaran anteponindoles la palabra abstract.
9.2. Mtodos:
Una clase abstract puede tener mtodos declarados como abstract, en cuyo caso
no se da definicin del mtodo.
Si una clase tiene algn mtodo abstract es obligatorio que la clase sea abstract.
En cualquier sub-clase este mtodo deber bien ser redefinido, bien volver a
declararse como abstract (el mtodo y la sub-clase).
Una clase abstract puede tener mtodos que no son abstract. Aunque no se
puedan crear objetos de esta clase, sus sub-clases heredarn el mtodo
completamente a punto para ser utilizado.
Como los mtodos static no pueden ser redefinidos, un mtodo abstract no puede
ser static.
Ejemplo
Sistema para administrar Empleados de una empresa:
Sistema de
Administracion
Empleado
ETC ETP
79
Implementacin de las Clases:
package administracion;
import java.util.ArrayList;
//Aade empleados
public void addEmpleado(Empleado valueEmpleado) {
empleados.add(valueEmpleado);
}
double suma = 0;
for(Empleado e : empleados) {
suma += e.sueldo();
} return suma;
a.add(e.toString());
} return a;
for(Empleado e : empleados) {
System.out.println(e.sueldo());
}
}
}
80
CLASE EMPLEADO
package administracion;
cedula = "";
sueldo = 0.0;
}
this.cedula = cedula;
this.sueldo = sueldo;
}
//Accesorios
public String getCedula() {
return cedula;
}
this.cedula = cedula;
}
return sueldo;
}
this.sueldo = sueldo;
}
System.out.println("E M P L E A D O");
System.out.println("La cedula es: " + cedula );
System.out.println("El sueldo " + sueldo );
}
//metodo abstracto
public abstract double sueldo();
81
CLASE EMPLEADO TIEMPO COMPLETO
package administracion;
super();
anioIngreso = 0;
bonificacion = 0.0;
}
super(cedula, sueldo);
anioIngreso = anio;
this.bonificacion = bonificacion;
}
//Accesorios
public int getAoIngreso() {
return anioIngreso;
}
this.anioIngreso = anioIngreso;
}
return bonificacion;
}
this.bonificacion = bonificacion;
}
super.imprimir();
System.out.println("E M P L E A D O C O M P L E T O");
System.out.println("El ao de ingreso es: " + anioIngreso );
System.out.println("La bonificacion es " + bonificacion );
}
82
//Redefinicin de la clase toString
public String toString(){
package administracion;
super();
numeroHoras = 0;
sueldoHoras = 0.0;
}
super(cedula, sueldo);
this.numeroHoras = numeroHoras;
this.sueldoHoras = sueldoHoras;
}
//Accesorios
public int getNumeroHoras() {
return numeroHoras;
}
this.numeroHoras = numeroHoras;
}
return sueldoHoras;
}
this.sueldoHoras = sueldoHoras;
}
83
return super.getSueldo() + numeroHoras*sueldoHoras;
}
super.imprimir();
System.out.println("EMPLEADO PARCIAL");
System.out.println("El numero horas es: " + numeroHoras );
System.out.println("El sueldo horas es " + sueldoHoras );
}
CLASE APLICACIN
package administracion;
EmpleadoTP("143312432",3,3,8);
EmpleadoTP("145312432",11,3,5);
EmpleadoTC("564512432",7,5,4);
84
//Arreglo de los sueldos
sa.imprimirSueldos();
//Lista de los Empleados
System.out.println(sa.ListaEmpleados());
}
}
Resultado
85
X
INTERFASES
86
CAPTULO X
10. INTERFACES
Para indicar que una clase implementa una o ms interfaces se ponen los nombres de las
interfaces, separados por comas, detrs de la palabra implements, que a su vez va siempre a
la derecha del nombre de la clase o del nombre de la super-clase en el caso de herencia. Por
ejemplo,
...
}
Cabe mencionar estas semejanzas y diferencias para que no existan problemas al momento
de implementar las clases. Entre las semejanzas que existen, es que ambas tienen en comn
que pueden contener varias declaraciones de mtodos (la clase abstract puede adems
definirlos).
Una clase no puede heredar de dos clases abstract, pero s puede heredar de una
clase abstract e implementar una interface, o bien implementar dos o ms
interfaces.
Una clase no puede heredar mtodos definidos de una interface, aunque s
constantes.
Las interfaces permiten mucha ms flexibilidad para conseguir que dos clases
tengan el mismo comportamiento, inpendientemente de su situacin en la jerarqua
de clases deJava.
Las interfaces tienen una jerarqua propia, independiente y ms flexible que la de
las clases, ya que tienen permitida la herencia mltiple.
87
10.3. Polimorfismo
Ejemplo:
Sistema para administrar un Puerto que tiene Contenedores, que ingresa contenedores
mediante un archivo de texto o de la manera comn.
ESQUEMA GRAFICO
Interface Datos
88
//Declaracin de los mtodos abstractos
public abstract void leerArchivo(String valuepath);
public abstract ContenedorCU crearCCU(String valuel);
public abstract ContenedorCI crearCCI(String valuel);
}
Clase Puerto
//Mtodo para aadir contenedorCI mediante StringTokenizer
public ContenedorCI crearCCI(String datos){
double total = 0;
for(Contenedor C : contenedores){
if (C instanceof ContenedorCU){
total += ((ContenedorCU)C).calcularImp();
}else if (C instanceof ContenedorCI){
total += ((ContenedorCI)C).calcularImp();
}
}
return total;
}
for(Contenedor C : contenedores){
if ( C instanceof ContenedorCU ){
((ContenedorCU)C).imprimir();
}else if (C instanceof ContenedorCI){
((ContenedorCI)C).imprimir();
}
}
}
}
89
Clase Contenedor
package puerto;
largo = 0 ;
tipo = " " ;
}
largo = initiallargo;
}
package puerto;
super();
ancho = 0;
profundidad = 0;
tipo = "Cuadrado";
}
super(initiallargo);
90
tipo = "Cuadrado";
ancho = initiancho;
profundidad = initialprofundidad;
}
return ancho*largo*profundidad;
}
super.imprimir();
System.out.println("Ancho :\t" + ancho);
System.out.println("Profundidad :\t" + profundidad);
}
}
package puerto;
super();
radio = 0;
tipo = "Cilindrico";
}
super(initiallargo);
tipo = "Cilindrico";
radio = initiradio;
}
return 3.1416*largo*radio*radio;
}
91
return this.calcularVolumen() * 0.5;
}
super.imprimir();
System.out.println("Radio :\t" + radio);
}
}
Aplicacin
package puerto;
92
Resultado
93
XI
ARCHIVOS
94
CAPITULO XI
11.1 LECTURA Y ESCRITURA DE ARCHIVOS
es equivalente a:
Las clases que se explican a continuacin permiten un manejo ms fcil y eficiente que las
vistas hasta ahora.
File(String name)
File(String dir, String name)
File(File dir, String name).
95
File f1 = new File("c:\\windows\\notepad.exe"); // La barra '\' se escribe '\\'
File f2 = new File("c:\\windows"); // Un directorio
File f3 = new File(f2, "notepad.exe"); // Es igual a f1
Si File representa un archivo que existe los mtodos de la Tabla 9.6 dan informacin de l.
Por ltimo, otros mtodos incluidos en la Tabla 9.8 devuelven el path del archivo de
distintas maneras.
Una forma tpica de preguntar por un archivo es presentar un caja de dilogo. La clase
java.awt.FileDialog presenta el dilogo tpico de cada sistema operativo para guardar o
abrir ficheros. Sus constructores son:
FileDialog(Frame fr)
FileDialog(Frame fr, String title)
FileDialog(Frame fr, String title, int type)
donde type puede ser FileDialog.LOAD o FileDialog.SAVE segn la operacin que se desee
96
realizar.
Es muy fcil conectar este dilogo con un File, utilizando los mtodos String getFile() y
String getDirectory(). Por ejemplo:
La clase PrintWriter es la ms prctica para escribir un archivo de texto porque posee los
mtodos print(cualquier tipo) y println(cualquier tipo), idnticos a los de System.out (de clase
PrintStream).
97
El siguiente ejemplo ilustra lo anterior:
try {
FileWriter fw = new FileWriter("escribeme.txt");
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter salida = new PrintWriter(bw);
salida.println("Hola, soy la primera lnea");
salida.close();
// Modo append
bw = new BufferedWriter(new FileWriter("escribeme.txt", true));
salida = new PrintWriter(bw);
salida.print("Y yo soy la segunda. ");
double b = 123.45;
salida.println(b);
salida.close();
}
cacth(java.io.IOException ioex) { }
98
ANEXOS
99
UML
100
REPRESENTACION UML
Lenguaje Unificado de Modelado (UML, por sus siglas en ingls, Unified Modeling
Language) es el lenguaje de modelado de sistemas de software ms conocido y utilizado en
la actualidad; an cuando todava no es un estndar oficial, est apoyado en gran manera
por el OMG (Object Management Group). Es un lenguaje grfico para visualizar,
especificar, construir y documentar un sistema de software. UML ofrece un estndar para
describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como
procesos de negocios y funciones del sistema, y aspectos concretos como expresiones de
lenguajes de programacin, esquemas de bases de datos y componentes de software
reutilizables.
Es importante remarcar que UML es un "lenguaje" para especificar y no un mtodo o un
proceso, se utiliza para definir un sistema de software, para detallar los artefactos en el
sistema y para documentar y construir. Es el lenguaje en el que est descrito el modelo. Se
puede aplicar en una gran variedad de formas para soportar una metodologa de desarrollo
de software.
MODELO
Un modelo es una simplificacin de la realidad. El modelado es esencial en la construccin
de software para:
UML cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las
entidades representadas. En la programacin orientada a objetos se utiliza los diagramas
de clases.
Los diagramas de clases son utilizados durante el proceso de anlisis y diseo de los
sistemas informticos, donde se crea el diseo conceptual de la informacin que se
manejara en el sistema, y los componentes que se encargaran del funcionamiento y la
relacin entre uno y otro.
101
Atributos:
Propiedades tambin llamados atributos o caractersticas, son valores que corresponden a
un objeto, como color, material, cantidad, ubicacin. Generalmente se conoce como la
informacin detallada del objeto.
Mtodos:
Operaciones son aquellas actividades o verbos que se pueden realizar con o para este
objeto, como por ejemplo abrir, cerrar, buscar, cancelar, acreditar, cargar. De la misma
manera que el nombre de un atributo, el nombre de una operacin se escribe con
minsculas si consta de una sola palabra. Si el nombre contiene ms de una palabra, cada
palabra ser unida a la anterior y comenzar con una letra mayscula, a excepcin de la
primera palabra que comenzar en minscula.
Herencia:
Se define como la reutilizacin de un objeto padre ya definido para poder extender la
funcionalidad en un objeto hijo. Los objetos hijos heredan todas las operaciones y/o
propiedades de un objeto padre. Por ejemplo: Una persona puede subdividirse en
Proveedores, Acreedores, Clientes, Accionistas, Empleados; todos comparten datos bsicos
como una persona, pero adems tendr informacin adicional que depende del tipo de
persona, como saldo del cliente, total de inversin del accionista, salario del empleado, etc.
Al disear una clase debemos pensar en cmo podemos identificar un objeto real, como
102
una persona, un transporte, un documento o un paquete. Estos ejemplos de clases de
objetos reales, es sobre lo que un sistema se disea. Durante el proceso del diseo de las
clases tomamos las propiedades que identifican como nico al objeto y otras propiedades
adicionales como datos que corresponden al objeto
NOTACIN
Atributos:
[Visibilidad] nombre[multiplicidad][: tipo[=valor por defecto]]
Mtodos
[visibilidad] nombre([[in|out]parmetro : tipo [, ]])[:tipo_devuelto].
RELACIONES
La relacin o asociacin entre clases tiene una navegabilidad a la que se le da una direccin
y se puede realizar como se muestra en el siguiente diagrama de clases Estudiante y
Fecha.
103
Estudiante
-nombre : String
-numeroUnico : String
-cedula : String
-fechaNacimiento : Fecha
+Estudiante()
+Estudiante(entrada initialNombre : String, entrada initialNumUnico : String, entrada initialCedula : String, entrada initialFechaNac : Fecha)
+Estudiante(entrada initialEstudiante : Estudiante)
+getNombre() : String
+getNumUnico() : String *
+getCedula() : String
+getFecha() : Fecha
+setNombre(entrada valueNombre : String) : void
+setNumUnico(entrada valueNumUnico : String) : void
+setCedula(entrada valueCedula : String) : void
+setFecha(entrada valueFecha : Fecha) : void
+imprimirFecha() : void
Fecha
-dia : int
-mes : int
-anio : int
+Fecha()
+Fecha(entrada initialDia : int, entrada initialMes : int, entrada inittalAnio : int) *
+Fecha(entrada initialFecha : Fecha)
+getDia() : int
+getMes() : int -fechaNacimiento
+getAnio() : int
+setDia(entrada valueDia : int) : void
+setMes(entrada valueMes : int) : void
+setAnio(entrada valueAnio : int) : void
+imprimirFecha() : void
104
EJEMPLO:
Punto
-x : int
-y : int
+Punto()
+Punto(entrada initialX : int, entrada initialY : int)
+Punto(entrada initialPunto : Punto)
+getX() : int
+getY() : int
+setX(entrada X : int) : void
+setY(entrada Y : int) : void
+moverX(entrada incrementoX : int) : void
+moverY(entrada incrementoY : int) : void
+imprimirPunto() : void
1. Declarar Variables
2. Definir Constructores
3. Definir Mtodos
Variables de clase
Son variables cuyos valores son los mismos para la clase y para todas sus instancias. Para
indicar que una variable es una variable de clase se utiliza la palabra clave static en la
declaracin de las variables. En el ejemplo de la clase Punto las variables estn definidas
como X y Y del tipo entero.
EJERCICIO DE APLICACIN
105
Punto
-x : double -centro
-y : double
+Punto()
+Punto(entrada initialX : double, entrada initialY : double) *
+Punto(entrada initialPunto : Punto)
+getX() : double
+getY() : double
+setX(entrada valueX : double) : void *
+setY(entrada valueY : double) : void
+moverX(entrada incrementoX : double) : void
+moverY(entrada incrementoY : double) : void Circulo
+imprimirPunto() : void
-centro : Punto
-radio : double
+Circulo()
+Circulo(entrada initialCentro : Punto, entrada initialRadio : double)
+Circulo(entrada initialCirculo : Circulo)
+getRadio() : double
+getCentro() : Punto
+setRadio(entrada valueRadio : double) : void
+setCentro(entrada valueCentro : Punto) : void
+moverCentro(entrada incrementoCentro : Punto) : void
EJEMPLO:
106
Punto
-x : double -centro
-y : double
+Punto()
+Punto(entrada initialX : double, entrada initialY : double) 1
+Punto(entrada initialPunto : Punto)
+getX() : double
+getY() : double
+setX(entrada valueX : double) : void
+setY(entrada valueY : double) : void
+moverX(entrada incrementoX : double) : void
+moverY(entrada incrementoY : double) : void
+imprimirPunto() : void
1
Circulo
* -centro : Punto
-radio : double
-base +Circulo()
+Circulo(entrada initialCentro : Punto, entrada initialRadio : double)
+Circulo(entrada initialCirculo : Circulo)
+getRadio() : double
+getCentro() : Punto
+setRadio(entrada valueRadio : double) : void
+setCentro(entrada valueCentro : Punto) : void
+moverCentro(entrada incrementoCentro : Punto) : void
+imprimirCirculo() : void
Cilindro
-baseInferior : Circulo
-baseSuperior : Circulo
-altura : double
+Cilindro()
+Cilindro(entrada initialBaseSuperior : Circulo, entrada initialBaseInferior : Circulo, entrada initialAltura : double)
+Cilindro(entrada initialCilindro : Cilindro)
+getAltura() : double
+getBaseSuperior() : Circulo
+getBaseInferior() : Circulo
+setAltura(entrada valueAltura : double) : void
+setBaseInferior(entrada valueCirculo : Circulo) : void
+setBaseSuperior(entrada valueCirculo : Circulo) : void
+calcularVolumen() : double
+calcularSuperficieLateral() : double
+imprimirVolumen() : void
+imprimirSuperficieLateral() : void
+imprimirCilindro() : void
107
ECLIPSE
108
PLATAFORMA PARA DESARROLLO ECLIPSE
Eclipse viene con un Ambiente de Desarrollo de Java (JDE) que incluye un editor de resalte
de sintaxis, un compilador, un depurador, un navegador de clases y un administrador de
archivo/proyecto. La funcionalidad de Eclipse puede ser extendido con plug-ins.
109
TRABAJANDO CON ECLIPSE
Crear un Proyecto
110
3. En el cuadro Project name, se escribe el nombre del nuevo proyecto. Finalmente
hacemos click en Finish.
111
Se despliegan 4 ventanas que muestran los proyectos, paquetes, tipos de datos o
clases y los miembros de la clase (atributos y mtodos)
Crear un Package
1. En el proyecto click derecho, clic en nuevo y por ltimo click en package.
2. En source folder va el nombre del proyecto y en Name el nombre del package que
en minsculas y por ltimo clic en Finish.
112
Crear la Clase
1. En el men File, clic New y clic en Class o si se quiere que est dentro de un
package se pone clic de derecho en el package, se selecciona New y luego clic en
Class.
113
2. En New Java Class, se escribe el nombre e la clase en el cuadro Name despus
seleccionar Finish.
Si se desea que la clase sea principal se selecciona public static void main(String[]
args).
COMPILAR LA CLASE
Eclipse incluye un compilador de Java incremental. Cuando introduces una lnea de cdigo
que contiene un error, el editor desplegar, en la derecha, una marca roja junto a dicha
lnea de cdigo.
CORRIDA DE LA APLICACIN
Una clase que contiene a main se conoce como clase de aplicacin o clase ejecutable
1. Cuando se compila por primera vez una clase se selecciona el men Run, luego
Run as y por ltmo Java Aplication
114
2. La corrida del programa se ver en la consola.
115
HERRAMIENTA SOURCE
Nos permite crear automticamente los accesorios y constructores de una clase en la que
estemos trabajando.
116
Igualmente en la opcin Source de la barra de herramientas generamos automticamente
los constructores de la clase ya sean los constructores por defecto o por parmetros
dependiendo los requerimientos de cada problema. Podemos escoger el nmero de
parmetros de cada constructor haciendo clic en cada atributo de la clase.
117
118
IMPLEMENTACION DE CLASES EN JAVA
PACKAGE
Se llama o define PACKAGE al conjunto de clases que tienen algo en comn por ejemplo.
Figuras
Geomtricas
Crculo
Rectngulo
Cilindro
Como se puede observar las clases Circulo, Rectngulo y Cilindro son figuras geomtricas
por lo tanto se la puede asociar en un Package llamado Figuras ya que cada clase
pertenece a esta.
119
PROJECT
Se define como PROJECT o PROYECTO al conjunto de Package, clases distintas a las
compuestas por un Package y a otros tipos de carpetas que contienen informacin del
proyecto.
Al implementar el cdigo para crear una clase Java recomienda seguir la convencin de
Java DOC (CONVENCIN DE CODIFICACIN) la cual permite que se identifique de
una manera rpida cada una de las partes de una clase: Atributos, Constructores,
Accesorios y Mtodos.
ELEMPLO 1:
120
El ejemplo anterior facilita para comprender como la convencin de java doc ayuda a que
la implementacin sea ms ordenada de tal manera que sea de fcil uso y entendimiento
EJEMPLO 2:
Implementar la clase punto y una aplicacin; con sus atributos, constructores, accesorios y mtodos
utilizando los primeros requerimientos de la convencin de java doc.
Clase Punto:
package figuras;
private double X;
private double Y;
public Punto() {
X = 0;
Y = 0;
}
X = initialX;
Y = initialY;
}
X = initialPunto.X;
Y = initialPunto.Y;
}
X = valueX;
}
121
Y = valueY;
}
return X;
}
return Y;
}
X = X + incrementoX;
}
Y = Y + incrementoY;
}
X += incrementoPunto.X;
Y += incrementoPunto.Y;
}
X += incrementoX;
Y += incrementoY;
}
X = valuePunto.X;
Y = valuePunto.Y;
122
public void imprimirPunto() {
Clase AplicaPunto
package figuras;
Comentarios
123
En la clase punto se pueden generar los siguientes mtodos que ayudan a comprender la
asignacin por referencia entre los objetos, ya que en los objetos no puede existir
asignacin de variable por variable.
X = op1.X +op2.X;
Y = op1.Y +op2.Y;
}
public Punto suma(Punto ope2) {
En estos dos mtodos se utiliza la asignacin por referencia para sumar dos puntos de la
clase Punto. En una operacin binaria el numero de parmetros utilizados siembre va a ser
uno para obtener un Punto de la clase, si se utiliza 2 parmetros el mtodo no tendr
ningn retorno.
c = a . suma (b);
La referencia this
Java incluye un valor de referencia especial llamado this, que se utiliza dentro de cualquier
mtodo para referirse al objeto actual. El valor this se refiere al objeto sobre el que ha sido
llamado el mtodo actual. Se puede utilizar this siempre que se requiera una referencia a
un objeto del tipo de una clase actual. Si hay dos objetos que utilicen el mismo cdigo,
seleccionados a travs de otras instancias, cada uno tiene su propio valor nico de this.
Un refinamiento habitual es que un constructor llame a otro para construir la instancia
correctamente.
this.X = initialX;
this.Y = initialY;
}
124
La aplicacin
Static: sirve para definir un atributo como de clase, o sea nico para todos los objetos de la
clase. Es decir puede tener varios objetos pero solo un main.
Declaracin de atributos
En Java no hay variables globales; todas las variables se declaran dentro del cuerpo de la
clase o dentro de un mtodo. Las variables declaradas dentro de un mtodo son locales al
mtodo; las variables declaradas en el cuerpo de la clase se dice que son miembros de la
clase y son accesibles por todos los mtodos de la clase. Por otra parte, adems de los
atributos de la propia clase se puede acceder a todos los atributos de la clase de la que
desciende.
Finalmente, los atributos miembros de la clase pueden ser atributos de clase o atributos de
instancia; se dice que son atributos de clase si se usa la palabra clave static: en ese caso la
variable es nica para todas las instancias (objetos) de la clase (ocupa un nico lugar en
memoria). Si no se usa static, el sistema crea un lugar nuevo para esa variable con cada
instancia (o sea que es independiente para cada objeto).
125