Você está na página 1de 99

Instituto de Educacin Superior

San Ignacio de Monterrico


INTRODUCCIN
Hace quince aos, mencionar la palabra Java traa a la mente una de dos cosas: Una
sla de ndonesia o una taza de caf caliente. Hoy, quienquiera que haya tenido contacto
con una pgina Web, alguna revista de computacin, o una seccin de negocios de algn
diario, tiene otro concepto de Java: el lenguaje de Programacin introducido por Sun
Microsystems.
Se pueden encontrar pelculas en los principales videoclubes, atletas en una intriga de
crmenes y polticos corruptos que han recibido menor atencin que Java. El lenguaje ha
llegado a ser parte del desarrollo de software, como el lquido mismo del hombre.
Por una parte Java mantiene despiertos a los programadores hasta tarde, mientras que
ha otros permite dormir mejor despus de una jornada de desarrollo de programas.
Al redactar este manual usted ser guiado por todos los aspectos del desarrollo de
programas Java mediante la versin ms actual del lenguaje y las mejores tcnicas
disponibles.
Cuando termine de leer este manual, tendr razones bien fundamentadas por las que
Java ha llegado a ser el lenguaje de programacin ms comentado durante las ltimas
dcadas y las razones de por qu podra ser el lenguaje de programacin de mayor uso
en los prximos aos.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
1
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 1
INTRODUCCIN A LAS TCNICAS DE PROGRAMACIN
Formando Emprendedores De Calidad Para Un Mundo Empresarial
2
Instituto de Educacin Superior
San Ignacio de Monterrico
Para empezar a entender lo que es la programacin, primero tenemos que tener ciertos
conocimientos sobre todo lo que la rodea. Empezaremos con unas definiciones un poco
tcnicas, pero que son imprescindibles para el aprendizaje.
1.1 CONCEPTOS GENERALES
TecnoIoga
Dentro del campo que nos interesa a nosotros, la tecnologa tiene el objetivo de eliminar
las tareas repetitivas, facilitando el trabajo y hacindolo ms eficiente as como
aumentando la productividad y los beneficios de la empresa.
Programacin
La programacin es una de las etapas ms importantes del ciclo de vida de un proyecto
(explicaremos ms adelante lo que es este termino), y requiere un mtodo de trabajo. La
programacin es el resultado de dicho trabajo. La programacin es el instrumento que
permite la ejecucin de las tareas automatizadas de un sistema informtico.
Las herramientas que utilizaremos para programar son los lenguajes de programacin, a
travs de las cuales codificaremos los programas.
Programa
Conjunto de instrucciones entendibles por el ordenador que permiten realizar un trabajo o
resolver un problema. Un programa debe ser finito, es decir, tiene que tener un inicio y
Formando Emprendedores De Calidad Para Un Mundo Empresarial
3
Instituto de Educacin Superior
San Ignacio de Monterrico
un fin. Tiene que estar bien confeccionado para que, al introducir un dato, salga una
solucin y si se volviese a introducir el mismo dato, saliese de nuevo la misma solucin.
MetodoIoga de Ia programacin
Se entiende como metodologa de la programacin al conjunto de normas, mtodos y
anotaciones que nos indican la forma de programar. Cada lenguaje de programacin
sigue una metodologa distinta.
Lenguaje de programacin
Es un conjunto de reglas semnticas as como sintcticas que los programadores usan
para la codificacin de instrucciones de un programa o algoritmo de programacin.
Existen varios lenguajes de programacin.
Entorno de programacin o entorno de desarroIIo
Es el conjunto de herramientas utilizadas para la elaboracin de un programa.
Recursos
Conjunto de componentes hardware que utilizaremos para la elaboracin de un programa
(cpu, disco duro...).
Una vez conocidos los conceptos bsicos necesarios para el aprendizaje de la
programacin podemos empezar a ver los diferentes tipos de lenguajes de programacin.
1.2 OBJETIVOS E IMPORTANCIA DE LAS TCNICAS DE PROGRAMACIN
El curso de Tcnicas de programacin esta dedicado a mejorar las capacidades analtica
y creadora de los programadores explicando las bases de la programacin y la creacin
de algoritmos.
Formando Emprendedores De Calidad Para Un Mundo Empresarial

Instituto de Educacin Superior


San Ignacio de Monterrico
CAPITULO 2
TEORIA DE LOS ALGORITMOS
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!
Instituto de Educacin Superior
San Ignacio de Monterrico
El desarrollo de algoritmos es un tema fundamental en el diseo de programas o
soluciones. Por lo cual, el alumno debe tener buenas bases que le sirvan para poder
crear de manera fcil y rpida sus programas.
La siguiente documentacin pueden servir a los alumnos, en su labor cotidiana de
aprendizaje y tambin facilitar el desarrollo de su capacidad analtica y creadora, para
de esta manera mejorar su destreza en la elaboracin de algoritmos que sirven como
base para la codificacin de los diferentes programas que tendr que desarrollar a lo
largo de su carrera.
2.1 CONCEPTO DE GORITMO
La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi,
nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin
de nmeros y ecuaciones en el siglo X.
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe
seguir, para dar solucin a un problema especfico.
2.2 TIPOS DE ALGORITMOS
Existen dos tipos y son llamados as por su naturaleza:
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"
Instituto de Educacin Superior
San Ignacio de Monterrico
CuaIitativos:
Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos:
Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso.
2.3 LENGUAJES ALGORTMICOS
Un Lenguaje algortmico es una serie de smbolos y reglas que se utilizan para describir
de manera explcita un proceso.
2.4 TIPOS DE LENGUAJES ALGORTMICOS
2.4.1 Grficos
Es la representacin grfica de las operaciones que realiza un algoritmo (diagrama de
flujo).
Diagrama de FIujo
Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se puede
decir que es la representacin detallada en forma grfica de como deben realizarse los
pasos en la computadora para producir resultados.
Esta representacin grfica se da cuando varios smbolos (que indican diferentes
procesos en la computadora), se relacionan entre si mediante lneas que indican el orden
en que se deben ejecutar los procesos. Los smbolos utilizados han sido normalizados
por el instituto norteamericano de normalizacin (ANS):
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#
Instituto de Educacin Superior
San Ignacio de Monterrico
SmboIo Descripcin
ndica el inicio y el final de nuestro
diagrama de flujo.
ndica la entrada y salida de datos.
Smbolo de proceso y nos indica la
asignacin de un valor en la memoria y/o la
ejecucin de una operacin aritmtica.
ndica la salida de informacin por
impresora.
Conector dentro de pgina. Representa la
continuidad del diagrama dentro de la
misma pgina.
Conector fuera de pagina. Representa la
continuidad del diagrama en otra pagina.
ndica la salida de informacin en la
pantalla o monitor.
Smbolo de decisin. ndica la realizacin
de una comparacin de valores.
Smbolo de Seleccin Mltiple. Dada una
expresin permite escoger una opcin de
muchas.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$
Instituto de Educacin Superior
San Ignacio de Monterrico
Smbolo del Mientras. Dada una expresin
al principio de la iteracin esta es evaluada;
si la condicin es verdadera realizar el
ciclo, si es falsa la repeticin cesar.
Smbolo del Para. Esta estructura de
control repetitiva se usa generalmente
cuando se conoce de antemano el numero
de iteraciones.
Smbolo Repita Hasta. funciona igual que
la estructura Mientras, con la diferencia que
al menos una vez har el grupo de
instrucciones y luego evaluar una
condicin. Si la condicin evaluada es falsa
continua dentro del ciclo y si es verdadera
termina la iteracin.
Lneas de flujo o direccin. ndican la
secuencia en que se realizan las
operaciones.
Recomendaciones para eI diseo de Diagramas de FIujo
Se deben usar solamente lneas de flujo horizontal y/o vertical.
Se debe evitar el cruce de lneas utilizando los conectores.
Se deben usar conectores slo cuando sea necesario.
No deben quedar lneas de flujo sin conectar.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%
Instituto de Educacin Superior
San Ignacio de Monterrico
Se deben trazar los smbolos de manera que se puedan leer de arriba hacia abajo
y de izquierda a derecha.
Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando el
uso de muchas palabras.
2.4.2 No Grficos
Representa en forma descriptiva las operaciones que debe realizar un algoritmo
(pseudocodigo).
Pseudocdigo
Un pseudocdigo (falso lenguaje), es una serie de normas lxicas y gramaticales
parecidas a la mayora de los lenguajes de programacin, pero sin llegar a la rigidez de
sintaxis de estos ni a la fluidez del lenguaje coloquial. Esto permite codificar un programa
con mayor agilidad que en cualquier lenguaje de programacin, con la misma validez
semntica, normalmente se utiliza en las fases de anlisis o diseo de Software, o en el
estudio de un algoritmo. Forma parte de las distintas herramientas de la ingeniera de
software.
No hay ningn compilador o intrprete de pseudocdigo informtico (en el caso de que lo
hubiera seran los lectores de dicho pseudocdigo informtico, por ej. una idea de un jefe
de programacin a su personal), y por tanto no puede ser ejecutado en un ordenador,
pero las similitudes con la mayora de los lenguajes informticos lo hacen fcilmente
convertible.
El pseudocdigo describe un algoritmo utilizando una mezcla de frases en lenguaje
comn, instrucciones de programacin y palabras clave que definen las estructuras
bsicas. Su objetivo es permitir que el programador se centre en los aspectos lgicos de
la solucin a un problema.
No siendo el pseudocdigo un lenguaje formal, varan de un programador a otro, es decir,
no hay una estructura semntica ni arquitectura estndar. Es una herramienta gil para el
estudio y diseo de aplicaciones, veamos un ejemplo, que podramos definir como:
lenguaje imperativo, de tercera generacin, segn el mtodo de programacin
estructurada.
Pseudocdigo = Pseudo (Supuesto) + Cdigo (nstruccin).
Formando Emprendedores De Calidad Para Un Mundo Empresarial
1&
Instituto de Educacin Superior
San Ignacio de Monterrico
ejemplo
INICIO
Edad: Entero
ESCRBA cual es tu edad?
Lea Edad
S Edad >=18 entonces
ESCRBA Eres mayor de Edad
FNS
ESCRBA fin del algoritmo
FIN
Formando Emprendedores De Calidad Para Un Mundo Empresarial
11
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 3
LA COMPLEJIDAD DEL SOFTWARE
FACTORES DE CALIDAD
Formando Emprendedores De Calidad Para Un Mundo Empresarial
12
Instituto de Educacin Superior
San Ignacio de Monterrico
El software Existen diferentes aplicaciones de software Sistemas, gestin, de ingeniera y
cientfico, empotrado, computadoras personales, basado en Web, de nteligencia Artificial
(Pressman). El software es un producto Genrico. Organizacin que desarrolla software
lo vende al mercado abierto. Personalizado. Sistemas requerimos por un cliente en
particular (Sommerville).
3.1 QU ES EL SOFTWARE
Programas, documentos asociados y la configuracin de datos que se necesitan para
hacer que estos programas operen de manera correcta en la computadora (Sommerville).
Los Programas que se ejecutan dentro de una computadora de cualquier tamao y
arquitectura, documentos que comprenden formularios virtuales e impresos y datos que
combinan nmeros y texto. Tambin incluye representaciones de informacin de audio,
video e imgenes (Pressman).
3.2 FACTORES QUE IMPACTAN LA CREACIN DE SOFTWARE
El desarrollo de un producto depende de los siguientes elementos:
Nmero de personas involucradas en el desarrollo
Tamao (lneas de cdigo)
Tiempo dedicado a la elaboracin del producto
Formando Emprendedores De Calidad Para Un Mundo Empresarial
13
Instituto de Educacin Superior
San Ignacio de Monterrico
Recursos para la construccin del software
Conforme un producto/sistema de software requiera ms de algunos de los elementos, el
producto ser ms complejo.
3.3 COMPLEJIDAD DEL SOFTWARE
El trmino CompIejidad significa: Complicado, difcil, conjunto de varias cosas.
En trminos del software:
ndica la cantidad de elementos de un sistema (complejidad cuantitativa).
ndica las interacciones potenciales (conectividad) y el nmero de estados
posibles que se producen a travs de stos (variedad, variabilidad).
El trmino Variedad significa: nmero de elementos discretos en un sistema.
El trmino VariabiIidad, ndice mximo de relaciones posibles (hipotticamente n!).
El trmino Sistema significa Conjunto de elementos interrelacionados entre s y que
tienen un objetivo comn.
3.4 SISTEMAS DE SOFTWARE - SIMPLES CARACTERSTICAS
Propsito muy limitado.
Ciclo de vida corto (definicin, desarrollo, mantenimiento).
Se reemplazan cuando necesitan mantenimiento:
No correcciones
No reutilizacin
No extensin de funcionalidad.
En general, construido por una persona
3.5 SISTEMAS DE SOFTWARE COMPLEJOS - CARACTERSTICAS
Exhiben un conjunto muy rico de comportamientos.
Ciclo de vida largo.
Muchos usuarios dependen de l.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
1
Instituto de Educacin Superior
San Ignacio de Monterrico
Construidos por un grupo de personas.
Resulta difcil (o imposible) para un individuo comprender TODAS las sutilezas del
sistema.
Por tanto, la complejidad es una propiedad esencial de todos los sistemas de software de
gran tamao. Se puede dominar, pero NO eliminar
Formando Emprendedores De Calidad Para Un Mundo Empresarial
1!
Instituto de Educacin Superior
San Ignacio de Monterrico
3.6 POR QU EL SOFTWARE ES COMPLEJO?
La complejidad se deriva de cuatro elementos (Booch):
Complejidad del dominio del problema.
Dificultad para gestionar el proceso de desarrollo.
Flexibilidad que se puede alcanzar a travs del software.
Problemas en la caracterizacin del comportamiento en sistemas discretos
Formando Emprendedores De Calidad Para Un Mundo Empresarial
1"
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 4
EVOLUCIN DE LOS LENGUAJES DE PROGRAMACIN
Formando Emprendedores De Calidad Para Un Mundo Empresarial
1#
Instituto de Educacin Superior
San Ignacio de Monterrico
Un lenguaje de programacin es un lenguaje inventado para controlar una mquina,
(normalmente, un ordenador). Hay muchsimos, de toda clase de tipos y caractersticas,
inventados para facilitar el abordaje de distintos problemas, el mantenimiento del
software, su reutilizacin, mejorar la productividad, etc.
Los lenguajes de programacin se pueden clasificar segn varios criterios. He procurado
reunir todos los que me parecen relevantes, diez en total.
Hay que tener en cuenta tambin, que en la prctica, la mayora de lenguajes no pueden
ser puramente clasificados en una categora, pues surgen incorporando ideas de otros
lenguajes y de otras filosofas de programacin, pero no importa al establecer las
clasificaciones, pues el autntico objetivo de las mismas es mostrar los rangos, las
posibilidades y tipos de lenguajes que hay.
4.1 NIVEL DE ABSTRACCIN
Segn el nivel de abstraccin, o sea, segn el grado de cercana a la mquina:
Lenguajes de bajo niveI: La programacin se realiza teniendo muy en cuenta las
caractersticas del procesador. Ejemplo: Lenguajes ensamblador.
Lenguajes de niveI medio: Permiten un mayor grado de abstraccin pero al mismo
tiempo mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C puede
realizar operaciones lgicas y de desplazamiento con bits, tratar todos los tipos de datos
como lo que son en realidad a bajo nivel (nmeros), etc.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
1$
Instituto de Educacin Superior
San Ignacio de Monterrico
Lenguajes de aIto niveI: Ms parecidos al lenguaje humano. Manejan conceptos, tipos
de datos, etc., de una manera cercana al pensamiento humano ignorando
(abstrayndose) del funcionamiento de la mquina. Ejemplos: Java, Ruby.
Hay quien slo considera lenguajes de bajo nivel y de alto nivel, (en ese caso, C es
considerado de alto nivel).
4.2 PROPSITO
Segn el propsito, es decir, el tipo de problemas a tratar con ellos:
Lenguajes de propsito generaI: Aptos para todo tipo de tareas: Ejemplo: C.
Lenguajes de propsito especfico: Hechos para un objetivo muy concreto. Ejemplo:
Csound (para crear ficheros de audio).
Lenguajes de programacin de sistemas: Diseados para realizar sistemas
operativos o drivers. Ejemplo: C.
Lenguajes de script: Para realizar tareas varias de control y auxiliares. Antiguamente
eran los llamados lenguajes de procesamiento por lotes (batch) o JCL (Job Control
Languages). Se subdividen en varias clases (de shell, de GU, de programacin web,
etc.). Ejemplos: bash (shell), mRC script, JavaScript (programacin web).
4.3 EVOLUCIN HISTRICA
Con el paso del tiempo, se va incrementando el nivel de abstraccin, pero en la prctica,
los de una generacin no terminan de sustituir a los de la anterior:
Lenguajes de primera generacin (1GL): Cdigo mquina.
Lenguajes de segunda generacin (2GL): Lenguajes ensamblador.
Lenguajes de tercera generacin (3GL): La mayora de los lenguajes modernos,
diseados para facilitar la programacin a los humanos. Ejemplos: C, Java.
Lenguajes de cuarta generacin (4GL): Diseados con un propsito concreto, o sea,
para abordar un tipo concreto de problemas. Ejemplos: NATURAL, Mathematica.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
1%
Instituto de Educacin Superior
San Ignacio de Monterrico
Lenguajes de quinta generacin (5GL): La intencin es que el programador
establezca el qu problema ha de ser resuelto y las condiciones a reunir, y la mquina lo
resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog.
4.4 MANERA DE EJECUTARSE
Segn la manera de ejecutarse:
Lenguajes compiIados: Un programa traductor traduce el cdigo del programa (cdigo
fuente) en cdigo mquina (cdigo objeto). Otro programa, el enlazador, unir los ficheros
de cdigo objeto del programa principal con los de las libreras para producir el programa
ejecutable. Ejemplo: C.
Lenguajes interpretados: Un programa (intrprete), ejecuta las instrucciones del
programa de manera directa. Ejemplo: Lisp.
Tambin los hay mixtos, como Java, que primero pasan por una fase de compilacin en
la que el cdigo fuente se transforma en bytecode, y este bytecode puede ser
ejecutado luego (interpretado) en ordenadores con distintas arquitecturas (procesadores)
que tengan todos instalados la misma mquina virtual Java.
4.5 MANERA DE ABORDAR LA TAREA A REALIZAR
Segn la manera de abordar la tarea a realizar, pueden ser:
Lenguajes imperativos: ndican cmo hay que hacer la tarea, es decir, expresan los
pasos a realizar. Ejemplo: C.
Lenguajes decIarativos: ndican qu hay que hacer. Ejemplos: Lisp, Prolog. Otros
ejemplos de lenguajes declarativos, pero que no son lenguajes de programacin, son
HTML (para describir pginas web) o SQL (para consultar bases de datos).
4.6 PARADIGMA DE PROGRAMACIN
El paradigma de programacin es el estilo de programacin empleado. Algunos lenguajes
soportan varios paradigmas, y otros slo uno. Se puede decir que histricamente han ido
Formando Emprendedores De Calidad Para Un Mundo Empresarial
2&
Instituto de Educacin Superior
San Ignacio de Monterrico
apareciendo para facilitar la tarea de programar segn el tipo de problema a abordar, o
para facilitar el mantenimiento del software, o por otra cuestin similar, por lo que todos
corresponden a lenguajes de alto nivel (o nivel medio), estando los lenguajes
ensambladores atados a la arquitectura de su procesador correspondiente. Los
principales son:
Lenguajes de programacin proceduraI: Divide el problema en partes ms pequeas,
que sern realizadas por subprogramas (subrutinas, funciones, procedimientos), que se
llaman unas a otras para ser ejecutadas. Ejemplos: C, Pascal.
Lenguajes de programacin orientada a objetos: Crean un sistema de clases y
objetos siguiendo el ejemplo del mundo real, en el que unos objetos realizan acciones y
se comunican con otros objetos. Ejemplos: C++, Java.
Lenguajes de programacin funcionaI: La tarea se realiza evaluando funciones,
(como en Matemticas), de manera recursiva. Ejemplo: Lisp.
Lenguajes de programacin Igica: La tarea a realizar se expresa empleando lgica
formal matemtica. Expresa qu computar. Ejemplo: Prolog.
Hay muchos paradigmas de programacin: Programacin genrica, programacin
reflexiva, programacin orientada a procesos, etc.
4.7 LUGAR DE EJECUCIN
En sistemas distribuidos, segn dnde se ejecute:
Lenguajes de servidor: Se ejecutan en el servidor. Ejemplo: PHP es el ms utilizado
en servidores web.
Lenguajes de cIiente: Se ejecutan en el cliente. Ejemplo: JavaScript en navegadores
web.
4.8 ADMISIN O NO DE CONCURRENCIA
Segn admitan o no concurrencia de procesos, esto es, la ejecucin simultnea de varios
procesos lanzados por el programa:
Formando Emprendedores De Calidad Para Un Mundo Empresarial
21
Instituto de Educacin Superior
San Ignacio de Monterrico
Lenguajes concurrentes: Ejemplo: Ada.
Lenguajes no concurrentes: Ejemplo: C.
4.9 INTERACTIVIDAD
Segn la interactividad del programa con el usuario u otros programas:
Lenguajes orientados a sucesos: El flujo del programa es controlado por la
interaccin con el usuario o por mensajes de otros programas/sistema operativo, como
editores de texto, interfaces grficos de usuario (GU) o kernels. Ejemplo: VisualBasic,
lenguajes de programacin declarativos.
Lenguajes no orientados a sucesos: El flujo del programa no depende de sucesos
exteriores, sino que se conoce de antemano, siendo los procesos batch el ejemplo ms
claro (actualizaciones de bases de datos, colas de impresin de documentos, etc.).
Ejemplos: Lenguajes de programacin imperativos.
4.10 REALIZACIN VISUAL
Segn la realizacin visual o no del programa:
Lenguajes de programacin visuaI: El programa se realiza moviendo bloques de
construccin de programas (objetos visuales) en un interfaz adecuado para ello. No
confundir con entornos de programacin visual, como Microsoft Visual Studio y sus
lenguajes de programacin textuales (como Visual C#). Ejemplo: Mindscript.
Lenguajes de programacin textuaI: El cdigo del programa se realiza escribindolo.
Ejemplos: C, Java, Lisp.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
22
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 5
TECNOLOGA ORIENTADA A OBJETOS (EL NUEVO
PARADIGMA)
Formando Emprendedores De Calidad Para Un Mundo Empresarial
23
Instituto de Educacin Superior
San Ignacio de Monterrico
La Programacin Orientada a Objetos (POO u OOP segn sus siglas en ingls) es un
paradigma de programacin que usa objetos y sus interacciones para disear
aplicaciones y programas de computadora. Est basado en varias tcnicas, incluyendo
herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se populariz a
principios de la dcada de 1990. Actualmente son muchos los lenguajes de programacin
que soportan la orientacin a objetos.
5.1 INTRODUCCIN
Los objetos son entidades que combinan estado, comportamiento e identidad:
El estado est compuesto de datos, sern uno o varios atributos a los que se habrn
asignado unos valores concretos (datos).
El comportamiento est definido por los procedimientos o mtodos con que puede operar
dicho objeto, es decir, qu operaciones se pueden realizar con l.
La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras
palabras, es su identificador (concepto anlogo al de identificador de una variable o una
constante).
La programacin orientada a objetos expresa un programa como un conjunto de estos
objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas
y mdulos ms fciles de escribir, mantener y reutilizar.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
2
Instituto de Educacin Superior
San Ignacio de Monterrico
De esta forma, un objeto contiene toda la informacin que permite definirlo e identificarlo
frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una
misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los
objetos disponen de mecanismos de interaccin llamados mtodos que favorecen la
comunicacin entre ellos. Esta comunicacin favorece a su vez el cambio de estado en
los propios objetos. Esta caracterstica lleva a tratarlos como unidades indivisibles, en las
que no se separan ni deben separarse el estado y el comportamiento.
Los mtodos (comportamiento) y atributos (estado) estn estrechamente relacionados
por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de mtodos
para poder tratar los atributos con los que cuenta. El programador debe pensar
indistintamente en ambos conceptos, sin separar ni darle mayor importancia a ninguno de
ellos, hacerlo podra producir el hbito errneo de crear clases contenedoras de
informacin por un lado y clases con mtodos que manejen a las primeras por el otro. De
esta manera se estara realizando una programacin estructurada camuflada en un
lenguaje de programacin orientado a objetos.
Esto difiere de la programacin estructurada tradicional, en la que los datos y los
procedimientos estn separados y sin relacin, ya que lo nico que se busca es el
procesamiento de unos datos de entrada para obtener otros de salida. La programacin
estructurada anima al programador a pensar sobre todo en trminos de procedimientos o
funciones, y en segundo lugar en las estructuras de datos que esos procedimientos
manejan. En la programacin estructurada slo se escriben funciones que procesan
datos. Los programadores que emplean ste nuevo paradigma, en cambio, primero
definen objetos para luego enviarles mensajes solicitndoles que realicen sus mtodos
por s mismos.
5.2 ORIGEN
Los conceptos de la programacin orientada a objetos tienen origen en Simula 67, un
lenguaje diseado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen
Nygaard del Centro de Cmputo Noruego en Oslo. Al parecer, en este centro, trabajaban
en simulaciones de naves, y fueron confundidos por la explosin combinatoria de cmo
las diversas cualidades de diversas naves podan afectar unas a las otras. La idea ocurri
para agrupar los diversos tipos de naves en diversas clases de objetos, siendo
responsable cada clase de objetos de definir sus propios datos y comportamiento. Fueron
Formando Emprendedores De Calidad Para Un Mundo Empresarial
2!
Instituto de Educacin Superior
San Ignacio de Monterrico
refinados ms tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC (y cuya
primera versin fue escrita sobre Basic) pero diseado para ser un sistema
completamente dinmico en el cual los objetos se podran crear y modificar "en marcha"
en lugar de tener un sistema basado en programas estticos.
La programacin orientada a objetos tom posicin como el estilo de programacin
dominante a mediados de los aos ochenta, en gran parte debido a la influencia de C++,
una extensin del lenguaje de programacin C. Su dominacin fue consolidada gracias al
auge de las nterfaces grficas de usuario, para las cuales la programacin orientada a
objetos est particularmente bien adaptada. En este caso, se habla tambin de
programacin dirigida por eventos.
Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes
existentes durante ese tiempo, incluyendo Ada, BASC, Lisp, Pascal, entre otros. La
adicin de estas caractersticas a los lenguajes que no fueron diseados inicialmente
para ellas condujo a menudo a problemas de compatibilidad y a la capacidad de
mantenimiento del cdigo. Los lenguajes orientados a objetos "puros", por otra parte,
carecan de las caractersticas de las cuales muchos programadores haban venido a
depender. Para saltar este obstculo, se hicieron muchas tentativas para crear nuevos
lenguajes basados en mtodos orientados a objetos, pero permitiendo algunas
caractersticas imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un
temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido
esencialmente reemplazado por Java, en gran parte debido a la aparicin de nternet, y a
la implementacin de la mquina virtual de Java en la mayora de navegadores. PHP en
su versin 5 se ha ido modificando y soporta una orientacin completa a objetos,
cumpliendo todas las caractersticas propias de la orientacin a objetos.
5.3 FUNDAMENTOS DE LA PROGRAMACIN ORIENTADA A OBJETOS (POO)
En la vida real podemos observar que estamos rodeados de objetos, por ejemplo una
mesa, una silla, un bolgrafo, etc. y todos ellos podran clasificarse (con mayor o menor
detalle) atendiendo a una definicin. Adems, sabemos que a pesar de existir muchos
tipos de mesas, todas ellas tienen unas caractersticas comunes. En definitiva, es posible
concluir que pueden hacerse dos distinciones:
Por una parte tenemos el concepto de lo que es una mesa.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
2"
Instituto de Educacin Superior
San Ignacio de Monterrico
Por otra parte tenemos mesas concretas.
Esta idea fue trasladada a la informtica y surgieron los conceptos de clase y objeto.
Podemos decir que una clase es un concepto sobre una entidad abstracta que define
cmo sern todos los objetos que existan de ese tipo. Por tanto, un objeto es una
concrecin mientras que una clase es una abstraccin.
Si trasladamos la definicin anterior a la jerga tcnica informtica, podemos decir que una
clase es un prototipo que define las propiedades y los mtodos comunes a mltiples
objetos de un mismo tipo. Sera como una plantilla para la creacin de objetos. Por su
parte, un objeto es un conjunto de propiedades y mtodos capaces de manipular dichas
propiedades.
Objetos en el Mundo Real
5.3.1 PROGRAMACIN ORIENTADA A OBJETOS
Es un paradigma de programacin que define los programas en trminos de "clases de
objetos", La programacin orientada a objetos (POO), expresa un programa como un
conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite
hacer los programas y mdulos ms fciles de escribir, mantener y reutilizar.
La POO hace que los problemas sean ms sencillos, al permitir dividir el problema. Est
divisin se hace en objetos, de forma que cada objeto funcione de forma totalmente
independiente. Un objeto es un elemento del programa que posee sus propios datos y su
Formando Emprendedores De Calidad Para Un Mundo Empresarial
2#
Instituto de Educacin Superior
San Ignacio de Monterrico
propio funcionamiento. Es decir un objeto est formado por datos (propiedades) y
funciones que es capaz de realizar el objeto (mtodos).
Podemos decir que un lenguaje est orientado a objetos si soporta objetos como una
caracterstica fundamental del mismo. Pero, qu significa soportar objetos?
Fundamentalmente consiste en que el lenguaje permita las siguientes caractersticas:
Encapsulacin, Herencia, Polimorfismo.
5.3.2 QU SON LAS CLASES?
Las clases son las plantillas para hacer objetos. Una clase sirve para definir una serie de
objetos con propiedades (atributos), comportamientos (operaciones o mtodos), y
semntica comunes. Hay que pensar en una clase como un molde. A travs de las clases
se obtienen los objetos en s. Es decir antes de poder utilizar un objeto se debe definir la
clase a la que pertenece, esa definicin incluye:
a) Sus atributos.
Es decir, los datos miembros de esa clase. Los datos pueden ser pblicos (accesibles
desde otra clase) o privados (slo accesibles por cdigo de su propia clase. Tambin se
las llama campos.
b) Sus mtodos.
Las funciones miembro de la clase. Son las acciones (u operaciones) que puede realizar
la clase.
c) Cdigo de iniciaIizacin.
Para crear una clase normalmente hace falta realizar operaciones previas (es lo que se
conoce como el constructor de la clase).
d) Otras cIases.
Dentro de una clase se pueden definir otras clases (clases internas, son consideradas
como asociaciones dentro de UML).
Formando Emprendedores De Calidad Para Un Mundo Empresarial
2$
Instituto de Educacin Superior
San Ignacio de Monterrico
Diversas Definiciones de Clases
5.3.3 QU SON LOS OBJETOS?
Se Ies IIama instancias de cIase. Son un eIemento en s de Ia cIase, un objeto se
crea utiIizando eI IIamado constructor de Ia cIase. EI constructor es eI mtodo que
permite iniciar eI objeto.
Un objeto contiene en s mismo la informacin y los mtodos o funciones necesarios para
manipular esa informacin. Lo ms importante de los objetos es que permiten tener un
control total sobre 'quin' o 'qu' puede acceder a sus miembros, es decir, los objetos
pueden tener miembros pblicos a los que podrn acceder otros objetos o miembros
privados a los que slo puede acceder l. Estos miembros pueden ser tanto variables
como funciones.
Notacin de Clase y Objeto en UML
5.4 PROPIEDADES DE LA POO
Formando Emprendedores De Calidad Para Un Mundo Empresarial
2%
Instituto de Educacin Superior
San Ignacio de Monterrico
5.4.1 ENCAPSULAMIENTO
Un objeto es un conjunto de propiedades y mtodos, es decir, datos y programas
relacionados entre s como si estuvieran encerrados en una cpsula. Son inaccesibles e
impiden conocer cmo est distribuida la informacin dentro de ellos. Esto implica que las
peticiones de informacin a un objeto deben hacerse mediante mensajes dirigidos a l.
Un mensaje es una simple llamada a un mtodo del objeto con el que se quiere
comunicar.
El hecho de ser una cpsula, algo cerrado e inaccesible, favorecer la depuracin de
aplicaciones y la reutilizacin del cdigo en caso de migrarlo a otros entornos tambin
permite reducir el potencial de errores que pudieran ocurrir. Hagamos una comparacin
con lo que sera la vida real. Cuando montamos en un coche nos limitados a dar a la llave
contacto y el motor arranca. Es muy simple, pero esa simpleza nos la brinda la
encapsulacin. La realidad es que ocurren muchas cosas: contacto elctrico,
funcionamiento del motor de arranque, apertura del paso de combustible, etc. Pero,
necesitamos saber realmente lo que ocurre para hacer uso de l? No, nos basta con
saber que para arrancarlo necesitamos introducir la llave en el contacto y girarla.
La esencia deI encapsuIamiento es que cuando un objeto trae consigo su
funcionaIidad esta uItima se ocuIta, por ejempIo: por lo general la mayora de gente
que ve televisin no sabe, o no se preocupa de la complejidad electrnica que hay de
detrs de la pantalla ni de todas las operaciones que tienen que ocurrir para mostrar una
imagen en la pantalla es decir la televisin hace lo que tiene que hacer sin mostrarnos el
proceso necesario para ello, y por suerte, la mayora de los artefactos electrodomsticos
funcionan as.
Encapsulamiento
Formando Emprendedores De Calidad Para Un Mundo Empresarial
3&
Instituto de Educacin Superior
San Ignacio de Monterrico
5.4.2 HERENCIA
La herencia es una caracterstica que permite la creacin de clases a partir de otras. Esto
conlleva tanto la reutilizacin del cdigo, como la especializacin de las clases.
La reutilizacin del cdigo viene dada porque podemos definir clases nuevas partiendo de
otras ya existentes. En este caso se heredan sus propiedades y mtodos. La
especializacin de las clases viene por aadidura ya que, al definir una clase partiendo
de otra, lo que estamos es creando una nueva clase ms especializada.
Visto lo anterior podemos ya intuir que las clases pueden organizarse jerrquicamente.
Esta jerarqua viene determinada por el uso realizado de la herencia. Con esta
organizacin empezamos a tener trminos como: clase padre, clase hija, superclase (o
clase raz) y clase final. A continuacin vamos a explicarlos:
CIase padre o supercIase: se dice que una clase es padre de otra cuando sirve
como punto de partida para crear a esta ltima.
CIase hija o subcIase: es aquella clase que hereda de otra, y es hija con
respecto a su clase padre o su superclase.
CIase finaI: toda aquella clase que no puede tener hijas.
Herencia
En el grafico anterior se representa una jerarqua de clases de figuras geomtricas. En la
cima de la jerarqua tenemos la clase Figura, y es la clase padre de las clases Circulo
y Poligono. La clase Circulo es una clase hija de la clase Figura y tambin es una
Formando Emprendedores De Calidad Para Un Mundo Empresarial
31
Instituto de Educacin Superior
San Ignacio de Monterrico
clase final. La clase Poligono es clase hija de la clase Figura y clase padre de las
clases Rectangulo y Triangulo. El resto de relaciones que faltan seran similares a las
ya explicadas.
La herencia puede ser de dos tipos: simple y compuesta. La diferencia entre ambas es
que en el caso de herencia compuesta se permite heredar de ms de una clase. En otras
palabras, se trata de que una clase hija pueda tener ms de una clase padre.
5.4.3 POLIMORFISMO
Consiste en la posibilidad de tener mtodos con el mismo nombre en distintas clases. Al
hablar de mtodos en distintas clases nos estamos refiriendo a mtodos distintos y por
tanto con comportamientos distintos a pesar de que tengan el mismo nombre.
El polimorfismo permite poder enviar un mismo mensaje (recordemos que un mensaje es
una invocacin a un mtodo) a objetos de clases diferentes. Estos objetos recibirn el
mismo mensaje pero respondern a l de formas diferentes. Por ejemplo, un mensaje +
para un objeto entero significara una suma, mientras que para un objeto string (cadena
de caracteres) significara la concatenacin.
olimorfismo
En l grafico podemos ver una jerarqua de clases en la que todas las clases que la
componen tienen un mtodo llamado dibujar(). Todos tienen el mismo nombre pero
cada uno de ellos podr tener una funcionalidad distinta. En este ejemplo concreto, una
posible interpretacin podra ser que tenemos dos clases hijas que redefinen el mtodo
dibujar() de su clase padre. Probablemente el mtodo dibujar() de la clase padre sea
un mtodo abstracto (no se ha implementado, slo se ha definido) ya que para dibujar un
polgono es necesario saber el tipo de polgono del que se trata. Por tanto, las clases
Formando Emprendedores De Calidad Para Un Mundo Empresarial
32
Instituto de Educacin Superior
San Ignacio de Monterrico
hijas de la clase Poligono se ven obligadas a implementar el mtodo dibujar() que ser
distinto en cada caso. Esto es un claro ejemplo de polimorfismo.
5.4.4 PRINCIPIO DE OCULTACIN
Consiste en que cada objeto est aislado del exterior, es un mdulo natural, y cada tipo
de objeto expone una interfaz a otros objetos que especfica cmo pueden interactuar
con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra
su modificacin por quien no tenga derecho a acceder a ellas, solamente los propios
mtodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos
no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando
efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto,
permitiendo un acceso directo a los datos internos del objeto de una manera controlada y
limitando el grado de abstraccin. La aplicacin entera se reduce a un agregado o
rompecabezas de objetos.
En programacin orientada a objetos el principio de ocultacin hace referencia a que los
atributos privados de un objeto no pueden ser modificados ni obtenidos a no ser que se
haga a travs de algn mdulo (funciones, mtodos y en algunos lenguajes tambin
llamados propiedades del objeto).
Un objeto oculta lo que hace a otros objetos y al mundo exterior, pero un objeto necesita
presentar un rostro al mundo exterior para poder inicializar sus operaciones en el
ejemplo de la televisin, Esta tiene que mostrar diversos botones en el control remoto y
en si misma que permiten realizar operaciones para ajustar los niveles de volumen, la
seleccin de canales, etc. Estos botones se conocen como interfaces.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
33
Instituto de Educacin Superior
San Ignacio de Monterrico
rincipio de Ocultacin
5.4.5 ABSTRACCIN
Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede
realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el
sistema sin revelar cmo se implementan estas caractersticas. Los procesos, las
funciones o los mtodos pueden tambin ser abstrados y cuando lo estn, una variedad
de tcnicas son requeridas para ampliar una abstraccin.
La abstraccin se refiere a quitar las propiedades y acciones de un objeto para dejar solo
aquellas que sean necesarias, que quiere decir esto ultimo que diferentes tipos de
problemas requieren diferentes cantidades de informacin aun si estos problemas
pertenecen a un rea en comn.
Algunos trminos importantes se derivan de los anteriores como:
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
Formando Emprendedores De Calidad Para Un Mundo Empresarial
3
Instituto de Educacin Superior
San Ignacio de Monterrico
en las propiedades del objeto, o la generacin de un "evento" con un nuevo mensaje para
otro objeto del sistema.
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. Tambin se puede definir como evento, a la reaccin que
puede desencadenar un objeto, es decir la accin que genera.
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.
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 esto se define como sus
caractersticas predeterminadas, y cuyo valor puede ser alterado por la ejecucin de
algn mtodo.
Estado interno:
es una variable que se declara privada, 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). No es visible al programador que maneja una instancia de
la clase.
Componentes de un objeto: atributos, identidad, relaciones y mtodos.
Representacin de un objeto: un objeto se representa por medio de una tabla o entidad
que est compuesta por sus atributos y funciones correspondientes.
En comparacin con un lenguaje imperativo, una "variable", no es ms que un
contenedor interno del atributo del objeto o de un estado interno, as como la "funcin" es
un procedimiento interno del mtodo del objeto.
5.5 CARACTERSTICAS DE LA PROGRAMACIN ORIENTA A OBJETOS
a) SimpIe.
Ofrece la funcionalidad de un lenguaje potente pero sin las caractersticas menos usadas
y ms confusas de stos. El ejemplo ms claro puede ser el recolector de basura, que
Formando Emprendedores De Calidad Para Un Mundo Empresarial
3!
Instituto de Educacin Superior
San Ignacio de Monterrico
evita que andemos preocupndonos de liberar memoria. Otro ejemplo podra ser la
supresin de los punteros.
b) Lenguaje de objetos.
Por qu "de" objetos y no "orientado a" objetos? Por que, al contrario de otros
lenguajes como C++, no es un lenguaje modificado para poder trabajar con objetos sino
que es un lenguaje creado para trabajar con objetos desde cero. De hecho, TODO lo que
hay en Java son objetos. Java soporta las tres caractersticas bsicas de la orientacin a
objetos: encapsulacin, herencia y polimorfismo.
c) Distribuido.
Proporciona las libreras y herramientas necesarias para que las aplicaciones puedan ser
distribuidas. Se ha desarrollado con extensas capacidades de interconexin a red y
soporta varios protocolos de red.
d) Robusto.
Realiza variadas comprobaciones tanto en tiempo de compilacin como de ejecucin.
Entre ellas podemos mencionar la comprobacin de tipos y la comprobacin de lmites de
arrays.
e) PortabIe.
Esto no se refiere a la independencia de la plataforma, si no a la portabilidad en cuanto a
desarrollo. Por ejemplo, los enteros son siempre enteros de 32 bits en complemento a 2,
con independencia de la plataforma.
f) MuItipIataforma.
Como mencionamos antes, no es necesario recompilar las aplicaciones Java para los
distintos sistemas en que van a ser explotadas.
g) MuItihiIo.
Permite mltiples hilos de ejecucin, es decir, muchas actividades simultneas dentro del
mismo programa. Las ventajas de esto son un mejor rendimiento interactivo (el usuario
no percibe tanto la ocupacin de la mquina) y un mejor comportamiento en tiempo real
(aunque sea algo muy limitado por el sistema operativo).
h) Dinmico.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
3"
Instituto de Educacin Superior
San Ignacio de Monterrico
Cuando una aplicacin se lanza, no se cargan todas las libreras que requiere, sino que la
carga es bajo demanda. Las libreras nuevas o actualizadas no paralizarn las
aplicaciones en funcionamiento.
5.6 LENGUAJES ORIENTADOS A OBJETOS
Entre los lenguajes orientados a objetos se destacan los siguientes:
ABAP
ActionScript
ActionScript 3
Ada
C++
C#
Clarion
Lenguaje de programacin D
Object Pascal (Delphi)
Gambas
Harbour
Eiffel
Java
JavaScript (la herencia se realiza por medio de la programacin basada en
prototipos)
Lexico (en castellano)
Objective-C
Ocaml
Formando Emprendedores De Calidad Para Un Mundo Empresarial
3#
Instituto de Educacin Superior
San Ignacio de Monterrico
Oz
PHP (en su versin 5)
Python
Ruby
Smalltalk
Magik (SmallWorld)
VB.NET
Visual FoxPro (en su versin 6)
Visual Basic
XBase++
Gambas
Flex builder (adobe)
Muchos de estos lenguajes de programacin no son puramente orientados a objetos, sino
que son hbridos que combinan la POO con otros paradigmas.
Al igual que C++ otros lenguajes, como OOCOBOL, OOLSP, OOPROLOG y Object
REXX, han sido creados aadiendo extensiones orientadas a objetos a un lenguaje de
programacin clsico.
Un nuevo paso en la abstraccin de paradigmas de programacin es la Programacin
Orientada a Aspectos (POA). Aunque es todava una metodologa en estado de
maduracin, cada vez atrae a ms investigadores e incluso proyectos comerciales en
todo el mundo.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
3$
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 6
LENGUAJE JAVA - SINTAXIS Y CONCEPTOS BSICOS
Formando Emprendedores De Calidad Para Un Mundo Empresarial
3%
Instituto de Educacin Superior
San Ignacio de Monterrico
6.1 IDENTIFICADORES
Los identificadores sirven para nombrar variables, propiedades, mtodos, clases, objetos,
interfaces y cualquier otra entidad que sea necesario identificar para poder usar.
En Java, un nombre de identificador debe empezar con una letra, un smbolo de
subrayado (_) o un smbolo dlar ($). El resto de los caracteres empleados pueden ser
letras o nmeros. No existe una longitud mxima y se distinguen las maysculas de las
minsculas.
6.2 VARIABLES
Una variable es un nombre que contiene un valor que puede cambiar a lo largo del
programa es decir representan direcciones de memoria en las que podemos alojar
temporalmente la informacin que necesitemos, y por otro, nos ofrecen la facilidad de
referirnos a ellas mediante un nombre.
Una declaracin de variable se compone de dos partes: su tipo y su nombre.
Adicionalmente puede indicarse un valor para su inicializacin. El tipo de la variable
determina los valores que puede contener y las operaciones que se podrn realizar con
ella. Segn el tipo de informacin que contienen pueden ser variables de tipos primitivos
o variables de referencia.
Desde el punto de vista del papel que desempean, las variables pueden ser:
VariabIe miembro de una cIase: Se definen dentro de la clase y fuera de
cualquier mtodo.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
&
Instituto de Educacin Superior
San Ignacio de Monterrico
VariabIes IocaIes: Se definen dentro de un mtodo o, ms en general, dentro de
cualquier bloque entre llaves ({ }). Se crean dentro del bloque y se destruyen al
finalizar dicho bloque.
Existe una serie de pala'ras reser(adas las cuales tienen un significado especial para
)a(a y por lo tanto no se pueden utilizar como nombres de variables. Dichas palabras
son:
abstract boolean break byte case catch
char class const* continue default do
double else extends final finally float
for goto* if implements import instanceof
int interface long native new null
package private protected public return short
static super switch synchronized this throw
throws transient try void volatile while
(*) Son palabras reservadas, pero no se utilizan en la actual implementacin del lenguaje
Java.
6.3 MBITO DE VARIABLES
Se denomina visibiIidad, mbito o aIcance de una variable, a la parte de una aplicacin
en la que dicha variable es accesible. En otras palabras, la parte en la cual puede usarse
dicha variable. Como norma generaI, podemos decir que Ias variabIes decIaradas
dentro de un bIoque (entre IIaves) son visibIes y existen dentro de ese bIoque. Por
ejemplo, las variables declaradas al principio de una funcin existen mientras se ejecute
la funcin, las declaradas dentro de un bloque if slo sern accesibles y vlidas dentro
de dicho bloque y las variables miembro de una clase son vlidas mientras existe el
objeto.
Las variables miembro de una clase declarada como pblica (public), sern accesibles
mediante una referencia a un objeto de dicha clase usando el operador punto. Por su
parte, las declaradas como privadas (private) no son accesibles desde otras clases. Las
funciones miembro de una clase tienen acceso directo a todas las variables miembro de
la clase sin necesidad de anteponer el nombre de un objeto de la clase. Sin embargo, las
funciones miembro de una clase B derivada de otra A, tienen acceso a todas las
variables miembro de A declaradas como pblicas o protegidas (protected), pero no a
las declaradas como privadas. Una clase hija slo puede acceder directamente a las
variables y funcin miembro de su clase padre declaradas como pblicas o protegidas.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
1
Instituto de Educacin Superior
San Ignacio de Monterrico
Otra caracterstica del lenguaje Java consiste en que es posibIe decIarar una variabIe
dentro de un bIoque con eI mismo nombre que una variabIe miembro, pero no con
eI nombre de otra variabIe IocaI que ya existiera. La variabIe decIarada dentro deI
bIoque ocuIta a Ia variabIe miembro en ese bIoque. Para acceder a Ia variabIe
miembro ocuIta sera necesario que usramos eI operador this.
Sintaxis:
[modificador] <nombreDeTipo> <nombreDeVariable> [= <inicializador>];
Adicionalmente a las declaraciones de Acceso, las variables pueden ser declaradas
como:
Static. Variable de clase. (Solo existe una copia por clase con acceso compartido
entre todas las instancias de la misma.). Este calificador indica que el objeto no
necesita de un objeto para poder utilizarlo sino que se le utiliza directamente a
travs de la clase.
FinaI. Declara la variable como constante. Este calificador indica que el elemento
no podr ser modificado por nada, solo podr ser utilizada.
En caso de que sea una variable de tipo primitivo indica que el valor no podr ser
cambiado. Para objetos, la referencia del mismo no podr apuntar a un nuevo objeto,
pero el objeto aun es capaz de ser modificado.
MODIFICADORES (NiveIes de Acceso)
PubIic. El campo es accesible de forma general sin restricciones. Es decir indica
que el elemento puede ser utilizado dentro de la clase, dentro de las clases
descendientes y desde cualquier objeto de la clase.
Protected. El campo es accesible desde cualquier subclase (tanto dentro como
fuera del paquete) y a todo mtodo dentro del paquete. Es decir indica que el
elemento puede ser utilizado dentro de la clase, dentro de las clases
descendientes, mas no desde un objeto de la clase.
DefauIt (Package o tambien denominado FriendIy). El campo es accesible a
todos los mtodos dentro del paquete. Es el acceso por defecto.
Private. El campo es restringido a la clase que lo declara.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
2
Instituto de Educacin Superior
San Ignacio de Monterrico
6.4 TIPOS DE DATOS PRIMITIVOS
Declarar un variable de tipo primitiva reserva de por si el espacio de memoria necesario.
Byte Entero muy pequeo.
Short Entero Corto.
nt Entero normal.
Long Entero largo.
Char Carcter.
Float Nmero real de precisin simple.
Double Nmero real de doble precisin.
Boolean Valor lgico.
Void Tipo Vaci.
De no asignarse un valor de inicio, el compilador por defecto asignar uno.
Tipos Precisin VaIor Por Defecto
Byte 8 bits 0
Short 16 bits 0
nt 32 bits 0
Long 64 bits 0
Char 16 bits \u0000
Float 32 bits +0.0f
Double 64 bits +0.0d
Boolean - false
6.5 ORGANIZACIN
Paquetes (Packages): son un grupo o librera de clases desarrolladas en java que se
utilizan para algo especfico.
Las principaIes cIases de java son las siguientes (incluidas en el JDK):
o java.appIet: Creado para soportar la creacin de applet Java, el paquete
java.applet permite a las aplicaciones ser descargadas sobre una red y
ejecutarse dentro de una sandbox..
Formando Emprendedores De Calidad Para Un Mundo Empresarial
3
Instituto de Educacin Superior
San Ignacio de Monterrico
o java.awt: La Abstract Window Toolkit contiene rutinas para soportar
operaciones bsicas GU y utiliza ventanas bsicas desde el sistema nativo
subyacente.
o java.awt.event: Soporte y procesamiento de eventos para controles awt.
o java.io: El paquete java.io contiene clases que soportan entrada/salida. Las
clases del paquete son principalmente streams; sin embargo, se incluye una
clase para ficheros de acceso aleatorio.
o java.Iang: El paquete Java java.lang contiene clases fundamentales e
interfaces fuertemente relacionadas con el lenguaje y el sistema runtime. Esto
incluye las clases raz que forman la jerarqua de clases, tipos relacionados
con la definicin del lenguaje, excepciones bsicas, funciones matemticas,
Hilos, funciones de seguridad, as como tambin alguna informacin sobre el
sistema nativo subyacente.
o java.net: El paquete java.net suminista rutinas especiales O para redes,
permitiendo las peticiones HTTP, as como tambin otras transacciones
comunes.
o java.utiI: Las estructuras de datos que agregan objetos son el foco del
paquete java.util. En el paquete est incluida la AP Collections, una jerarqua
organizada de estructura de datos influenciada fuertemente por
consideraciones de patrones de diseo.
o javax.swing: Swing es una coleccin de rutinas que se construyen sobre
java.awt para suministrar un toolkit de widgets independiente de plataforma.
o javax.swing.event: Soporte y procesamiento de eventos para controles
swing.
o java.math: El paquete java.math soporta aritmtica multiprecision (incluyendo
operaciones aritmticas modulares) y suministra generadores de nmeros
primos multiprecision usados para la generacin de claves criptogrficas.
6.5.1 Instruccin Import
Hay cdigo que se puede utilizar en los programas que realicemos en Java. Se importan
clases de objetos que estn contenidas, a su vez, en paquetes estndares.
Formando Emprendedores De Calidad Para Un Mundo Empresarial

Instituto de Educacin Superior


San Ignacio de Monterrico
Por ejemplo la clase Date es una de las ms utilizadas, sirve para manipular fechas. Si
alguien quisiera utilizar en su cdigo objetos de esta clase, necesita incluir una
instruccin que permita utilizar esta clase. La sintaxis de esta instruccin es:
import paquete.subpaquete.subsubapquete....cIase
Esta instruccin se coloca arriba del todo en el cdigo. Para la clase Date sera:
import java.utiI.Date
Lo que significa, importar en el cdigo la clase Date que se encuentra dentro del
paquete til que, a su vez, est dentro del gran paquete llamado java.
Tambin se puede utilizar el asterisco en esta forma:
import java.utiI.*
Esto significa que se va a incluir en el cdigo todas las clases que estn dentro del
paquete util de java.
6.5.2 Comentarios
En java al igual que en otros lenguajes existen los comentarios que son:
// Comentario de una lnea.
/* .*/ Comentario de Varias lneas.
/** Comentario de Documentacin
* Esta aplicacin realiza lo siguiente: .
* @autor Nilton Alexis Gmez Flores
* @version 1.0
EjempIo
// J003.java = dibuja 2 circunferencias
import java.awt.*;
import java.awt.event.*;
class J003 extends Frame {
public J003() {
setTitle("Dos circunferencias");
}
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!
Instituto de Educacin Superior
San Ignacio de Monterrico
public static void main(String [] args) {
Frame f=new J003();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.setSize(300,200);
f.setVisible(true);
}
public void paint(Graphics g){
g.setColor(Color.red);
g.drawOval(10,30,30,30);
g.setColor(Color.blue);
g.drawOval(35,30,30,30);
g.drawString("Dos circunferencias",40,100);
}
}
f.setSize(600,400) Determina el tamao de la ventana: 1 coordenada = 600 =
anchura en pxels, 2 coordenada = 400 = altura en pxels.
g.setCoIor(CoIor,red) Establece el rojo como color de dibujo.
g.drawOvaI(10,30,30,30) Dibuja una circunferencia cuyo vrtice superior
izquierdo se encuentra en el punto 10,30. La tercera coordenada es el diametro
horizontal y la cuarta el dimetro vertical. Como los dos dimetros son iguales,
resulta una circunferencia. Si fueran distintos, seria una elipse.
g.drawString("Dos circunferencias",40,100) Dibuja el texto que hay entre
comillas en el punto de coordenadas 40,100 (1 coordenada= distncia horizontal
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"
Instituto de Educacin Superior
San Ignacio de Monterrico
desde el borde izquierdo, 2 coordenada = distncia vertical desde el borde
superior).
6.6 CONVERSIN ENTRE TIPOS *C+S,I-./
Hay veces en las que se desear realizar algo como:
int a;byte b=12;
a=b;
La duda est en si esto se puede realizar. La respuesta es que s. S porque un dato
byte es ms pequeo que uno int y Java le convertir de forma implcita. Sin embargo en:
int a=1;byte b;
b=a;
El compilador devolver error aunque el nmero 1 sea vlido para un dato byte. Para ello
hay que hacer un castin!. Eso significa poner el tipo deseado entre parntesis delante de
la expresin.
int a=1;byte b;
b= (byte) a; //No da error
En el siguiente ejemplo:
byte n1=100, n2=100, n3;
n3= n1 * n2 /100;
Aunque el resultado es 100, y ese resultado es vlido para un tipo byte; lo que ocurrir en
realidad es que ocurrir un error. Eso es debido a que primero multiplica 100 * 100 y
como eso da 10000, no tiene ms remedio el compilador que pasarlo a entero y as
quedar aunque se vuelva a dividir. La solucin correcta sera:
n3 = (byte) (n1 * n2 / 100);
Ms ejemplos de CASTNG
int a = 24;
byte b = (byte) a;
short c = (short) a;
long d = (long) a;
6.7 OPERADORES
"0#01 1peradores +ritm2ticos
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#
Instituto de Educacin Superior
San Ignacio de Monterrico
Hay que tener en cuenta que el resultado de estos operadores vara notablemente si
usamos enteros o si usamos nmeros de coma flotante.
Por ejemplo:
doubIe resultado1, d1=14, d2=5;
int resultado2, i1=14, i2=5;
resultado1= d1 / d2;
resultado2= i1 / i2;
resultado" valdr 2.8 mientras que resultado# valdr 2. Es ms incluso:
doubIe resultado;
int i1=7,i2=2;
resultado=i1/i2; $$Resultado valdr% &
resultado=(doubIe)i1/(doubIe)i2; $$Resultado valdr% &'(
El operador del mdulo (%) para calcular el resto de una divisin entera. Ejemplo:
int resultado, i1=14, i2=5;
resultado = i1 % i2; //El resultado ser 4
"0#02 1peradores 3elacionales
Sirven para comparar valores. Siempre devuelven valores booleanos. Son:
"0#03 1peradores 4gicos
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$
Instituto de Educacin Superior
San Ignacio de Monterrico
Tambin devuelven valores booleanos.
Los operadores lgicos (AND, OR y NOT), sirven para evaluar condiciones complejas.
NOT sirve para negar una condicin. Ejemplo:
booIean mayorDeEdad, menorDeEdad;
int edad = 21;
mayorDeEdad = edad >= 18; //mayorDeEdad ser true
menorDeEdad = !mayorDeEdad; //menorDeEdad ser false
El operador && (AND) sirve para evaluar dos expresiones de modo que si ambas son
ciertas, el resultado ser true sino el resultado ser faIse. Ejemplo:
booIean carnetConducir=true;
int edad=20;
booIean puedeConducir= (edad>=18) && carnetConducir;
//Si la edad es de al menos 18 aos y carnetConducir es
//true, puedeConducir es true
El operador || (OR) sirve tambin para evaluar dos expresiones. El resultado ser trae si
al menos uno de las expresiones es true. Ejemplo:
booIean nieva =true, llueve=faIse, graniza=faIse;
booIean malTiempo= nieva || llueve || graniza;
"0#0 1peradores De 5it
Manipulan los bits de los nmeros. Son:
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%
Instituto de Educacin Superior
San Ignacio de Monterrico
"0#0! 1peradores De +signacin
Permiten asignar valores a una variable. El fundamental es =. Pero sin embargo se
pueden usar expresiones ms complejas como:
x += 3;
En el ejemplo anterior lo que se hace es sumar 3 a la x (es lo mismo x+=3, que x=x+3).
Eso se puede hacer tambin con todos estos operadores:
Tambin se pueden concatenar asignaciones:
x1 = x2 = x3 = 5;
Otros operadores de asignacin son ++ (incremento) y - - (decremento). Ejemplo:
x++; //esto es x=x+1;
x--; //esto es x=x-1;
Pero hay dos formas de utilizar el incremento y el decremento. Se puede usar por
ejemplo x++ o ++x. La diferencia estriba en el modo en el que se comporta la asignacin.
Ejemplo:
int x=5, y=5, z;
z=x++; //) vale (* + vale ,
z=++y; //) vale ,* y vale ,
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!&
Instituto de Educacin Superior
San Ignacio de Monterrico
"0#0" 1perador 6
Este operador (conocido como if de una lnea) permite ejecutar una instruccin u otra
segn el valor de la expresin. Sintaxis:
e7presionlogica?(alorSi8erdadero9(alorSiFalso:
Ejemplo:
paga=(edad>18)?6000:3000;
En este caso si la variable edad es mayor de 18, la paga ser de 6000, sino ser de
3000.
Se evala una condicin y segn es cierta o no se devuelve un valor u otro. Ntese que
esta funcin ha de devolver un valor y no una expresin correcta. Es decir, no
funcionara:
(edad>18)? paga=6000: paga=3000; ;E3313<<<<
"0#0# 1perador Entero De Concatenacin De Cadenas
Cuando una cadena de texto y una expresin que no sea de tipo cadena se combinan
usando el operador de concatenacin de cadenas (+), el resultado es una nueva cadena.
Dependiendo de la expresin y de su contenido, podremos obtener los siguientes
resultados:
Si la expresin es un tipo de referencia con valor null, se obtendr una nueva
cadena igual a la cadena original ms la cadena null.
Si la expresin es un tipo de referencia con valor distinto de null, se obtendr una
cadena igual a la original ms el valor devuelto por el mtodo toString() del tipo de
referencia.
Si la expresin es un tipo primitivo, se obtendr una cadena igual a la original ms
el valor del tipo primitivo representado como cadena.
Veamos unos ejemplos sobre las posibles concatenaciones expuestas:
String inicial = ABC;
String nulo = null;
String nonulo = def;
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!1
Instituto de Educacin Superior
San Ignacio de Monterrico
byte numero = 23;
String caso1 = inicial + nulo; // Se asigna a la variable el valor ABCnull
String caso2 = inicial + nonulo; // Se asigna a la variable el valor ABCdef
String caso3 = inicial + numero; // Se asigna a la variable el valor ABC23
6.7.8 Operadores De Referencias
Se trata de operadores que operan sobre valores de tipo de referencia, esto es, sobre
referencias a objetos, interfaces y arrays. Existen distintas categoras y vamos a verlas
detalladamente a continuacin.
6.7.9 Operadores De Referencias Para Acceso A Campos
El acceso a los campos se realiza mediante el operador punto (.), por ello esta notacin
tambin recibe el nombre de notacin de punto. En este tipo de expresiones, el
elemento que est a la izquierda del punto identifica a la clase, objeto o interfaz a la que
pertenece el elemento que est a la derecha del punto. Por ejemplo, para referirnos a la
constante MAX_VALUE de la clase Float lo haramos con la siguiente expresin:
Float.MAX_VALUE.
Existen dos calificadores especiales que se pueden utilizar para acceder a los campos
desde el interior de un objeto. Estos calificadores son las palabras this y super. La
primera hace referencia al objeto al que est asociado el mtodo. La segunda se utiliza
para hacer referencia a los campos de la clase padre.
6.7.10 Operadores De Referencias Para Invocacin De Mtodos
La invocacin de mtodos, al igual que para el acceso a campos, se realiza mediante el
operador punto.
Tambin pueden usarse los calificadores this y super. Ambos ofrecen la misma
funcionalidad que tienen los correspondientes para el acceso a campos.
6.7.11 Operadores De Conversin De Tipos De Referencia
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!2
Instituto de Educacin Superior
San Ignacio de Monterrico
Las operaciones de conversin de tipos se utilizan para convertir una referencia de objeto
a un cierto tipo.
Pero existen ciertos requisitos para permitir la conversin. El tipo de un objeto slo puede
convertirse al de su propia clase, al de una de sus superclases, al de una interfaz que sea
implementada por su propia clase o al de una interfaz que sea implementada por alguna
de sus superclases.
Los tipos de referencia se convierten usando como operador el nombre entre parntesis
de la clase a la cual se quiere convertir y anteponindolo a la expresin a convertir. En el
siguiente ejemplo se supone la existencia de dos clases: FiguraGeometrica y
Rectangulo, donde la segunda es descendiente de la primera.
FiguraGeometrica figura = new Rectangulo ();
Rectangulo rectangulo = (Rectangulo) figura;
6.7.12 Operador De Tipo De Referencia
En Java es sumamente importante la clase a la que pertenece un tipo de referencia.
Puesto que se permite la conversin entre tipos, se hace necesario que podamos
comprobar desde el cdigo si una determinada conversin puede realizarse.
Para determinar si un objeto es una instancia de una clase concreta, disponemos del
operador instanceof que devuelve un valor booleano o genera una excepcin. El primer
operando debe ser un tipo de referencia y el segundo debe ser un nombre de clase.
Vamos a ver en la siguiente relacin los posibles casos:
Si el primer operando es null (significara que no apunta a ningn objeto
instanciado), el resultado es false.
Si el primer operando es distinto de null y es posible convertirlo a la clase que
especifica el segundo operando, el resultado ser true.
Si el primer operando es distinto de null y no es un descendiente del tipo
especificado por el segundo operando, la instruccin es ilegal y causara un error
de ejecucin.
En el siguiente ejemplo se resumen los comportamientos que se acaban de describir:
String s1 = texto;
String s2 = null;
boolean b1 = s1 instanceof String; // b1 toma el valor true
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!3
Instituto de Educacin Superior
San Ignacio de Monterrico
boolean b2 = s2 instanceof String; // b2 toma el valor false
6.8 PRECEDENCIA
A veces hay expresiones con operadores que resultan confusas. Por ejemplo en:
resultado = 8 + 4 / 2;
Es difcil saber el resultado. Cul es? Seis o diez? La respuesta es 10 y la razn es
que el operador de divisin siempre precede en el orden de ejecucin al de la suma. Es
decir, siempre se ejecuta antes la divisin que la suma. Siempre se pueden usar
parntesis para forzar el orden deseado:
resultado = (8 + 4) / 2;
Ahora no hay duda, el resultado es seis. No obstante el orden de precedencia de los
operadores Java es:
En la tabla anterior los operadores con mayor precedencia est en la parte superior, los
de menor precedencia en la parte inferior. De izquierda a derecha la precedencia es la
misma. Es decir, tiene la misma precedencia el operador de suma que el de resta.
Esto ltimo provoca conflictos, por ejemplo en:
resultado = 9 / 3 * 3;
El resultado podra ser uno nueve. En este caso el resultado es nueve, porque la
divisin y el producto tienen la misma precedencia; por ello el compilador de Java realiza
primero la operacin que este ms a la izquierda, que en este caso es la divisin. Una
vez ms los parntesis podran evitar estos conflictos.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!
Instituto de Educacin Superior
San Ignacio de Monterrico
6.9 CONSTANTES
6.9.1 Constantes LiteraIes
Por su parte, las constantes IiteraIes son representaciones literales de datos en el
cdigo fuente. Estos valores se emplean para inicializar variables o para usarlas en
expresiones en las que se requieren valores constantes.
Las constantes literales pueden usarse para referirse explcitamente a uno de los tipos
siguientes: int, long, float, double, boolean, char, String y null. En caso de que
necesitramos representar un tipo primitivo distinto de los indicados, podramos hacer
una conversin explcita al tipo deseado. Por otra parte, los objetos no pueden ser
representados mediante estas constantes, y por tanto, no existen constantes literales de
tipo de referencia.
6.9.2 Constantes Enteras
Las constantes enteras se representan por un valor que est formado slo por dgitos
numricos y no tienen la coma decimal. Si el nmero no comienza por cero, representa
un nmero decimal (en base 10).
Para representar constantes de tipo long se emplea el mismo mtodo pero aadiendo al
final la letra L.
Est permitido el empleo de la letra L en minsculas, pero no debe usarse ya que puede
confundirse con el nmero uno.
Adems de representaciones en formato decimal, se pueden representar constantes en
los formatos octal y hexadecimal. Las constantes octales se representan anteponiendo un
cero al propio nmero, que adems, slo podr estar formado por los dgitos del 0 al 7.
Por su parte, las constantes hexadecimales se representan anteponiendo 0x o 0X y
permitiendo que los dgitos del nmero puedan ser del 0 al 9 y las letras de la A a la F (en
maysculas o minsculas). Las constantes octales y hexadecimales son de tipo entero a
menos que estn seguidas por la letra L, en cuyo caso seran de tipo long.
int a = 1002; // Tipo int
long b = 1002L; // Tipo long
int c = 053; // Tipo int en octal
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!!
Instituto de Educacin Superior
San Ignacio de Monterrico
int d = 053L; // Tipo long en octal
int e = 0X002B ; // Tipo int en hexadecimal
int f = 0X002BL; // Tipo long en hexadecimal
El tipo char es un tipo entero, no obstante se trata de un tipo especial pensado para
almacenar caracteres Unicode. Estos ltimos son similares a los caracteres ASC en que
estn pensados para almacenar smbolos, nmeros y caracteres. Sin embargo, el rango
del tipo char es mucho mayor porque permite representar caracteres de casi todos los
idiomas del mundo.
Las constantes literales de tipo char pueden representarse de dos formas distintas:
Encerrando un nico carcter entre comillas simples.
Utilizando una secuencia de escape, que es muy til para representar caracteres
que no pueden escribirse mediante el teclado. La secuencia de escape se
representa por una barra inclinada inversa (\) seguida de un nmero octal de tres
dgitos, o bien por la barra seguida de la letra u y de un nmero hexadecimal de
cuatro dgitos. La secuencia de escape tambin debe ir encerrada entre comillas
simples. Tambin existe una serie de secuencias de escape especiales que se
utilizan para representar algunos de los caracteres ASC ms comunes. En la
siguiente tabla se relacionan todos.
6.9.3 Constantes De Coma FIotante
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!"
Instituto de Educacin Superior
San Ignacio de Monterrico
Se expresan mediante un valor numrico que incluya al menos una posicin decimal. A
menos que se indique otra cosa, las constantes de coma flotante sern de tipo double.
Para denotar que la constante sea de tipo float es necesario posponer la letra f o F.
Por claridad, tambin pueden expresarse las constantes de tipo double posponiendo la
letra d o D al nmero.
Este tipo de constantes tambin pueden expresarse mediante la notacin exponencial,
que define un nmero en dos partes: la mantisa y el exponente. La mantisa es un nmero
en coma flotante con un dgito significativo y cierto nmero de decimales. El exponente es
un nmero que representa la potencia de 10 que multiplica a la mantisa. Entre la mantisa
y el exponente se debe poner la letra e o E.
double a = 123.4; // Tipo double
float b = 123.4F; // Tipo float
double c = 4.502e-12; // Tipo double en notacin exponencial.
6.9.4 Constantes De Cadena
Las constantes de cadena se representan por una secuencia de caracteres encerrados
entre comillas dobles. Dentro de ellas se pueden incluir las secuencias de escape que
antes mencionamos. Veamos algunos ejemplos:
String a = Texto simple; // Texto simple
String b = Esta es la letra \u0041;
// Usando una secuencia de escape para representar la letra A
String c = El proceso ha terminado.\nPulse una tecla; // Texto en dos lneas
6.9.5 Constantes BooIeanas
Existen dos: true y faIse. Al contrario que en otros lenguajes de programacin, ninguna
de estas constantes puede ser representada mediante un valor entero usando como
criterio la igualdad a cero.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!#
Instituto de Educacin Superior
San Ignacio de Monterrico
6.9.6 Constante "NuII"
Existe una constante nula (nuII) que podemos usarla para representar el valor nuII.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!$
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 7
SOFTWARE JAVA
Formando Emprendedores De Calidad Para Un Mundo Empresarial
!%
Instituto de Educacin Superior
San Ignacio de Monterrico
El software de Java contempla 3 plataformas para el desarrollo de aplicaciones:
7.1 J2SE (JAVA 2 STANDARD EDITION)
Es el conjunto de herramientas software que permite el desarrollo y la ejecucin de
programas Java destinados al lado cliente. Se le suele llamar SDK (Software
Development Kit) o Kit de Desarrollo de Programas. Es gratuito y de libre distribucin. Se
puede descargar desde la pgina oficial de Sun Microsystems relacionada con Java
http://java.sun.com/.
Dentro del J2SE se incluyen el compilador y la JVM (Java Virtual Machine) o Mquina
virtual de Java. Tambin se la conoce como ntrprete de Java. Cada plataforma tiene su
propia versin. En la pgina de Java dentro de Sun puede descargarse el J2SE para
Windows, Linux, Solaris, etc. Si se trabaja con sistemas operativos menos corrientes
como MacOS de Apple, AX de BM, HP-UX de Hewlett-Packard, etc. conviene ir a
http://lopica.sourceforge.net/vm.html
7.2 J2EE (JAVA 2 ENTERPRISE EDITION)
Plataforma del lenguaje Java destinada al desarrollo de aplicaciones empresariales
estructuradas tpicamente en tres capas: capa de presentacin de datos, capa de lgica
de negocio y capa de datos persistentes (bases de datos). Se compone de un conjunto
de estndares y bibliotecas Java que permiten la creacin de las aplicaciones
empresariales anteriormente citadas. Esta plataforma se utiliza sobre todo para
programacin en servidores. Sin conocer lo fundamental de J2SE, resulta inviable
introducirse en J2EE.
7.3 J2ME (JAVA 2 MICRO EDITION)
Plataforma del lenguaje Java destinada al desarrollo de aplicaciones para pequeos
dispositivos mviles de memoria limitada, poca capacidad de procesamiento y con
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"&
Instituto de Educacin Superior
San Ignacio de Monterrico
interfaces grficas limitadas. Tpicamente telfonos mviles, PDAs (Personal Assistent
Digital), Pockets PCs, televisiones, relojes, sistemas de ayuda para automviles, tarjetas,
etc. Como en J2EE, la base para programar mediante J2ME, es J2SE.
7.4 EL ENTORNO DE DESARROLLO DE JAVA
Existen distintos programas comerciales que permiten desarrollar cdigo Java. La
compaa Sun, creadora de Java, distribuye gratuitamente el Java(tm) Development Kit
(JDK). Se trata de un conjunto de programas y libreras que permiten desarrollar,
compilar y ejecutar programas en Java.
ncorpora adems la posibilidad de ejecutar parcialmente el programa, deteniendo la
ejecucin en el punto deseado y estudiando en cada momento el valor de cada una de
las variables (con el denominado Debugger). Cualquier programador con un mnimo de
experiencia sabe que una parte muy importante (muchas veces la mayor parte) del
tiempo destinado a la elaboracin de un programa se destina a la deteccin y correccin
de errores. Existe tambin una versin reducida del JDK, denominada JRE (Java
Runtime Environment) destinada nicamente a ejecutar cdigo Java (no permite
compilar).
Los DEs (ntegrated Development Environment), tal y como su nombre indica, son
entornos de desarrollo integrados. En un mismo programa es posible escribir el cdigo
Java, compilarlo y ejecutarlo sin tener que cambiar de aplicacin. Algunos incluyen una
herramienta para realizar Debug grficamente, frente a la versin que incorpora el JDK
basada en la utilizacin de una consola (denominada habitualmente ventana de
comandos de MS-DOS, en Windows NT/95/98) bastante difcil y pesada de utilizar. Estos
entornos integrados permiten desarrollar las aplicaciones de forma mucho ms rpida,
incorporando en muchos casos libreras con componentes ya desarrollados, los cuales se
incorporan al proyecto o programa. Como inconvenientes se pueden sealar algunos
fallos de compatibilidad entre plataformas, y ficheros resultantes de mayor tamao que
los basados en clases estndar.
Algunos DEs que podemos citar son: Jcreator, Netbeans, Eclipse y Jdeveloper entre
otros.
7.5 BYTECODES
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"1
Instituto de Educacin Superior
San Ignacio de Monterrico
Un programa C o C++ es totalmente ejecutable y eso hace que no sea independiente de
la plataforma y que su tamao normalmente se dispare ya que dentro del cdigo final hay
que incluir las libreras de la plataforma.
roceso de compilacin de un pro!rama C--
Los programas Java no son ejecutables, no se compilan como los programas en C o C+
+.
En su lugar son interpretados por una aplicacin conocida como la mquina virtuaI de
Java (JVM). Gracias a ello no tienen porque incluir todo el cdigo y libreras propias de
cada sistema.
Previamente el cdigo fuente en Java se tiene que precompilar generando un cdigo (que
no es directamente ejecutable) previo conocido como '=tecode o )>code. Ese cdigo
(generado normalmente en archivos con extensin cIass) es el que es ejecutado por la
mquina virtual de Java que interpreta las instrucciones de los bytecodes, ejecutando el
cdigo de la aplicacin.
El bytecode se puede ejecutar en cualquier plataforma, lo nico que se requiere es que
esa plataforma posea un intrprete adecuado (la mquina virtual de esa plataforma).
7.6 LA JAVA VIRTUAL MACHINE
La existencia de distintos tipos de procesadores y ordenadores llev a los ingenieros de
Sun a la conclusin de que era muy importante conseguir un software que no dependiera
del tipo de procesador utilizado. Se plante la necesidad de conseguir un cdigo capaz
de ejecutarse en cualquier tipo de mquina. Una vez compilado no debera ser necesaria
ninguna modificacin por el hecho de cambiar de procesador o de ejecutarlo en otra
mquina. La clave consisti en desarrollar un cdigo neutro el cual estuviera preparado
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"2
Instituto de Educacin Superior
San Ignacio de Monterrico
para ser ejecutado sobre una mquina hipottica o virtual, denominada Java Virtual
Machina (JVM). Es esta JVM quien interpreta este cdigo neutro convirtindolo a cdigo
particular de la CPU utilizada. Se evita tener que realizar un programa diferente para
cada CPU o plataforma.
La JVM es el intrprete de Java. Ejecuta los bytecodes (ficheros compilados con
extensin *.class) creados por el compilador de Java (javac.exe). Tiene numerosas
opciones entre las que destaca la posibilidad de utilizar el denominado JT (Just-n-Time
Compiler), que puede mejorar entre 10 y 20 veces la velocidad de ejecucin de un
programa. La JVM, adems es un programa muy pequeo y que se distribuye
gratuitamente para prcticamente todos los sistemas operativos. A este mtodo de
ejecucin de programas en tiempo real se le llama .ust in /ime (JT).
roceso de compilacin de un pro!rama .ava
7.7 LAS VARIABLES PATH Y CLASSPATH
Para poder compilar y ejecutar las aplicaciones Java es necesario tener acceso al
directorio en el que se encuentran el compilador y el intrprete. Para poder compilar y
ejecutar cmodamente deberamos aadir el directorio \bin del JDK a la variable de
entorno PATH. Para los usuarios de DOS y Windows, desde el smbolo del sistema
tendremos que escribir: set PATH=%PATH%;c:\java\bin
En la explicacin anterior slo se cambia la variable de entorno PATH para la sesin en
curso (la ventana actual). La variable de entorno PATH no es especfica de Java, si no
que ms bien es un mecanismo de los sistemas operativos para localizar programas que
no se encuentran en el directorio actual. Pero ahora vamos con otra variable de entorno
que s lo es, estamos hablando de CLASSPATH.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"3
Instituto de Educacin Superior
San Ignacio de Monterrico
Java carga dinmicamente las clases segn la necesidad, pero dnde busca esas
clases?. Este es el papel de la variable de entorno CLASSPATH, indicar a Java donde
buscar las clases y libreras propias (el AP de Java) y las clases de usuario. A partir del
JDK versin 1.1.4 slo es necesario usar esta variable para indicar las clases de usuario.
Veamos un ejemplo. Supongamos que disponemos de una librera de clases que vamos
a usar habitualmente y que est comprimida en un fichero llamado milibreria.zip.
Tambin nos interesa usar un conjunto de clases sin comprimir que estn todas situadas
en un mismo directorio llamado misclases.
Para los usuarios de DOS y Windows, la librera est en c:\desarrollo\libreria y el
conjunto de clases est en c:\desarrollo\clases. Desde el smbolo del sistema
tendremos que escribir:
set CLASSPATH=.;c:\desarrollo\libreria\milibreria.zip;c:\desarrollo\misclases
Para que los cambios en las variables path y cIasspath sean permanentes hay que
comprobar que la carpeta con los ejecutables del kit de desarrollo esten incluidos en la
variable de entorno path.
Esto lo podemos comprobar escribiendo path en la lnea de comandos. Si la carpeta del
kit de desarrollo no est incluida, habr que hacerlo. Para ello en Windows 2000 o XP:
1. Pulsar el botn derecho sobre Mi PC y elegir Propiedades
2. r al apartado Opciones avanzadas
3. Hacer clic sobre el botn VariabIes de entorno
4. Aadir a la lista de la variable Path la ruta a la carpeta con los programas del JDK.
Ejemplo de contenido de la variable path:
PATH=C:\WNNT\SYSTEM32;C:\WNNT;C:\WNNT\SYSTEM32\WBEM;C:\Archivos de
programa\Microsoft Visual Studio\Common\Tools\WinNT;C:\Archivos de
programa\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Archivos de
programa\Microsoft Visual Studio\Common\Tools;C:\Archivos de programa\Microsoft
Visual Studio\VC98\bin;C:\Archivos de programa\j2sdk_nb\j2sdk1.4.2\bin
En negrita est sealada la ruta a la carpeta de ejecutables (carpeta bin) del kit de
desarrollo. Est carpeta vara segn la instalacin, para acceder a la variable
CLASSPATH: si estamos en un windows NT-2000-XP:
5. Pulsar el botn derecho sobre Mi PC y elegir Propiedades
6. r al apartado Opciones avanzadas
7. Hacer clic sobre el botn Variables de entorno
8. Aadir la variable CLASSPATH en la que escribiremos simplemente un punto:
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"
Instituto de Educacin Superior
San Ignacio de Monterrico
cIasspath=.
Noten que en CLASSPATH agregu el directorio actual (.), para poder compilar y ejecutar
desde cualquier directorio.
7.8 COMPILACIN Y EJECUCION DE CODIGO JAVA
El compilador Java es una de las herramientas de desarrollo incluidas en el JDK. Realiza
un anlisis de sintaxis del cdigo escrito en los ficheros fuente de Java (con extensin
*.java). Si no encuentra errores en el cdigo genera los ficheros compilados (con
extensin *.class). 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. Se aconseja consultar la documentacin de la versin del
JDK utilizada para obtener una informacin detallada de las distintas posibilidades.
La compilacin del cdigo java se realiza mediante el programa javac incluido en el
software de desarrollo de java. La forma de compilar es (desde la lnea de comandos):
javac arc0ivo'java
El resultado de esto es un archivo con el mismo nombre que el archivo java pero con la
extensin cIass. Esto ya es el archivo con el cdigo en forma de bytecodes. Es decir con
el cdigo precompilado.
Si la clase es ejecutable (slo lo son si contienen el mtodo main), el cdigo se puede
interpretar usando el programa java del kit de desarrollo. Sintaxis:
java arc0ivo'class
Estos comandos hay que escribirlos desde la lnea de comandos de en la carpeta en la
que se encuentre el programa. Pero antes hay que asegurarse de que los programas del
kit de desarrollo son accesibles desde cualquier carpeta del sistema. Para ello hay que
comprobar que la carpeta con los ejecutables del kit de desarrollo est incluida en la
variable de entorno path.
Compilacin de un pro!rama .ava
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"!
JAVA
Java Byte-
code
javac
java
.java .class
Environment
Java VM
Instituto de Educacin Superior
San Ignacio de Monterrico
7.9 TIPOS DE ARCHIVOS
java: Es la extensin de los archivos fuente del lenguaje java, ejem.
bienvenido.java, Miapplet.java.
cIass: El resultado de compilar un archivo fuente java es un archivo en byte-code
con extensin class, ejem. bienvenido.class, Miapplet.class. El comando usado
para compilar los arhivos con extensin java es javac y para su ejecucin el
comando java que vienen incluidos en el JDK (Java Development Kit) de Sun
Microsystems.
jar/zip: Las clases desarrolladas en java suelen por lo general guardarse en estos
tipos de archivos comprimidos.
7.10 EJEMPLO DE PRUEBA
EjempIo 1
//archivo con el nombre Bienvenido.java
class Bienvenido {
public static void main(String [] args) {
System.out.println("Bienvenido a Java!");
}
}
Grbalo en TuCarpeta con el nombre Bienvenido.java luego compila y ejecuta el
programa anterior, es decir:
javac Bienvenido.java
java Bienvenido
Lnea 1: es un simple comentario de tipo lnea en el que hemos colocado el nombre del
fichero. El compilador ignorar todo lo que va desde los caracteres // hasta el final de la
lnea. Los comentarios son de mucha utilidad, tanto para otras personas que tengan que
revisar el cdigo, como para nosotros mismos en futuras revisiones.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
""
Instituto de Educacin Superior
San Ignacio de Monterrico
Lnea 2: declara el nombre de la clase. Usamos la palabra reservada class seguida del
nombre que queremos darle a nuestra clase, en este caso es Bienvenido. Ya sabemos
que Java es un lenguaje orientado a objetos, por tanto, nuestro programa ha de ser
definido como una clase. Por convencin, las clases Java se definen con la primera letra
en maysculas.
EjempIo 2
class J001 {
public static void main(String [] args) {
System.out.println("Hola\nQue tal");
System.out.println("Uno\nDos\nTres\nCuatro");
}
}
EjempIo 3
class J002 {
public static void main(String [] args) {
System.out.println("Hola");
System.out.println("Adios");
System.out.println("");
System.out.print("Pues vale");
System.out.print("Eso");
System.out.print("Vale");
}
}
printIn("mensaje") Escribe el mensaje y luego se produce un cambio de lnea que
equivale a pulsar [Return]
print("mensaje") Escribe el mensaje y el cursor se sita al final del mensaje y en la
misma lnea.
Para recordarlo piensa en la siguiente frmula:
printIn = print + In (lnea nueva)
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"#
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 8
TEORIAS DE OBJETOS
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"$
Instituto de Educacin Superior
San Ignacio de Monterrico
8.1 ESTRUCTURA DE UNA CLASE
De?inir +tri'utos De 4a Clase *8aria'les@ Propiedades 1 Datos De 4a Clases/
Cuando se definen los datos de una determinada clase, se debe indicar el tipo de
propiedad que es (String, int, double, int[][],...) y el especificador de acceso (public,
private,...). El especificador indica en qu partes del cdigo ese dato ser visible.
Especi?icadores De +cceso
Formando Emprendedores De Calidad Para Un Mundo Empresarial
"%
Instituto de Educacin Superior
San Ignacio de Monterrico
Se trata de una palabra que antecede a la declaracin de una clase, mtodo o propiedad
de clase. Hay tres posibilidades: pubIic, protected y private. Una cuarta posibilidad es
no utilizar ninguna de estas tres palabras; entonces se dice que se ha utilizado el
modificador por defecto (?riendl=).
Los especificadores determinan el alcance de la visibilidad del elemento al que se
refieren. Referidos por ejemplo a un mtodo, pueden hacer que el mtodo sea visible slo
para la clase que lo utiliza (private), para stas y las heredadas (protected), para todas
las clases del mismo paquete (?riendl=) o para cualquier clase del tipo que sea (pubIic).
En la siguiente tabla se puede observar la visibilidad de cada especificador:
Ejemplo:
cIass Persona {
pubIic String nombre;//Se puede acceder desde cualquier clase
private int contrasea;//Slo se puede acceder desde la
//clase Persona
protected String direccin; //Acceden a esta propiedad
//esta clase y sus descendientes
Por lo general las propiedades de una clase suelen ser privadas o protegidas, a no ser
que se trate de un valor constante, en cuyo caso se declararn como pblicos.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#&
Instituto de Educacin Superior
San Ignacio de Monterrico
Las variables locales de una clase pueden ser inicializadas.
cIass auto{
pubIic nRuedas=4;
4a clase persona en UM40 El signo A signi?ica pu'lic@
el signo B protected = el signo > pri(ate
8.2 DEFINIR MTODOS DE CLASE (OPERACIONES O FUNCIONES DE CLASE)
Un mtodo es una llamada a una operacin de un determinado objeto. Al realizar esta
llamada (tambin se le llama enviar un mensaje), el control del programa pasa a ese
mtodo y lo mantendr hasta que el mtodo finalice o se haga uso de return.
Para que un mtodo pueda trabajar, normalmente hay que pasarle unos datos en forma
de argumentos o parmetros, cada uno de los cuales se separa por comas.
Ejemplos de llamadas:
baln.botar(); //sin argumentos
miCoche.acelerar(10);
ficha.comer(posicin15);//posicin 15 - variable que se pasa como argumento
partida.empezarPartida(18:15,colores);
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#1
Instituto de Educacin Superior
San Ignacio de Monterrico
Los mtodos de la clase se definen dentro de sta. Hay que indicar un modificador de
acceso (pubIic, private, protected o ninguno, al igual que ocurre con las variables y con
la propia clase) y un tipo de datos, que indica qu tipo de valores devuelve el mtodo.
Esto ltimo se debe a que los mtodos son funciones que pueden devolver un
determinado valor (un entero, un texto, un valor lgico,...) mediante el comando return. Si
el mtodo no devuelve ningn valor, entonces se utiliza el tipo void que significa que no
devuelve valores (en ese caso el mtodo no tendr instruccin return).
El ltimo detalle a tener en cuenta es que los mtodos casi siempre necesitan datos para
realizar la operacin, estos datos van entre parntesis y se les llama argumentos. Al
definir el mtodo hay que indicar que argumentos se necesitan y de qu tipo son.
Ejemplo:
pubIic cIass vehiculo {
$11 2uncin principal 1$
int ruedas;
private doubIe velocidad=0;
String nombre;
$11 3umenta la velocidad1$
pubIic void acelerar(doubIe cantidad) {
velocidad += cantidad;
}
$11 Disminuye la velocidad1$
pubIic void frenar(doubIe cantidad) {
velocidad -= cantidad;
}
$11 Devuelve la velocidad1$
pubIic doubIe obtenerVelocidad(){
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#2
Instituto de Educacin Superior
San Ignacio de Monterrico
return velocidad;
}
pubIic static void main(String args[]){
(eCiculo miCoche = new vehiculo();
miCoche.acelerar(12);
miCoche.frenar(5);
System.out.println(miCoche.obtenerVelocidad());
} $$ Da 4'5
En la clase anterior, los mtodos aceIerar y frenar son de tipo void por eso no tienen
sentencia return. Sin embargo el mtodo obtenerVeIocidad es de tipo double por lo que
su resultado es devuelto por la sentencia return y puede ser escrito en pantalla.
8ersin UM4 de la clase CocCe
8.3 ARGUMENTOS POR VALOR Y POR REFERENCIA
En todos los lenguajes ste es un tema muy importante. Los argumentos son los datos
que recibe un mtodo y que necesita para funcionar. Ejemplo:
pubIic cIass Matemticas {
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#3
Instituto de Educacin Superior
San Ignacio de Monterrico
pubIic doubIe factorial(int n){
doubIe resultado;
for (resultado=n;n>1;n--) resultado*=n;
return resultado;
}
...
pubIic static void main(String args[]){
MatemDticas m1=new Matemticas();
doubIe x=m1.factorial(25);//Llamada al mtodo
}
En el ejemplo anterior, el valor 25 es un argumento requerido por el mtodo factoriaI
para que ste devuelva el resultado (que ser el factorial de 25). En el cdigo del mtodo
factorial, este valor 25 es copiado a la variable n, que es la encargada de almacenar y
utilizar este valor.
Se dice que los argumentos son por valor, si la funcin recibe una copia de esos datos,
es decir la variable que se pasa como argumento no estar afectada por el cdigo.
Ejemplo:
cIass prueba {
pubIic void metodo1(int entero){
entero=18;
...
}
...
pubIic static void main(String args[]){
int x=24;
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#
Instituto de Educacin Superior
San Ignacio de Monterrico
prue'a miPrueba = new prueba();
miPrueba.metodo1(x);
System.out.println(x); $$Escribe #6* no "7
}
Este es un ejemplo de paso de parmetros por valor. La variable x se pasa como
argumento o parmetro para el mtodo metodo", all la variable entero recibe una copia
del vaIor de x en la variable entero, y a esa copia se le asigna el valor 18. Sin embargo
la variable x no est afectada por esta asignacin.
Sin embargo en este otro caso:
cIass prueba {
pubIic void metodo1(int[] entero){
entero[0]=18;
...
}
...
pubIic static void main(String args[]){
int x[]={24,24};
prue'a miPrueba = new prueba();
miPrueba.metodo1(x);
System.out.println(x[0]); $$Escribe "7* no #6
Aqu s que la variable x est afectada por la asignacin entero[0]=18. La razn es porque
en este caso el mtodo no recibe el valor de esta variable, sino la referencia, es decir la
direccin fsica de esta variable. entero no es una replica de +, es la propia x llamada de
otra forma.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#!
Instituto de Educacin Superior
San Ignacio de Monterrico
Los tipos bsicos (int, doubIe, char, booIean, fIoat, short y byte) se pasan por valor.
Tambin se pasan por valor las variables String. Los objetos y arrays se pasan por
referencia.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#"
Instituto de Educacin Superior
San Ignacio de Monterrico
8.4 MTODOS Y CONSTRUCTORES
Los mtodos son funciones que pueden ser llamadas dentro de la clase o por otras
clases. El constructor es un tipo especfico de mtodo que siempre tiene el mismo
nombre que la clase.
Cuando se declara una clase en Java, se pueden declarar uno o ms constructores
opcionales que realizan la inicializacin cuando se instancia (se crea una ocurrencia) un
objeto de dicha clase.
Utilizando el cdigo de ejemplo anterior, cuando se crea una nueva instancia de MiClase,
se crean (instancian) todos los mtodos y variables, y se llama al constructor de la clase:
MiClase mc;
mc = new MiClase();
La palabra clave ne8 se usa para crear una instancia de la clase. Antes de ser
instanciada con ne8 no consume memoria, simplemente es una declaracin de tipo.
Despus de ser instanciado un nuevo objeto mc, el valor de i en el objeto mc ser igual a
10. Se puede referenciar la variable (de instancia) i con el nombre del objeto:
mc.i++; // incrementa la instancia de i de mc
Al tener mc todas las variables y mtodos de MiClase, se puede usar la primera sintaxis
para llamar al mtodo 9uma:a:i;< utilizando el nuevo nombre de clase mc:
mc.Suma_a_i( 10 );
y ahora la variable mc.i vale 21.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
##
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 9
ESTRUCTURAS DE CONTROL DE FLUJO
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#$
Instituto de Educacin Superior
San Ignacio de Monterrico
%01 IF
Permite crear estructuras condicionales simples; en las que al cumplirse una condicin se
ejecuta una serie de instrucciones. Se puede hacer que otro conjunto de instrucciones se
ejecute si la condicin es falsa. La condicin es cualquier expresin que devuelva un
resultado de true o faIse. La sintaxis de la instruccin if es:
if (condicin) {
instrucciones =ue se ejecutan si la condicin es true
}
eIse {
instrucciones =ue se ejecutan si la condicin es false
}
La parte eIse es opcional. Ejemplo:
if ((diasemana>=1) && (diasemana<=5)){
trabajar = true;
}
eIse {
trabajar = faIse;
}
Se pueden anidar varios if a la vez. De modo que se comprueban varios valores.
Ejemplo:
if (diasemana==1) dia=Lunes;
eIse if (diasemana==2) dia=Martes;
Formando Emprendedores De Calidad Para Un Mundo Empresarial
#%
Instituto de Educacin Superior
San Ignacio de Monterrico
eIse if (diasemana==3) dia=Mircoles;
eIse if (diasemana==4) dia=Jueves;
eIse if (diasemana==5) dia=Viernes;
eIse if (diasemana==6) dia=Sbado;
eIse if (diasemana==7) dia=Domingo;
eIse dia=?;
9.2 SWITCH
Es la estructura condicional compleja porque permite evaluar varios valores a la vez.
Sintaxis:
switch (e+presin) {
case valor": sentencias si la e+presiona es i!ual al valor">
[break]
case valor#: sentencias si la e+presiona es i!ual al valor#>
[break]
'
'
defauIt:
sentencias =ue se ejecutan si no se cumple nin!una de las anteriores
}
Esta instruccin evala una expresin (que debe ser short, int, byte o char), y segn el
valor de la misma ejecuta instrucciones. Cada case contiene un valor de la expresin; si
efectivamente la expresin equivale a ese valor, se ejecutan las instrucciones de ese
case y de los siguientes.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$&
Instituto de Educacin Superior
San Ignacio de Monterrico
La instruccin break se utiliza para salir del switch. De tal modo que si queremos que
para un determinado valor se ejecuten las instrucciones de un apartado case y slo las
de ese apartado, entonces habr que finalizar ese case con un break.
El bloque defauIt sirve para ejecutar instrucciones para los casos en los que la expresin
no se ajuste a ningn case.
EjempIo 1:
switch (diasemana) {
case 1:
dia=Lunes;
break;
case 2:
dia=Martes;
break;
case 3:
dia=Mircoles;
break;
case 4:
dia=Jueves;
break;
case 5:
dia=Viernes;
break;
case 6:
dia=Sbado;
break;
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$1
Instituto de Educacin Superior
San Ignacio de Monterrico
case 7:
dia=Domingo;
break;
defauIt:
dia=?;
}
EjempIo 2:
switch (diasemana) {
case 1:
case 2:
case 3:
case 4:
case 5:
laborable=true;
break;
case 6:
case 7:
laborable=faIse;
}
9.3 WHILE
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$2
Instituto de Educacin Superior
San Ignacio de Monterrico
La instruccin whiIe permite crear bucles. Un bucle es un conjunto de sentencias que se
repiten si se cumple una determinada condicin. Los bucles whiIe agrupan instrucciones
las cuales se ejecutan continuamente hasta que una condicin que se evala sea falsa.
La condicin se mira antes de entrar dentro del while y cada vez que se termina de
ejecutar las instrucciones del while
Sintaxis:
whiIe (condicin) {
sentencias =ue se ejecutan si la condicin es true
}
Ejemplo (clculo del factorial de un nmero, el factorial de 4 sera: 4*3*2*1):
//factorial de 4
int n=4, factorial=1, temporal=n;
whiIe (temporal>0) {
factorial*=temporal--;
}
9.4 DO WHILE
Crea un bucle muy similar al anterior, en la que tambin las instrucciones del bucle se
ejecutan hasta que una condicin pasa a ser falsa. La diferencia estriba en que en este
tipo de bucle la condicin se evala despus de ejecutar las instrucciones; lo cual
significa que al menos el bucle se ejecuta una vez. Sintaxis:
do {
instrucciones
} whiIe (condicin)
9.5 FOR
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$3
Instituto de Educacin Superior
San Ignacio de Monterrico
Es un bucle ms complejo especialmente pensado para rellenar arrays o para ejecutar
instrucciones controladas por un contador. Una vez ms se ejecutan una serie de
instrucciones en el caso de que se cumpla una determinada condicin. Sintaxis:
for (e+presin?nicial; condicin; e+presinEncadavuelta) {
instrucciones>
}
La expresin iniciaI es una instruccin que se ejecuta una sola vez: al entrar por primera
vez en el bucle for (normalmente esa expresin lo que hace es dar valor inicial al
contador del bucle).
La condicin es cualquier expresin que devuelve un valor lgico. En el caso de que esa
expresin sea verdadera se ejecutan las instrucciones. Cuando la condicin pasa a ser
falsa, el bucle deja de ejecutarse. La condicin se valora cada vez que se terminan de
ejecutar las instrucciones del bucle.
Despus de ejecutarse las instrucciones interiores del bucle, se realiza la expresin que
tiene lugar tras ejecutarse las instrucciones del bucle (que, generalmente, incrementa o
decrementa al contador). Luego se vuelve a evaluar la condicin y as sucesivamente
hasta que la condicin sea falsa.
Ejemplo (factorial):
//factorial de 4
int n=4, factorial=1, temporal=n;
for (temporal=n;temporal>0;temporal--){
factorial *=temporal;
}
Sentencias De Salida De Un 5ucle
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$
Instituto de Educacin Superior
San Ignacio de Monterrico
9.6 BREAK
Es una sentencia que permite salir del bucle en el que se encuentra inmediatamente. Hay
que intentar evitar su uso ya que produce malos hbitos al programar.
9.7 CONTINUE
nstruccin que siempre va colocada dentro de un bucle y que hace que el flujo del
programa ignore el resto de instrucciones del bucle; dicho de otra forma, va hasta la
siguiente iteracin del bucle. Al igual que ocurra con break, hay que intentar evitar su
uso.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$!
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 10
CLASE MATH Y STRING
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$"
Instituto de Educacin Superior
San Ignacio de Monterrico
10.1 CLASE STRING
Para Java las cadenas de texto son objetos especiales. Los textos deben manejarse
creando objetos de tipo String. Ejemplo:
String texto1 = Prueba de texto!;
Las cadenas pueden ocupar varias lneas utilizando el operador de concatenacin +.
String texto2 =Este es un texto que ocupa + "varias lneas, no obstante se puede
+perfectamente encadenar;
Tambin se pueden crear objetos String sin utilizar constantes entrecomilladas, usando
otros constructores:
char[] palabra = {'P','a','l','b','r','a'};//Array de char
String cadena = new String(palabra);
byte[] datos = {97,98,99};
String codificada = new String (datos, 8859_1);
En el ltimo ejemplo la cadena codificada se crea desde un array de tipo byte que
contiene nmeros que sern interpretados como cdigos Unicode. Al asignar, el valor
8859_1 indica la tabla de cdigos a utilizar.
Comparacin Entre 1'Eetos String
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$#
Instituto de Educacin Superior
San Ignacio de Monterrico
Los objetos String no pueden compararse directamente con los operadores de
comparacin. En su lugar se deben utilizar estas expresiones:
cadena"'equaIs(cadena#). El resultado es true si la cadena1 es igual a la
cadena2. Ambas cadenas son variables de tipo String.
cadena"'equaIsIgnoreCase(cadena#). Como la anterior, pero en este caso no se
tienen en cuentas maysculas y minsculas.
s"'compareTo(s#). Compara ambas cadenas, considerando el orden alfabtico.
Si la primera cadena es mayor en orden alfabtico que la segunda devuelve 1, si
son iguales devuelve 0 y si es la segunda la mayor devuelve -1. Hay que tener en
cuenta que el orden no es el del alfabeto espaol, sino que usa la tabla ASC, en
esa tabla la letra @ es mucho mayor que la o.
s"'compareToIgnoreCase(s#). gual que la anterior, slo que adems ignora las
maysculas (disponible desde Java 1.2)
10.2 STRING.VALUEOF
Este mtodo pertenece no slo a la clase String, sino a otras y siempre es un mtodo que
convierte valores de una clase a otra. En el caso de los objetos String, permite convertir
valores que no son de cadena a forma de cadena. Ejemplos:
String numero = String.valueOf(1234);
String fecha = String.valueOf(new Date());
En el ejemplo se observa que este mtodo pertenece a la clase String directamente, no
hay que utilizar el nombre del objeto creado (como se ver ms adelante, es un mtodo
esttico).
10.3 LA CLASE MATH
Se echan de menos operadores matemticos ms potentes en Java. Por ello se ha
incluido una clase especial llamada Math dentro del paquete java.Iang Para poder utilizar
esta clase, se debe incluir esta instruccin:
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$$
Instituto de Educacin Superior
San Ignacio de Monterrico
import java.Iang.Math;
Esta clase posee mtodos muy interesantes para realizar clculos matemticos
complejos. Por ejemplo:
doubIe x= Math.pow(3,3); //x es 33
Math posee dos constantes, que son:
Por otro lado posee numerosos mtodos que son:
Formando Emprendedores De Calidad Para Un Mundo Empresarial
$%
Instituto de Educacin Superior
San Ignacio de Monterrico
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%&
Instituto de Educacin Superior
San Ignacio de Monterrico
CAPITULO 11
ARREGLOS
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%1
Instituto de Educacin Superior
San Ignacio de Monterrico
11.1 ARRAYS UNIDIMENSIONALES
Un array es una coleccin de valores de un mismo tipo engrosados en la misma variable.
De forma que se puede acceder a cada valor independientemente. Para Java adems un
array es un objeto que tiene propiedades que se pueden manipular.
Los arrays solucionan problemas concernientes al manejo de muchas variables que se
refieren a datos similares. Por ejemplo si tuviramos la necesidad de almacenar las notas
de una clase con 18 alumnos, necesitaramos 18 variables, con la tremenda lentitud de
manejo que supone eso. Solamente calcular la nota media requerira una tremenda lnea
de cdigo. Almacenar las notas supondra al menos 18 lneas de cdigo.
Gracias a los arrays se puede crear un conjunto de variables con el mismo nombre. La
diferencia ser que un nmero (ndice del array) distinguir a cada variable. En el caso de
las notas, se puede crear un array llamado notas, que representa a todas las notas de la
clase. Para poner la nota del primer alumno se usara notas[0], el segundo sera notas[1],
etc. (los corchetes permiten especificar el ndice en concreto del array).
La declaracin de un array unidimensional se hace con esta sintaxis: tipo nombre[];
Ejemplo:
doubIe cuentas[]; $$Declara un array =ue almacenar% valores doubles
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%2
Instituto de Educacin Superior
San Ignacio de Monterrico
Declara un array de tipo double. Esta declaracin indica para qu servir el array, pero no
reserva espacio en la RAM al no saberse todava el tamao del mismo.
Tras la declaracin del array, se tiene que iniciar. Eso lo realiza el operador new, que es
el que realmente crea el array indicando un tamao. Cuando se usa new es cuando se
reserva el espacio necesario en memoria. Un array no inicializado es un array nuII.
Ejemplo:
int notas[]; //serAa v%lido tambiBn intFG notas:
notas = new int[3]; //indica =ue el array constar% de tres
//valores de tipo int
///ambiBn se puede 0acer todo a la ve)
//int notasFGHneI intF&G:
En el ejemplo anterior se crea un array de tres enteros (con los tipos bsicos se crea en
memoria el array y se inicializan los valores, los nmeros se inician a 0).
Los valores del array se asignan utilizando el ndice del mismo entre corchetes:
notas[2]=8;
Tambin se pueden asignar valores al array en la propia declaracin:
int notas[] = {8, 7, 9};
int notas2[]= new int[] {8,7,9};//E=uivalente a la anterior
Esto declara e inicializa un array de tres elementos. En el ejemplo lo que significa es que
notas[0] vale 8, notas[1] vale 7 y notas[2] vale 9.
En Java (como en otros lenguajes) el primer elemento de un array es el cero. El primer
elemento del array notas, es notas[0]. Se pueden declarar arrays a cualquier tipo de
datos (enteros, booleanos, doubles, ... e incluso objetos).
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%3
Instituto de Educacin Superior
San Ignacio de Monterrico
La ventaja de usar arrays (volviendo al caso de las notas) es que gracias a un simple
bucle for se puede rellenar o leer fcilmente todos los elementos de un array:
//Calcular la media de las 18 notas
suma=0;
for (int i=0;i<=17;i++){
suma+=nota[i];
}
media=suma/18;
A un array se le puede inicializar las veces que haga falta:
int notas[]=new notas[16];
...
notas=new notas[25];
Pero hay que tener en cuenta que el segundo new hace que se pierda el contenido
anterior. Realmente un array es una referencia a valores que se almacenan en memoria
mediante el operador new, si el operador new se utiliza en la misma referencia, el
anterior contenido se queda sin referencia y, por lo tanto se pierde.
Un array se puede asignar a otro array (si son del mismo tipo):
int notas[];
int ejemplo[]=new int[18];
notas=ejemplo;
En el ltimo punto, notas equivale a ejemplo. Esta asignacin provoca que cualquier
cambio en notas tambin cambie el array ejemplos. Es decir esta asignacin anterior, no
copia los valores del array, sino que notas y ejemplo son referencias al mismo array.
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%
Instituto de Educacin Superior
San Ignacio de Monterrico
Ejemplo:
int notas[]={3,3,3};
int ejemplo[]=notas;
ejemplo= notas;
ejemplo[0]=8;
System.out.println(notas[0]);//Escribir% el nCmero 7
11.2 ARRAYS MULTIDIMENSIONALES
Los arrays adems pueden tener varias dimensiones. Entonces se habla de arrays de
arrays (arrays que contienen arrays) Ejemplo:
int notas[][];
notas es un array que contiene arrays de enteros
notas = new int[3][12];//notas est compuesto por 3 arrays
//de 12 enteros cada uno
notas[0][0]=9;//el primer valor es 0
Puede haber ms dimensiones incluso (notas[3][2][7]). Los arrays multidimensionales se
pueden inicializar de forma ms creativa incluso. Ejemplo:
int notas[][]=new int[5][];//Hay 5 arrays de enteros
notas[0]=new int[100]; //El primer array es de 100 enteros
notas[1]=new int[230]; //El segundo de 230
notas[2]=new int[400];
notas[3]=new int[100];
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%!
Instituto de Educacin Superior
San Ignacio de Monterrico
notas[4]=new int[200];
Hay que tener en cuenta que en el ejemplo anterior, notas[0] es un array de 100 enteros.
Mientras que notas, es un array de 5 arrays de enteros.
Se pueden utilizar ms de dos dimensiones si es necesario.
11.3 LONGITUD DE UN ARRAY
Los arrays poseen un mtodo que permite determinar cunto mide un array. Se trata de
Iength. Ejemplo (continuando del anterior):
System.out.printIn(notas.Iength); //Sale 5
System.out.printIn(notas[2].Iength); //Sale 400
11.4 LA CLASE ARRAYS
En el paquete java.utiIs se encuentra una clase esttica llamada Arrays. Una clase
esttica permite ser utilizada como si fuera un objeto (como ocurre con Math). Esta clase
posee mtodos muy interesantes para utilizar sobre arrays.
Su uso es Arrays.mBtodo;ar!umentos<>
11.4.1 FiII
Permite rellenar todo un array unidimensional con un determinado valor. Sus argumentos
son el array a rellenar y el valor deseado:
int valores[]=new int[23];
Arrays.fill(valores,-1);//Todo el array vale -1
Tambin permite decidir desde que ndice hasta qu ndice rellenamos:
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%"
Instituto de Educacin Superior
San Ignacio de Monterrico
Arrays.fill(valores,5,8,-1);//Del elemento 5 al 7 valdrn -1
11002 EquaIs
Compara dos arrays y devuelve true si son iguales. Se consideran iguales si son del
mismo tipo, tamao y contienen los mismos valores.
11.4.3 Sort
Permite ordenar un array en orden ascendente. Se pueden ordenar slo una serie de
elementos desde un determinado punto hasta un determinado punto.
int x[]={4,5,2,3,7,8,2,3,9,5};
Arrays.sort(x);//Estar ordenado
Arrays.sort(x,2,5);//Ordena del 2 al 4 elemento
11.4.4 BinarySearch
Permite buscar un elemento de forma ultrarrpida en un array ordenado (en un array
desordenado sus resultados son impredecibles). Devuelve el ndice en el que est
colocado el elemento. Ejemplo:
int x[]={1,2,3,4,5,6,7,8,9,10,11,12};
Arrays.sort(x);
System.out.println(Arrays.binarySearch(x,8));//Da 7
11.4.5 System.arraysCopy
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%#
Instituto de Educacin Superior
San Ignacio de Monterrico
La clase System tambin posee un mtodo relacionado con los arrays, dicho mtodo
permite copiar un array en otro. Recibe cinco argumentos: el array que se copia, el ndice
desde que se empieza a copia en el origen, el array destino de la copia, el ndice desde el
que se copia en el destino, y el tamao de la copia (nmero de elementos de la copia).
int uno[]={1,1,2};
int dos[]={3,3,3,3,3,3,3,3,3};
System.arraycopy(uno, 0, dos, 0, uno.length);
for (int i=0;i<=8;i++){
System.out.print(dos[i]+" ");
} //Sale 112333333
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%$
Instituto de Educacin Superior
San Ignacio de Monterrico
BIBLIOGRAFIA
1001 Tips Para Programar Con Java de Vsquez Paragulla.
Java 2 de Ceballos F. J.
Programacin en Java con Jbuilder: Erika Alarcn Herrera-
Christian Crovetto Huerta
El descubrimiento de Java Mark Samns
Formando Emprendedores De Calidad Para Un Mundo Empresarial
%%

Você também pode gostar