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