• No se han encontrado resultados

Introducción a la Programación en Java

N/A
N/A
Protected

Academic year: 2021

Share "Introducción a la Programación en Java"

Copied!
22
0
0

Texto completo

(1)

Introducción a la Programación

en Java

Elementos Básicos

Ángel Lucas González Martínez Jaime Ramírez

DLSIIS. Facultad de Informática Universidad Politécnica de Madrid

El primer Programa

• En java todos los programas tienen al menos una clase

• El punto de entrada de una aplicación es:

– El método main para aplicaciones en consola, AWT y SWING

– El método init para applets

• En todo fichero .java contiene una clase con el mismo nombre que el fichero

• Hay que tener cuidado con las mayúsculas y las minúsculas en los nombres de fichero

(2)

El primer Programa (consola)

//Primer programa en Java

//El fichero debe llamarse igual que la clase

public class HolaMundo {

/**

* @param args */

public static void main(String[] args) { System.out.println("Hola Mundo"); }

}

Definición de la clase

Punto de entrada

El primer Programa (Gráfico)

• La programación GUI es más compleja que la de consola

• Se basa en la programación dirigida por eventos • No existe un flujo de ejecución único: Los

eventos de usuario determinan las acciones a realizar

• Primer programa en AWT: codigo/El primer

Ejemplo/HolaMundo_AWT.java

• Primer programa en Swing: codigo/El primer

(3)

Elementos de una Aplicación

Paquete APaquete A Unidad de compilación: •Clases (.java) •Interfaces (.java) Unidad de compilación: •Clases (.java) •Interfaces (.java) Paquete NPaquete N Unidad de compilación: •Clases (.java) •Interfaces (.java) Unidad de compilación: •Clases (.java) •Interfaces (.java) Programa Java (.class) Programa Java (.class) Unidad de compilación: •Clases (.java) •Interfaces (.java)

Los comentarios

• Fundamental en un lenguaje de programación • Dota de mayor claridad el código

• Facilita el mantenimiento

• Java permite poner comentarios que van a la documentación

• Tipos de comentarios:

– //: Una línea

– /* ..*/: Varáis líneas

(4)

Comentarios para Documentación

• De propósito general:

–@see: permite poner referencias en la sección

See Also

–@link: similar a see. El enlace es parte de un párrafo y no de una sección

• De clase: después de import e inmediatamente

antes de class. Algunos tags posibles:

–@author: Indica el autor o autores –@version: Permite indicar la versión

Los comentarios

• Comentarios de método:

– Inmediatamente antes al método – Se pueden utilizar los tags:

• @param: para cada parámetro permite indicar cual es su finalidad

• @return: permite indicar el valor de retorno • @throws: descripción de las excepciones que

levanta

• Ejemplo:..\Codigo\EjemploComentarios\Ejemplo

(5)

Los comentarios (javadoc)

• La herramienta javadoc interpreta los comentarios de documentación

• Genera las páginas html correspondientes • Permite la inserción de código html

• La documentación generada depende de:

– Los comentarios de documentación – Los parámetros pasados a javadoc

Los comentarios (javadoc)

• Se puede encontrar más información en:

http://java.sun.com/j2se/javadoc/index.jsp

• Para generar la documentación se utiliza el comando:

javadoc –author -d docs –version –private -link

http://java.sun.com/j2se/1.5.0/docs/api EjemploComentarios.java • En eclipse: project > Generate Javadoc

(6)

Algunas definiciones

• Clase: Son una descripción abstracta de un grupo de objetos que comparten características (atributos) y operaciones (métodos)

• Objeto o Instancia: Particularización de una clase

• Método: Servicio que puede realizar un objeto (de instancia) o una clase (de clase)

• Atributo: Propiedad que caracteriza a un objeto (de instancia) o compartido por todas las

instancias (de clase)

Los Identificadores

• Nombre asignado a una clase, constante, método o variable

• Puede contener cualquier letra, número o _ • No hay restricción en el número de caracteres • Distingue entre mayúsculas y minúsculas • No puede empezar por número

(7)

Los Identificadores

• Sun establece un convenio para los identificadores:

– Nombres de clase empiezan por mayúsculas – Nombres de atributos, variables y métodos

empiezan siempre con minúsculas: argumentos

– Nombres compuestos, la separación se marca con una letra mayúscula: proximaSalida

– Constantes todos los caracteres en mayúsculas:

SALUDO

SOLICITUD_INFORME

Los Literales

• Valor constante que se escribe directamente en el programa • Literales enteros: – Base diez: 503 – Octal: 0767 – Hexadecimal: 0x1F7 • Literales reales: – Reales: 3.14159f, 0.314159E10f – Doble precisión: 6.5454E-10, 9.81

(8)

Los Literales

• Carácter

– Se representan entre comillas simples ‘a’

– Caracteres especiales o de escape: ‘\t’, ‘\n’, ‘\\’, ...

• Cadena de caracteres

– Conjunto de caracteres entre comillas dobles – Para incluir comillas dobles en una cadena de

caracteres se utiliza \”

“Hola Mundo” “Hola \“Mundo\””

Tipos de datos básicos

• Los tipos básicos proporcionados son: Palabra Tipo de datos Rango

boolean Variable lógica false y true byte Entero de 8 bits De –128 a 127 char Character.SIZE

Carácter Unicode Cualquier carácter

short Short.SIZE De Short.MIN_VALUE a Short.MAX_VALUE

int Integer.SIZE De Integer.MIN_VALUE a Integer.MAX_VALUE

long Long.SIZE De Long.MIN_VALUE a Long.MAX_VALUE

float Float.SIZE De Float.MIN_VALUE a Float.MAX_VALUE

(9)

Clases Asociadas a los Tipos Básicos

• Java proporciona clases para los tipos básicos • Necesarias para las contenedoras y plantillas • Java 5 conversión automática Básico ↔ Clase

• Proporciona conversión String ↔ Tipo (valueOf

↔ toString) Clase Tipo básico Boolean boolean Byte byte Character char Double double Float float Integer int Long long Short short

Atributos, constantes y variables

• Cada instancia tiene una copia de los atributos • Las constantes son compartidas por todas las

instancias

• Las constantes públicas son accesibles usando el nombre de clase

• Las variables sólo existen dentro de un ámbito • No pueden existir nombre repetidos en un

subámbito

• Las variables pueden definirse en cualquier parte dentro de un ámbito o bloque

(10)

Atributos, constantes y variables

• Atributos de instancia:

– Se definen fuera de los métodos – No tienen posición fija

– Aconsejable agruparlos en una zona del fichero – Al definirlos se pueden asignar un valor inicial – No debería existir atributos públicos

– Pueden ser modificados consultado por métodos – Tiene un tipo asociado

Atributos, constantes y variables

• Atributos de case:

– Se aplica lo anterior

– Van precedidos de la palabra reservada static

– Puede ser consultado y modificado por métodos de clase

– Compartida por todas las instancias

• Constantes:

– Van precedidas de final static

– Han de ser inicializadas

– Compartidas por todas las instancias – Puede ser pública

(11)

Atributos, constantes y variables

public classLiterales_Tipos_Basicos {//Literales_Tipos_Basicos

private intatributoInstnacia = 0;

private static intatributoClase = 0;

public static intatributoClasePublico = 0;

final static intSOLICITUD_INFORME = 1;

public final static floatEURO =166.386f;

public static voidmain (String [] args) {//main

floatcont=2.5f;

Enumerados

• Aparecen en Java 5

• Antes de JDK 1.5 se usaban constantes • Se definen utilizando la palabra enum • La conversión a String la hace Java • La obtención del ordinal por medio de

java.lang.Enum <Enum>

• Se pueden definir métodos asociados a un enumerado

• Se pueden asociar atributos a un enumerado • Ejemplo:

(12)

Array

• Un array es un conjunto de elmentos del mismo tipo

• El acceso a cada elemento se realiza por medio de un índice

• La primera posición del array es la cero

• La última es n-1

• La sintaxis es: tipo [] id_array;

• Para conocer el tamaño de un array se usa la propiedad length

Array

//Array sin tamaño especificado int[] nValores;

//Crea un array de 55 enteros, no se ha inicializado ninguna posición int[] nValores2 = new int[55];

//Crea un array de tres posiciones, y se inicializa cada una de ellas int[] nValores3 = {2, 3, 4};

String [] conjuntoCadenas = newString [5]; String [] conjuntoCadenas2 = {"Hola", "Adiós"}; //Array de una clase definida por el usuario MiClase [] conjMiClase = newMiClase [3]; //...

nValores = new int [3]; nValores[0] = nValores3 [2]; conjuntoCadenas[1] = "Hola";

//Los parámetros dependen de los constructores de la clase conjMiClase[0] = newMiClase(...);

(13)

La clase

String

• Define un array de caracteres • Literales entre comillas dobles (“)

• Una vez creado no se puede cambiar el valor de su contenido

• A una variable string se le puede asignar un nuevo valor

• StringBuffer define Strings modificables

La clase

String

• char charAt (intpos)

• intcompareTo (String con):

– Resultado cero son iguales

– Resultado negativo “con” es mayor – Resultado positivo si “con” en menor

• intcompareToIgnoreCase (String con)

• booleanequals (String compara) • booleanequals (Object compara)

• booleanequalsIgnoreCase (String compara) • int length()

(14)

Expresiones y operadores

• Expresión: conjunto de identificadores o literales combinados usando operadores para obtener un valor

• Los elementos participantes en una expresión deben respetar restricciones y tipos

• Java proporciona operadores: aritméticos, de relación, lógicos, de bits, de cadena, de

selección, conversión y de asignación

Operadores aritméticos

• Unarios: -, ++ y

--• Binarios: +, -, *, /,%: En la división si los

operandos son enteros el resultado es entero. El módulo sólo es aplicable con enteros

int a = 2, z;

float b = 3.5f; z = -a; //z vale -2

z = a++; //a vale 3, z vale 2 z = --a; //a vale 2, z vale 2 b--; //b vale 2.5

(15)

Operadores aritméticos

int a = 2; int b = 5; int c = 7; float d = 3.5f; float e = 2.5f; float f = 5f / 2; //f vale 2.5 c = a + b - c; //c pasa a valer 0 c = b / a; //c pasa a valer 2 c = b % a; //c pasa a valer 1 c = a * b + c; //c pasa valer 11 f = e – d; //f pasa a valer -1.0

Operadores de asignación y relación

• Operadores de asignación =, <op>=

• Comparan dos elementos • Retornan cierto o falso

• Los operadores son: Operador Significado

== Igual* != Distinto* < Menor <= Menor o igual >= Mayor o igual > Mayor

(16)

Operadores lógicos

• Y lógico: && • O lógico: ||

• O exclusivo (Xor): ^ • Negación: !

• Java utiliza evaluación perezosa

c = a > 1 || ++e != 7 && m(); //c = ((a > 1) || (((++e) != 7) && m())) /* como a es mayor que 1, ya se sabe con seguridad que c será cierto, por lo que no se evaluará el resto de la expresión, es decir, no se autoincrementa e ni se llama a la función m */

Operadores sobre bits

• Y bits: & • O bits: | • Xor bits: ^ • Complemento ~ • Desplazamiento o shift: Operador Significado

op1 << op2 Desplaza en op1 a la izquierda el número de bits indicados por op2. Se rellena con ceros los bits de la derecha

op1 >> op2

Desplaza en op1 a la derecha el número de bits indicados por op2. Se rellenan los bits de la izquierda con el más significativo (bit de signo)

op1 >>> op2 Desplaza en op1 a la derecha el número de bits indicados por op2. Se rellena con ceros los bits de la izquierda

(17)

Operadores de cadena y selección

• Operador de cadena concatenar: +

• Operador de selección: ?: String saludo = "Hola"; String nombre = "Luis"; //Toma el valor “Hola, Luis”

String saludoPersonalizado = saludo + ", " + nombre; //Toma el valor “5*6=30”

String operación = "5*6=" + 5 * 6;

float nota = 5.4;

String calificacion = (nota >= 5.0) ?

"Aprobado" : "Suspenso";

Conversión de tipos (

casting

)

• Permite el cambio de un tipo a otro

• Produce una modificación de la información • No siempre es factible la conversión

public class Casting

{//Casting

//Se define el punto de entrada

public static void main (String [] args){//main

char caracter = 'a';

int entero = (int) caracter;

float real = 66.65533f;

long enteroLargo = (long) real;

String prueba = "Hola";

//int entero2 = (int) prueba; ERROR

... }//main }//Casting

(18)

Precedencia de operadores

Tipo Operadores Asociatividad

postfijo [] . () expr++ expr-- De izquierda a derecha unarios ++expr --expr +expr -expr ! ~ De derecha a izquierda creación/casting new (type)expr De derecha a izquierda multiplicativo * / % De izquierda a derecha suma y resta + - De izquierda a derecha desplazamiento << >> >>> De izquierda a derecha de relación < <= > >= instanceof De izquierda a derecha igualdad == != De izquierda a derecha y sobre bits & De izquierda a derecha xor sobre bits ^ De izquierda a derecha o sobre bits | De izquierda a derecha y lógico && De izquierda a derecha o lógica || De izquierda a derecha operador de selección ?: De derecha a izquierda asignación = "op=" De derecha a izquierda

Sentencias de Control de Flujo

• Condicional if if (expresión_lógica) { sentencias } [else { sentencias }] Evaluar expresión Sentencias de IF Sentencias de ELSE false true

(19)

Sentencias de Control de Flujo

• Selección switch: Expresión

Opción1Opción1 Opción2Opción2 OpciónnOpciónn break? break? defaultdefault break? switch(expresión) {

caseet1: sentencias1;

[break;]

caseet2: sentencias2;

[break;]

. . .

caseetn: sentenciasn;

[break;] [default: sentencias;] } Si No No No

Sentencias de Control de Flujo

• Bucle for:

– Se conoce el número de iteraciones

– Utiliza una o varias variables a modo de contador – Termina cuando la condición deja de ser cierta

InicializaciónInicialización Condición SentenciasSentencias Actualizar Contadores Actualizar Contadores false true

for(inicialización;condición;

actualización)

{

sentencias

(20)

Sentencias de Control de Flujo

• Bucle for each(JDK 1.5):

– Recorrido de una colección – No hay contador

– Variable que se rellena con cada uno de los valores del contenedor o array

int i;

char j;

for (i= 1, j= 'c'; i<nElementos && j<'k';i++,j+=2)

{

sentencias

}

for (intd= 0; d<nElementos;d++)

{

sentencias

}

Sentencias de Control de Flujo

• TMes2.values retorna un array con los valores del enumerado

• También se puede recorrer una colección. Por Ejemplo una cola

for (TMes2 mes : TMes2.values())

{

System.out.println("El mes: "+mes+

“ tiene un valor numérico de "+mes.intValue()); }

java.util.Queue<Float> cDatos=new

java.util.LinkedList <Float>(); cDatos.add((Float) 5.4f);

cDatos.add(new Float(5.6));

cDatos.add((Float) 5.7f);

for (Float dato : cDatos)

{//FOR

System.out.println("[for java 5 sobre

Queue<Float>]Dato:"+dato); }//FOR

(21)

Sentencias de Control de Flujo

• Bucle while:

– Las sentencias se realizan un número de veces en función de una condición

– Se sale cuando la condición se evalúa como falsa Condición SentenciasSentencias false true while(condición) { sentencias }

Sentencias de Control de Flujo

• Bucle do while:

– La condición de salida se comprueba al final del bucle

– Las operaciones del bucle se realizan siempre al menos una vez

Condición false true SentenciasSentencias do { sentencias } while(condición);

(22)

Ejercicios

• Realizar un programa que reciba una lista de cadenas como argumento y las muestra por pantalla una vez ordenadas

• Realizar un programa que pida al usuario

cadenas hasta que este diga que no quiere dar más cadenas. Le pregunta al usuario si quiere orden ascendente o descendente. Las cadenas se ordenan según el criterio dado. Utilizar

Referencias

Documento similar

a) Estudio de los fundamentos del desarrollo de Servicios Web en Java. En esta fase se abordan los fundamentos básicos del presente Proyecto, lo que incluye, entre otros aspectos, las

History and the Java type of environment, are the first steps of learning a simple language, powerful, reliable and secure, plus its versatility is most demanded. application

Como lenguajes de programación se han usado Java para los endpoints, Python para obtener los datos de los sensores en la Raspberry y nodejs para la conexión con la base de datos y

Las  aplicaciones Android están escritas en lenguaje Java.  Aunque  ya hemos 

Para implementar las comunicaciones entre las aplicaciones Java y Matlab se han utilizado las funciones del paquete java.net (implementación en Java) y de la

Clases magistrales sobre conceptos básicos atingentes a la Morfología como disciplina lingüística y atingentes a conocimientos teóricos básicos sobre las clases de palabras y

En el servlet es necesario configurar el método doPost() para la recepción de cada uno de los datos que vendrán desde el JSP mediante la request, para esto será necesario utilizar

También podrás elegir nuevos cursos con un nivel más avanzado para seguir especializándote.. Contenido