Diferencia entre revisiones de «Usuario:ManuelRomero/sintaxis»
De WikiEducator
(Página reemplazada por '{{TEP}} {{:Usuario:ManuelRomero/CursoJavaUml/java/sintaxis/nav}}') |
(Deshecha la edición 7851 de ManuelRomero (disc.)) |
||
| Línea 1: | Línea 1: | ||
{{TEP}} | {{TEP}} | ||
{{:Usuario:ManuelRomero/CursoJavaUml/java/sintaxis/nav}} | {{:Usuario:ManuelRomero/CursoJavaUml/java/sintaxis/nav}} | ||
| + | {{#widget:Slides}} | ||
| + | |||
| + | <div class="slides layout-regular template-default"> | ||
| + | <div class="slide"> | ||
| + | ===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 | ||
| + | <source lang=java> | ||
| + | class NombreClase{ | ||
| + | //atributo/s | ||
| + | //metodo/s | ||
| + | } | ||
| + | </source> | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===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. | ||
| + | </div> | ||
| + | |||
| + | <div class="slide"> | ||
| + | ===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 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=== | ||
| + | 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 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> | ||
| + | |||
| + | <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 ''escrivir'' 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 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 | ||
| + | *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 | ||
| + | </div> | ||
| + | </div> | ||
Revisión de 20:10 3 abr 2012
| Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |
