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