Download Fundamentos Java
Document related concepts
no text concepts found
Transcript
Fundamentos de Lenguaje de
Programación Java
Fundamentos de Java
1
ORIENTACIÓN A OBJETOS
Tipo abstracto de datos (TAD)
Modelo conceptual representativo de un
conjunto de objetos cuyas características sólo se
pueden establecer a través de una colección de
operaciones
Encapsulamiento
Propiedad que permite reunir datos y
operaciones al interior de una estructura única,
restringir su acceso y ocultar información
Fundamentos de Java
2
ORIENTACIÓN A OBJETOS
Jerarquía
Propiedad que permite ordenar estructuralmente
las abstracciones. Se presenta en las formas de
especialización (herencia o relación es-un) y
agregación (composición o relación tiene-un)
Polimorfismo
Propiedad que permite a una entidad la
adopción de múltiples formas. Se presenta en
calidad de polimorfismo paramétrico, ad-hoc
(sobrecarga) y jerárquico
Fundamentos de Java
3
ORIENTACIÓN A OBJETOS
Caracterización
Un objeto es un modelo de una entidad concreta
o abstracta
Objetos de una misma categoría constituyen
una clase
Un objeto es un ejemplar (instancia) de una
clase
Los objetos interactúan mediante mensajes
Un método (operación) se activa mediante un
mensaje enviado al objeto
Fundamentos de Java
4
ORIENTACIÓN A OBJETOS
Caracterización
Un atributo (dato) es una variable interna
mantenida por un ejemplar
Los atributos de un objeto representan su estado
Los métodos de un objeto determinan su
comportamiento (conducta)
Un objeto es la combinación de estado y
comportamiento
Un miembro de una clase puede ser atributo o
método
Fundamentos de Java
5
ORIENTACIÓN A OBJETOS
Interacción entre objetos
Un objeto (emisor) envía un mensaje a otro
objeto (receptor)
El mensaje solicita la ejecución de una acción e
incluye los datos necesarios para satisfacerla
El receptor que acepta un mensaje debe
responder con la ejecución del método que
satisface la petición
La clase del receptor determina que método se
activa como respuesta a un mensaje
Fundamentos de Java
6
ORIENTACIÓN A OBJETOS
Jerarquía
Mar
Transporte
Aire
DentroAtmosfera
Nieve
FueraAtmosfera
Fundamentos de Java
Tierra
1-Persona
n-Personas
7
ORIENTACIÓN A OBJETOS
Equivalencia entre paradigmas
Orientado a objetos
Objeto
Clase
Método
Mensaje
Jerarquía de clases
Fundamentos de Java
Procedimental
Variable
Tipo
Procedimiento
Llamada
Jerarquía de tipos
8
ORIENTACIÓN A OBJETOS
Herencia
Todas las clases pertenecen a una estructura
jerárquica
Se puede definir una nueva clase a partir de una
existente
La nueva clase se denomina subclase o clase
derivada
La clase existente se denomina superclase o
clase base
Fundamentos de Java
9
ORIENTACIÓN A OBJETOS
Herencia
Las subclases heredan tanto los atributos como
los métodos de la superclase
La herencia es transitiva
Una subclase tiene todas las propiedades de la
superclase y otras más (extensión)
Una subclase constituye una especialización de
la superclase (reducción)
Un método de superclase es anulado por un
método homónimo definido en la subclase
Fundamentos de Java
10
ORIENTACIÓN A OBJETOS
Constructores
Un constructor es un método especial que tiene
el mismo nombre de la clase
El constructor se invoca automáticamente para
crear [e inicializar] un objeto de su clase
inicializar un objeto (recién creado) de su clase
Se provee un constructor sin parámetros cuando
se omite ese método en la clase
Un constructor de subclase se ejecuta después
que el constructor de su superclase
Fundamentos de Java
11
ORIENTACIÓN A OBJETOS
Constructores
Los constructores se pueden combinar con la
capacidad de sobrecarga (dos o más cuerpos de
método con un mismo nombre)
Destructores
Un destructor es un método especial invocado
automáticamente justo antes de la eliminación
de un objeto
Un destructor de subclase se ejecuta antes que
el destructor de su superclase
Fundamentos de Java
12
CÓDIGOS EN JAVA
Programa
Colección de objetos que se comunican entre sí
Conjunto de archivos de clase
Aplicación
Programa que incluye una clase con un método
llamado main()
Applet
Programa que se ejecuta desde un navegador
dotando de interactividad a una página Web
Fundamentos de Java
13
CÓDIGOS EN JAVA
Servlet
.java
Programa que se ejecuta para proveer contenido
dinámico desde un servidor Web
Archivo que contiene el código fuente de una
clase en Java
.class
Archivo que contiene el código byte resultante
de la compilación del respectivo archivo .java
Fundamentos de Java
14
PAQUETES Y PROTECCIÓN DE CLASES
La biblioteca de clases java es un conjunto
de paquetes jerárquicamente organizados
Un paquete contiene clases lógicamente
relacionadas y agrupadas bajo un nombre
El paquete java.io agrupa las clases que
permiten la entrada y salida de datos
Un paquete puede contener otros paquetes
Un paquete puede ser creado por el usuario
Fundamentos de Java
15
PAQUETES Y PROTECCIÓN DE CLASES
El nombre completo de una clase consta del
nombre de la clase precedido del nombre
del paquete, por ejemplo java.lang.System
La protección de una clase determina su
relación con las clases de otros paquetes
Se distinguen dos niveles de protección:
De paquete (predeterminado)
Público
Fundamentos de Java
16
IMPORTACIÓN DE CLASES
Se puede usar una clase de otro paquete
dando su nombre completo o importándola
import java.lang.System permite referirse
a la clase System omitiendo java.lang
Para importar un paquete completo se
reemplaza el nombre de una clase por un *
import java.lang.* importa todas las clases
públicas del paquete java.lang que se usen
en un programa
Fundamentos de Java
17
CONTROL DE ACCESO
Existen cuatro niveles y tres modificadores
de acceso:
De paquete (por omisión)
Público (public)
Privado (private)
Protegido (protected)
Un miembro declarado sin modificador de
acceso es accesible por cualquier clase
perteneciente al mismo paquete
Fundamentos de Java
18
CONTROL DE ACCESO
Un miembro declarado public es accesible
por cualquier otra clase o subclase que
desee utilizarlo
Un miembro declarado private es accesible
sólo por los métodos de su propia clase
Un miembro declarado protected es
accesible por cualquier clase del mismo
paquete o cualquiera de sus subclases
Fundamentos de Java
19
EXCEPCIONES
Una excepción es un evento que impide la
continuidad de ejecución de un programa
Las excepciones proporcionan una manera
limpia de verificar errores
Se puede capturar y manejar una excepción
en un intento por evitar que se detenga la
ejecución del programa
Las clases Exception y Error son subclases
de la clase Throwable
Fundamentos de Java
20
EXCEPCIONES
Exception cubre las fallas recuperables
Error cubre las fallas no recuperables
En un método, el código que podría lanzar
(throw) una excepción debe incluirse en un
bloque try
Al ocurrir una falla, el método lanza una
excepción para que intervenga el bloque
catch que la manejará
Fundamentos de Java
21
MIEMBROS ESTÁTICOS
Un atributo static se puede utilizar aunque
no existan objetos de su clase
Mediante el nombre de su clase, otra clase
puede acceder a un atributo public static
Un método static
no tiene referencia this, por lo cual no puede
ser invocado por un objeto de su clase
puede acceder a miembros static de su clase,
pero no a miembros no static de la misma
Fundamentos de Java
22
TIPOS DE DATOS
Categorías de tipos de datos:
Primitivos
Enteros [byte (1 byte), short (2 bytes), int (4 bytes),
long (8 bytes) y char (2 bytes)]
Reales [float (4 bytes) y double (8 bytes)]
Lógico [boolean (1 byte)]
Referenciados
Clases
Interfaces
Arreglos
Fundamentos de Java
23
TIPOS DE DATOS
Además, el paquete java.lang proporciona
las clases:
Byte
Character
Short
Integer
Long
Float
Double
Boolean
Fundamentos de Java
24
CONSTANTES SIMBÓLICAS
Una constante simbólica
es un dato de algún tipo primitivo, inicializado
explícitamente y precedido del calificador final
puede incluir el calificador static
puede definirse como
atributo de clase
local a un método
definida como local a un método, NO puede ser
declarada static
Fundamentos de Java
25
CONSTANTES SIMBÓLICAS
Cuando una constante simbólica aparece
como atributo de clase mediante
final static, sólo se crea una copia de ella para
todos los objetos de esa clase
final, se crea una copia de ella para cada objeto
de esa clase (poco útil)
Fundamentos de Java
26
VARIABLES
Para acceder a la representación en memoria
de variables de tipo
primitivo se usa direccionamiento directo
referenciado se usa direccionamiento indirecto
Una variable puede ser atributo (ámbito de
clase) o local (ámbito de bloque)
La referencia a un objeto declarado final es
una referencia constante a ese objeto
Fundamentos de Java
27
OPERADORES
Aritméticos
Relacionales
<, >, <=, >=, !=, ==
Lógicos
+, -, *, /, %
&&, ||, &, |, !,
Unarios
!, ~, -, ++, --
Fundamentos de Java
28
OPERADORES
Sobre bits
&, |, , <<, >>, >>>
De asignación
++, --, =, +=, -=, *=, /=, %=
<<=, >>=, >>>, &=, |=, =
Condicional
?
op1 ? op2 : op3
Fundamentos de Java
29
CREACIÓN DE OBJETOS
Una clase es una plantilla para crear objetos
Un objeto se crea con el operador new
Si la memoria disponible para representar el
objeto es
suficiente, el operador new retorna una
referencia al nuevo objeto
insuficiente, el operador new lanza el error
OutOfMemoryError
Fundamentos de Java
30
CONSTRUCTORES
La ejecución de un constructor inicializa los
atributos de un objeto recién creado
Un constructor implícito asigna los valores
especificados en la declaración
predeterminados por el lenguaje
Un constructor explícito
no puede ser void ni retornar un valor
admite parámetros y puede ser sobrecargado
no puede ser final ni static
Fundamentos de Java
31
ASIGNACIÓN DE OBJETOS
El operador de asignación no sirve para
copiar un objeto en otro
La semántica de obj1 = obj2 es la
identidad de los objetos obj1 y obj2
Se puede copiar un objeto en otro mediante
un método exclusivo para ello ó
un constructor de copia
El constructor de copia permite inicializar
un nuevo objeto a partir de otro existente
Fundamentos de Java
32
DESTRUCTORES
Un destructor es un método único con el
nombre predefinido finalize
Puede contener sentencias acordes con la
desaparición del objeto
Por omisión se provee uno implícito
Cuando no quedan referencias que apunten
a un objeto, éste se transforma en basura
La invocación del destructor es automática
cuando se recolecta un objeto basura
Fundamentos de Java
33
FLUJOS DE E/S ESTÁNDAR
La clase System proporciona tres flujos
estándares que se mantienen activos durante
la ejecución de un programa:
System.in destinado a la entrada de datos por
teclado
System.out destinado a la salida de datos por
pantalla
System.err destinado a la salida de errores por
pantalla
Fundamentos de Java
34
FLUJOS DE E/S ESTÁNDAR
Un objeto de la clase InputStreamReader
convierte un flujo de bytes en caracteres
La clase BufferedReader provee el método
readLine() para leer una línea de texto
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
in
isr
flujoE
La clase PrintStream provee el método
println(<arg>) para desplegar <arg> como
una línea de texto
Fundamentos de Java
35
CLASE Leer
public class Leer {
public static String dato() {
String sdato = "";
try {
// Definir un flujo de caracteres de entrada
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
sdato = flujoE.readLine();
}
catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
return sdato;
}
Fundamentos de Java
36
CLASE Leer
public static short datoShort() {
try {
return Short.parseShort(dato());
}
catch (NumberFormatException e) {
return Short.MIN_VALUE;
}
}
public static int datoInt() {
try {
return Integer.parseInt(dato());
}
catch (NumberFormatException e) {
return Integer.MIN_VALUE;
}
}
Fundamentos de Java
37
CLASE Leer
public static long datoLong() {
try {
return Long.parseLong(dato());
}
catch (NumberFormatException e) {
return Long.MIN_VALUE;
}
}
public static float datoFloat() {
try {
Float f = new Float(dato()); // Crea un objeto Float
return f.floatValue(); // Retorna un valor float
}
catch (NumberFormatException e) {
return Float.NaN;
}
}
Fundamentos de Java
38
CLASE Leer
public static double datoDouble() {
try {
Double d = new Double(dato());
return d.doubleValue();
}
catch (NumberFormatException e) {
return Double.NaN;
}
}
} // Fin de la clase Leer
Fundamentos de Java
39