Diferencia entre revisiones de «Usuario:ManuelRomero/sintaxis»

De WikiEducator
Saltar a: navegación, buscar
(Instruccion de leer y escrivir o visualizar)
 
(61 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 
{{TEP}}
 
{{TEP}}
{{:Usuario:ManuelRomero/CursoJavaUml/java/nav}}
+
{{:Usuario:ManuelRomero/CursoJavaUml/java/sintaxis/nav}}
 
{{#widget:Slides}}  
 
{{#widget:Slides}}  
  
 
<div class="slides layout-regular template-default">
 
<div class="slides layout-regular template-default">
 
<div class="slide">
 
<div class="slide">
==Estructura de un programa en java==
+
===Estructura de un programa en java===
 
*En java todo son clases
 
*En java todo son clases
 
*Cada Clase en un fichero (salvo clases locales a una clase )
 
*Cada Clase en un fichero (salvo clases locales a una clase )
 
*Un programa escrito en java es un conjunto de clases
 
*Un programa escrito en java es un conjunto de clases
 
 
La estructura general de una clase
 
La estructura general de una clase
 
<source lang=java>
 
<source lang=java>
Línea 18: Línea 17:
 
</source>
 
</source>
 
</div>
 
</div>
 +
 
<div class="slide">
 
<div class="slide">
 +
===Elementos para definir una clase===
 
Tenemos los siguientes elementos
 
Tenemos los siguientes elementos
 
#Palabra reservada '''class'''
 
#Palabra reservada '''class'''
 
#Dos instrucciones: ''inicio de bloque'' y ''fin de bloque'' '''{''' y '''}''' resepectivamente
 
#Dos instrucciones: ''inicio de bloque'' y ''fin de bloque'' '''{''' y '''}''' resepectivamente
#un identificador '''NombreClase'''
+
#Identificador '''NombreClase'''
 +
#Comentarios '''//'''
 
*Las palabras reservadas son palabras con singnificado especial.
 
*Las palabras reservadas son palabras con singnificado especial.
 
*Constituyen la parte léxica del lenguaje
 
*Constituyen la parte léxica del lenguaje
 
*no se puede utilizar para otro propósito como  identificadores.
 
*no se puede utilizar para otro propósito como  identificadores.
 
</div>
 
</div>
<div class="slide">
 
  
 +
<div class="slide">
 
===Palabras reservadas===
 
===Palabras reservadas===
 +
{| class="wikitable"
 +
|+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
 +
|}
 
</div>
 
</div>
 +
 
<div class="slide">
 
<div class="slide">
 +
====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, ...)
 +
</div>
  
 +
<div class="slide">
 +
===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)
 +
<source lang=java>
 +
public class ClasePrincipal{
 +
  public static void main(String[]args){
 +
    instruccion1;//Primera instrucción que se ejecutará
 +
    ...
 +
    instruccionn;
 +
  }
 +
}
 +
</source>
 +
</div>
 +
 +
<div class="slide">
 
===Identificadores===
 
===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''
 
</div>
 
</div>
 +
 
<div class="slide">
 
<div class="slide">
 +
====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
 +
</div>
  
==Qué puede haber dentro de una clase==
+
<div class="slide">
 +
===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
 +
*/
 +
</div>
 +
 
 +
<div class="slide">
 +
====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
 +
</div>
 +
 
 +
<div class="slide">
 +
====Comentarios de documentación====
 +
<br/>
 +
{{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
 +
}}
 +
</div>
 +
 
 +
<div class="slide">
 +
 
 +
===Instruccion de ''leer'' y ''escribir'' o ''visualizar''===
 +
<br/>
 +
*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
 +
</div>
 +
 
 +
<div class="slide">
 +
====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;
 +
</div>
 +
 
 +
<div class="slide">
 +
====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,....
 +
</div>
 +
 
 +
<div class="slide">
 +
====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
 +
</div>
 +
 
 +
<div class="slide">
 +
 
 +
====Clase java.util.Scanner====
 +
<source lang=java>
 +
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");
 +
      }
 +
}
 +
</source>
 +
<br/>
 +
{{Actividad|hacer un programa que me pida la edad y nombre y la visualice}}
 +
</div>
 +
 
 +
<div class="slide">
 +
 
 +
===Instrucion declarativa===
 +
*La instruccion de declaración de variables o atributos es
 +
tipo_variable [[#Identificadores_2|identificador]] [= valor_inicial]
 +
#[[#Identificadores_2|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_2|identificadores]] del mimo tipo
 +
*cada uno de ellos se puede inicializar
 +
int a,b,c=1,d=100,e,f;
 +
defino  seis [[#Identificadores_2|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_2|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'')
 +
</div>
 +
 
 +
<div class="slide">
 +
====Clasificacion de tipos====
 +
[[Archivo:tipos.png|800px]]
 +
</div>
 +
 
 +
<div class="slide">
 +
====TIPOS PRIMITIVOS====
 +
La siguiente tabla muestra una relación de tipos simples
 +
<BR/>
 +
[[Archivo:tiposSimples.png|600px]]
 +
</div>
 +
 
 +
 
 +
 
 +
<div class="slide">
 +
====TIPOS PRIMITIVOS====
 +
<br/>
 +
{{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
 +
{{Nota|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
 +
</div>
 +
 
 +
<div class="slide">
 +
 
 +
====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
 +
</div>
 +
 
 +
<div class="slide">
 +
 
 +
====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 contendrá la dirección de memoria del objeto(por eso es una referencia)
 +
</div>
 +
 
 +
<div class="slide">
 +
 
 +
====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'''
 +
</div>
 +
 
 +
<div class="slide">
 +
====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()
 +
#
 +
</div>
 +
<div class="slide">
 +
====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
 +
</div>
 +
<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===
 
*Una clase representa a un elemento del programa
 
*Una clase representa a un elemento del programa
 
*En '''POO''' el programa '''va a ser un conjunto de objetos que interactúan entre sí'''
 
*En '''POO''' el programa '''va a ser un conjunto de objetos que interactúan entre sí'''
Línea 53: Línea 433:
 
*Los datos nos referiremos a ellos como atributos llamado así en terminología orientada a objetos
 
*Los datos nos referiremos a ellos como atributos llamado así en terminología orientada a objetos
 
*A las funciones las identificaremos como métodos
 
*A las funciones las identificaremos como métodos
</div>
 
<div class="slide">
 
==Dónde se empieza a ejecutar un programa escrito en java==
 
*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 debe comenzar en algún sitio
 
Simpre empezará en la primera instrucción que tenga un método especial llamado '''main'''
 
solo puede haber uno en un proyecto, si no el compilador se quejaría y diría que se han producido errores en la compilación
 
<source lang=java>
 
public class ClasePrincipal{
 
  public static void main(String[]args){
 
    instruccion1;//Primera instrucción que se ejecutará
 
    ...
 
    instruccionn;
 
  }
 
}
 
</source>
 
 
</div>
 
</div>
 
</div>
 
</div>

Última revisión de 07:49 15 feb 2016

Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg



Elementos para definir una clase

Tenemos los siguientes elementos

  1. Palabra reservada class
  2. Dos instrucciones: inicio de bloque y fin de bloque { y } resepectivamente
  3. Identificador NombreClase
  4. 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)
  1. comentarios hasta el final de la línea
//Este es un comentario hasta el final de la línea y empieza con 
  1. comentario de varias líneas
/* hasta que encuentre la pareja 
   de caracteres  final de comentario 
   esto se considerará un comentario
*/

Comentarios de documentación

  1. 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



Icon activity.jpg

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 escribir 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
  1. 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");
       }
 }



Icon activity.jpg

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]
  1. identificador es el nombre de la variable
  2. 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
  1. tipos primitivos(byte,short,int,long,double,float,char,boolean,void)
  2. tipos de referencia(los que no son primitivos vectores, clases e interfaces)

Clasificacion de tipos

Tipos.png

TIPOS PRIMITIVOS

La siguiente tabla muestra una relación de tipos simples
TiposSimples.png


TIPOS PRIMITIVOS




Icon qmark.gif

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

(Comment.gif: 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();
  1. El operador new palabra reservada del lenguaje instancia un objeto de una clase
  2. instanciar es cargalo en memoria
  3. la variable contendra la direccion de memoria del 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();
  1. El operador new palabra reservada del lenguaje instancia un objeto de una clase
  2. instanciar es cargalo en memoria
  3. la variable contendrá la dirección de memoria del objeto(por eso es una referencia)

TIPOS DE REFERENICA ARRAY

  1. 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

  1. 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

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

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
	}
}

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



Icon qmark.gif

Pregunta

observamos la diferencia?
  1. ahora l1 y l2 son dos buffers diferente
  2. cada uno guarda historia de lo que almacea



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

  • 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