SlideShare una empresa de Scribd logo
1 de 31
Programación avanzada
       en Java
Información general (y II)


• Bibliografía:
  – Core Java 1.2, Volúmenes I – II. C.S.
    Horstmann, Gary Cornell, Prentice Hall, 1999.
  – Tutorial de Java en http://java.sun.com
El lenguaje Java
Características principales (I)

•   Lenguaje interpretado.
•   Fuertemente tipado.
•   Sintaxis similar a C/C++.
•   Sin punteros: Garbage collection.
•   100% portable.
•   Integra librearías estándar para:
    – Interfaces de usuario.
    – Objetos distribuidos.
    – Threads.
Características principales (y II)

• Ejecutable desde navegadores web.
• Origen: Aumento de HTML para conseguir
  páginas Web dinámicas.
• Versiones:
  – 1995 – JDK 1.0
  – 1997 – JDK 1.1
  –…
  – 2004 – JDK 1.5
Desarrollo en Java

• Java Development Kit (JDK):
  – Java Runtime Environment (JRE):
    • Java Virtual Machine.
    • Java API: lenguaje básico y librerías estándar.
  – Compilador a bytecode.
  – Otras herramientas:
    •   Debuggers.
    •   Applet viewer.
    •   Compiladores RMI
    •   …
Compilación e interpretación
  Ejemplo.java


class Ejemplo {
   ...
}
                                Java Virtual Machine
class Aux {                               JVM
   ...
}
                  Compilador
                    Java

                               Ejemplo.class    Aux.class
Comparativa: Java vs. C++ (I)
           Java                                     C++
•   Interpretado                  •   Compilado

•   Portable                      •   Aspectos no portables

•   Todo memoria dinámica         •   Memoria automática y dinámica
•   Garbage collection            •   Gestión del programador
•   No existen punteros           •   Existen punteros

•   Todos los métodos virtuales   •   No todos los métodos virtuales

•   No hay herencia múltiple      •   Hay herencia múltiple

•   Información sobre clases      •   Información muy escasa
    en tiempo de ejecución.           (dynamic_cast).

•   Tratamiento genérico          •   Punteros a void.
    de tipos (wrappers).
Comparativa: Java vs. C++ (y II)
            Java                                              C++



•   Soporte estándar para interfaces:    •   No incluido en el lenguaje:
    AWT, SWING                               Microsoft MFC, Borland OWL…

•   Soporte estándar para concurrencia   •   No incluido en el lenguaje

•   Soporte estándar para objetos        •   No incluido en el lenguaje:
    distribuidos                             CORBA, ActiveX

•   Ejecutable en navegadores web        •   No ejecutable por navegadores

•   Homogeneidad del lenguaje            •   Múltiples sintaxis

•   Lenguaje bien diseñado               •   Compatibilidad con C
Elementos del lenguaje
Aspectos léxicos

• Ignora múltiples espacios en blanco
• Sentencias separadas por “;”.
• Comentarios:
  – /* … */  Múltiples líneas de comentario
  – //  Una única línea de comentario
• Case – sensitive.
• Convenios de nomenclatura:
  – Clases con mayúscula.
  – Métodos y variables con minúscula.
  – etc…
Valores y variables
• Tipos básicos:
byte       1 byte
char       2 bytes (sin signo, caracteres Unicode, incluyen los ASCII)
short      2 bytes
int        4 bytes
long       8 bytes
float      4 bytes
double     8 bytes
boolean    1 bit (true ó false, no compatible con tipos numéricos)


• Variables y literales:
  – Declaración y utilización de variables y
    literales similar a C/C++.
Compatibilidad entre tipos
             byte b = 42;
             char c = 'a'; // también válido: c = 97;
             short s = 1024;
             int i = 50000;
             long l = 120000;
             float f = 5.67f;
             double d = .1234;
             double result = (f*b) + (i/c) - (d*s);



Ensanchar: automático    Estrechar: cast explícito   char: cast explícito
       f = c;                c = (char) i;           s = (short) c;
       d = s;                b = (byte) d;           c = (char) s;
       f = l;               f = (float) d;           c = (char) b;
Operadores

• En total hay 46 operadores.
  – Numéricos:
    +, -, *, /, %, +=, -=, *=, /=, %=, --, ++

  – Lógicos:
    &&, ||, !

  – Operadores de bit:
    &, |, ^, ~, >>, <<

  – Relacionales:
    >, <, >=, <=, ==, !=

  – Condicional:
    If-then-else: (condicion)   ? acción1 : acción2
Precedencia de operadores
                                     ( )   [ ]    .
                                     ++    --     ~        !
  Orden de ejecución de operadores



                                     new
                                     *     /      %
                                     +     -
                                     >>    >>>    <<
                                     >     >=     <        <=         instanceof
                                     ==    !=
                                     &
                                     ^
                                     |
                                     &&
                                     ||
                                     ?     :
                                     =     +=     *=       -=         /=


                                            Igualdad de precedencia
Arrays
• Declaración:
    int a[];

• Reserva de tamaño:
    a = new int[3];
    int b[] = {1, 2, 3, 4};


• Asignación de valores:
    a[1] = 7;
    b = a;

• Errores:
   a[6] = 7;              //   Fuera del rango
   a = {1, 2, 3};         //   Sólo válido en la inicialización
   int c[5];              //   La dimensión sólo al hacer new
   char str[] = “hola”;   //   Los Strings no son arrays en Java
Arrays multidimensionales

float a[][] = new float [4][3];

float m[][] = new float [4][];
m[0] = new float [2];
m[1] = new float [5];
m[2] = new float [m[1].length];
float x[] = {4.5, 8/3, m[2][1]};
m[3] = x;      // O cualquier expresión que devuelva un float[]
a[0] = m[1];   // Las variables de array no son constantes
a[2, 1] = 7.3 // Error de sintaxis: a[2][1]
Expresiones condicionales
• Dos tipos de condicionales.

  if (condición1) acción1 [else acción2] [else if (condición2)…



  switch (expresión) {            byte, char, short o int
     case valor1:
        …
        break;               Tienen que ser literales

      case valor2:
         …
         break;

      default:
         …
  }
Iteraciones
• Tres tipos de iteraciones.
  while (condición1) {
     …
  }



  do {
     …
  } while (condición1)




  for (inicialización; condición; iteración) {
     …
  }
Clases y objetos
    en Java
Clases
• Estructura de datos + funciones.
 class CuentaBancaria {

     long numero;
     String titular;                                    Variables
     long saldo;                                         (datos)

     void ingresar (long cantidad) {
        saldo += cantidad;
     }
                                                        Funciones
     void retirar (long cantidad) {
        if (cantidad > saldo)
           System.out.println ("Saldo insuficiente");
        else saldo -= cantidad;
     }
 }
Variables de una clase
• Definen una estructura de datos (similar al struct de C)
     class CuentaBancaria {        struct CuentaBancaria {
         long numero;                  long numero;
         String titular;               char *titular;
         long saldo;                   long saldo;
     }                             };

• Pueden almacenar objetos de otras clases
     class CuentaBancaria {         class Cliente {
         long numero;                   String nombre;
         Cliente titular;               long dni;
         long saldo = 0;            }
     }


• Por defecto, se inicializan a 0, false y/o null.
Creación de objetos
•    Una clase define un tipo de dato que se puede utilizar para declarar
     variables.
        CuentaBancaria cuenta1, cuenta2;


•    Declarar un objeto es declarar una referencia al objeto.
•    Los objetos se crean mediante el operador new.
                                                          CuentaBancaria

    cuenta1 = new CuentaBancaria();             numero           0
                                               titular          null
                                                  saldo          0


•    Crear un objeto es reservar memoria para sus variables.
•    El operador new reserva memoria y devuelve una referencia.
Acceso a variables
• El acceso a las variables de un objeto se lleva a
  cabo mediante la notación “.”
        CuentaBancaria cuenta1, cuenta2;
        cuenta1 = new CuentaBancaria ();
        cuenta2 = cuenta1;
        Cliente cliente1 = new Cliente ();

        cliente1.nombre = "Luis Gomez";
        cliente1.dni = 25672046;
        cuenta1.numero = 6831531;
        cuenta1.titular = cliente1;
        cuenta1.saldo = 100000;
        cuenta2.saldo = 200000;

        cuenta2.titular.nombre = "Pilar Garcia";
Métodos
• Los métodos son funciones definidas dentro de un clase.

• Son similares a un puntero a función dentro de un struct
  de C.

• Los métodos de una clase pueden referenciar
  directamente las variables de la misma.

• Los métodos se invocan sobre un objeto de la clase a la
  que pertenecen mediante la notación “.”.
                   cuenta2.ingresar(1000);

• Al ejecutar un método sobre un objeto de la clase X, las
  variables de dicha clase X toman los valores que tiene el
  objeto.
Llamadas desde métodos
• Los métodos pueden invocar directamente otros
  métodos de la misma clase (sin “.”).
• Al ejecutar un método invocado sobre un objeto de clase
  A, las llamadas a otros métodos de la clase A se
  ejecutan sobre el mismo objeto a menos que se
  invoquen sobre otro objeto
cuenta3 = new CuentaBancaria ();
cuenta2.transferencia (cuenta3, 1000);
class CuentaBancaria {
    ...
    void transferencia (CuentaBancaria destino, long cantidad) {
        if (cantidad <= saldo ) {
            retirar (cantidad);
            destino.ingresar (cantidad);
        }
    }
}
Acceso a objetos

     class X { String nombre; }
     class Y { int i; }
     class Z { String nombre; }

     class A {                             1.   Variable del objeto de la invocación
         int num;                          2.   Objeto definido en variable local
         X obj4;                           3.   Objeto pasado como argumento
         void f (int n, Y obj3) {          4.   Objeto almacenado en variable de clase
               Z obj2 = new Z ();
4.             obj4.nombre = obj2.nombre
               num = obj3.i + n;
         }                            2.
     }
            1.             3.
Constructores
• Métodos ejecutados automáticamente al crear un objeto
  de una clase (“new”).
• Se usan para llevar a cabo labores de inicialización.
• Simplifican la sintaxis y apoyan el encapsulamiento de
  los datos.
• Los métodos constructores de una clase tienen que
  tener el mismo nombre que la clase.

          class Cliente {

              // Constructor de la clase Cliente
              Cliente (String str, long num) {
                  ...;
              }
          }
Ejemplos de constructores
   class Cliente {
       String nombre;
       long dni;
       Cliente (String str, long num) {
           nombre = str;
           dni = num;
       }
   }
   class CuentaBancaria {
       long numero;
       Cliente titular;
       long saldo;
       CuentaBancaria (long num, Cliente clt, long s) {
           numero = num; titular = clt; saldo = s;
       }
   }
Ejemplos de invocación
• Automáticamente al crear objetos.


Cliente cliente1 = new Cliente ("Luis Gomez", 25672046);

CuentaBancaria cuenta1 =
    new CuentaBancaria (6831531, cliente1, 100000);

CuentaBancaria cuenta2 =
    new CuentaBancaria (8350284,
                         new Cliente ("Pilar Garcia", 15165442),
                         200000);
Constructor por defecto

• Si no se definen constructores, Java
  proporciona uno por defecto.
  – Sin parámetros: Llamadas del tipo new X();
  – Sin funcionalidad: Variables inicializadas por defecto.


• Pero si se define un constructor (o más) el
  constructor por defecto no es definido.

Más contenido relacionado

La actualidad más candente (18)

Variables en php
Variables en phpVariables en php
Variables en php
 
Arrays
ArraysArrays
Arrays
 
Java clases dictadas
Java clases dictadasJava clases dictadas
Java clases dictadas
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Seccion Fundamentos SCJP
Seccion Fundamentos SCJPSeccion Fundamentos SCJP
Seccion Fundamentos SCJP
 
Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetos
 
Java Basico Platzi
Java Basico PlatziJava Basico Platzi
Java Basico Platzi
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 
C sharp intro1
C sharp intro1C sharp intro1
C sharp intro1
 
Introducción a Swift
Introducción a SwiftIntroducción a Swift
Introducción a Swift
 
Javascript
JavascriptJavascript
Javascript
 
Poo 1
Poo 1Poo 1
Poo 1
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 
C sharp intro0
C sharp intro0C sharp intro0
C sharp intro0
 
C sharp intro1
C sharp intro1C sharp intro1
C sharp intro1
 
Ruby intro
Ruby introRuby intro
Ruby intro
 

Destacado

Маршруты путешествий русских художников и писателей XIX - нач. XX вв.
Маршруты путешествий русских художников и писателей XIX - нач. XX вв.Маршруты путешествий русских художников и писателей XIX - нач. XX вв.
Маршруты путешествий русских художников и писателей XIX - нач. XX вв.URFU
 
Graficos por Computadora
Graficos por ComputadoraGraficos por Computadora
Graficos por ComputadoraSilvana Vargas
 
9th European Patients Rights Day - Kuiper (EFPIA)
9th European Patients Rights Day - Kuiper (EFPIA)9th European Patients Rights Day - Kuiper (EFPIA)
9th European Patients Rights Day - Kuiper (EFPIA)Cittadinanzattiva onlus
 
my portfolio unit 9 task 4
my portfolio unit 9 task 4 my portfolio unit 9 task 4
my portfolio unit 9 task 4 balloney01
 
Trabajo 11 04-12
Trabajo 11 04-12Trabajo 11 04-12
Trabajo 11 04-12agca12
 
Busqueda significativa
Busqueda significativa Busqueda significativa
Busqueda significativa EstherEzparza
 
Competencias docentes para el nuevo siglo
Competencias docentes para el nuevo sigloCompetencias docentes para el nuevo siglo
Competencias docentes para el nuevo sigloliliana
 
Detecting Mesothelioma
Detecting MesotheliomaDetecting Mesothelioma
Detecting MesotheliomaB.J. Wade
 
SEGUNDA REPROGRAMACION DESDE LA SEMANA 11 HASTA LA SEMANA 16 DEL SEMESTRE 2011-2
SEGUNDA REPROGRAMACION DESDE LA SEMANA 11 HASTA LA SEMANA 16 DEL SEMESTRE 2011-2SEGUNDA REPROGRAMACION DESDE LA SEMANA 11 HASTA LA SEMANA 16 DEL SEMESTRE 2011-2
SEGUNDA REPROGRAMACION DESDE LA SEMANA 11 HASTA LA SEMANA 16 DEL SEMESTRE 2011-2UNA Centro Local Yaracuy
 
Diaporama Fest'ia
Diaporama Fest'iaDiaporama Fest'ia
Diaporama Fest'iapleinchamp
 
Consejos de pnl para ventas
Consejos de pnl para ventasConsejos de pnl para ventas
Consejos de pnl para ventasUSET
 

Destacado (20)

Маршруты путешествий русских художников и писателей XIX - нач. XX вв.
Маршруты путешествий русских художников и писателей XIX - нач. XX вв.Маршруты путешествий русских художников и писателей XIX - нач. XX вв.
Маршруты путешествий русских художников и писателей XIX - нач. XX вв.
 
Cirugía guiada: Caso 1
Cirugía guiada: Caso 1Cirugía guiada: Caso 1
Cirugía guiada: Caso 1
 
Graficos por Computadora
Graficos por ComputadoraGraficos por Computadora
Graficos por Computadora
 
9th European Patients Rights Day - Kuiper (EFPIA)
9th European Patients Rights Day - Kuiper (EFPIA)9th European Patients Rights Day - Kuiper (EFPIA)
9th European Patients Rights Day - Kuiper (EFPIA)
 
my portfolio unit 9 task 4
my portfolio unit 9 task 4 my portfolio unit 9 task 4
my portfolio unit 9 task 4
 
Automation failure
Automation failureAutomation failure
Automation failure
 
Trabajo 11 04-12
Trabajo 11 04-12Trabajo 11 04-12
Trabajo 11 04-12
 
Busqueda significativa
Busqueda significativa Busqueda significativa
Busqueda significativa
 
Competencias docentes para el nuevo siglo
Competencias docentes para el nuevo sigloCompetencias docentes para el nuevo siglo
Competencias docentes para el nuevo siglo
 
Lecture 6
Lecture 6Lecture 6
Lecture 6
 
6б клас6б
6б клас6б6б клас6б
6б клас6б
 
Detecting Mesothelioma
Detecting MesotheliomaDetecting Mesothelioma
Detecting Mesothelioma
 
SEGUNDA REPROGRAMACION DESDE LA SEMANA 11 HASTA LA SEMANA 16 DEL SEMESTRE 2011-2
SEGUNDA REPROGRAMACION DESDE LA SEMANA 11 HASTA LA SEMANA 16 DEL SEMESTRE 2011-2SEGUNDA REPROGRAMACION DESDE LA SEMANA 11 HASTA LA SEMANA 16 DEL SEMESTRE 2011-2
SEGUNDA REPROGRAMACION DESDE LA SEMANA 11 HASTA LA SEMANA 16 DEL SEMESTRE 2011-2
 
Kurkistuksia 60-lukuun, Henriikka Sundell
Kurkistuksia 60-lukuun, Henriikka SundellKurkistuksia 60-lukuun, Henriikka Sundell
Kurkistuksia 60-lukuun, Henriikka Sundell
 
I taller piura 20 21nov14 acta 2
I taller piura 20 21nov14 acta 2I taller piura 20 21nov14 acta 2
I taller piura 20 21nov14 acta 2
 
Diaporama Fest'ia
Diaporama Fest'iaDiaporama Fest'ia
Diaporama Fest'ia
 
Consejos de pnl para ventas
Consejos de pnl para ventasConsejos de pnl para ventas
Consejos de pnl para ventas
 
Yep
YepYep
Yep
 
La autoestima
La autoestimaLa autoestima
La autoestima
 
Some ryhma1
Some ryhma1Some ryhma1
Some ryhma1
 

Similar a Programar java (20)

Java
JavaJava
Java
 
C ++.ppt
C ++.pptC ++.ppt
C ++.ppt
 
Lenguajec++
Lenguajec++Lenguajec++
Lenguajec++
 
Lenguajec++
Lenguajec++Lenguajec++
Lenguajec++
 
4014552.ppt
4014552.ppt4014552.ppt
4014552.ppt
 
Recuperacin 333333
Recuperacin 333333Recuperacin 333333
Recuperacin 333333
 
Introduccion al lenguaje c
Introduccion al lenguaje cIntroduccion al lenguaje c
Introduccion al lenguaje c
 
LOS 100 FUEGOS
LOS 100 FUEGOSLOS 100 FUEGOS
LOS 100 FUEGOS
 
VERIFICAR CÉDULA DE IDENTIDAD
VERIFICAR CÉDULA DE IDENTIDADVERIFICAR CÉDULA DE IDENTIDAD
VERIFICAR CÉDULA DE IDENTIDAD
 
Los 100 fuegos
Los 100 fuegosLos 100 fuegos
Los 100 fuegos
 
Java001
Java001Java001
Java001
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
4 variables, arreglos, estructuras y enum
4 variables, arreglos, estructuras y enum4 variables, arreglos, estructuras y enum
4 variables, arreglos, estructuras y enum
 
Introduccion a Java
Introduccion a JavaIntroduccion a Java
Introduccion a Java
 
Python
Python Python
Python
 
Javascript
JavascriptJavascript
Javascript
 
Mynor Alexander Hernandez Canuz
Mynor Alexander Hernandez CanuzMynor Alexander Hernandez Canuz
Mynor Alexander Hernandez Canuz
 
2 punteros y lenguaje c
2 punteros y lenguaje c2 punteros y lenguaje c
2 punteros y lenguaje c
 
Capítulo 6 introducción a la programación en c
Capítulo 6 introducción a la programación en cCapítulo 6 introducción a la programación en c
Capítulo 6 introducción a la programación en c
 
C curso intr
C curso intr C curso intr
C curso intr
 

Último

Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 

Último (20)

Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 

Programar java

  • 2. Información general (y II) • Bibliografía: – Core Java 1.2, Volúmenes I – II. C.S. Horstmann, Gary Cornell, Prentice Hall, 1999. – Tutorial de Java en http://java.sun.com
  • 4. Características principales (I) • Lenguaje interpretado. • Fuertemente tipado. • Sintaxis similar a C/C++. • Sin punteros: Garbage collection. • 100% portable. • Integra librearías estándar para: – Interfaces de usuario. – Objetos distribuidos. – Threads.
  • 5. Características principales (y II) • Ejecutable desde navegadores web. • Origen: Aumento de HTML para conseguir páginas Web dinámicas. • Versiones: – 1995 – JDK 1.0 – 1997 – JDK 1.1 –… – 2004 – JDK 1.5
  • 6. Desarrollo en Java • Java Development Kit (JDK): – Java Runtime Environment (JRE): • Java Virtual Machine. • Java API: lenguaje básico y librerías estándar. – Compilador a bytecode. – Otras herramientas: • Debuggers. • Applet viewer. • Compiladores RMI • …
  • 7. Compilación e interpretación Ejemplo.java class Ejemplo { ... } Java Virtual Machine class Aux { JVM ... } Compilador Java Ejemplo.class Aux.class
  • 8. Comparativa: Java vs. C++ (I) Java C++ • Interpretado • Compilado • Portable • Aspectos no portables • Todo memoria dinámica • Memoria automática y dinámica • Garbage collection • Gestión del programador • No existen punteros • Existen punteros • Todos los métodos virtuales • No todos los métodos virtuales • No hay herencia múltiple • Hay herencia múltiple • Información sobre clases • Información muy escasa en tiempo de ejecución. (dynamic_cast). • Tratamiento genérico • Punteros a void. de tipos (wrappers).
  • 9. Comparativa: Java vs. C++ (y II) Java C++ • Soporte estándar para interfaces: • No incluido en el lenguaje: AWT, SWING Microsoft MFC, Borland OWL… • Soporte estándar para concurrencia • No incluido en el lenguaje • Soporte estándar para objetos • No incluido en el lenguaje: distribuidos CORBA, ActiveX • Ejecutable en navegadores web • No ejecutable por navegadores • Homogeneidad del lenguaje • Múltiples sintaxis • Lenguaje bien diseñado • Compatibilidad con C
  • 11. Aspectos léxicos • Ignora múltiples espacios en blanco • Sentencias separadas por “;”. • Comentarios: – /* … */  Múltiples líneas de comentario – //  Una única línea de comentario • Case – sensitive. • Convenios de nomenclatura: – Clases con mayúscula. – Métodos y variables con minúscula. – etc…
  • 12. Valores y variables • Tipos básicos: byte 1 byte char 2 bytes (sin signo, caracteres Unicode, incluyen los ASCII) short 2 bytes int 4 bytes long 8 bytes float 4 bytes double 8 bytes boolean 1 bit (true ó false, no compatible con tipos numéricos) • Variables y literales: – Declaración y utilización de variables y literales similar a C/C++.
  • 13. Compatibilidad entre tipos byte b = 42; char c = 'a'; // también válido: c = 97; short s = 1024; int i = 50000; long l = 120000; float f = 5.67f; double d = .1234; double result = (f*b) + (i/c) - (d*s); Ensanchar: automático Estrechar: cast explícito char: cast explícito f = c; c = (char) i; s = (short) c; d = s; b = (byte) d; c = (char) s; f = l; f = (float) d; c = (char) b;
  • 14. Operadores • En total hay 46 operadores. – Numéricos: +, -, *, /, %, +=, -=, *=, /=, %=, --, ++ – Lógicos: &&, ||, ! – Operadores de bit: &, |, ^, ~, >>, << – Relacionales: >, <, >=, <=, ==, != – Condicional: If-then-else: (condicion) ? acción1 : acción2
  • 15. Precedencia de operadores ( ) [ ] . ++ -- ~ ! Orden de ejecución de operadores new * / % + - >> >>> << > >= < <= instanceof == != & ^ | && || ? : = += *= -= /= Igualdad de precedencia
  • 16. Arrays • Declaración: int a[]; • Reserva de tamaño: a = new int[3]; int b[] = {1, 2, 3, 4}; • Asignación de valores: a[1] = 7; b = a; • Errores: a[6] = 7; // Fuera del rango a = {1, 2, 3}; // Sólo válido en la inicialización int c[5]; // La dimensión sólo al hacer new char str[] = “hola”; // Los Strings no son arrays en Java
  • 17. Arrays multidimensionales float a[][] = new float [4][3]; float m[][] = new float [4][]; m[0] = new float [2]; m[1] = new float [5]; m[2] = new float [m[1].length]; float x[] = {4.5, 8/3, m[2][1]}; m[3] = x; // O cualquier expresión que devuelva un float[] a[0] = m[1]; // Las variables de array no son constantes a[2, 1] = 7.3 // Error de sintaxis: a[2][1]
  • 18. Expresiones condicionales • Dos tipos de condicionales. if (condición1) acción1 [else acción2] [else if (condición2)… switch (expresión) { byte, char, short o int case valor1: … break; Tienen que ser literales case valor2: … break; default: … }
  • 19. Iteraciones • Tres tipos de iteraciones. while (condición1) { … } do { … } while (condición1) for (inicialización; condición; iteración) { … }
  • 20. Clases y objetos en Java
  • 21. Clases • Estructura de datos + funciones. class CuentaBancaria { long numero; String titular; Variables long saldo; (datos) void ingresar (long cantidad) { saldo += cantidad; } Funciones void retirar (long cantidad) { if (cantidad > saldo) System.out.println ("Saldo insuficiente"); else saldo -= cantidad; } }
  • 22. Variables de una clase • Definen una estructura de datos (similar al struct de C) class CuentaBancaria { struct CuentaBancaria { long numero; long numero; String titular; char *titular; long saldo; long saldo; } }; • Pueden almacenar objetos de otras clases class CuentaBancaria { class Cliente { long numero; String nombre; Cliente titular; long dni; long saldo = 0; } } • Por defecto, se inicializan a 0, false y/o null.
  • 23. Creación de objetos • Una clase define un tipo de dato que se puede utilizar para declarar variables. CuentaBancaria cuenta1, cuenta2; • Declarar un objeto es declarar una referencia al objeto. • Los objetos se crean mediante el operador new. CuentaBancaria cuenta1 = new CuentaBancaria(); numero 0 titular null saldo 0 • Crear un objeto es reservar memoria para sus variables. • El operador new reserva memoria y devuelve una referencia.
  • 24. Acceso a variables • El acceso a las variables de un objeto se lleva a cabo mediante la notación “.” CuentaBancaria cuenta1, cuenta2; cuenta1 = new CuentaBancaria (); cuenta2 = cuenta1; Cliente cliente1 = new Cliente (); cliente1.nombre = "Luis Gomez"; cliente1.dni = 25672046; cuenta1.numero = 6831531; cuenta1.titular = cliente1; cuenta1.saldo = 100000; cuenta2.saldo = 200000; cuenta2.titular.nombre = "Pilar Garcia";
  • 25. Métodos • Los métodos son funciones definidas dentro de un clase. • Son similares a un puntero a función dentro de un struct de C. • Los métodos de una clase pueden referenciar directamente las variables de la misma. • Los métodos se invocan sobre un objeto de la clase a la que pertenecen mediante la notación “.”. cuenta2.ingresar(1000); • Al ejecutar un método sobre un objeto de la clase X, las variables de dicha clase X toman los valores que tiene el objeto.
  • 26. Llamadas desde métodos • Los métodos pueden invocar directamente otros métodos de la misma clase (sin “.”). • Al ejecutar un método invocado sobre un objeto de clase A, las llamadas a otros métodos de la clase A se ejecutan sobre el mismo objeto a menos que se invoquen sobre otro objeto cuenta3 = new CuentaBancaria (); cuenta2.transferencia (cuenta3, 1000); class CuentaBancaria { ... void transferencia (CuentaBancaria destino, long cantidad) { if (cantidad <= saldo ) { retirar (cantidad); destino.ingresar (cantidad); } } }
  • 27. Acceso a objetos class X { String nombre; } class Y { int i; } class Z { String nombre; } class A { 1. Variable del objeto de la invocación int num; 2. Objeto definido en variable local X obj4; 3. Objeto pasado como argumento void f (int n, Y obj3) { 4. Objeto almacenado en variable de clase Z obj2 = new Z (); 4. obj4.nombre = obj2.nombre num = obj3.i + n; } 2. } 1. 3.
  • 28. Constructores • Métodos ejecutados automáticamente al crear un objeto de una clase (“new”). • Se usan para llevar a cabo labores de inicialización. • Simplifican la sintaxis y apoyan el encapsulamiento de los datos. • Los métodos constructores de una clase tienen que tener el mismo nombre que la clase. class Cliente { // Constructor de la clase Cliente Cliente (String str, long num) { ...; } }
  • 29. Ejemplos de constructores class Cliente { String nombre; long dni; Cliente (String str, long num) { nombre = str; dni = num; } } class CuentaBancaria { long numero; Cliente titular; long saldo; CuentaBancaria (long num, Cliente clt, long s) { numero = num; titular = clt; saldo = s; } }
  • 30. Ejemplos de invocación • Automáticamente al crear objetos. Cliente cliente1 = new Cliente ("Luis Gomez", 25672046); CuentaBancaria cuenta1 = new CuentaBancaria (6831531, cliente1, 100000); CuentaBancaria cuenta2 = new CuentaBancaria (8350284, new Cliente ("Pilar Garcia", 15165442), 200000);
  • 31. Constructor por defecto • Si no se definen constructores, Java proporciona uno por defecto. – Sin parámetros: Llamadas del tipo new X(); – Sin funcionalidad: Variables inicializadas por defecto. • Pero si se define un constructor (o más) el constructor por defecto no es definido.