1. Introducción
Los lenguajes estructurados se basan en estructuras de control, bloques de código y subrutinas independientes que soportan recursividad y variables locales. La programación orientada a objetos toma las mejores ideas de la programación estructurada y las combina con nuevos conceptos de organización.
La programación orientada a objetos permite descomponer un programa en grupos relacionados. Cada subgrupo pasa a ser un objeto autocontenido con sus propias instrucciones y datos. Tres características de los lenguajes orientados a objetos son: encapsulación, polimorfismo y herencia.
Encapsulación
Actúa como un envoltorio protector alrededor del código y los datos que se manipulan. El envoltorio define el comportamiento y protege el código y los datos para evitar que otro código acceda a ellos de manera arbitraria. La ventaja es que todos saben cómo acceder a él y pueden utilizarlo de este modo, independientemente de los detalles de implementación. En Java, la base del encapsulamiento es la clase (conjunto de objetos que comparten la misma estructura y comportamiento). Una clase se define mediante métodos que operan sobre esos datos. Un método es un mensaje para realizar alguna acción en un objeto.
Herencia
Permite que los objetos se relacionen entre sí de una manera jerárquica. Es decir, a partir de una clase donde están los atributos generales (superclase), se definen otras clases con atributos más específicos (subclase).
Polimorfismo
A los métodos que actúan sobre los objetos se les pasa información. Estos parámetros representan los valores de entrada a una función. El polimorfismo significa que un método tenga múltiples implementaciones que se seleccionan en base al tipo de objeto que se le pasa.
2. Primer Programa
Los ficheros se almacenan con la extensión .java. Al compilar el código fuente, se crea uno con extensión .class. Java requiere que todo el código resida dentro de una clase con nombre. El nombre del fichero debe ser el mismo que el nombre de la clase donde está la función main
.
public class holamundo {
public static void main(String args[]) {
System.out.println("HOLA MUNDO");
}
}
Para compilar, necesitamos el compilador javac y, posteriormente, para ejecutar la aplicación, utilizamos el fichero java.
C:\> javac holamundo.java
C:\> java holamundo
3. Variables
Una variable es la unidad básica de almacenamiento. Su creación es la combinación de un identificador, un tipo y un ámbito. Tenemos 8 tipos de variables. La sintaxis para la creación es:
tipo identificador = valor;
Tipo | Tamaño | Rango |
---|---|---|
byte | 8 bits | Valores numéricos de -128 a 127 |
short | 16 bits | Valores numéricos de -32,768 a 32,767 |
int | 32 bits | Valores numéricos de -2,147,483,648 a 2,147,483,647 |
long | 64 bits | Valores numéricos sin límite |
float | 32 bits | Valores numéricos hasta 38 cifras |
double | 64 bits | Valores numéricos hasta 308 cifras |
char | 16 bits | Valores alfanuméricos |
String | Según long | Se utiliza para cadenas de caracteres |
boolean | 8 bits | Solo admite true o false |
matriz [] | Según long | Agrupar variables del mismo tipo |
Ejemplo: Programa utilizando variables.
class hola {
public static void main(String args[]) {
int x, y;
x = 42;
y = 12;
System.out.print("X = " + x);
System.out.println("Y = " + y);
}
}
4. Matrices
Una matriz es un grupo de variables con el mismo nombre y tipo. La manera de referirse a cada uno de los elementos de una matriz es mediante su índice. Los tipos de las matrices son los mismos que los de las variables. Tenemos 2 tipos de array: unidimensional y bidimensional.
Unidimensionales
tipo nombre_array[] = new tipo[nº];
tipo nombre_array[] = {valores};
Bidimensionales
tipo nombre_array[][] = new tipo[nº][nº];
tipo nombre_array[][] = {valores};
Ejemplo: Se declara una matriz para guardar los días que tienen los meses del año. Luego mostramos los días del mes de abril.
class meses {
public static void main(String args[]) {
int mesdias[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
System.out.println("Abril: " + mesdias[3] + " días");
}
}
Ejemplo: En este programa se utiliza un array bidimensional.
class multima {
public static void main(String args[]) {
int m[][] = new int[3][3];
m[0][0] = 1;
m[1][1] = 1;
m[2][2] = 1;
System.out.println(m[0][0] + " " + m[0][1] + " " + m[0][2]);
System.out.println(m[1][0] + " " + m[1][1] + " " + m[1][2]);
System.out.println(m[2][0] + " " + m[2][1] + " " + m[2][2]);
}
}
5. Operadores
Aritméticos
Operador | Descripción |
---|---|
+ | Suma |
– | Resta |
* | Multiplica |
/ | Divide |
% | Devuelve el resto de una división |
++ | Incrementa en 1 |
— | Decremento en 1 |
Solo se pueden utilizar para variables de tipo numérico.
Relacionales
Operador | Descripción |
---|---|
== | Igual |
!= | Distinto |
> | Mayor que |
< | Menor que |
>= | Mayor o igual |
<= | Menor o igual |
Para todo tipo de datos.
Lógicos
Operador | Descripción |
---|---|
&& | condición Y condición |
|| | condición O condición |
! | Negación de la condición |
6. Introducción de Datos
Para introducir valores en aplicaciones que trabajan bajo MS-DOS se utiliza el argumento (matriz de String) de la función main
. Estos valores se introducen a la hora de ejecutar el programa, es decir, desde el prompt de MS-DOS. Hay que tener en cuenta que estos valores serán siempre de tipo String y, si queremos realizar operaciones matemáticas, deberemos transformarlos a valor numérico. En los applets, esta manera de introducir datos quedará desfasada.
Ejemplo:
class nombre {
public static void main(String clientes[]) {
System.out.println("Hola " + clientes[0]);
System.out.println("Hola " + clientes[1]);
}
}
// A la hora de ejecutar: c:\>java nombre Pepe Antonio
7. Conversión de Datos
En Java hay una serie de funciones que realizan la conversión entre los distintos tipos de datos. Las conversiones pueden ser de número a carácter, de número a cadena, entre números, de carácter a número, de carácter a cadena y de cadena a número. Este tipo de funciones se utilizará también en los applets.
De Número a Carácter
var_char = Character.forDigit(var_num, base);
De Número a Cadena
El dato a convertir debe ser un objeto de una clase numérica.
clase_num objeto = new clase_num(valor);
var_String = objeto.toString();
var_String = String.valueOf(var_numerica);
Entre Números
El dato a convertir debe ser un objeto de una clase numérica.
clase_num objeto = new clase_num(valor);
var_tipo = objeto.tipoValue();
Float F = new Float(3.1416);
int i = F.intValue();
long l = F.longValue();
float f = F.floatValue();
double d = F.doubleValue();
De Carácter a Número
var_num = Character.digit(var_char, base);
De Carácter a Cadena
El char a convertir debe ser un objeto de la clase Character.
Character objeto = new Character(letra);
var_String = objeto.toString();
De Cadena a Número
El dato al que convertimos debe ser un objeto.
clase_num objeto = new clase_num(var_String);
var_num = objeto.tipoValue();
Ejemplo:
class conver2 {
public static void main(String numero[]) {
int n1 = Character.digit('7', 10);
int n2 = 1;
Character letra = new Character('z');
double n3 = 150.50;
String cad1 = "Numero";
String cad = String.valueOf(n3);
String cad2 = letra.toString();
System.out.println(cad1 + cad + cad2);
System.out.println(n1 + n2);
char nletra = Character.forDigit(n2, 10);
System.out.print(n1 + " " + nletra);
}
}
Ejemplo:
class conver {
public static void main(String numero[]) {
Integer entero = new Integer(numero[0]);
double n1 = entero.doubleValue();
double n2 = 150.50;
System.out.print(n1 + n2);
}
}