Download Java Tutorial

Document related concepts
no text concepts found
Transcript
PROGRAMACIÓN
ORIENTADA A
OBJETOS CON JAVA
Dra. Maricela Bravo
[email protected]
JUSTIFICACIÓN
 Java
es el lenguaje de programación que
más impacto ha tenido en los últimos
años, especialmente en el mundo de
desarrollo para la Web.
 La
expansión de Java va en aumento no
sólo en el desarrollo de aplicaciones Web,
sino en el desarrollo de nuevas tecnologías
como son: servicios Web y la programación
para dispositivos electrónicos.
2
1.1 CARACTERÍSTICAS DE JAVA

Lenguaje totalmente orientado a objetos


Encapsulación, herencia, polimorfismo, etc.
Dispone de un amplio conjunto de librerías

Oracle pone a disposición un amplio conjunto de
clases para la creación de interfaces gráficas, gestión
de redes, multitarea, acceso a datos, etc.
3
1.1 CARACTERÍSTICAS DE JAVA
 Aplicaciones

Una vez que se ha compilado el programa, éste puede
ser ejecutado en diferentes sistemas operativos sin
necesidad de volver a compilar el programa.
 Ejecución

multiplataforma
segura de aplicaciones
El lenguaje carece de instrucciones que pueden
provocar accesos descontrolados a la memoria
(apuntadores en C++), la máquina virtual de Java
impone ciertas restricciones a las aplicaciones para
garantizar una ejecución segura.
4
CÓMO FUNCIONA…!
Compile-time Environment
Compile-time Environment
Class
Loader
Bytecode
Verifier
Java
Source
(.java)
Java
Compiler
Java
Bytecodes
move locally
or through
network
Java
Interpreter
Just in
Time
Compiler
Java
Class
Libraries
Java
Virtual
Machine
Runtime System
Java
Bytecode
(.class )
Operating System
Hardware
5
CÓMO FUNCIONA…!
 Java



es independiente de plataforma:
Solamente depende de la Máquina Virtual
de Java (JVM)
El código fuente se compila a bytecode, el
cual es interpretado por la JVM residente
en la máquina,
JIT (just in time) los compiladores intentan
incrementar la velocidad de ejecución.
6
VENTAJAS DE JAVA
 Portable
– Escribe una vez, ejecuta en
todas partes
 Seguridad
 Administración
 Diseñado
para la programación de redes
 Multi-hilos
 Dinámico
robusta de memoria
(múltiples tareas simultáneas)
y extensible

Clases almacenadas en archivos separados

Cargadas solamete cuando es necesario
7
EDICIONES DE JAVA

Java 2 Estándar Edition (J2SE)


Java 2 Enterprise Edition (J2EE)


Paquetes para el tratamiento de cadenas, colecciones,
acceso a datos, creación de entornos gráficos y applets.
Paquetes y tecnologías necesarias para la creación de
aplicaciones empresariales multicapa, por ejemplo
aplicaciones Web.
Java 2 Micro Edition (J2ME)

Paquetes para la creación de aplicaciones para
dispositivos electrónicos como son: PDA´s, teléfonos
móviles, agendas electrónicas, etc.
8
JDK - JAVA DEVELOPMENT KIT
javac – Compilador de java
 java - Interprete de java
 jdb Debugger de java
 appletviewer –Herramienta para ejecutar applets

 javap
- to print the Java bytecodes
 javaprof - Java profiler
 javadoc - documentation generator
9
ENTORNOS DE DESARROLLO IDE
 NetBeans
Sun Microsystem
http://www.netbeans.org
 Jbuilder
Borland
http://www.borland.com
 Jdeveloper
Oracle
http://www.oracle.com
 Eclipse
Eclipse Foundation
http://www.eclipse.org
10
ESTRUCTURA DE UN PROGRAMA EN
JAVA
public class miClase
{
public static void main(String[] args)
{
System.out.println(“Primera clase”);
}
}
11
CONCEPTOS BÁSICOS DE
PROGRAMACIÓN EN JAVA

Objetos


Clases


Contienen la definición de objetos, dónde se codifican
los métodos que van a exponer los objetos de esa
clase.
Métodos


Es una caja negra que expone una serie de
operaciones (métodos) que pueden ser utilizados por
otros programas.
Definen el comportamiento de los objetos de una
clase, estos campos pueden hacer uso de atributos
para almacenar información sobre el objeto.
Atributos
12
TAREA 2


Cómo se configuran las variables de entorno

CLASSPATH

JAVAHOME

PATH
En Windows y Linux, en línea de comandos,
archivos por lotes y con herramientas del sistema
operativo.
13
ELEMENTOS DEL
LENGUAJE DE
PROGRAMACIÓN JAVA
2.1 TIPOS DE DATOS PRIMITIVOS

Como tipos primitivos entendemos aquellos tipos de información más
usuales y básicos. Son los habituales de otros lenguajes de
programación.

boolean: No es un valor numérico, solo admite los valores true o false.

char: Cada caracter ocupa 16 bits.


Enteros: Difieren en las precisiones y pueden ser positivos o
negativos.

byte: 1 byte.

short: 2 bytes.

int: 4 bytes.

long: 8 bytes.
Reales en punto flotante: igual que los enteros también difieren en
las precisiones y pueden ser positivos o negativos.

float: 4 bytes.

double: 8 bytes.
15
TIPOS DE DATOS PRIMITIVOS Y
VARIABLES

boolean, char, byte, short, int, long, float, double
etc.

Estos tipos de datos básicos o primitivos no son
objetos.


Esto significa que no se puede utilizar el operador
new para crear una instancia de objeto para una
variable.
Declaración de variables con tipos primitivos:
float initVal;
int retVal, index = 2;
double gamma = 1.2;
boolean valueOk = false;
16
2.2 VARIABLES
Una variable es un espacio físico de memoria
donde un programa puede almacenar un datos
para su posterior utilización.
 Tipos de datos de una variable

Tipos primitivos
 Tipo objeto

17
INICIALIZACIÓN DE VARIABLES
 Si
no se asigna ningún valor previamente
al uso de la variable, el compilador
causará error.
 Java
asigna variables primitivas a cero o
falso en el caso de tipos boleanos.
 Todas
las referencias a objetos apuntan a
null inicialmente.
 Un
arreglo es un objeto que se inicia en
null al declararse, y sus elementos se
inicializan a cero durante la creación.
18
DECLARACIONES
int a ; // declaración de una variable 'a'
//inicializada a 0 (valor por defecto).
int b = 8; // declaración de una variable 'b' inicializada a 8.
NombreClase referencia; // declaración de una variable 'referencia'
preparada //para llevar un objeto de la clase 'NombreClase'.
NombreClase referencia2; // lo mismo que en la variable anterior.
Referencia = new NombreClase; // se crea un nuevo objeto de la
clase
//'NombreClase',y es asignado a la variable
//'Referencia'
Referencia2 = referencia; // Ahora también 'referencia2' tiene el
mismo
// objeto a su cargo que 'referencia'
19
ASIGNACIONES

Todas las asignaciones en Java son de derecha a
izquierda
int a = 1, b = 2, c = 5
a=b=c
System.out.print(
“a= “ + a + “b= “ + b + “c= “ + c)


¿Cuál es el valor de a, b y c?
De derecha a izquierda: a = (b = c);
20
2.3 OPERADORES ARITMÉTICOS
* / % + - operadores básicos
 * / % tienen mayor prioridad que + o –

double myVal = a + b % d – c * d / b;

Es lo mismo que:
double myVal = (a + (b % d)) –
((c * d) / b);
21
2.3 OPERADORES DE ASIGNACIÓN
Expresión
Equivalente
A += B;
A = A + B;
A -= B;
A = A – B;
A *= B;
A = A * B;
A /= B;
A = A / B;
A %= B;
A = A % B;
22
EJEMPLO
int a = 2, b = 3;
a += b;
b*=5;
a=++b;
b*+=--a+5;
23
2.3 OPERADORES RELACIONALES
==
!=
>=
<=
>
<
Igual
Diferente
Mayor o igual que
Menor o igual que
Mayor que
Menor que
24
EJERCICIO. DETERMINAR SI LAS SIGUIENTES
RELACIONES SON TRUE O FALSE
7 <= 5
2>6
 3 != 5
 a == a + 1
 b ++ != b++

25
2.4 EL RECOLECTOR DE BASURA
 Cuando
se utilizan los métodos
constructores para inicializar variables de
instancia de objetos, éstos ocupan recursos
del sistema, como por ejemplo memoria.
 Se
necesita una forma disciplinada de
devolver estos recursos al sistema cuando
ya no son necesarios.
 Para
evitar la fuga de recursos Java
realiza automáticamente la recolección de
basura.
26
2.4 EL RECOLECTOR DE BASURA
 El
recolector de basura ayuda a regresar
al sistema la memoria ocupada por los
objetos que ya no se utilizan.
 Cuando
ya no existen referencias a un
objeto, éste queda marcado para la
recolección de basura.
 La
memoria de ese objeto podrá
reclamarse al momento en que se ejecute
el recolector de basura.
27
2.5 ESTRUCTURAS DE CONTROL

Una instrucción sencilla es un comando terminado por ;
name = “Fred”;

Un bloque de instrucciones es un conjunto de comandos
encerrados por llaves
{
}

name1 = “Fred”;
name2 = “Bill”;
Los bloques de instrucciones pueden contener otros
bloques de instrucciones.
28
FLUJO DE CONTROL
 Java
ejecuta una instrucción después de
la otra en el orden en que fueron escritos.
 Muchas
instrucciones de Java son flujos
de control
Alternativas:
if, if else, switch
Ciclos:
for, while, do while
Escapes:
break, continue, return
29
IF – LA INSTRUCCIÓN CONDICIONAL

La instrucción condicional evalua una expresión
y si el resultado de la evaluación es verdadero,
entonces se ejecuta la acción
if ( x < 10 ) x = 10;
Si el valor de x es menor que 10, hacer que x sea
igual a 10
 También se puede escribir como

if ( x < 10 )
x = 10;

O alternativamente:
if ( x < 10 ) { x = 10; }
30
IF… ELSE

La instrucción condicional if … else evalua una
expresión y realiza una acción si la evaluación
resulta verdadera, o realiza otra acción si la
evaluación resulta falsa.
if (x != oldx) {
System.out.print(“x was changed”);
}
else {
System.out.print(“x is unchanged”);
}
31
IF
… ELSE ANIDADO
if ( myVal > 100 ) {
if ( remainderOn == true) {
myVal = mVal % 100;
}
else {
myVal = myVal / 100.0;
}
}
else
{
System.out.print(“myVal is in range”);
}
32
ELSE IF

Útil para escoger entre alternativas:
if ( n == 1 ) {
// execute code block #1
}
else if ( n == 2 ) {
// execute code block #2
}
else {
// si todas las evaluaciones anteriores han
fallado, execute code block #3
}
33
LA SENTENCIA SWITCH
switch ( n ) {
case 1:
// execute code block #1
break;
case 2:
// execute code block #2
break;
default:
// if all previous tests fail then
//execute code block #4
break;
34
}
EL CICLO FOR


Repetición n veces
for ( i = 0; i < n; n++ ) {
// este código se ejecutará n veces
// i desde 0 hasta n-1
}
For anidado:
for ( j = 0; j < 10; j++ ) {
for ( i = 0; i < 20; i++ ){
// este código se ejecutará 200 veces
}
}
35
CICLO WHILE
while(response == 1) {
System.out.print( “ID =” + userID[n]);
n++;
response = readInt( “Enter “);
}
36
CICLO DO {… } WHILE
do {
System.out.print( “ID =” + userID[n] );
n++;
response = readInt( “Enter ” );
}while (response == 1);
37
BREAK
 La
instrucción break causa un exit desde
el ciclo que lo llama.
for ( int i = 0; i < maxID, i++ ) {
if ( userID[i] == targetID ) {
index = i;
break;
}
} // la ejecución del programa salta
aquí después del break
38
CONTINUE
Puede ser utilizado solamente con los ciclos
while, do o for.
 La instrucción continue ocasiona que el ciclo
continue en la siguiente iteración
inmediatamente.

for ( int i = 0; i < maxID; i++ )
{
if ( userID[i] != -1 ) continue;
System.out.print( “UserID ” + i + “ :” +
userID);
}
39
2.6 ARREGLOS
Un arreglo es una lista de elementos similares
 Un arreglo tiene:
 nombre
 tipo
 tamaño
 Estos deben ser declarados cuando el arreglo es
creado.
 El tamaño del arreglo no puede ser cambiado
durante la ejecución del programa.

40
myArray =
3
6
3
1
6
3
4
1
0
1
2
3
4
5
6
7
myArray tiene espacio para 8 elementos
 Los elementos son accedidos por su índice
 en Java, los índices de los arreglos
comienzan con 0.
41
DECLARACIÓN DE ARREGLOS
int myArray[];
declara myArray como un arreglo de enteros
myArray = new int[8];
reserva 8 espacios de enteros en memoria, etiquetados
de myArray[0] - myArray[7]
int myArray[] = new int[8];
combina las dos instrucciones anteriores.
42
ASIGNACIÓN DE VALORES
Se hace referencia a los elementos del arreglo
mediante su índice.
myArray[0] = 3;
myArray[1] = 6;
myArray[2] = 3; ...
 Se puede inicializar en un solo paso.
int myArray[] = {3, 6, 3, 1, 6, 3, 4, 1};

43
ITERACIÓN CON ARREGLOS
 Los
ciclos for loops son los más usuales para
trabajar con arreglos:
for (int i = 0; i < myArray.length; i++)
{
myArray[i] = getsomevalue();
}
44
ARREGLOS DE OBJETOS
Hasta ahora solo hemos visto arreglos de tipos de
datos primitivos.
 integers
 doubles, floats, characters…
 Frecuentemente necesitamos arreglos de objetos
 Estudiantes, Libros, Créditos ……
 Se necesitan seguir tres pasos.

45
DECLARACIÓN DEL ARREGLO
1. Declarar el arreglo
private Student studentList[];

Esto declara studentList
2 .Crear el arreglo
studentList = new Student[10];

reserva 10 espacios en memoria que
pueden almacenar referencias a los
objetos de student
3. Crear el objeto de estudiante y añadirlo al
arreglo
studentList[0] = new Student("Cathy",
"Computing");
46
MÉTODOS Y
CLASES EN JAVA
CLASSES ARE OBJECT DEFINITIONS
OOP - object oriented programming
 code built from objects
 Java these are called classes
 Each class definition is coded in a separate .java
file
 Name of the object must match the class/object
name

48
THE THREE PRINCIPLES OF OOP

Encapsulation


Inheritance


Objects hide their
functions (methods)
and data (instance
variables)
Each subclass inherits
all variables of its
manual
superclass
car
Super class
automatic
Subclasses
Polymorphism

Interface same despitedraw()
different data types
draw()
49
SIMPLE CLASS AND METHOD
Class Fruit{
int grams;
int cals_per_gram;
}
int total_calories() {
return(grams*cals_per_gram);
}
50
METHODS
A method is a named sequence of code that can
be invoked by other Java code.
 A method takes some parameters, performs some
computations and then optionally returns a value
(or object).
 Methods can be used as part of an expression
statement.

public float convertCelsius(float tempC) {
return( ((tempC * 9.0f) / 5.0f) + 32.0 );
}
51
METHOD SIGNATURES

A method signature specifies:
The name of the method.
 The type and name of each parameter.
 The type of the value (or object) returned by the
method.
 The checked exceptions thrown by the method.
 Various method modifiers.
 modifiers type name ( parameter list ) [throws
exceptions ]
public float convertCelsius (float tCelsius ) {}
public boolean setUserInfo ( int i, int j, String name )
throws IndexOutOfBoundsException {}

52
PUBLIC/PRIVATE
 Methods/data
may be declared public
or private meaning they may or may
not be accessed by code in other classes
…
 Good practice:


keep data private
keep most methods private
 well-defined
interface between classes helps to eliminate errors
53
USING OBJECTS
 Here,
code in one class creates an instance
of another class and does something with
it …
Fruit plum=new Fruit();
int cals;
cals = plum.total_calories();
operator allows you to access
(public) data/methods inside Fruit class
 Dot
54
CONSTRUCTORS
 The
line
plum = new Fruit();
 invokes
a constructor method with which
you can set the initial data of an object
 You may choose several different type of
constructor with different argument lists
eg Fruit(), Fruit(a) ...
55
OVERLOADING


Can have several versions of a method in class
with different types/numbers of arguments
Fruit() {grams=50;}
Fruit(a,b) { grams=a; cals_per_gram=b;}
By looking at arguments Java decides which
version to use
56
STREAM MANIPULATION
STREAMS AND I/O

basic classes for file IO
FileInputStream, for reading from a file
 FileOutputStream, for writing to a file


Example:
Open a file "myfile.txt" for reading
FileInputStream fis = new FileInputStream("myfile.txt");
Open a file "outfile.txt" for writing
FileOutputStream fos = new FileOutputStream ("myfile.txt");
58
DISPLAY FILE CONTENTS
import java.io.*;
public class FileToOut1 {
public static void main(String args[]) {
try {
FileInputStream infile = new FileInputStream("testfile.txt");
byte buffer[] = new byte[50];
int nBytesRead;
do {
nBytesRead = infile.read(buffer);
System.out.write(buffer, 0, nBytesRead);
} while (nBytesRead == buffer.length);
}
catch (FileNotFoundException e) {
System.err.println("File not found");
}
catch (IOException e) { System.err.println("Read failed"); }
}
}
59
FILTERS
•Once a stream (e.g., file) has been opened, we
can attach filters
•Filters make reading/writing more efficient
•Most popular filters:
•
For basic types:
•DataInputStream, DataOutputStream
•
For objects:
•ObjectInputStream, ObjectOutputStream
60
WRITING DATA TO A FILE USING
FILTERS
import java.io.*;
public class GenerateData {
public static void main(String args[]) {
try {
FileOutputStream fos = new FileOutputStream("stuff.dat");
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(2);
dos.writeDouble(2.7182818284590451);
dos.writeDouble(3.1415926535);
dos.close(); fos.close();
}
catch (FileNotFoundException e) {
System.err.println("File not found");
}
catch (IOException e) {
System.err.println("Read or write failed");
}
}
}
61
READING DATA FROM A FILE USING
FILTERS
import java.io.*;
public class ReadData {
public static void main(String args[]) {
try {
FileInputStream fis = new FileInputStream("stuff.dat");
DataInputStream dis = new DataInputStream(fis);
int n = dis.readInt();
System.out.println(n);
for( int i = 0; i < n; i++ ) { System.out.println(dis.readDouble());
}
dis.close(); fis.close();
}
catch (FileNotFoundException e) {
System.err.println("File not found");
}
catch (IOException e) { System.err.println("Read or write failed");
62
}
}
}
OBJECT SERIALIZATION
Write objects to a file, instead of writing primitive
types.
Use the ObjectInputStream, ObjectOutputStream
classes, the same way that filters are used.
63
WRITE AN OBJECT TO A FILE
import java.io.*;
import java.util.*;
public class WriteDate {
public WriteDate () {
Date d = new Date();
try {
FileOutputStream f = new FileOutputStream("date.ser");
ObjectOutputStream s = new ObjectOutputStream (f);
s.writeObject (d);
s.close ();
}
catch (IOException e) { e.printStackTrace(); }
public static void main (String args[]) {
new WriteDate ();
}
}
64
READ AN OBJECT FROM A FILE
import java.util.*;
public class ReadDate {
public ReadDate () {
Date d = null;
ObjectInputStream s = null;
try { FileInputStream f = new FileInputStream ("date.ser");
s = new ObjectInputStream (f);
} catch (IOException e) { e.printStackTrace(); }
try { d = (Date)s.readObject (); }
catch (ClassNotFoundException e) { e.printStackTrace(); }
catch (InvalidClassException e) { e.printStackTrace(); }
catch (StreamCorruptedException e) { e.printStackTrace(); }
catch (OptionalDataException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
System.out.println ("Date serialized at: "+ d);
}
public static void main (String args[]) { new ReadDate (); }
}
65