Un objeto además de un estado interno, presenta una interfaz para poder interactuar con el exterior. Es por
esto por lo que se dice que en la programación orientada a objetos "se unen datos y procesos", y no como en
su predecesora, la programación estructurada, en la que estaban separados en forma de variables y funciones.
El equivalente de un objeto en el paradigma estructurado sería una variable. Así mismo la instanciación de
objetos equivaldría a la declaración de variables, y el tiempo de vida de un objeto al ámbito de una variable.
Podemos definir una clase como "un conjunto de cosas (físicas o abstractas) que tienen el mismo
comportamiento y características. Es la implementación de un tipo de objeto (considerando los objetos como
instancias de las clases)". Una clase no es más que una plantilla para la creación de objetos. Cuando se crea
un objeto (instanciación) se ha de especificar de qué clase es el objeto instanciado, para que el compilador
comprenda las características del objeto.
Las clases presentan el estado de los objetos a los que representan mediante variables denominadas atributos.
Cuando se instancia un objeto el compilador crea en la memoria dinámica un espacio para tantas variables
como atributos tenga la clase a la que pertenece el objeto.
1
Los métodos son las funciones mediante las que las clases representan el comportamiento de los objetos. En
dichos métodos se modifican los valores de los atributos del objeto, y representan las capacidades del objeto
(en muchos textos se les denomina servicios).
Desde el punto de vista de la programación estructurada, una clase se asemejaría a un módulo, los atributos a
las variables globales de dicho módulo, y los métodos a las funciones del módulo.
Los seres humanos no pensamos en las cosas como un conjunto de cosas menores; por ejemplo, no vemos un
cuerpo humano como un conjunto de células. Los humanos entendemos la realidad como objetos con
comportamientos bien definidos. No necesitamos conocer los detalles de porqué ni cómo funcionan las cosas;
simplemente solicitamos determinadas acciones en espera de una respuesta; cuando una persona desea
desplazarse, su cuerpo le responde comenzando a caminar.
Pero la abstracción humana se gestiona de una manera jerárquica, dividiendo sucesivamente sistemas
complejos en conjuntos de subsistemas, para así entender más fácilmente la realidad. Esta es la forma de
pensar que la orientación a objeto intenta cubrir.
Para permitir que otros objetos consulten o modifiquen los atributos de los objetos, las clases suelen presentar
métodos de acceso. De esta manera el acceso a los datos de los objetos es controlado por el programador,
evitando efectos laterales no deseados.
Con el encapsulado de los datos se consigue que las personas que utilicen un objeto sólo tengan que
comprender su interfaz, olvidándose de cómo está implementada, y en definitiva, reduciendo la complejidad
de utilización.
Del mismo modo, las distintas clases de un programa se organizan mediante la jerarquía. La representación
de dicha organización da lugar a los denominados árboles de herencia: Clase Padre, Clase Hija1, Clase
Hija2, Clase Nieta1, Clase Nieta 2, Clase Nieta 3…
2
Mediante la herencia una clase hija puede tomar determinadas propiedades de una clase padre. Así se
simplifican los diseños y se evita la duplicación de código al no tener que volver a codificar métodos ya
implementados. Al acto de tomar propiedades de una clase padre se denomina heredar.
2. INTRODUCCIÓN A JAVA.
2.1 Origen de Java. Java fue diseñado en 1990 por James Gosling, de Sun Microsystems, como software
para dispositivos electrónicos: como calculadoras, microondas y la televisión interactiva. Curiosamente, este
lenguaje fue diseñado antes de que diese comienzo la era World Wide Web.
Inicialmente Java se llamó Oak (roble en inglés), aunque tuvo que cambiar de denominación, debido a que
dicho nombre ya estaba registrado por otra empresa. Se dice este nombre se le puso debido a la existencia de
tal árbol en los alrededores del lugar de trabajo de los promotores del lenguaje.
1. Creciente necesidad de interfaces mucho más cómodas e intuitivas que los sistemas de ventanas que
proliferaban hasta el momento.
2. Fiabilidad del código y facilidad de desarrollo. Gosling observó que muchas de las características
que ofrecían C o C++ aumentaban de forma alarmante el gran costo de pruebas y depuración. Por
ello en sus ratos libres creó un lenguaje de programación donde intentaba solucionar los fallos que
encontraba en C++.
3. Enorme diversidad de controladores electrónicos. Los dispositivos electrónicos se controlan
mediante la utilización de microprocesadores de bajo precio y reducidas prestaciones, que varían
cada poco tiempo y que utilizan diversos conjuntos de instrucciones. Java permite escribir un código
común para todos los dispositivos.
Aunque muchas de las fuentes consultadas señalan que Java no llegó a caer en un olvido, lo cierto es que tuvo
que ser Bill Joy (cofundador de Sun y uno de los desarrolladores principales del sistema operativo Unix de
Berckley) el que sacó a Java del letargo en que estaba sumido. Joy juzgó que Internet podría llegar a ser el
campo adecuado para disputar a Microsoft su primacía en el terreno del software, y vio en Oak el instrumento
idóneo para llevar a cabo estos planes.
Para poder presentarlo en sociedad se tuvo que modificar el nombre de este lenguaje de programación, cuando
un grupo de empleados de Sun visitó una cafetería local, sugirierón el nombre de Java (como se conoce
también en inglés al café) y se tuvo que realizar una serie de modificaciones de diseño para poderlo adaptar al
propósito mencionado. Así Java fue presentado en sociedad en agosto de 1995.
3
2.2 Características principales de Java.
El primero es aprender el Lenguaje Java (sintaxis) mismo para poder programar clases y métodos
propios.
El segundo consiste en aprender usar las clases y métodos de las extensas bibliotecas de clases de
Java API.
Las Bibliotecas de la API de Java consisten de varios paquetes, cada uno de los cuales contiene
varias clases que se agrupan de acuerdo con su funcionalidad. Estas clases consisten de campos y métodos.
4
Aplicaciones:
Bases de Datos. JDBC (Java DataBase Conectivity), además un doble traductor bridge (puente)
llamado JDBCODBCdriver.
Sistemas Expertos. API AIMA de Java (algoritmos de búsqueda heurística: A*, IDA*, Profundidad,
Anchura, Profundidad Iterativa, Hillclimbing y Simulated Anneling)
Telefonía móvil: Java J2ME/MIDP 1.0 (Teléfono móvil: Siemens C55, Nokia 6610).
Ingeniería Web. Plataforma J2EE (Java 2 Platform, Enterprise Edition), Tecnologías Java Servlet,
JSP (JavaServer Page) y JSTL (JSP Standard Tag Library).
2.4.1 Edición. El programa fuente en Java terminan con la extensión java. Se puede crear un programa
utilizando cualquier editor de texto plano ASCII, aunque actualmente se utilizan los Entornos Integrados de
Desarrollo que proporcionan editores específicos para Java con características de edición avanzada, como
coloración de sintaxis, autocompletado de sentencias, etc. Por ejemplo Jcreator, o Kawa.
// Hola.java
class Hola{
public static void main(String args[]) {
System.out.println("Hola Mundo!");
}
}
class Hola{
Esta línea declara la clase Hola. El nombre de la clase especificado en el archivo fuente se utiliza para crear
un archivo nombredeclase.class en el directorio que se compila la aplicación. En este caso, el compilador
creará un archivo llamado Hola.class.
Esta línea especifica el método que el intérprete Java busca para ejecutar en primer lugar. La palabra clave,
main, para especificar la primera función a ejecutar. En este ejemplo no se pasan argumentos.
public significa que el método main() puede ser llamado por cualquiera, incluyendo el intérprete Java.
static es una palabra clave del Lenguaje le dice al compilador que main se refiere a la propia clase Hola.
System.out.println("Hola Mundo!");
5
Ésta es la funcionalidad de la aplicación. Esta línea muestra el uso de un nombre de clase y método. Se usa el
método printfln() de la clase out que está el paquete System, permite presentar en la salida estándar del
Sistema el argumento que se le pase. En este caso, muestra en pantalla la cadena Hola Mundo!
Finalmente , se cierran las llaves que limitan el método main() y la clase Hola.
2.4.2. Compilación.
El compilador Javac se encuentra en el directorio bin dentro del directorio Java, o aquel donde se haya
instalado la plataforma Java. El compilador de Java traslada el código fuente Java a bytes, que son los
componentes que entiende la Máquina Virtual Java que está incluida en los navegadores con soporte Java.
Una vez creado el programa fuente hola.java se puede compilar introduciendo la siguiente línea de
comandos:
javac Hola.java
Si no se han cometido errores al editar el programa, ni se han tenido problemas con el PATH a la hora de
especificar el directorio del programa fuente y del compilador, no debería aparecer mensaje alguno en la
pantalla, y cuando vuelva a aparecer el prompt del sistema, se debería ver un programa Hola.class nuevo en
el directorio donde se encuentra el programa fuente.
Si aparece algún problema, es necesario editar de nuevo el programa para revisar el tipo de error y
nuevamente compilar el programa fuente.
2.4.3 Ejecución.
Para ejecutar la aplicación Hola.class, se utiliza el intérprete java, que también se encuentra en el directorio
bin. Se ejecutará la aplicación con la línea:
Java Hola
Hola Mundo!
Cuando se ejecuta una aplicación Java, el intérprete Java busca e invoca el método main() de la clase cuyo
nombre coincide con el nombre del archivo Hola.class que se indique en la línea de comandos.
6
Comentarios
Sirve para describir */
el programa
Sentencias import */
Llama los paquetes de las import
bibliotecas para cargar las clases import
de Java o Interfaz de Java API,
para compilar el programa.
}
}
Un applet es un programa que anima una porción de una página Web. Se recupera a partir de la red y corre en
la máquina del usuario, pero con muchas restricciones de modo que no pueda afectar la integridad del
ambiente del usuario.
A continuación veremos versión applet del ejemplo anterior. Es decir un programa que coloca en una página
Web el mensaje ”Hola Mundo Applet!”.
import java.awt.Graphics;
7
import java.applet.Applet;
Dado que un applet no se invoca desde el intérprete de comandos, no tiene sentido definir el método
main. El browser Web notifica al applet que debe dibujar su contenido invocando el método paint.
Esto ocurre cada vez que se muestra la porción de la página html que contiene este applet. Por lo tanto un
applet debe definir el método paint (en vez de main).
Las instrucciones:
import java.awt.Graphics;
import java.applet.Applet;
indican que dentro del archivo las clases java.awt.Graphics y java.applet.Applet serán
conocidas simplemente como Graphics y Applet.
Las palabras extends indican que HolaAp es una extensión de la clase de biblioteca Applet. Esto
significa que HolaAp es casi como Applet, solo que se modifica el comportamiento del método paint.
El método paint recibe como argumento un objeto de tipo Graphics que corresponde a una clase de
biblioteca. Este objeto se usa para dibujar en la porción de página html asignada al applet.
Es necesario construir la página html que va a contener el applet. Crear la página HolaAp.html con el
siguiente contenido:
8
</HTML>
El mismo applet también se puede ver desde Web como Internet Explorer u otros.
Comentarios /*
Sirve para describir
el programa */
import java.applet.*;
Sentencias import import java.awt.*;
Incluye las bibliotecas necesarias
de applets, para compilar el
programa.
</HTML>
9
3.1 Variables.
Tiene tres propiedades: una posición de memoria para almacenar el valor, el tipo de dato almacenado en la
posición de memoria y el nombre usado para referirse a esa posición de memoria.
• de instancia
• de clase
• locales
• letra,
• _,o
• $
Al igual que en cualquier lenguaje de programación cualquier nombre debe tener un significado útil.
Creación de variables:
Para crear una variable, simplemente hay que poner el tipo deseado seguido del nombre que se desee dar a la
variable.
Ejemplo:
int calificacion;
char valor1;
boolean exito;
Tipos de información
• Tipos primitivos
• Objetos
Tipos primitivos
Existen ocho tipos de datos primitivos agrupados en los siguientes cuatro grupos:
Cada tipo de datos primitivo tiene el mismo tamaño y características (no importa plataforma o sistema
operativo).
10
Enteros
Punto flotante
Caracteres
Se usa para caracteres individuales como letras, números, puntuación y otros símbolos
Booleanos
Inicialización:
Cuando una variable es declarada automáticamente Java inicializa las variables de acuerdo a:
Numéricas 0
Caracteres ‘\0’
Booleanos false
Asignación
Una vez que una variable ha sido declarada, se le puede asignar un valor con el operador de asignación (=).
Ejemplo:
int i;
i=5;
11
boolean aprobado = true;
class Geometria{
}
}
Operadores aritméticos
Operadoresde asignación
Expresión Significado
x += y x=x+y
x -= y x=x-y
x *= y x=x*y
x /= y x=x/y
12
• Incremento ++
• Decremento - -
• Pueden ser prefijos o posfijos: Ejemplo:
int a = 5,b=10;
a++; b--;
3.3 Constantes.
Mientras se ejecuta un programa no cambia su valor asignado, de forma que no pueda ocurrir ningún
cambio. Una constante se declara de forma similar a una variable, pero añadiendo la palabra reservada
final. Una constante tiene un valor asignado cuando se declara. Ejemplo:
final doble PI=3.1416; final short KM=1000; final int DICIEMBRE=12; final char ASTERISCO=´*´;
Ejemplo para calcular el área de un Círculo. La formula que nos calcula el área es la siguiente: Área = Π · r2
double area;
area = PI * (radio*radio);
System.out.println("Área de un circulo de radio "+ radio + " es " + area); Área de un circulo de radio 6 es 113.0976
13
Cuando se desea tener acceso a un método es necesario especificar dónde está la clase a la que pertenece así
es que se utiliza la declaración import.
Una declaración import especifica un identificador (el nombre de la clase) que será referenciada, y el nombre
del paquete en el que está definida. Un * indica que cualquier clase del paquete puede ser referenciada.
Ejemplos:
import java.awt.Graphics;
import java.applet.Applet;
import java.io.*;
import java.util.*;
En Java los métodos siempre están dentro de una clase. Algunos métodos pueden ser invocados o llamados a
través del nombre de la clase en la que fueron definidos sin tener que instanciar un objeto de la clase primero.
Estos métodos son llamados métodos estáticos o de clase.
La clase Math
La clase Math ofrece un gran número de funciones matemáticas básicas. La siguiente tabla muestra algunos
métodos. El formato es Math.metodo, a continuación se muestran fragmentos de programas para dar los
ejemplos:
int a=-5, r;
14
float número más cercano. round(5.4) 5
Round(5.5) 6
round(-5.6) -6
pow (n,e) double Regresa el número n elevado a la potencia de e pow(2.0,3.0) 8.0
random () No tiene Genera un número aleatorio entre 0.0 a 1.0 random() 0.70
sqrt (n) double Devuelve la raíz cuadrada de n sqrt(9.0) 3.0
PI No tiene Devuelve el valor de PI PI 3.141592
Nota: NO es necesario utilizar import para usar una función de la clase Math
Java posee gran capacidad para el manejo de cadenas dentro de su clase String. Las cadenas son apropiadas
para crear editores de textos, procesadores de palabras, software de formación de páginas, sistemas de
tipografía computarizados y otros tipos de software para procesar textos.
Una cadena es una serie de caracteres que se tratan como una unidad. Una cadena puede incluir letras, dígitos,
y diversos caracteres especiales como +,-,*,$ y otros. Una cadena en Java es un Objeto de la clase String
(cadena para manejarlas en el paquete java.lang). Las literales de cadena o constantes (también llamados
objetos de String anónimos) en Java se escriben como una secuencia de caracteres entre comillas; por
ejemplo:
“UAEM”
“Cuernavaca Morelos”
“Clase 2007”
“12345678”
Concatenación de cadenas:
El operador "+" realiza la concatenación cuando, al menos, uno de los operandos es un String:
Ejemplos:
inicializa la referencia String msg de modo que se refiera al objeto String anónimo “Feliz cumpleaños”.
String nombre;
String vacía = "";
String mensaje = "hola";
String msg= “hola”;
String ciudad = new String();
String despedida = new String ("adios");
15
String c="Mexico lindo y querido";
String t1="otra cosa";
Formato: cadena.metodo
System.out.println(c.substring(18,20)); ?
String a="Edo.Mex";
System.out.println(a.substring(3)); .Mex
16
System.out.println(b); ?
replace(char,char) genera un objeto String en el que String a="mex y xoxo";
cada ocurrencia del primer System.out.println(a.replace('x','*')); me* y *o*o
carácter en el String con que se System.out.println(a); mex y xoxo
invoca se substituye por el System.out.println(a.replace('K','L')); ?
segundo carácter. Sino hubiera
coincidencias se regresa una
copia del String original.
toUpperCase ( ) Regresa un objeto de la clase String a="Edo. Mex";
String igual pero cuyas
caracteres son todos mayúsculas System.out.println(a.toUpperCase()); EDO.MEX
String Regresa un String con todos los String a="Edo. Mex";
toLowerCase () caracteres en minúsculas
System.out.println(a.toLowerCase()); edo.mex
indexOf((int)char) Devuelve el índice del carácter String a="Edo. Mex";
del String, si no existe regresa -1 System.out.println(a.indexOf((int)'o')); 2
System.out.println(a.indexOf((int)'k')); -1
System.out.println(a.indexOf((int)'M')); ?
Despliegue de un string:
String t;
int c;
c=System.in.read();
Empleando este método sólo se puede leer un dígito a la vez, esto se debe a lo limitado de las capacidades de
Java para leer información del flujo de entrada. Con frecuencia es necesario leer información como enteros,
flotantes, cadenas y otro tipos para introducirlos a un programa.
Para poderlo hacer, se requiere diseñar una clase propia o utilizar una diseñada por otras personas, a
continuación se propone la siguiente:
Teclado.java
17
Utilizar alguna de las funciones de lectura que se encuentran en el archivo Teclado.java, las cuales tienen el
siguiente formato:
tipo variable;
variable = Teclado. Método ();
Ejemplos:
int a;
a = Teclado. readInt ();
Ejemplos:
int n;
String cad;
float nf;
char c;
18