double. 4 bytes (entre 6 y 7 cifras decimales equivalentes) ... double pi = 3.14159; // Un elemento de tipo real de doble //precisi n. ... – PowerPoint PPT presentation
1 El lenguaje de programación Java Pedro Rodríguez Moreno Paradigmas de Programación (ICI/IECI) Departamento de Sistemas de Información Facultad de Ciencias Empresariales 2 Introducción a Java 3 Introducción
Java es una plataforma virtual que provee
Un lenguaje de programación (OO).
La Java Virtual Machine (JVM) Una máquina virtual con su propio set de instrucciones.
La Java Plataform API (Application Programming Interface) Una interfaz para la programación de aplicaciones.
4 Qué es Java
De acuerdo a Sun Microsystem
Java es un lenguaje simple orientado a objetos distribuído interpretado robusto seguro arquitectura neutral portable de alta-performance multithread (multihilo) y dinámico.
Java es muy parecido a C/C pero hay varias diferencias importantes.
5 Estructura de un Programa
Un programa en Java consiste de uno o más definiciones de clases. Una de estas clases debe definir un método main() desde donde el programa comienza a correr
// A Java Hello World Program
public class HelloWorld
public static void main( String args )
System.out.println( Hello World )
6 Entorno de Java
SDK (Software Development Kit)
Necesario para crear (desarrollar y compilar) programas
JRE (Java Runtime Environment)
Necesario para ejecutar un programa Java
SDK JRE herramientas de desarrollo
La tecnología Java se organiza en subáreas
J2SE (Java 2 Platform Standard Edition)
J2EE (Java 2 Platform Enterprise Edition)
SDK soporte para servicios web y componentes
J2ME (Java 2 Platform Micro Edition) entorno flexible y robusto para aplicaciones que funcionan en dispositivos tales como teléfonos móviles PDA
Java Web Services aplicaciones basadas en la web que utiliza estándar XML y protocolos de transporte para intercambiar datos con los clientes que le invocan.
Recursos en http//java.sun.com.
7 Compilación y ejecución en la línea de comandos
Compilación
En Unix/Linux
javac -classpath . nombre_archivo.java
En Windows
C\javac -classpath . nombre_archivo.java
Ejecución
En Unix/Linux
java -classpath . nombre_archivo argumentos
En Windows
C\java -classpath . nombre_archivo argumentos
nombre_archivo.java es un archivo de texto que contiene la clase principal (clase que contiene el método main)
public static void main (String args)
Se obtiene el archivo nombre_archivo.class en byte-code (lenguaje de máquina de la JVM de Java) 8 Variables de ambiente
JAVA_HOME
Directorio en el que está instalado el J2SE SDK
Por ejemplo
JAVA_HOME /usr/local/jdk1.5.0_06 (definir en .profile o .bashrc en Unix)
C\set JAVA_HOME c\Archivos de programas\Java\jdk1.5.0_06 (en Windows)
CLASSPATH
Ruta de acceso a las librerías y APIs de Java.
Por ejemplo
CLASSPATHJAVA_HOME/libJAVA_HOME/lib.
C\set CLASSPATH.JAVA_HOME\libJAVA_HOME\lib
PATH del sistema
Directorio donde se encuentran los ejecutables de java
Por ejemplo
PATHPATHJAVA_HOME/bin.
C\set PATHJAVA_HOME\binPATH
Cambiar las variables de ambiente
En Unix/Linux incoporar variables en el profile del shell en uso.
En Windows Panel de Control gtgt Sistema gtgt Opciones avanzadas gtgt Variables de entorno.
9 Por qué Java es diferente a otros lenguajes
Java difiere de otros lenguajes porque
Es interpretado
Arquitectura neutral
No hay punteros del estilo de C/C. Estos existen pero no son explícitamente visibles.
Posee un Garbage Collector (Recolector de Basura).
Viene con una sofisticada librería de clases (paquetes de clases).
Incluye soporte para concurrencia networking e interfaces gráficas.
10 Aplicaciones y Applets
Los programas Java vienen en dos formas
Aplicaciones.
Applets.
Los Applets tipicamente son descargados desde un browser y son ejecutadas por la Java Virtual Machine (JVM) la cual es parte del browser.
Las aplicaciones son programas standalone que pueden hacer casi cualquier cosa.
11 El J2SE Ambiente de desarrollo (jsdk) Ambiente distribuido (jre) 12 La Tecnología Java Programación UI JNI Programación AWT Swing java. WWW JavaBeans Java3D Applets Programación gráfica Java2D Java Server Pages Sistemas embebidos Servidor JavaSpaces Servlets JINI RMI Programación distribuida CORBA JDBC Bases de datos Enterprise JavaBeans 13 Java es Orientado a Objetos
Objetos
Clases
Métodos
Subclases
Herencia simple
Polimorfismo
Enlace dinámico
Encapsulado
14 Java es un lenguaje simple
Sintaxis familiar estilo C.
Se eliminan las características complejas de C y C.
No hay aritmética de punteros.
No hay herencia múltiple.
No hay delete (Java posee un Garbage Collector).
Bastante más amistoso que C y C.
15 La API de la Plataforma Java
API Application Programming Interface.
Consiste en una biblioteca de clases que provee
Manejo de archivos.
Interfaces gráficas (AWT).
Acceso a la red internet (applets sockets).
Acceso a bases de datos (jdbc).
Objetos Distribuidos (RMI).
16 Multiplataforma
Windows95 y NT.
Power/Mac
Unix (Solaris Linux ...)
Compatibilidad a nivel de fuentes código intermedio y biblioteca de clases.
17 Implementación de la Plataforma Java
La implementación de la plataforma Java provee
Un compilador de Java (javac) para traducir código fuente al set de instrucciones de la máquina virtual de Java (bytecode).
Un intérprete (java/appletviewer) o un compilador JIT para ejecutar las instrucciones de la máquina virtual.
Una implementación de la API de Java.
18 La Portabilidad Intérprete Linux Intérprete Solaris Fuente Java Compilador javac bytecode Intérprete Windows95 Intérprete Mac java/appletviewer 19 Los Ambientes de Compilación y Ejecución Ambiente Tiempo de Compilación Ambiente Run Time (Plataforma JAVA) 20 El Lenguaje de Programación
JAVA
21 Identificadores
Nombran variables funciones clases y objetos.
Comienza con una letra un subrayado (_) o un símbolo de dólar (). Los siguientes caracteres pueden ser letras o dígitos.
Se distinguen las mayúsculas de las minúsculas.
No hay una longitud máxima establecida para el identificador.
22 Tipos primitivos en Java 23 Variables
Sirven para referirse tanto a objetos como a tipos primitivos.
Tienen que declararse antes de usarse
lttipogt identificador
int posicion
Se puede inicializar mediante una asignación
lttipogt identificador valor
int posicion 0
Definición de constantes
static final float PI 3.14159f
24 Duración y visibilidad de las variables
Las variables pueden ser de dos tipos
Variables miembro de una clase (variables de instancia y de clase).
Variables locales creadas en un método.
Variables miembros
Son declaradas en cualquier lugar de una clase fuera de cualquier método.
Las variables miembro static existen desde que se crea el primer objeto o cuando se utiliza el primer método static de la clase. Son visibles y compartidas por todos los objetos de la clase viendo el mismo contenido en ellas.
Las variables miembros se pueden acceder desde otras clases dependiendo de los permisos de acceso de la clase y de la variable (public protected package private).
Las variables miembros de objetos (o de instancia) existen desde que se crea el objeto. Las variables de instancia poseen valores particulares para cada objeto.
Variables locales
Se declaran en cualquier lugar del cuerpo de un método o en cualquier bloque dentro de un método.
Las variables locales existen desde el punto en que se crean hasta que se llega al final del bloque en el que han sido creadas.
Las variables locales en un bloque no pueden tener el mismo nombre que otra variable local que sea visible aunque ésta esté definida en un bloque más exterior. No debe haber conflicto de nombre entre variables locales.
Los argumentos son como variables locales visibles en todo el método.
25 Inicialización de las variables
Se puede asignar un valor a cada variable de un tipo primitivo en el momento de su creación tanto si es variable miembro como si es local
int i 0
long j 100 k 100000
Variables finales
Son aquellas cuyo valor una vez inicializadas no puede cambiar.
La inicialización puede estar separada de la declaración.
Ejemplo
final double PI 3.141592654
final int MAXNUM
MAXNUM 234
26 Declaraciones
int k // Un elemento de tipo entero
int k 10 // Un elemento entero inicializado
double pi 3.14159 // Un elemento de tipo real de doble
//precisión.
char c a // Un elemento de tipo char
boolean flag false // Un elemento booleano inicializado
//con un valor de verdad
String s Hola //Un elemento de tipo string (es un
//objeto)
27 Expresiones
Las expresiones se forman con casi los mismos operadores de C/C
Aritméticos - /
De bits (Bitwise) gtgt ltlt
Pre y postincremento k j --k j
Relacionales gt lt gt lt !
Booleanos !
Cast (int) pi
Condicional (k gt j k j)
28 Operadores de Asignación
Se usa la misma sintaxis de C k 1
El operador de asignación se usa igual que en C k (j 1) 2
También existen - /
Java realiza conversiones implícitas pero es más estricto que C.
29 Precedencia de operadores
De mayor a menor precedencia
Postfix operators . (params) expr expr
Unary operators expr --expr expr -expr !
Creation or cast new (type)expr
Multiplicative /
Aditive -
Shift ltlt gtgt gtgtgt
Relational lt gt lt gt instanceof
Equality !
Bitwise AND
Bitwise exclusive OR
Bitwise inclusive OR
Logical AND
Logical OR
Conditional
Assignment - / ltlt gtgt gtgtgt
Para la misma precedencia
En Java todos los operadores binarios excepto los operadores de asignación se evalúan de izquierda a derecha.
Los operadores de asignación se evalúan de derecha a izquierda.
30 Conversiones implícitas
byte lt short lt int lt long lt float lt double
Ejemplos
int i 1
long k i // Ok
k 5500000000000
float f k // Ok.
double x 5.0e-30
int k x // Error en compilación
float x 15.5f
int k x // Error en compilación
short s k // Error en compilación
31 Conversiones implícitas
Las conversiones son aceptadas usando cast
float f 50.0f
int k (int)f // Ok en compilación
Java no avisa en caso de errores de conversión numéricos.
int k 256
byte b (byte)k // b 0 rebalse
32 Instrucciones de Control
Similar a C/C
Instrucción condicional if.
Ciclos while y do ... while.
Ciclos for.
Selección switch/case.
33 Control de flujo switch(expresión) case valor1 sentencias break case valor2 sentencias break default sentencias if( expresión-booleana ) sentencias else sentencias 34 Ejemplo
En Java la declaración de un arreglo es similar a la declaración de un puntero en C
En Java int A
En C int A
42 Epílogo
Errores típicos con arreglos
int A10 // Ahí no va el tamaño!
int A // Ok!
A1 100 // Todavía no se ha pedido
// espacio para el arreglo.
Petición de espacio para un arreglo
int A
A new int50
A1 100 // Correcto!
Aquí se determina el tamaño 43 El método main()
La clase que lo contiene conduce la aplicación
Al ejecutar el programa se busca el método main que contiene dicha clase
public class Echo
public static void main (String args)
for (int i 0 iltargs.lengthi)
System.out.print(argsi )
String args parámetros del programa que se reciben desde el shell.
Ejemplo de invocación
java Echo Hola mundo
Puede haber más de un main pero sólo se ejecutará uno.
44 Argumentos de entrada de un Programa
Al ejecutar un programa desde el shell el usuario puede especificar argumentos tal como
java Echo Hola que tal
donde Echo es la clase principal (Echo.class).
Los argumentos Hola que y tal se reciben en un arreglo de strings en el main llamado args
public static void main(String args) cuerpo del main
args0 es Hola
args1 es que
args2 es tal
45 Clases en Java definición
class nombre_de_clase extends nombre_de_superclas e implements nombre_interface ...
type variable_de_instancia1
type variable_de_instancia2
type variable_de_instanciaN
nombre_de_clase(lista de parámetros) //Método de instanci o constructor
cuerpo_del_método
type nombre_de_metodo1(lista de parámetros)
cuerpo_del_método
type nombre_de_metodo2(lista de parámetros)
cuerpo_del_método
...
46 Atributos
Atributos de clase o variables de (la) clase
Común a todas las instancias de una clase (funcionan como variables globales).
No necesitan un objeto para examinarlas o modificarlas.
Compartidas por todos los objetos de la misma clase.
Sólo se inicializan una vez.
Ej static public int nextCodigo
Atributos de instancia o variables de instancia
Determina el estado de los objetos.
Cada objeto reserva memoria para todas las variables de instancia.
Declaración
accesostaticfinal tipo nombreAtributo valor_inicial
47 Inicialización de los atributos
Si un atributo no se inicializa se le asigna un valor por defecto en función de su tipo
48 Control de acceso en Java
public los miembros que se declaran como public son accesibles en cualquier parte donde la clase sea accesible.
protected miembros declarados como protected sólo accesibles en la propia clase y por sus clases descendientes.
private miembros declarados como private sólo accesibles en la propia clase.
package no llevan modificador de acceso y son accesibles y heredados por el código del mismo paquete.
public class A
public int at1
private int at2
A a //creamos el objeto a.at1 6 //OK a.at2 5 //ERROR 49 Métodos
Código que entiende y manipula el estado de un objeto.
Pueden ser llamados dentro de la clase o por otras clases.
Es obligatorio indicar el tipo de retorno o void.
Declaración
accesostatic tipoRetorno nomMet (argumentos)
//cuerpo del método
return valor a retornar
Invocación utilizando la notación (operador) punto
objReceptor.nomMet(argumentos)
50 Métodos Estáticos y variables estáticas
Los métodos estáticos se invocan sobre la clase no sobre un objeto.
Este tipo de método sólo puede acceder a las variables y métodos de clase (static).
Los métodos y variables de instancia estáticos actúan con relación a la clase y no con respecto a cada una de las instancias de la clase.
Los métodos estáticos sólo pueden llamar a otros métodos static directamente y no se pueden referir a this o a super.
El declarar una variable static es equivalente a declararlas como variables globales que son accesibles desde cualquier fragmento de código. Si se necesita realizar cálculos para inicializar las variables static se puede declarar un bloque static que se ejecuta una sola vez cuando la clase se carga por primera vez.
51 Ejemplo con Métodos Estáticos
class Punto extends FiguraGeometrica
float x
...
public static boolean sonIguales(Punto p Punto q)
return p.xq.x p.yq.y
Cuidado!
public static boolean sonIguales(Punto q)
return xq.x yq.y
Cant make a static reference to nonstatic variable x in class Punto.
Las variables de instancia no pueden ser accesadas desde métodos estáticos.
52 Cómo se instancia una clase
Al crear el primer objeto de la clase o al utilizar el primer método o variable static se localiza la clase en el disco (archivo .class) y se carga en memoria.
Se ejecutan los inicializadores static (sólo una vez).
Para crear un nuevo objeto
Se reserva la memoria.
Las variables miembros reciben los valores por defecto según el tipo de datos primitivo.
Se ejecutan los inicializadores explícitos o de objeto.
Se ejecutan los constructores.
53 Sobrecarga de métodos
Java soporta sobrecarga de métodos
El mismo nombre pero con diferente lista de argumentos.
Devuelven siempre el mismo tipo.
public class ListaEnteros
public void add (int elem)
public void add (int elem int index)
54 Paso de parámetros
Los valores de los parámetros son copias de los valores que especifica el que lo invoca.
Tipos primitivos no cambian.
Los objetos pueden cambiar su estado se pasa por valor la referencia.
Si se usa una variable de tipo primitivo como argumento el pasaje de parámetros se llama por valor (se hace la copia del valor del argumento actual de la invocación a la variable local declarada como argumento).
Si el argumento es referencia a objeto (Clase) el pasaje de parámetro se llama por referencia (puntero a objeto) se copia el valor de la referencia del argumento de la llamada actual a la referencia del argumento del método.
55 Constructores
Método que tiene el mismo nombre que la clase.
Una clase puede tener varios constructores que se diferencian por el tipo y número de argumentos (sobrecarga de métodos).
Se invoca automáticamente cada vez que se crea un objeto de la clase.
No pueden especificar tipos ni valores de retorno.
Permite sobrecarga para especificar formas distintas de inicializar los objetos.
Si no se define el compilador crea uno por defecto sin argumentos que inicializa los atributos a los valores por defecto.
El programador también puede definir un constructor sin argumentos.
56 Constructor de copia
Su objetivo es crear una copia de un objeto.
class Punto
private float x y
Punto (Punto p) // Recibe como pámetro la referencia de un
// objeto que ya existe.
x p.x
y p.y
Ejemplo
Punto pto new Punto(p)
57 Creación de objetos
La creación de un objeto se realiza en tres pasos
Declaración proporcionar un nombre a un puntero
Punto miPunto (null)
Instanciación asignar memoria al objeto (en el heap)
miPunto new Punto()
Inicialización opcionalmente se pueden proporcionar valores iniciales a las variables de instancia del objeto en la declaración o mediante constructores.
Suponiendo que es local a un método 58 Destrucción de Objetos
En Java no existen los destructores de objetos como C (nombreClase() delete).
El sistema (JVM) se ocupa de liberar de forma automática la memoria que ocupan los objetos que han dejado de ser referenciado (ningún puntero apunta a ellos). Esto se puede producir debido a
Porque al puntero se le ha asignado el valor null.
Porque a ese puntero se le ha asignado la referencia de un objeto diferente.
Java cuenta con un recoletor de basura (garbage collector) para liberar de forma automática la memoria.
No se sabe cuando se va a activar exactamente el recolector de basura.
Se puede invocar explícitamente con System-gc() aunque esto es sólo una sugerencia que se envía a la JVM.
59 Ejemplo
public class Grafica
public static void main (String args)
Punto miPunto new Punto()
miPunto.Dibujar()
miPunto.Mover(3060)
System.out.println(X miPunto.CoordX() Y miPunto.CoordY() )
60 Igualdad vs. Identidad
Tener en cuenta que
y ! compara punteros de manera que
Punto p1 new Punto()
Punto p2 new Punto()
Si comparamos
p1 p2 --gt false luego p1 ! p2
p1.equals(p2) --gt true compara el CONTENIDO de los objetos.
61 El puntero this itself
Invocación a otro de los constructores de la clase
public Punto (float x float y)
this.x x
this.y y
public Punto()
this(00)
Instancia actual
Pasar el objeto actual como parámetro de otro método
listaPunto.insertar(this)
En cualquier método del objeto actual
this.Mover(3570)
62 super
Si se desea invocar al constructor de la superclase se debe recurrir al método super. Por ejemplo
class F extends Frame
super(Este es un frame)
...
...
Si se necesita llamar al método padre dentro de una clase que ha reemplazado ese método se puede hacer referencia al método padre con la palabra clave super
import MiClase
public class MiNuevaClase extends MiClase
public void Suma_a_i( int j )
i i ( j/2 )
super.Suma_a_i( j )
63 Reglas de alcance
Porción del programa en el que se puede hacer referencia al identificador
Un identificador debe ser único dentro de su ámbito
Alcance de Clase
los métodos de una clase pueden modificar directamente los atributos de clase y de instancia
Un método de clase (static) sólo puede acceder a atributos de clase.
Alcance de Bloque
variables locales y parámetros de un método
cuando se anidan los bloques y existen dos identificadores con nombres iguales el compilador da error de sintaxis (variable ya definida)
si una variable local tiene igual nombre que un atributo de la clase éste queda oculto.
64 Normas de estilo
No es que existan reglas pero es conveniente seguir unas normas para que el código sea mas legible
Nombre de clase empieza por Mayúsculas.
Nombre de métodos y atributos por minúsculas.
Las constantes con MAYÚSCULAS completamente.
Cuando empieza una nueva palabra la ponemos en mayúsculas ej dibujarRectangulo
65 Primer Ejemplo
Uso de la AWT
66 Ejemplo 1 Código fuente
import java.awt.
public class myGui extends Frame
Button butQuit
Label etiq
TextArea area
TextField texto
Checkbox checkBox
List listaItem
Canvas canvas
Panel panel
public myGui()
setLayout(new BorderLayout())
// creando los widgets
butQuit new Button(quit)
butQuit.enable()
etiq new Label(Hola Mundo nuestro primer ejemplo! Label.CENTER)
area new TextArea(5 20)
texto new TextField(15)
listaItem new List(3) for (int i 1 i lt 10 i) listaItem.addItem(Item i) canvas new MiCanvas() panel new Panel() // El contenedor adicional panel.setLayout(new FlowLayout()) // Se construye el panel panel.add(texto) panel.add(butQuit) panel.add(checkBox) // Se construye la ventana add(North etiq) add(West area) add(East listaItem) add(Center canvas) add(South panel) 67 Ejemplo 1 Código fuente (continuación) public boolean action(Event evt Object what) if ( evt.target butQuit ) System.exit(0) return true else if ( evt.target checkBox ) checkBox.disable() return true return false //El método main. public static void main(String args) // El main Frame frame new myGui() frame.pack()//Ajusta tamaño frame.show()//Lo hace visible // La extension de Canvas class MiCanvas extends Canvas public void paint(Graphics g) g.setColor(Color.red) g.fillArc(3030size(). width/2size().height/20270) public Dimension getMinimumSize() return new Dimension(150130) public Dimension getPreferredSize() return getMinimumSize() 68 La Interfaz Frame North Label List Canvas TextArea Center West East Panel TextField South Button CheckBox
About PowerShow.com
PowerShow.com is a leading presentation/slideshow sharing website. Whether your application is business, how-to, education, medicine, school, church, sales, marketing, online training or just for fun, PowerShow.com is a great resource. And, best of all, most of its cool features are free and easy to use.
You can use PowerShow.com to find and download example online PowerPoint ppt presentations on just about any topic you can imagine so you can learn how to improve your own slides and presentations for free. Or use it to find and download high-quality how-to PowerPoint ppt presentations with illustrated or animated slides that will teach you how to do something new, also for free. Or use it to upload your own PowerPoint slides so you can share them with your teachers, class, students, bosses, employees, customers, potential investors or the world. Or use it to create really cool photo slideshows - with 2D and 3D transitions, animation, and your choice of music - that you can share with your Facebook friends or Google+ circles. That's all free as well!
For a small fee you can get the industry's best online privacy or publicly promote your presentations and slide shows with top rankings. But aside from that it's free. We'll even convert your presentations and slide shows into the universal Flash format with all their original multimedia glory, including animation, 2D and 3D transition effects, embedded music or other audio, or even video embedded in slides. All for free. Most of the presentations and slideshows on PowerShow.com are free to view, many are even free to download. (You can choose whether to allow people to download your original PowerPoint presentations and photo slideshows for a fee or free or not at all.) Check out PowerShow.com today - for FREE. There is truly something for everyone!