Introducción a Java

Anuncio
Introducción a Java
LSUB
GSYC
22 de enero de 2016
(cc) 2014 Laboratorio de Sistemas,
Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento NoComercial - SinObraDerivada (by-nc-nd). Para obtener la licencia completa, véase
http://creativecommons.org/licenses/by-sa/2.1/es. También puede solicitarse a Creative Commons, 559 Nathan
Abbott Way, Stanford, California 94305, USA.
Abstracción
I
Representación de los objetos de la vida real en los programas.
I
Nivel de abstracción y ayuda del lenguaje para abstraer.
I
Si usamos bien la OOP, abstraer es más fácil.
I
La OOP obliga a pensar en los datos y sus operaciones de
forma conjunta. Ojo, en programación estructurada también
se puede programar ası́ (esto es, programar bien).
OOP
I
Todo es un objeto: Un objeto es un conjunto de datos y un
conjunto de servicios que se le pueden requerir. (Casi) todos
los elementos del programa son objetos.
I
Los objetos se comunican mediante mensajes: cuando un
objeto requiere que otro realice una operación, se lo comunica
pasando un mensaje (i.e. invocando a un método). La
interfaz de un objeto determina dichos mensajes.
OOP
I
Cada objeto tiene su propia memoria: Un objeto tiene su
propia memoria y puede estar compuesto internamente por
otros objetos distintos, aunque gran parte de su
implementación sea privada.
I
Todo objeto tiene un tipo: un objeto es una instancia de
una clase. Las clases son tipos de datos para los objetos, que
determinan los mensajes que puede recibir y los datos que lo
forman.
OOP
I
Todos los objetos de un tipo determinado reciben los
mismos mensajes: un objeto puede ser reemplazado por otro
objeto del “mismo” tipo → otra instancia de la misma clase.
Java: plataforma
I
Un programa escrito en Java compila a bytecode de Java, no
a código máquina (nota: otros lenguajes también se pueden
compilar a bytecode de Java).
I
El bytecode de Java ejecuta dentro de la JVM, que es una
máquina virtual o abstracta. También se puede compilar a
código máquina.
I
La JVM ejecuta alojada en un OS o está implementada en
hardware.
I
JRE (Java Runtime Environment): JVM y el API estándar de
Java (Java Class Library).
Java: plataforma
fuente (.java) → COMPILADOR → bytecode (.class .jar) → JVM
I
javac compila el fuente (.java).
I
java ejecuta el bytecode (.class o .jar).
I
Por lo general, para programar en Java se usa un integrated
development environment (IDE) que integra el editor, compilador,
entorno de ejecución, herramientas de programación y depuración,
etc.
I
En este curso usaremos Eclipse como IDE.
Java: plataforma
c
Imagen 2012-2014
www.careerbless.com
Java: programas
I
Un programa está formado por uno o más paquetes.
I
Un paquete está formado por una o más clases.
I
Una clase está formada por métodos (acciones) y atributos
(datos).
I
Los métodos están formados por sentencias.
I
Una clase puede tener un método main, que es el punto de
entrada al programa.
Java: paquetes
Se pueden ver como directorios para los ficheros fuente. Para
indicar a qué paquete pertenece un fichero:
package o r g . l s u b . h a s h ;
Para importar clases de otros paquetes:
import o r g . l s u b . h a s h . ∗ ;
import o r g . l s u b . c r y p t o . A e s C i p h e r ;
Java: referencias y memoria
Las referencias de Java son punteros a objetos con las siguientes
restricciones:
I
No hay aritmética de referencias.
I
No hay operador address-of (&).
I
Tienen tipado fuerte.
I
No hay malloc. Un nuevo objeto se crea con new y se
mantiene en el heap.
I
No hay free. Java tiene recolección de basura.
Lenguaje
Identificadores:
I
Como en cualquier otros lenguaje, deben ser claros y deben
dar información sobre el elemento.
I
Java es case-sensitive.
I
No pueden comenzar con dı́gitos y pueden tener letras,
dı́gitos, subrayado y dólar.
Lenguaje
Estilo*:
I
Paquete: org.lsub.security
I
Clases: ElectricGuitar
I
Constantes: N STRINGS
I
Métodos: playSong
I
Variables: c
I
Se tabula con Tabs.
* ver http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html
Lenguaje
Palabras reservadas:
I
abstract, boolean, break, byte, case, catch,
char, class, const, continue, default, do,
double, else, extends, false, final, finally,
float, for, goto, if, implements, import,
instanceof, int, interface, long, native, new,
null, package, private, protected, public,
return, short, static, strictfp, super, switch,
synchronized, this, throw, throws, transient,
true, try, void, volatile, while
Lenguaje
Comentarios:
I
// comenta una lı́nea.
I
/* */ comenta un bloque de lı́neas.
I
/** */ es javadoc.
Lenguaje
Javadoc:
I
Permite generar documentación HTML a partir del código y
ciertos comentarios especiales.
I
Hay etiquetas de javadoc (@) nos permiten describir ciertos
atributos del programa. Eclipse nos ayudará con esto.
/∗ ∗
∗ T h i s i s t h e one l i n e m a n d a t o r y d e s c r i p t i o n o f t h e method .
∗
∗ T h i s i s a l o n g e r , o p t i o n a l d e s c r i p t i o n . I f t h e r e w e r e any ,
∗ here .
∗ <p>
∗ And e v e n more e x p l a n a t i o n s t o f o l l o w i n c o n s e c u t i v e
∗ p a r a g r a p h s s e p a r a t e d by HTML p a r a g r a p h b r e a k s .
∗
∗ @param p a r a m e t h e r D e s c r i p t i o n t e x t t e x t t e x t .
∗ @return Description text text text .
∗/
it w
Javadoc
Para documentar el paquete tenemos que crear un fichero
package-info.java con su descripción:
/∗ ∗
∗ This package p r o v i d e s l o g g i n g f a c i l i t i e s f o r data bases
∗ <p>
∗ Run L o g g e r . App i f a l l you want i s t o s t a r t t h e
∗ logger application .
∗ <u l >
∗ < l i > L o g g e r . Zoo : A z o o k e p e r b a s e f a c a d e f o r t h e p a c k a g e
∗ P r o v i d e s a l o g l a u n c h e r and manager t h a t a c t s upon
∗ c o n f i g u r a t i o n t a k e n from z o o k e e p e r .
∗ <l i > Logger . Srv : log s e r v e r s , or l o g g e r s .
∗ </u l >
∗ <p>
∗/
package l s u b . o r g . l o g g e r ;
Hola mundo
// e s t a e s
l a c a b e c e r a de l a c l a s e
public class hello {
// e s t a e s
l a c a b e c e r a d e l metodo main
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
/∗
∗ e s t e e s e l c u e r p o d e l metodo main
∗/
System . o u t . p r i n t ( ” Hey ho l e t s go ! ” ) ;
}
}
Descargar