Download programación en java - Desarrollo de Software y SIG

Document related concepts
no text concepts found
Transcript
Aplicaciones Empresariales en Java – Programación en Java
PROGRAMACIÓN EN JAVA
BREVE HISTORIA DE JAVA
Java data de 1991, en el que un grupo de ingenieros de Sun Microsystems liderados por Patrick Naughton, Sun
Fellow y James Gosling, deseaban diseñar un lenguaje de computadoras que se pudiera utilizar para dispositivos de
consumo como los computadores de TV por Cable. Estos dispositivos poseen pocos recursos de procesamiento y de
almacenamiento de memoria. Era importante que el lenguaje no estuviera asociado a una sola arquitectura.
Esto llevo a resucitar el modelo de compacidad y neutralidad respecto a la plataforma creado hace varios años por
Niklaus Wirth inventor de Pascal. Este es el inicio de un lenguaje transportable y del concepto de máquinas
virtuales.
El personal de Sun tenía experiencia en UNIX así que basaron al lenguaje Java a partir de C y C++. Gosling decidió
llamarlo en sus inicios Oak y luego lo bautizaron como Java.
En 1992, el proyecto Green generó su primer producto denominado *7, que se trataba de un control remoto
inteligente. Lamentablemente este producto no tuvo éxito en el mercado.
Mientras sucedía todo esto en Sun, la parte del internet que es la WWW se iba haciendo cada vez más grande. La
clave de la web es el navegador. En 1994, casi todo el mundo usaba Mosaica(un navegador comercial que surgió del
Centro de Supercompuadoras de la Universidad de Illinois en 1994). Este navegador fue escrito en gran parte por
Mark Andreesen estudiante universitario que más tarde sería cofundador y jefe de tecnología de Netscape.
A mediados de 1994, Gosling inicia la construcción de un navegador escrito en Java desarrollado por Patrick
Naughton y Jonathan Payne y lo denominador HotJava. Este navegador introduce el concepto de Applets
(programas con interfaz gráfica que funcionan en un navegador web).
Sun publicó su primera versión de Java a principios de 1996. Esta versión carecía de credibilidad entre los
programadores por su escasa aplicabilidad. La versión 1.1 corregía errores de la versión anterior y se agrega el
modelo de eventos para programación gráfica.
En 1998 aparece la versión Java 1.2 que reemplaza en antiguo conjunto de herramientas de Interfaz Gráfica por un
modelo sofisticado y escalable denominado Swing. En diciembre de 1998 se cambia el nombre por Java 2 Standard
Edition Software Developer Kit versión 1.2.
Además, se presentaron otras dos ediciones: Micro Edition para dispositivos móviles y Enterprise Edition para
servidores.
ARQUITECTURA DE JAVA
El lenguaje de programación Java saltó a la escena de internet y consiguió instantáneamente un título de
celebridad. Un lenguaje con una ingeniería muy sólida. Su característica de protección y seguridad para
programadores y usuarios. Propietario de Sun hoy de Oracle. Java es el mejor lenguaje de programación usado por
buenos programadores Java es una plataforma con una gran biblioteca de clases. Basado en C y C++ con
fundamento de Pascal.
Java es toda una plataforma, con una enorme biblioteca con una gran cantidad de código reutilizable y con un
entorno de ejecución que ofrece servicios tales como: seguridad, adaptabilidad entre sistemas operativos y
recolección automática de basura.
Como programador, se necesita un lenguaje que tenga una sintaxis agradable y una semántica comprensible.
Versiones de Java:

Java 2 Standard Edition J2SE: Estructuras Fundamentales, Clases y Objetos, Interfaz Gráfica de Usuario
(GUI), Acceso a Base de Datos (JDBC)
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 1
Aplicaciones Empresariales en Java – Programación en Java


Java 2 Enterprise Edition J2EE: hoy se la denomina Java Enterprise Edition (JEE) orientada al desarrollo
web, programación de redes, componentes distribuidos (RMI, Corba, EJB, Servicios Web)
Java 2 Micro Edition J2ME: orientado a dispositivos móviles
A demás han aparecido nuevas tecnologías



Java FX: para la creación de Rich Internet Applications (RIAs), esto es, aplicaciones web que tienen las
características y capacidades de aplicaciones de escritorio, incluyendo aplicaciones multimedia
interactivas
Java Card: es una tecnología que permite ejecutar de forma segura pequeñas aplicaciones Java (applets)
en tarjetas inteligentes (SIM) y similares dispositivos empotrados
Java TV: implementación de Java que se ejecuta en diferentes dispositivos relacionados con la TV: desde
top boxes para televisión por cable y satelital hasta lectores de discos
La evolución de Java en cuanto a su desarrollo interno de clases:
Versiones
Versión 1.0
Versión 1.1
Versión 1.2
Versión 1.3
Versión 1.4
Versión 5.0
Versión 6
No. de Clases
211 clases
477 clases
1524 clases
1840 clases
2723 clases
3279 clases
3777 clases
Las características de Java son:
Sencillo: Programación de forma sencilla. Utiliza prácticas actuales. Muy parecido a C++. Carece de muchas
características erróneas (punteros). En java se genera mucho código. Hoy existen Entornos de Desarrollo Integrados
(IDE) que mejoran la productividad. Si se está acostumbrado a entornos visuales (Visual Basic, .NET, Delphi) no le
resultará fácil.
Orientado a Objetos: El diseño orientado a objetos es una técnica de programación que se centra en los datos y en
las relaciones. Las capacidades orientadas a objetos de Java son las mismas de C++. En Java no existe herencia
múltiple, sobrecarga de operadores. Aparecen conceptos de interfaces, serialización y construcciones de GUI.
Distribuido: Java posee una extensa biblioteca para tratar protocolos de red (TCP/IP, FTP y HTTP). Manejo fácil de
sockets. Fácil invocación a métodos remotos entre objetos distribuidos (RMI, CORBA, EJB, Servicios Web). Una
arquitectura específica denominada Java 2 Enterprise Edition.
Robusto: Fiable para el cliente y el programador. Mejorado el modelo de punteros. Existen clases que representan
las diferentes estructuras de datos (arreglos, listas, árboles, mapas)
Seguro: Java está diseñado para entornos distribuidos. Protegidos para ataques como: Desbordar la pila de
ejecución (virus), Corromper la memoria (punteros) y L/E de archivos sin permiso (applets)
Neutro en su Arquitectura: El compilador genera un archivo neutro denominado bytecode independiente de la
arquitectura. La traducción a código objeto se denomina JIT (Just In Time). Modelo adoptado por .NET. Hace más de
20 años Niklaus Wirth con el sistema UCSD Pascal empleaba la misma técnica.
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 2
Aplicaciones Empresariales en Java – Programación en Java
Adaptable: A diferencia de C y C++ no existen aspectos dependientes de la plataforma. Los tipos primitivos están
bien especificados. Las cadenas son Unicode. Ej. Interfaz Gráfico de Usuario utilizando Swing.
Interpretado: el intérprete de Java puede ejecutar directamente bytecodes de Java en cualquier máquina a la que
se haya adaptado el intérprete. Las herramientas de desarrollo de Java son lentas.
Multihilo: Ejecución en múltiples procesadores. No planifica. Deja que el Sistema Operativo lo planifique. Fácil
manejo para el desarrollador
ERRORES POPULARES DE JAVA








Java es una extensión de HTML
Yo uso XML así que no necesito de Java
Java es un lenguaje de programación fácil de aprender
Java llegará a convertirse en un lenguaje de programación universal para todas las plataformas
Java tan solo es un buen lenguaje de programación
Ahora que existe C#, Java a quedado obsoleto
Java es un lenguaje privado, y por tanto habría que evitarlo
Todos los programas en Java se ejecutan en una página web
JAVA DEVELOPMENT KIT (JDK)
Es un software que provee herramientas de desarrollo para la creación de programas en java. En los sistemas
Windows sus variables de entorno son:



JAVAPATH: es un path completo del directorio donde esta instalado el JDK.
CLASSPATH: son las librerias o clases de usuario.
PATH: variable donde se agrega la ubicación de JDK
Los programas más importantes que se incluyen son:
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 3
Aplicaciones Empresariales en Java – Programación en Java




Appletviewer: es un visor de applet para generar sus vistas previas,ya que un applet carece de método
main y no se puede ejecutar con el programa java.
Javac: es el compilador de JAVA.
java: es el intérprete de JAVA.
javadoc: genera la documentación de las clases java de un programa.
ENTORNOS DE DESARROLLO
Java funciona en las siguientes plataformas operativas: Solaris, Linux, Windows y Macintosh.
Los Entornos de Desarrollo Integrados (IDE) más utilizados en el desarrollo de Java son:
Eclipse (www.eclipse.org)
Eclipse es un entorno de desarrollo integrado de código abierto multiplataforma para desarrollar lo que el proyecto
llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores.
Esta plataforma, típicamente ha sido usada para desarrollar entornos de desarrollo integrados (del inglés IDE),
como el IDE de Java llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de
Eclipse (y que son usados también para desarrollar el mismo Eclipse).
Eclipse es también una comunidad de usuarios, extendiendo constantemente las áreas de aplicación cubiertas.
Eclipse fue desarrollado originalmente por IBM como el sucesor de su familia de herramientas para VisualAge.
Eclipse es ahora desarrollado por la Fundación Eclipse, una organización independiente sin ánimo de lucro que
fomenta una comunidad de código abierto y un conjunto de productos complementarios, capacidades y servicios.
NetBeans (www.netbeans.org)
NetBeans es un entorno de desarrollo, hecho principalmente para el lenguaje de programación Java. Existe además
un número importante de módulos para extender el NetBeans IDE. NetBeans IDE es un producto libre y gratuito sin
restricciones de uso.
NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una comunidad en
constante crecimiento, y con cerca de 100 socios en todo el mundo. Sun MicroSystems fundó el proyecto de código
abierto NetBeans en junio de 2000 y continúa siendo el patrocinador principal de los proyectos.
La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de
software llamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para interactuar con
las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las aplicaciones
construidas a partir de módulos pueden ser extendidas agregándole nuevos módulos. Debido a que los módulos
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 4
Aplicaciones Empresariales en Java – Programación en Java
pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser
extendidas fácilmente por otros desarrolladores de software.
JDeveloper(www.oracle.com/technology/products/jdev/index.html)
JDeveloper es un entorno de desarrollo integrado desarrollado por Oracle Corporation para los lenguajes Java,
HTML, XML, SQL, PL/SQL, Javascript, PHP, Oracle ADF, UML y otros.
Es un software propietario pero gratuito desde 2005. Las primeras versiones de 1998 estaban basadas en el entorno
JBuilder de Borland, pero desde la versión 9i de 2001 está basado en Java, no estando ya relacionado con el código
anterior de JBuilder.
BlueJ (bluej.org)
BlueJ es un entorno integrado de desarrollo (de sus siglas en inglés IDE - Integrated Development Environment)
para el lenguaje de programación Java, desarrollado principalmente con propósitos educacionales, pero también es
adecuado para el desarrollo de software a pequeña escala.
BlueJ fue desarrollado para apoyar la enseñanza y el aprendizaje de la programación orientada a objetos, y como
resultado, su diseño difiere de otros entornos de desarrollo. La pantalla principal muestra gráficamente la
estructura de clases de una aplicación en desarrollo (en un diagrama muy parecido a UML), y los objetos pueden ser
creados y probados interactivamente. Combinado con una interfaz de usuario simple, esta facilidad de interacción
permite experimentar de manera fácil con los objetos en desarrollo. Los conceptos de la orientación a objetos
(clases, objetos, comunicación a través de llamadas a métodos) son representados visualmente en el diseño de
interacción en la interfaz.
EJERCICIOS PROPUESTOS No.1
1.
2.
3.
Realice la instalación del JDK y del IDE capturando cada una de las pantallas y describiendo las opciones de
instalación
Realice una investigación sobre las semejanzas y diferencias de los diferentes IDEs de desarrollo
Realice una investigación sobre la nueva versión del JDK 7
ESTRUCTURA DE UN PROGRAMA
El lenguaje de programación Java es sensible al contexto, es decir respeta mayúsculas y minúsculas. Todo programa
en Java vive dentro de una clase. Una clase debe escribirse en Mayúscula la primera letra. El nombre del archivo
debe ser el mismo nombre de la clase.
El compilador, para iniciar la ejecución, busca al método o función main. Según la Java Language Especification
(JLE), el método main se tiene que declarar como public Las llaves {} delimitan un bloque de programación. Toda
sentencia termina con punto y coma (;). Se usan las comillas (“ ”) para trabajar con en cadenas de caracteres. Las
funciones o métodos emplean el separador punto (.). Aún cuando un método o función no admita parámetros, son
necesarios los paréntesis.
Los comentarios pueden ser una línea (//) o de varias líneas (/**/). Los comentarios no forma parte del bytecode o
ejecutable.
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 5
Aplicaciones Empresariales en Java – Programación en Java
TIPOS DE DATOS
Java es un lenguaje de comprobación estricta de tipos, es decir Java no siempre realiza una conversión automática
de los tipos de datos. Java contiene tipos primitivos y avanzados de datos.
Entre los tipos primitivos tenemos las siguientes categorías: Enteros, Coma Flotante, Carácter y Lógico. En cada una
de las categorías tenemos tipo específicos como se detalla a continuación:
Enteros: Números que carecen de parte fraccionaria
Tipo
byte
short
int
long
Tamaño
1 byte
2 bytes
4 bytes
8 bytes
Rango
-128 hasta 127
-32768 hasta 32767
-2147483648 hasta 2147483647
-9223372036854775808
hasta
9223372036854775807
Coma Flotante: Números con parte fraccionaria. El tipo utilizando en la mayoría de aplicaciones es double
Tipo
float
Tamaño
4 byte
double
8 bytes
Rango
±3.40282347E+38
6 – 7 cifras decimales
±79769313486231570E+308
15 cifras decimales
Caracter – char: Caracteres del UNICODE de 16 bits. UTF-16. Se representa el carácter encerrado entre apóstrofes.
Ejm ‘A’
Lógico – boolean: Dos posibles valores: true y false
Variables
Las variables se declaran ubicando primero el tipo. Se puede tener múltiples declaraciones en una sola línea. Java
obliga a inicializar las variables. Se puede declarar las variables en cualquier lugar. Se recomienda ubicar las
variables tan cerca del lugar en que se utilice por primera vez.
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 6
Aplicaciones Empresariales en Java – Programación en Java
Constantes
En Java para la declaración de constante se utiliza la palabra final. Para constantes, se acostumbra a poner en
MAYUSCULAS.
Operadores Aritméticos




Operadores aritméticos +,-,*,/
Módulo o residuo %
Operadores de Aritmética Binaria: X+=10 equivale a X=X+10
Operadores de incremento y decremento
o Prefijo ++i, --i
o Sufijo i++, i--
Operadores Relacionales






Igualdad ==
Desigualdad !=
Y lógico &&
O lógico ||
Operadores habituales >,>=,<,<=
Operador ternario C1?expresión1:expresión2
Cadenas de Caracteres
Son secuencia de caracteres UNICODE, Java no posee un tipo primitivo para representar una cadena de caracteres.
Se utiliza la clase String.
Las variables u objetos de tipo String poseen los siguientes métodos o funciones:



Método length() proporciona el número de caracteres
Método charAt(n) extrae un carácter
Método substring(inicio,fin-1) extrae una subcadena
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 7
Aplicaciones Empresariales en Java – Programación en Java
Para la concatenación se utiliza el signo +. No utilice == , != para la comparación entre cadenas. En su lugar utilice
los métodos o funciones:


Método equals(cadena) comprueba la igualdad
Método equalsIgnoreCase(cadena) comprueba la igualdad sin distinción
LECTURA DE DATOS
Para imprimir un resultado se utiliza println() o print(). Desde JDK 5.0 existe una forma sencilla de lectura de datos
utilizando la clase Scanner. La lectura se realiza con nextLine(), next(), nextInt(), etc. Se debe importar el paquete
java.util. El paquete java.lang está importado por defecto
Scanner in = new Scanner(System.in);
String mensaje=in.nextLine();
La clase Scanner no es apropiada para la lectura de claves desde consola. A partir del JDK 6.0 se introduce la clase
Console para este propósito.
Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password: ");
Por motivos de seguridad, se devuelve un arreglo de caracteres en la clave.
ESTRUCTURAS CONDICIONALES
Se utiliza la sentencia if. La condición debe ir entre paréntesis. Si las sentencias son más de una, utilice los
delimitadores de bloque. La sentencia if resulta complicada si tenemos varias opciones. En el switch la opción
únicamente es entera
If (condición)
sentencia
else
sentencia
switch(opcion)
{
case 1: …break;
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 8
Aplicaciones Empresariales en Java – Programación en Java
default: …break;
}
ESTRUCTURAS REPETITIVAS
El bucle while ejecuta una sentencia mientras se cumpla la condición. El bucle while hace la comprobación en la
parte superior. El bucle do while ejecuta primero la sentencia y después comprueba la condición.
while (Condición)
sentencia
do
sentencia
while(Condición);
El bucle for es un bucle determinado que tiene una iteración controlada. A partir del JDK 5 se presenta otra
alternativa para recorrer elementos de una matriz. Se denomina el for each
for (inicio;condición;contador)
sentencia
for(variable:colección)
sentencia
EXCEPCIONES
Cuando un programa Java viola las restricciones semánticas del lenguaje (se produce un error), la máquina virtual
Java comunica este hecho al programa mediante una excepción.
Muchas clases de errores pueden provocar una excepción, desde un desbordamiento de memoria o un disco duro
estropeado hasta un disquete protegido contra escritura, un intento de dividir por cero o intentar acceder a un
vector fuera de sus límites. Cuando esto ocurre, la máquina virtual Java crea un objeto de la clase exception o error
y se notifica el hecho al sistema de ejecución. Se dice que se ha lanzado una excepción (“Throwing Exception”).
Un método se dice que es capaz de tratar una excepción (“Catch Exception”) si ha previsto el error que se ha
producido y prevé también las operaciones a realizar para “recuperar” el programa de ese estado de error. En el
momento en que es lanzada una excepción, la máquina virtual Java recorre la pila de llamadas de métodos en busca
de alguno que sea capaz de tratar la clase de excepción lanzada. Para ello, comienza examinando el método donde
se ha producido la excepción; si este método no es capaz de tratarla, examina el método desde el que se realizó la
llamada al método donde se produjo la excepción y así sucesivamente hasta llegar al último de ellos. En caso de que
ninguno de los métodos de la pila sea capaz de tratar la excepción, la máquina virtual Java muestra un mensaje de
error y el programa termina.
Manejador de excepciones.
Un manejador de excepciones es una porción de código que se va a encargar de tratar las posibles excepciones que
se puedan generar.
El bloque try.
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 9
Aplicaciones Empresariales en Java – Programación en Java
Lo primero que hay que hacer para que un método sea capaz de tratar una excepción generada por la máquina
virtual Java o por el propio programa mediante una instrucción throw es encerrar las instrucciones susceptibles de
generarla en un bloque try.
try {
BloqueDeIntrucciones
}
Cualquier excepción que se produzca dentro del bloque try será analizado por el bloque o bloques catch que se verá
en el punto siguiente. En el momento en que se produzca la excepción, se abandona el bloque try y, por lo tanto, las
instrucciones que sigan al punto donde se produjo la excepción no serán ejecutadas.
Cada bloque try debe tener asociado por lo menos un bloque catch.
El bloque catch.
try {
BloqueDeIntrucciones
} catch (TipoExcepción nombreVariable) {
BloqueCatch
} catch (TipoExcepción nombreVariable) {
BloqueCatch
}…
Por cada bloque try pueden declararse uno o varios bloques catch, cada uno de ellos capaz de tratar un tipo u otro
de excepción.
Para declarar el tipo de excepción que es capaz de tratar un bloque catch, se declara un objeto cuya clase es la clase
de la excepción que se desea tratar o una de sus superclases
El bloque finally.
try {
BloqueDeIntrucciones
} catch (TipoExcepción nombreVariable) {
BloqueCatch
} catch (TipoExcepción nombreVariable) {
BloqueCatch
}…
} catch (TipoExcepción nombreVariable) {
BloqueCatch
}
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 10
Aplicaciones Empresariales en Java – Programación en Java
finally {
BloqueFinally
}
El bloque finally se utiliza para ejecutar un bloque de instrucciones sea cual sea la excepción que se produzca. Este
bloque se ejecutará en cualquier caso, incluso si no se produce ninguna excepción. Sirve para no tener que repetir
código en el bloque try y en los bloques catch.
EJERCICIOS PROPUESTOS No.2
1.
2.
3.
Realice un programa que efectúe un intercambio de variables enteras, sin utilizar una variable temporal
Diseñe un programa que permita validar una cédula de identidad a través del dígito verificador
Diseñe una aplicación de consola que posea un menú con las siguientes opciones:
a. Suma
b. Resta
c. Multiplicación
d. División
e. Salir
En dependencia de la selección que realice el usuario, se deberá solicitar dos números y realizar la
operación respectiva. Incluya bloques controladores de excepciones.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
La programación orientada a objetos POO es un paradigma de programación dominante en estos días, al haber
sustituido a las técnicas estructuradas, basadas en procedimientos, que se desarrollaron a principios de la década
de 1970. Java es totalmente orientado a objetos.
Un objeto es todo aquello que existe en la vida real. Los objetos tienen propiedades y métodos. Las propiedades
son las características o atributos de un objeto. Un objeto se construye a partir de una clase. Una clase es la plantilla
o plano a partir del cual se crean realmente los objetos.
El Encapsulamiento u Ocultamiento de Información permite ocultar la implementación; es decir no nos interesa la
implementación interna sino su funcionamiento. Los valores de las propiedades de un objeto se denominan estado.
No se puede acceder a los datos de forma directa. Se debe interactuar a través de métodos de acceso (set o asignar
y get u obtener). A continuación se detalla la creación de una clase
public class Persona
{
private String nombre;
public void setnombre(String pnombre)
{
nombre=pnombre;
}
public String getnombre()
{
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 11
Aplicaciones Empresariales en Java – Programación en Java
return nombre;
}
public void imprimir()
{
System.out.println(“El Nombre es: ”+nombre);
}
}
Para la creación de un objeto se realiza de la siguiente manera:
Persona objeto = new Persona();
Para asignar los datos al objeto se utiliza el siguiente código:
objeto.setNombre(“Jorge Huilca”);
Para llamar al método imprimir, utilizamos el siguiente código:
objeto.imprimir();
Los métodos set y get se denominan métodos de modificación y acceso respectivamente.
El método imprimir, en este caso no recibe parámetros ni retorna algún valor.
Un ejemplo de un método que retorna parámetros sería:
public int calcularTamano()
{
return(nombre.length());
}
La llamada sería:
System.out.println(“El tamaño del nombre es: ”+ objeto.calcularTamano());
CONSTRUCTORES
Un constructor es un método especial de una clase que tiene las siguientes características:





Un constructor tiene el mismo nombre de la clase
La clase puede tener más de un constructor
Un constructor suele tener cero, uno o más parámetros
Un constructor carece de valor proporcionado
Los constructores siempre se invocan con el operador new.
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 12
Aplicaciones Empresariales en Java – Programación en Java
Una clase puede tener uno o varios constructores (sobrecarga de constructores). Lleva el mismo nombre de la clase
y se ejecuta al crear un objeto. El constructor solo se puede llamar a través del operador new.
public Persona()
{
//Código
}
public Persona(String valor)
{
//Código
}
Si no se da un valor explícito a un campos en el constructor, ese campo recibe automáticamente un valor
predeterminado: los números se ponen a 0, los boolean a false y las referencias a objetos a null. Es una mala
práctica de programación recurrir a esto.
Un constructor predeterminado o default es un constructor sin parámetros. Si se escribe una clase que carezca por
completo de constructores, se nos proporcionará un constructor predeterminado.
La palabra reservada this, se refiere al parámetro implícito del método o clase. Sin embargo se lo puede usar dentro
de un constructor para llamar a otro constructor.
this(nombre,valor)
Como Java posee un mecanismo de recolección automática de basura, no se necesita una liberación manual de la
memoria, por tanto no se admite destructores.
Sin embargo, hay objetos que utilizan recursos distintos de memoria como los ficheros, base de datos, sockets, etc.
En este caso es importante que ese recurso se libere y recicle cuando ya no es necesario.
A todas las clases se les puede añadir un método llamado finalize. Este método será invocado antes que el
recolector de basura descarte el objeto. Esta técnica no es 100% confiable. Es mejor crear métodos personalizados
de cierre de recurso que haga esta tarea.
METODOS PRIVADOS
Cuando implementamos una clase, hacemos privados todos los campos de datos porque los datos públicos son
peligrosos. La mayoría de los métodos son públicos, los métodos privados se utilizan en ciertas circunstancias. Para
esto se utiliza el modificador de acceso private.
CAMPOS FINALES
Los campos de una clase se pueden definir como final. Estos campos deben recibir valor inicial por única vez. Se
utiliza en campos de tipo primitivo o en clases inmutables.
private final int IVA=12;
CAMPOS Y MÉTODOS ESTÁTICOS
Campos Estáticos
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 13
Aplicaciones Empresariales en Java – Programación en Java
Si se define a un campo como static, estará disponible desde cualquier lugar del proyecto. A los campos estáticos
también se los conoce como campos de clase.
public static int sueldo=240;
Para utilizar el campo lo haremos de la siguiente forma:
System.out.println(Clase.sueldo);
Constantes Estáticas
Los campos estáticos son poco frecuentes. Sin embargo las constantes static aparecen mayormente en las
aplicaciones.
public static final double PI=3.141592
Tal como se ha indicado, nunca es buena idea tener campos públicos, ya que todo el mundo puede modificarlos. Sin
embargo, las constantes públicas son correctas.
Métodos Estáticos
Los métodos estáticos no operan sobre objetos. Se utilizan en dos situaciones:


Cuando un método no necesita acceder al estados de un objeto, porque todos los parámetros se
proporcionan de forma explícita.
Cuando el método solo necesita acceder a campos static
EJERCICIOS PROPUESTOS No.3
1.
Realice el modelado del siguiente problema e implemente las clases, propiedades y métodos respectivos:
Un club de fútbol desea crear un sistema que permita gestionar la organización del club. El club está
compuesto por los socios, los jugadores, los directivos y el personal. Teniendo en cuenta que, por
ejemplo, un jugador podrá ser a la vez jugador y socio. De los jugadores se desea almacenar el nombre y
el sueldo, de los socios el número de socio, y de los directivos el puesto que ocupan. Una persona que
pertenezca al personal podrá ser técnico, administrativo o de limpieza.
También es necesario conocer qué directivo es actualmente el director del club. Los jugadores juegan
partidos, y en cada partido cada jugador puede recibir una prima (que puede ser diferente para cada
jugador aunque se trate del mismo partido). El club también quiere controlar quién arbitra los partidos al
club. Para ello se desea guardar los árbitros para cada partido y a qué federación autonómica pertenecen.
Los árbitros podrán ser árbitros principales o jueces de línea. Es necesario tener en cuenta que en cada
partido sólo podrá arbitrar un solo árbitro por federación autonómica, aunque un mismo árbitro podrá
arbitrar varios partidos al club
HERENCIA
Se puede crear nuevas clases tomando como base clases ya existentes. Concepto de reutilización de código. La
herencia utiliza la palabra extends. Superclase, clase base o clase padre. Subclase, clase derivada o clase hija.
public class Padre
{
//Propiedades del Padre
//Métodos del Padre
}
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 14
Aplicaciones Empresariales en Java – Programación en Java
public class Hijo extends Padre
{
//Propiedades del Hijo
//Métodos del Hijo
}
Los métodos generales deben ir en el padre. Los más específicos en los hijos. Es posible invalidar los métodos del
padre (Override - Sobreescritura). Se puede utilizar el constructor del padre con la palabra super. No se puede
eliminar propiedades y métodos heredados.
CLASES FINALES
En ocasiones es necesario impedir que un método sea invalidado. Se puede evitar la herencia utilizando la palabra
final. Este mecanismo asegura que no se pueda invalidar los métodos de la clase padre.
public final class Padre
{
//Propiedades de la clase final
//Métodos de la clase final
}
CLASES ABSTRACTAS
Algunas clases son muy generales que resulta innecesario crear objetos. Para bloquear la creación de instancias, se
utiliza la palabra abstract. Las clases abstractas deben tener propiedades y métodos concretos. Se puede crear
métodos abstractos. Estos no deben ser implementados. Toda clase que posea uno o más métodos abstractos,
tiene que declararse como abstracta. Actúan como reserva de espacio. Si no se implementa estos métodos en la
subclase, entonces es abstracta.
public abstract class Padre
{
//Propiedades de la clase abstracta
//Métodos de la clase abstracta
}
INTERFACES
Una característica adicional de la orientación a objetos es el uso de plantillas de implementación de clases, llamadas
contratos o interfaces. En las interfaces se define los métodos con sus respectivos parámetros pero no se
implementa. El código correspondiente al método se lo hará en la clase que quiera implementar la interfaz. Es decir
en la definición de la clase que quiera cumplir el contrato se deberá indicar que interfaz implementará. Esta clase
deberá implementar todo los métodos que correspondan al contrato.
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 15
Aplicaciones Empresariales en Java – Programación en Java
public interface Animal
{
public void Dormir();
public int Comer(int cantidad);
}
public class Gato implements Animal
{
public void Dormir()
{
//Cuerpo del Programa Dormir
}
public int Comer(int cantidad)
{
//Cuerpo del Programa Comer
}
}
COLECCIONES
A menudo nos encontramos que necesitamos funciones para manipular datos más sofisticados que las que puede
ofrecer las matrices. Las matrices tienen longitud fija.
Las colecciones se encuentran dentro del paquete java.util, y nos permiten organizar mejor nuestros datos. Una
colección es un objeto que representa a un grupo de objetos. Contiene un marco de trabajo de colecciones, el
mismo es una arquitectura estándar de manipulación. Reemplazo de las Estructuras de Datos.
Existen distintos tipos de colecciones:



Conjuntos (java.util.Set)
Listas (java.util.List)
Mapas (java.util.Map)
CONJUNTOS
Es la colección más simple. Es un grupo de objetos agrupados, sin ningún orden particular. Las clases de colección
que implementan esta interfaz son: HashSet y TreeSet
LISTAS
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 16
Aplicaciones Empresariales en Java – Programación en Java
Es una colección en la que los objetos se organizan secuencialmente, con un principio y un final. Es una colección
ordenada. Una matriz es una lista fija. Las listas pueden aumentar y disminuir su tamaño libremente. Las listas
incluyen las pilas y colas. Las pilas son listas en las que los nuevos objetos se incluyen e eliminan al final de la lista
LIFO (last in first out). Las colas llevan un mecanismo FIFO (first in first out), es decir los nuevos objetos se anaden al
final de la lista, mientras que los objetos que tienen que eliminarse de la lista se toman siempre al principio de ésta.
Las clases de colección que implementan esta interfaz son: Vector, Stack, ArrayList y LinkedList.
MAPAS
Los objetos se almacenan de dos en dos. Uno de los objetos del par contiene la información que queremos
almacenar en la colección y el otro objeto se denomina keys. El valor de la clave únicamente identifica al par, de
forma muy parecida a cómo el índice de un elemento de una matriz únicamente identifica al elemento. A diferencia
de un índice, una clave no tiene por qué ser un número entero; puede ser cualquier tipo de objeto. No puede haber
claves repetidas en el mapa. Cuando queremos recuperar información almacenada en un par de objetos,
ubicaremos dicho par buscando el valor apropiado de la key. Las clases de colección que implementan esta interfaz
son: HashTable, TreeMap, HashMap y WeakHashMap.
EJERCICIOS PROPUESTOS No.4
Realice el modelado del siguiente escenario e implemente orientado a objetos:
En una empresa existen tres tipos de funcionarios: Directivos, Empleados y Trabajadores. Los datos de los
funcionarios son: Cedula, Nombres, Apellidos, Dirección y Edad. Los funcionarios adicionalmente poseen el sueldo
básico definido por el gobierno nacional y que este puede variar. Los Directivos adicionalmente a su sueldo perciben
un bono de responsabilidad dependiendo de su jerarquía. Los Empleados se les pagan un valor fijo por cada carga
familiar, hasta 6 cargas en total. Los Trabajadores, reciben un valor fijo por cada año de antigüedad en la empresa.
Es necesario modelar el sistema tomando en cuenta criterios de orientación a objetos y calcular el sueldo total a
recibir mensualmente por el funcionario.
ESPOCH FIE - Ing. Jorge Huilca Palacios
Página 17