|
|
(Una revisión intermedia por el mismo usuario no mostrado) |
Línea 290: |
Línea 290: |
| <div class="slide"> | | <div class="slide"> |
| | | |
− | ====TIPOS DE REFERENCIA====# | + | ====TIPOS DE REFERENCIA==== |
| *Son todos objetos | | *Son todos objetos |
| *Para utilizar en Java los objetos debemos hacer dos acciones | | *Para utilizar en Java los objetos debemos hacer dos acciones |
Línea 305: |
Línea 305: |
| | | |
| <div class="slide"> | | <div class="slide"> |
| + | |
| ====TIPOS DE REFERENICA '''ARRAY'''==== | | ====TIPOS DE REFERENICA '''ARRAY'''==== |
| #arrays: para definir una variable de este tipo '''[]''' | | #arrays: para definir una variable de este tipo '''[]''' |
Línea 339: |
Línea 340: |
| <div class="slide"> | | <div class="slide"> |
| | | |
− | ===INSTRUCCION DE ASIGNACIÓN===
| |
− | El operador de asiganción es '''='''
| |
− | La sintaxis es
| |
− | variable = expresion
| |
− | El tipo de la variable y el de la expresión deben coincidir
| |
− |
| |
− | ====Asignacion entre objetos====
| |
− | <source lang=java>
| |
− | import java.util.Scanner;
| |
− | public class Definicion {
| |
− | public static void main(String []a){
| |
− | String nom;
| |
− | Scanner l1,l2;
| |
− | l1=new Scanner(System.in);
| |
− | l2=l1; //En realidad son el mismo elemento ya que son la misma dirección de memoria
| |
− | System.out.println("dame tu nombre que leeré con L2");
| |
− | nom = l2.next(); //introduzco Manuel Romero Miguel Perez
| |
− | System.out.println("Leyendo de L2 " +nom);// Visualiza Manuel
| |
− | System.out.println("dame tu nombre L1");
| |
− | nom=l1.next();//No espera ya que todavia tiene en el buffer Romero Miguel Perez
| |
− | System.out.println("Leyendo de L1 " +nom); //Visualiza Romero
| |
− | nom = l2.next();
| |
− | System.out.println("Resto de L2 " +nom);//Visualiza Miguel
| |
− | nom = l1.next();
| |
− | System.out.println("Resto de L1 " +nom);//Visualiza Lopez
| |
− | }
| |
− | }
| |
− | </source>
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ====Salida del código anterior====
| |
− | dame tu nombre que leeré con L2
| |
− | Manuel Romero Miguel Pérez
| |
− | Leyendo de L2 Manuel
| |
− | dame tu nombre L1
| |
− | Leyendo de L1 Romero
| |
− | Resto de L2 Miguel
| |
− | Resto de L1 Pérez
| |
− | Probar a que l1 y l2 sean dos objetos diferentes
| |
− | l1=new Scanner(System.in);
| |
− | l2=new Scanner(System.in);
| |
− | Y no hacemos la asignacion '''l2=l1'''
| |
− | {{Pregunta|observamos la diferencia?
| |
− | #ahora l1 y l2 son dos buffers diferente
| |
− | #cada uno guarda historia de lo que almacea
| |
− | }}
| |
− | </div>
| |
− |
| |
− | <div class="slide">
| |
− | ====la expresion====
| |
− | Un literal puede ser un valor de los siguientes tipos
| |
− | numérico
| |
− | boolean
| |
− | false true
| |
− | caracter
| |
− | Literal entre comillas simples '' 'c' ''
| |
− | Secuencia unicode '''\u064'''
| |
− | Secuencia de escape \t
| |
| | | |
| ===Qué puede haber dentro de una clase=== | | ===Qué puede haber dentro de una clase=== |
Estructura de un programa en java
- En java todo son clases
- Cada Clase en un fichero (salvo clases locales a una clase )
- Un programa escrito en java es un conjunto de clases
La estructura general de una clase
class NombreClase{
//atributo/s
//metodo/s
}
Elementos para definir una clase
Tenemos los siguientes elementos
- Palabra reservada class
- Dos instrucciones: inicio de bloque y fin de bloque { y } resepectivamente
- Identificador NombreClase
- Comentarios //
- Las palabras reservadas son palabras con singnificado especial.
- Constituyen la parte léxica del lenguaje
- no se puede utilizar para otro propósito como identificadores.
Palabras reservadas
PALABRAS RESERVADAS EN JAVA
abstract |
double |
int |
strictfp |
boolean
|
else |
interface |
super |
break |
extends
|
long |
switch |
byte |
final |
native
|
synchronized |
case |
finally |
new |
this
|
catch |
float |
package |
throw |
char
|
for |
private |
throws |
class |
goto*
|
protected |
transient |
const* |
if |
public
|
try |
continue |
implements |
return |
void
|
default |
import |
short |
volatile |
do
|
instanceof |
static |
while
|
Palabras reservadas
- Las palabras const y goto no se emplean actualemnte en java, pero son palabras reservadas
- Existen otras palabras reservadas correspondientes a métodos reservados a la clase Object que ya veremos
- Según vayamos avanzando iremos descubriendo estas palabras
- Algunas se usan continuamente
- Otras tienen un uso muy poco frecuente
- Iremos agrupando las palabras en grupos (Variables, modificadores de acceso, estructuras de controls, ...)
Programa Java: clases y método main
- Un programa en java normalmente se organiza en proyecto
- Es muy común tener muchos ficheros .java
- Sólo uno de ellos puede tener un método especial llamado main
- La ejecución del programa empezará en la primera instrucción que tenga un método main
- solo puede haber uno en un proyecto
- Se puede crear una clase sola para el main o incluir el método en alguna existente (ya lo veremos)
public class ClasePrincipal{
public static void main(String[]args){
instruccion1;//Primera instrucción que se ejecutará
...
instruccionn;
}
}
Identificadores
Sirven para definir elementos que posteriormente vamos a utilizar (variables y/o atrivutos, constantes , métodos ,clases)
Deben ser lo más significativos posibles
Seguiremos unas reglas para mejorar la sintaxis
No son requisitos semánticos
- No se pueden emplear palabras reservadas
- Java es Sensitive Case, es decir los siguientes identificadores no son iguales
edad Edad EDAD edaD
- Los identificadores deben de ser significativos
int edad
String nombre
int calculaEdad(int fnac)
date fechaNacimiento
- las variables, atributos y métodos siempre en minúscula .
- Clases siempre la primer letra en mayúscula
- Constantes siempre todas las letras en mayúscula
- Se pueden emplear caracteres unicode, por lo que pueden aparecer secuencias de escape /uxxxx
- Si un identificador está formado por más de una palabra dos opciones
- Mayúscula la primera letra de cada palabra
- Separar con caracter de subrayado. Esto siempre en constantes ya que van en mayúscula
Identificadores
- El identificado debe usar los siguientes caracteres
[$|a..zA..Z|_][$|a..zA..Z|_|0..9]*
Empieza por $ _ o una letra del abecedario en mayúscula o minúscula.
Seguida de 0 o más caracteres de tipo $ _ letra o número
la ñ también es un caracter permitido para un identificador pero se recomienda no usarlo
Comentarios en el programa
- Una parte muy importante del software es lo que no son instrucciones
- un software hay que comentarlo
- No excesivamente pero sí lo suficiones (ambos términos muy imprecisos)
- comentarios hasta el final de la línea
//Este es un comentario hasta el final de la línea y empieza con
- comentario de varias líneas
/* hasta que encuentre la pareja
de caracteres final de comentario
esto se considerará un comentario
*/
Comentarios de documentación
- comentarios de docuemntacion
Este tercer tipo de comentario es más especial
/**
Este es un comentario
multilínea
y además sirve para realizar un documento
con la documentación del programa
*/
- Se pueden hacer comentarios a diferentes niveles
- A nivel de clase
- A nivel de variable/atributo
- A nivel de método
- Los comentario deben de ir inmediatamente antes del elemento que comentas
- Se puede utilizar tags @author @version @param @return
- javadoc.exe -author -version para que aparezcan al principio de la clase
Comentarios de documentación
Actividad
Haz un porgrama y crea la documentación:
- Nombre de la clase
- Información de la versión
- Fecha
- Autor
- Objetivo muy general
- Aviso de copyrigh
- En el main parámetros y retorno
|
Instruccion de leer y escrivir o visualizar
- En java no existen estas instrucciones
- El API de java nos proporciona clases que implementan métodos con esa funcionalidad
- En concreto la clase System
La clase System
- Es una clase final y todos sus contenidos son privados
- No se puede instanciar un objeto de esa clase
- La clase System siempre está ahí disponible para que se pueda invocar cualquiera de sus métodos
- Es miembro del paquete java.lang
- Todos los miembros del paquete java.lang se pueden usar directamente
- no hay que importarlos
- En esta clase se definen los dispositivos estándar de entrada/salida
static PrintStream err;
static InputStream in;
static PrintStream out;
Métodos de System.out
- Son los métodos de la clase PrintStream
http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html
- Principales
println("Cadena ...")//Escrible sus argumentos y al final añade un \n
print ("Cadena ...") //Lo mismo pero no añade un salto de línea
printf("Cadena...",argumentos) //Para los amantes del c %d,%c,%s,....
Métods de System.in Vs Scanner
- A partir de Java 5 apareció la clase Scanner
- Es mas sencilla de utilizar que System.in
- Es mucha la flexibilidad que presenta
- Está dentro del paquete java.util
- Hay que importarla para poderla utilizar
import java.util.Scanner;
- Hay que definirse un objeto de esa clase
Scanner leer = new Scanner(System.in);
- Tiene muchos usos, por ejemplo leer la siguiente línea del teclado
leer.nextLine();
- Para la sintaxis de java aprenderemos su uso
Clase java.util.Scanner
import java.util.Scanner;/* Debemos cargar la clase
ya que no está en el paquete '''lang''',
sino en el paquete '''util''' */
class Principal{
public static void main(String []argc){
int num;
Scanner leer = new Scanner(System.in);//Una clase se instancia de esta manera
//Le pasamos un objeto InputStream asociado al teclado
System.out.println("Dime tu edad");
num=leer.nextInt(); //Invocamos al método para obtener el siguiente entero del buffer
System.out.println("Tienes "+edad+" años de edad");
}
}
Actividad
hacer un programa que me pida la edad y nombre y la visualice
|
Instrucion declarativa
- La instruccion de declaración de variables o atributos es
tipo_variable identificador [= valor_inicial]
- identificador es el nombre de la variable
- valor_inicial opcionalmente se puede inicializar la variable en la propia declaración
int edad=18, sueldo=1000;
//defino dos variables de tipo entero y las inicializo con valores
- En general se puede definir una lista de identificadores del mimo tipo
- cada uno de ellos se puede inicializar
int a,b,c=1,d=100,e,f;
defino seis identificadores a,b,d,c,d,e e inicializo dos de ellos c=1 y d = 100
la expresión regular para las instruccion declarativa sería
[tipo_dato lista_identificadores]
donde lista_identificadores un conjunto de identificadores separados por comas opcionalmente inicializados.
- En java las variables siempre tienen un valor inicial
- Existen en java dos tipos
- tipos primitivos(byte,short,int,long,double,float,char,boolean,void)
- tipos de referencia(los que no son primitivos vectores, clases e interfaces)
Clasificacion de tipos
TIPOS PRIMITIVOS
La siguiente tabla muestra una relación de tipos simples
TIPOS PRIMITIVOS
Pregunta
Tipos primitivos en un lenguajes orientado a objetos
|
- En java casi todo son objetos
- Excepciones tipos primitivos para representar valores sin mas
- 'todos con el mismo tamaño y comportamiento
- para cualquier hardware
- para cualquier S.O
(: si has programado con C sabrás lo bueno que es esto :))
- Con los datos primitivos se pueden construyen los array
*tambien pueden aparecer en clases e interfaces
- todo tipo primitivo tiene asociado una clase
- se conoce como 'Wrapper'
- Todo tipo primitivo se puede manejar como objeto
TIPOS DE REFERENCIA
- Son todos objetos
- Para utilizar en Java los objetos debemos hacer dos acciones
- 1 definir el objeto
Scanner leer;
- 2 instanciarlo o cargarlo en memoria
leer = new Scanner();
- Se puede hacer en la misma línea
Scanner leer = new Scanner();
- El operador new palabra reservada del lenguaje instancia un objeto de una clase
- instanciar es cargalo en memoria
- la variable contendra la direccion de memoria del objeto
TIPOS DE REFERENICA ARRAY
- arrays: para definir una variable de este tipo []
int notas[];
notas = new int[100]
- Un array es una coleccion de elementos del mismo tipo
- Se caracteriza por el tipo base que son el tipo de los elementos que contiene
- También por el número de elementos.
- El número es fijo y no puede cambiar una vez inicializado
- Si necesitamos dinamismo mejor usar la clase java.util.Vector
TIPOS DE REFERENICA CLASES E INTERFACES
- Clases e interfaces
Se definen con la estructura vista anteriormente
public class NombreClase{
}
public interface NombreInterfaz{
}
Para crear elementos de este tipo
NombreClase objeto1 = nes NombreClase();
NombreInterfaz objetoInterfaz = new NombreInterfaz()
-
Variables y objetos
- Las variables valores de tipos primitivos
- Los objetos son elementos de tipos de referencia
- Ambos son elementos que residen en memoria
- Accedo en ellos a traves de su nombre
- Para ver la idea de que los identificadores son referencias a memoria observemos el siguiente código
Qué puede haber dentro de una clase
- Una clase representa a un elemento del programa
- En POO el programa va a ser un conjunto de objetos que interactúan entre sí
- Cada objeto es un elemento del sistema
- Con unos atributos que le definen
- Con un comportamiento que le caracteriza
- Las clases me permite crear el modelo de los objetos
- básicamente dentro de una clase podemos tener
- atributos o datos (variables, constantes, objetos)
- métodos (que definen el comportamiento
- Definir otras clases locales a la clase
- Los datos nos referiremos a ellos como atributos llamado así en terminología orientada a objetos
- A las funciones las identificaremos como métodos