Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Java: un lenguaje orientado a objetos, Diapositivas de Aplicaciones de las Ciencias de la Computación

Asignatura: LaboratorioTécnicoObjetos, Profesor: Paco Durán, Carrera: Ingeniería Informática, Universidad: UMA

Tipo: Diapositivas

2010/2011

Subido el 03/05/2011

alvaro_tron-1
alvaro_tron-1 🇪🇸

4

(1)

2 documentos

1 / 46

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Laboratorio de Tecnología de Objetos
Departamento de Lenguajes y Ciencias de
la Computación 1
Java: Un Lenguaje Orientado a
Objetos
Introd. a la POO
Índice
Introducción histórica
El lenguaje Java
Estruct. Biblioteca
Excepciones
Colecciones
Entrada y salida
GUIs
Programas y paquetes
Clases y objetos
Tipos y valores
Estructuras de control
Control de errores
Arrays
Hi
Laboratorio de Tecnología de Objetos II-1
H
erenc
i
a
Clases abstractas
Interfaces
Clases genéricas
Introducción a Java
Desarrollado por Sun. Aparece en 1991
Basado en C++
(y
al
g
o en Smalltalk
)
eliminando
(y g )
definiciones de tipos de valores y macros,
punteros y aritmética de punteros,
necesidad de liberar memoria.
Orientado a objetos con:
herencia simple y polimorfismo de datos,
redefinición de métodos y vinculación dinámica.
Precompilado
ficheros fuente
java
se convierten en ficheros
bytecode
Laboratorio de Tecnología de Objetos II-2
ficheros
fuente
.
java
se
convierten
en
ficheros
bytecode
.
Interpretado
ficheros .class son interpretados por la máquina virtual de Java (JVM)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e

Vista previa parcial del texto

¡Descarga Java: un lenguaje orientado a objetos y más Diapositivas en PDF de Aplicaciones de las Ciencias de la Computación solo en Docsity!

Departamento de Lenguajes y Ciencias de

Java: Un Lenguaje Orientado a

Objetos

Introd. a la POO

Índice

 Introducción histórica El lenguaje Java Estruct. Biblioteca Excepciones Colecciones Entrada y salida GUIs

 Programas y paquetes  Clases y objetos  Tipos y valores  Estructuras de control  Control de errores  Arrays  H i

Laboratorio de Tecnología de Objetos II-

 Herencia  Clases abstractas  Interfaces  Clases genéricas

Introducción a Java

  • Desarrollado por Sun. Aparece en 1991
  • Basado en C++ (y algo en Smalltalk) eliminando(y g )  definiciones de tipos de valores y macros,  punteros y aritmética de punteros,  necesidad de liberar memoria.
  • Orientado a objetos con:  herencia simple y polimorfismo de datos,  redefinición de métodos y vinculación dinámica.
  • Precompilado  ficheros fuente java se convierten en ficheros bytecode class

Laboratorio de Tecnología de Objetos II-

 ficheros fuente. java se convierten en ficheros bytecode. class

  • Interpretado  ficheros. class son interpretados por la máquina virtual de Java (JVM)

Departamento de Lenguajes y Ciencias de

Programa en Java

  • Conjunto de clases diseñadas para colaborar en unaConjunto de clases diseñadas para colaborar en una tarea, con una clase (pública) distinguida que contiene un método de clase: public static void main(String[] args) que desencadena la ejecución del programa.
  • Las demás clases pueden estar definidas ad hoc o

Laboratorio de Tecnología de Objetos II-

Las demás clases pueden estar definidas ad hoc o pertenecer a una biblioteca de clases.

Ficheros en Java

  • Cada clase declarada como pública debe de estar en un fichero .java con su mismo nombre.
  • Cada fichero .java puede contener varias clases pero sólo una podrá ser pública.
  • Cada fichero .java debe precompilarse generando un fichero .class (en bytecodes ) por cada clase contenida en él.
  • El programa se ejecuta pasando el fichero .class de la

Laboratorio de Tecnología de Objetos II-

p g j p clase distinguida al intérprete (máquina virtual de Java)

Departamento de Lenguajes y Ciencias de

Estructura de las bibliotecas

en Java

Frontera del CLASSPATH java

java .lang java .io

Laboratorio de Tecnología de Objetos II-

Paquetes

Paquetes del sistema

java .util

Paquetes básicos del sistema

java.lang : para funciones del lenguaje  java.util : para utilidades adicionales  java.io : para entrada y salida  java.text : para formato especializado  java.awt : para diseño gráfico e interaz de usuario  java.awt.event : para gestionar eventos  javax.swing : nuevo diseño de GUI  j t i i

Laboratorio de Tecnología de Objetos II-

java.net : para comunicaciones  ...

Departamento de Lenguajes y Ciencias de

Acceso a las bibliotecas de Java

  • El nombre de cada paquete debe coincidir con el camino quep q q va desde algún directorio del CLASSPATH (o desde /java o /javax ) al subdirectorio correspondiente al paquete.
  • A las clases incluidas en java.lang se puede acceder simplemente por sus nombres, p.e.: System o Math.
  • Las clases de un paquete (salvo las de java.lang ) sólo se pueden acceder por sus nombres desde otra clase dentro del

Laboratorio de Tecnología de Objetos II-

pueden acceder por sus nombres desde otra clase dentro del mismo paquete; para acceder a ellas desde otro paquete hay que hacerlo precediéndolas con el nombre del paquete.

Ejemplo

  • Programa para calcular el valor medio de un millón de números generados aleatoriamente, usando las clases Random del paquete java.util y System del paquete java.lang.

public class TestAleatorio { public static void main(String[] args) { java.util.Random rnd = new java.util.Random(); double sum = 0.0; for (int i = 0; i < 1000000; i++) { sum += rnd.nextDouble(); }

Laboratorio de Tecnología de Objetos II-

} System.out.println(“media = “ + sum / 1000000.0); } }

Departamento de Lenguajes y Ciencias de

Métodos y variables de clase

  • Se declaran como static.
  • Se acceden/invocan etiquetando sus nombres con el nombre de la clase cuando son visibles (y también con el nombre de alguna instancia).
  • Todas las instancias y los herederos de una clase comparten las mismas variables de clase.

Laboratorio de Tecnología de Objetos II-

  • Los métodos de clase sólo tienen acceso a las variables de clase.

Métodos y variables de clase

  • sqrtsqrt yy powpow son métodos de clase de la claseson métodos de clase de la clase MathMath y sey se invocan, en la clase Punto , precedidos por Math.
  • Otro ejemplo

class Ejemplo { static public void main(String [] args) { // Variable estática System out println(“Hola”);

Laboratorio de Tecnología de Objetos II-

System.out.println( Hola ); // Método estático long time = System.currentTimeMillis(); } }

Departamento de Lenguajes y Ciencias de

Métodos y variables de instancia

  • Las variables de instancia se acceden etiquetándolas con el nombre o la referencia de la instancia.
  • Cada instancia tiene sus propias variables de instancia.
  • Los métodos de instancia se invocan mediante mensajes construidos precediendo el nombre del método con el nombre o la referencia de la instancia.
  • Un método de instancia tiene acceso a las variables de clase y

Laboratorio de Tecnología de Objetos II-

Un método de instancia tiene acceso a las variables de clase y a las variables de instancia propias.

Métodos y variables de instancia

cl l ass Ejemplo {j l { // Variable de clase static public int a; // Variable de instancia public int b; // método de instancia public int getSuma() {

Laboratorio de Tecnología de Objetos II-

public int getSuma() { // tiene acceso a ambas return a + b; } ... }

Departamento de Lenguajes y Ciencias de

Creación de objetos

  • Para poder utilizar un objeto en un programa hay que crearlo a partir del texto de una clase con un estado inicial.
  • La creación de un objeto supone hacer una reserva de espacioLa creación de un objeto supone hacer una reserva de espacio para el objeto y asignar unos valores iniciales a sus variables de estado, tiene la forma: new ()
  • El operador new devuelve una referencia al objeto que crea. Esta referencia se puede asignar a una variable de objeto o se puede utilizar directamente en alguna expresión que requiera de

Laboratorio de Tecnología de Objetos II-

p g p q q un objeto de la clase correspondiente: pto = new Punto(3, 4); pto.distancia(new Punto());

Constructores de objetos

  • Operaciones definidas en las clases con el mismo nombre de la clase que no devuelven valor.  H biliHabilitan espacio para un objeto de la clase. i bj d l l  Establecen valores iniciales para las variables de estado.
  • Una clase puede definir varios constructores (con distinto número de argumentos o con argumentos de distintos tipos) o ninguno (en cuyo caso se aplica uno

Laboratorio de Tecnología de Objetos II-

por defecto sin argumentos).  Si no hay constructores entonces existe el “por defecto”  Si hay constructores, el “por defecto no se crea”

Departamento de Lenguajes y Ciencias de

Variables de objeto

  • Para poder utilizar una variable que albergue una referencia a un objeto:  Hay que fijar la clase de los objetos a los que puede referirse <n. clase> <n. objeto> Punto pto;  Tras esta operación la variable no tiene valor conocido , y no referencia aún a ningún objeto. No puede recibir mensajes.  Hay que asignarle un objeto <n. objeto> = new () pto = new Punto(3, 4);  Estos dos pasos se pueden realizar simultáneamente:

Laboratorio de Tecnología de Objetos II-

 Estos dos pasos se pueden realizar simultáneamente: <n. clase> <n. objeto> = new () Punto pto = new Punto(3, 4);  El objeto asignado a la variable puede ser el resultado de algún método.

Uso de objetos

  • Manipulación o inspección de las variables de estado:  A las variables de estado de un objeto se accede de la forma: .<n.variable>  Para acceder desde fuera del objeto, la variable debe ser visible y puede ser una variable o expresión que devuelva una referencia al objeto.  Para acceder desde un método del propio objeto, es this , y si no hay conflicto de nombres, d i i

Laboratorio de Tecnología de Objetos II-

puede suprimirse.  Generalmente se supone que un objeto debe proteger su estado. El acceso directo a las variables de estado de un objeto por parte de otro no es aconsejable.

Departamento de Lenguajes y Ciencias de

Uso de objetos (asignación)

class Segmento { private Punto origen, extremo; public Segmento(Punto pto1, Punto pto2) { origen = pto1; extremo = pto2; } ... // Otros métodos public float longitud() { return origen distancia(extremo);

Laboratorio de Tecnología de Objetos II-

return origen.distancia(extremo); } }

Uso de objetos (duplicación)

class Segmento { private Punto origen, extremo; public Segmento(Punto pto1public Segmento(Punto pto1, Punto pto2) {Punto pto2) { origen = new Punto(pto1.x(), pto1.y()); extremo = new Punto(pto2.x(), pto2.y()); } ... // Otros métodos public float longitud() { return origen.distancia(extremo);

Laboratorio de Tecnología de Objetos II-

g ( ) } }

Departamento de Lenguajes y Ciencias de

Eliminación de objetos

  • La eliminación de objetos en Java se realiza de forma automática cuando se pierden las referencias a dichos objetosobjetos.
  • Se puede “ayudar” a la eliminación de un objeto anulando su referencia: <n. objeto> = null (en el supuesto de que no exista otra referencia).
  • Se puede activar la eliminación automática

Laboratorio de Tecnología de Objetos II-

p  invocando el método de clase gc() de la clase System.

Tipos y valores

  • En Java también se utilizan valores.
  • Los valores se clasifican en tipos.
  • SólSólo se pueden utilizar valores de los siguientes tipos: d tili l d l i i t ti byte (entero de 8 bits) short (entero de 16 bits) int (entero de 32 bits) long (entero de 64 bits) float (decimal de 32 bits) double (decimal de 64 bits) char (Unicode de 16 bits) boolean ( true, false )
  • Estas representaciones son independientes de las

Laboratorio de Tecnología de Objetos II-

Estas representaciones son independientes de las plataformas sobre las que se ejecuten los programas.

  • No se pueden definir tipos.

Departamento de Lenguajes y Ciencias de

Conversiones implícitas: contextos

  • La conversión implícita se produce en los siguientes contextos:t t  Asignaciones (el tipo de la expresión se promociona al tipo de la variable de destino)  Invocaciones de métodos (los tipos de los parámetros actuales se promocionan a los tipos de los parámetros formales)  Evaluación de expresiones aritméticas (los tipos de los d i l d l d l i l

Laboratorio de Tecnología de Objetos II-

operandos se promocionan al del operando con el tipo más general y, como mínimo se promocionan a int)  Concatenación de cadenas (los valores de los argumentos se convierten en cadenas)

Variables

  • Las variables se utilizan tanto para referirse a objetos como a valores.
  • Antes de usar una variable se requiere unaAntes de usar una variable se requiere una declaración: int contador;
  • En ambos casos las variables se pueden inicializar mediante una sentencia de asignación.

Laboratorio de Tecnología de Objetos II-

g

  • Declaración e inicialización pueden aparecer en la misma línea int contador = 0;

Departamento de Lenguajes y Ciencias de

Constantes

  • Una variable se puede declarar como constantep precediendo su declaración con la etiqueta final : final int varFinal = 0;
  • La inicialización de una variable final se puede hacer en cualquier momento posterior a su declaración.
  • Cualquier intento de cambiar el valor de una variable

Laboratorio de Tecnología de Objetos II-

Cualquier intento de cambiar el valor de una variable final después de su inicialización produce un error en tiempo de compilación.

Identificadores

  • Un identificador (nombre) es una secuencia arbitraria de caracteres Unicode: letras, dígitos, subrayado o símbolos de monedas. No debe comenzar por dígito ni coincidir con alguna palabra reservada. int número;
  • Los identificadores dan nombre a: variables, métodos, clases e interfaces.
  • Por convenio:  Nombres de variables y métodos en minúsculas. Si son compuestos, las palabras no se separan y comienzan con mayúscula. long valorMáximo;

Laboratorio de Tecnología de Objetos II-

 Nombres de clase igual, pero comenzando con mayúscula.

 Nombres de constantes todo en mayúsculas. Si son compuestos, las palabras se separan con subrayados.

long valorMáximo;

class PilaNat ...

final int CTE_GRAVITACIóN

Departamento de Lenguajes y Ciencias de

Inicialización de variables

  • Cuando no se les asigna un valor explícitamente  Las variables de clase se inicializan automáticamente alLas variables de clase se inicializan automáticamente al cargar la clase.  Las variables de instancia se inicializan automáticamente cada vez que se crea una instancia.  Las variables locales no se inicializan de forma automática y el compilador produce un error. V l d i i i li ió t áti

Laboratorio de Tecnología de Objetos II-

  • Valores de inicialización automática: false ‘\u0000’ 0 +0.0F +0.0D null

Expresiones

  • Una expresión es una combinación de literales, variables, operadores y mensajes, acorde con la sintaxis del lenguaje, que se evalúa a un valor simple o a una referencia a un objeto y devuelve el resultado obtenido.

Laboratorio de Tecnología de Objetos II-

Departamento de Lenguajes y Ciencias de

Operadores (I)

  • Un operador es una función de uno, dos o tres argumentosargumentos.
  • Existen operadores  aritméticos ( +, -, ++, --, ++, -- ) ( +, -, __, /, %* )  de relación/comparación ( >, >=, <, <=, ==, != )  lógicos ( && ||! & | ^ )

Laboratorio de Tecnología de Objetos II-

 lógicos ( &&, ||, !, &, |, ^ )  de asignación ( *=, +=, -=, =, /=, %=, &=, |=, ^= )  para la manipulación de bits  Otros operadores ( ?:_ )

Operadores (II)

  • Con un operador y sus argumentos se construyen expresiones simples.i i l 3 * 5 x += 7.3 ‘a’ <= 45
  • Las expresiones simples se pueden combinar dando lugar a expresiones compuestas. *3 * 5 + x += 7.3 y = x += 7.

Laboratorio de Tecnología de Objetos II-

  • El orden de evaluación de las expresiones compuestas depende de la precedencia y de la asociatividad de los operadores que aparezcan