SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Características esenciales O.O.
                                  (1)
   • Abstracción
           – Quedarse con las características esenciales de algo (desde un
             cierto punto de vista), ignorando los detalles irrelevantes.




Programación III                        Tema 1 - Introducción
Características esenciales O.O.
                                           (2)
   • Clases y Objetos
           – Un programa orientado a objetos se compone sólo de
             objetos
           – Un Objeto...
                   • Tiene datos (atributos) y comportamiento (métodos)
                   • Es la concreción (un ejemplar, instancia) de una clase
           – Una Clase...
                   • Es una plantilla (modelo) para crear objetos similares.
                   • Define un conjunto de características comunes (atributos y
                     métodos) a todos los objetos de esa clase.
                   • Es la abstracción de un conjunto de objetos.
                   • Puede utilizarse para crear muchos objetos, pocos o ninguno
                      – En ese caso es simplemente una agrupación de código y datos únicos
                      – Por ejemplo, Math

Programación III                              Tema 1 - Introducción
Características esenciales O.O.
                                (3)




Programación III                  Tema 1 - Introducción
Características esenciales O.O.
                                      (4)
           – Atributos de Instancia
                   • Cada instancia creada de la clase tiene sus propios
                     valores y espacio de almacenamiento. Ej: velocidad
                     Máxima, consumo y matrícula
           – Atributos de Clase
                   • Se crea una variable única para la clase y TODOS los
                     objetos que se creen a partir de esa clase.
                   • Todos los objetos acceden a esa variable (se comparte
                     por todos)
                   • Lleva el modificador static
                   • Ejemplo: numCoches


Programación III                        Tema 1 - Introducción
Características esenciales O.O.
                                      (5)
       • Métodos de Instancia
               – Método asociado a una instancia/objeto en particular
               – Cuando se llama, se tiene acceso a los datos
                 contenidos en la instancia a la que está asociada.
                   • Llamada: objeto.nombre_metodo(arg1, arg2,...argN)
       • Métodos de Clase
               – Método asociado a la clase y no a una instancia en
                 particular. Es un método único para todos los objetos
                 creados a partir de esa clase.
               – Manejan información significativa para toda la clase y
                 no de una instancia en particular
               – Se declaran como static
               – No contemplan el polimorfismo (con herencia)
                   • Llamada: nombre_clase.nombre_metodo(arg1, arg2,...,
Programación III     argN)            Tema 1 - Introducción
Características esenciales O.O.
                      (6)
   • Actividades fundamentales de un programa
     OO
           – Crear los objetos necesarios (constructores)
           – Invocación de métodos de objetos (mensajes)
           – Borrar los objetos cuando no son necesarios
             (automático en Java: garbage collector)




Programación III                  Tema 1 - Introducción
Características esenciales O.O.
                                         (7)
   • Encapsulación y Ocultamiento de la Información
           – Manipulación de un objeto como una caja negra, sin
             necesidad de conocer nunca su estructura interna.
           – Se usan los servicios (métodos) que proporciona el
             objeto sin necesidad de conocer como está éste
             implementado por dentro
           – En las OO, las propiedades (atributos) de los objetos
             pueden ser privadas y se accede a ellas a través de los
             métodos
                   • Se recomienda que los atributos sean siempre privados
                   • Acceso público con get/set [ver luego]




Programación III                           Tema 1 - Introducción
Métodos get y set (1/3)

   • El acceso a los atributos tal y como se ha
     explicado anteriormente viola el concepto
     de encapsulación.
   • Solución:
           – Métodos get para consultar los atributos de una
             clase.
           – Métodos set para modificar los atributos de una
             clase.




Programación III               Tema 1 - Introducción
Métodos get y set (2/3)
   • ¿Por qué complicarnos?
           – 1) Independencia de implementación y cambios
                   • (ej: long getDNI())
           – 2) Control de errores
                   • (ej: setFecha( int dia, int mes, int anyo ))
           – 3) Campos calculados
                   • (ej: setValorFactura ( base, iva ) -> base, iva, total)
           – 4) Polimorfismo
                   • (diferente lógica en clase padre e hijo sobre el mismo dato)

           – 5) Para pruebas y depuración
                   • es más fácil depurar el paso por un método que por un atributo:
                        void getDNI() {
                            if (...) System.out.println( "Cogiendo DNI " + dni );
                            return dni;
                        }
Programación III                                   Tema 1 - Introducción
Métodos get y set (3/3)
   • Ejemplo:
                   public void setX(double pX)
                   {
                     x=pX;
                   }
                   public double getX()
                   {
                     return x;
                   }
                   public void setCentro(double pX, double pY)
                   {
                     this.x = pX;
                     this.y = pY;
                   }
                   ...



Programación III                        Tema 1 - Introducción
Sintaxis básica de Java (1)
   • Normas de estilo seguidas en Java
           – Clases empiezan con mayúscula y cada cambio
             de concepto con mayúscula.
                   class MiClase
           – Miembros (atributos y métodos) empiezan con
             minúsculas y cada cambio de concepto con
             mayúscula.
                   int miAtributo
                   void miMetodo()
           – Constantes todo con mayúsculas y cada cambio
             de concepto con guión bajo ‘_’
                   static final int MI_CONSTANTE




Programación III                        Tema 1 - Introducción
Sintaxis básica de Java (2)
   • Comentarios
           – El “//” comenta hasta el final de la línea
           – El “/*” comenta hasta el primer “*/” (no se permite anidamiento)
           – Comentarios de documentación “/**” al principio de una clase,
             atributo o método. (JavaDoc, herramienta por defecto).
   • Tipos
           – Java es un lenguaje con un control estricto de tipos
                   • Cada variable debe declararse con un tipo
           – Los tipos se clasifican en dos grandes grupos:
                   • Tipos Primitivos
                   • Clases
           – Tipos Primitivos
                   • char
                   • boolean
                   • Numéricos
                       – Enteros (byte, short, int, long) (8, 16, 32, 64 bits con signo)
                       – Reales (float, double) (32, 64 bits con signo, infinito, NaN)



Programación III                                  Tema 1 - Introducción
Sintaxis básica de Java (3)
           – Conversiones entre los tipos enteros, reales y
             caracteres. De dos tipos:
              • Implícitas (automáticamente por el compilador)
                         5 + 2.3             [5  5.0]
                         double x = 5 / 2.0; [5/2.0  5.0/2.0]
                         real = entero       [entero  real]
                   • Explícitas (programador mediante un casting).
                    Máxima: No perder precisión.
                         (int)5.4
                         double x = 5 / (double)2




Programación III                      Tema 1 - Introducción
Sintaxis básica de Java (4)
   • Todos los demás tipos son clases (referencias).
                   • Definidas por el usuario o ya existentes en el API de Java
                   • Las clases en Java se gestionan mediante referencias .
                           ClaseX referencia = instanciaClaseX;
                            ClaseX referencia = null;
                       – Toda variable de un tipo de clase X (o sea, referencia) mantiene
                         una referencia nula, expresada por la palabra clave null, o bien
                         apunta a una instancia de la clase X (o alguna de sus subclases).
                       – Las instancias hay que crearlas EXPLICITAMENTE (o algún método
                         las creará por nosotros). La declaración no implica instanciación.




Programación III                              Tema 1 - Introducción
Sintaxis básica de Java (5)
   • Operadores
           – Aritméticos (enteros y reales)
                   • + - * /
           – Aritméticos (enteros)
                   • % (módulo o resto)
           – Booleanos
                   • < <= > >= == !=
                   • && || !
           – Manipulación de bits (enteros)
                   • And (&), Or (|), Xor (^), Not (~), Desplazamiento (>> << >>>)
           – Incremento y decremento (forma prefija y postfija)
                   • ++ --
           – Asignación (=)




Programación III                           Tema 1 - Introducción
Sintaxis básica de Java (6)

   • Estructuras de Control  Iguales que en C y
     C++
                   • if ( exp ) sent1 [else sent2]
                   • for (inic; exp.while; inc.) sent ;
                   • switch (exp) {
                      – case exp: sent;
                      – ... }
                   • while ( exp ) sent ;
                   • do sent while ( exp ) ;




Programación III                          Tema 1 - Introducción
Sintaxis Java decl. de clases
                               (1/4)



   [Modif. de clase] class Nombre_Clase [Clase Padre (0-1)] [Interfaces(0-N)]
   {
      [Cuerpo de la Clase]
   }


   [Modif. de clase]: public | abstract | final
   [Clase Padre]: extends Tipo_Clase_Padre
   [Interfaces]: implements Lista_Interfaces




Programación III                      Tema 1 - Introducción
Sintaxis Java decl. de clases
                              (2/4)
   • Ejemplo de declaración de una clase
   public class Circulo
   {
         double x,y;
         double radio;
         public double perimetro()
         {
                 return 2*3.1416*radio;
         }
         public double area()
         {
                 return 3.1416*radio*radio;
         }
   }




Programación III                 Tema 1 - Introducción
Sintaxis Java decl. de clases
                               (3/4)
   • Modificadores que no afectan al ámbito
      MODIFICADOR         SIGNIFICADO

      final               Atributo con valor constante
                          Método que no puede ser redefinido
                          Clase que no puede ser heredada
      static              Método o atributo de clase

      abstract            Método que está declarado pero no
                             implementado (método abstracto). Deberá
                             implementarse en las subclases
                          Clase que no puede instanciarse




Programación III                   Tema 1 - Introducción
Sintaxis Java decl. de clases
                                (4/4)
           – Modificadores que afectan al ámbito
          MODIFICADOR       SIGNIFICADO

          public            Mét/Atr accesible desde cualquier clase

          private           Mét/Atr sólo accesible en métodos de la misma
                            clase

          <Sin              Mét/Atr accesible por la propia clase y por las
          Modificador>      clases del mismo paquete

          protected         Mét/Atr accesible por la propia clase, por las
                            subclases y por las clases del mismo paquete




Programación III                    Tema 1 - Introducción
Constructores (1/2)
   • Tipo especial de método que permite crear objetos
   • Cuando una clase no declara ningún constructor, Java
     automáticamente crea un constructor por defecto
     (constructor sin parámetros). Cuando no se especifica uno
     por defecto pero se declara uno con parámetros, se pierde
     el constructor por defecto
   • Una clase puede tener uno o varios constructores.
   • El nombre del método constructor debe coincidir con el
     nombre de la clase y no devuelve ningún tipo de valor (ni
     void).
   • En principio suelen ser siempre públicos. ¿Por qué?




Programación III              Tema 1 - Introducción
Constructores (2/2)
       • Ejemplo Constructores
       public class Circulo
       {
               double x,y;
               double radio;
               public Circulo()
               {
                        x = 0;
                        y = 0;
                        radio = 0;
               }
               public Circulo(double cX, double cY, double r)
               {
                        x = cX;
                        y = cY;
                        radio = r;
               }
               …
       }




Programación III                    Tema 1 - Introducción
Sintaxis para instancias (1/3)
   • Creación de instancias
                   Circulo miCirculo;                       //CASO 1º

                   – CASO 1º: Así no se crea ningún objeto, únicamente estamos declarando una
                     referencia a un objeto de tipo Circulo (se inicializa a null).

                   Circulo miCirculo = new Circulo();                        //CASO 2º

                   – CASO 2º: Así estamos creando un objeto de tipo Circulo mediante el
                     constructor sin parámetros ( new Circulo() ) y se lo estamos asignando a la
                     referencia miCirculo

                   Circulo miCirculo = new Circulo(2,4,5);//CASO 3º

                   – CASO 3º: Así estamos creando un objeto de tipo Circulo mediante la
                     invocación al constructor con tres parámetros        ( new Circulo (int,int,int)
                     ) y se lo estamos asignando a la referencia miCirculo

           – En Java todos los objetos se crean en memoria dinámica (new)



Programación III                              Tema 1 - Introducción
Sintaxis para instancias (2/3)

   • Acceso a los atributos de un objeto

                          miCirculo.x = 3;
                          miCirculo.y = 3;
                          miCirculo.radio = 3;

                   Siempre bajo el supuesto de que los
                   modificadores de esos atributos permitan el
                   acceso a ellos.


Programación III                      Tema 1 - Introducción
Sintaxis para instancias (3/3)
   • Acceso a los métodos de un objeto
                              miCirculo.area();
                              miCirculo.perímetro();
                              int a = miCirculo.area();               //CORRECTO
                              int a = area(miCirculo);                //ERROR
                   Siempre bajo el supuesto de que los modificadores de esos métodos
                   permitan el acceso a ellos.
                   –En Java el acceso a los métodos y atributos de un objeto se realiza a
                   través de la referencia que apunta al objeto.
                     <referencia>.<nombre_metodo>(<argumentos>)
                     <referencia>.<nombre_atributo>




Programación III                              Tema 1 - Introducción
Herencia (1/2)
   • Características de la Herencia
                   • Diferencia los TADs de la POO
                   • En Java, SOLO HAY HERENCIA SIMPLE (cada hijo sólo tiene
                     1 padre, aunque un padre puede tener N hijos)
                   • Funciona de modo estrictamente jerárquico
                   • Los métodos y atributos se heredan hacia abajo en la jerarquía
                   • En Java, TODAS LAS CLASES DERIVAN DE LA CLASE Object
                     (todas son subclases de ella) aunque no se indique
                     explícitamente.
                   • Las clases superiores describen un comportamiento más general,
                     las inferiores son más específicas (ej: Animal y Perro)
                   • Ventaja Principal: Reutilización de Código + simplificación
                     conceptual y programática.



Programación III                           Tema 1 - Introducción
Herencia (2/2)
           – Sintaxis Java para la Herencia
                   • La cláusula extends indica que una clase hereda de
                     otra.
         public class Perro extends Animal
         {
             …
         }
                   • La clase de la que se hereda (Animal) debe ser
                     accesible:
                      – Estar en el mismo paquete que la clase Coche. (Tema 3)
                      – Estar declarada en otro paquete como public. (sgte
                        apartado)
                      – No estar declarada como final. (sgte apartado)


Programación III                          Tema 1 - Introducción
¿De dónde se hereda?
   • La relación de herencia es transitiva
           – Si A es subclase de B y B es subclase de C, entonces A es subclase de C
   • Si no hay cláusula extends, entonces la superclase directa es java.lang.Object
   • Ejemplo:
                   class Animal
                   {
                   }
                   class Perro extends Animal
                   {
                   }
                   class PastorAleman extends Perro
                   {
                   }
   •     Animal es subclase de java.lang.Object
   •     Perro es subclase de Animal y por tanto también de java.lang.Object
   •     Perro es superclase de PastorAleman
   •     ...




Programación III                                Tema 1 - Introducción
Modificadores de Clase Her.
                                (1/2)
       •     abstract
               –   Sirve para proporcionar un comportamiento común a varias clases.
               –   Indica que es una clase abstracta (una clase incompleta). La clase puede (no es obligatorio)
                   tener algunos métodos declarados pero no implementados (métodos abstractos).
               –   Las clases con este modificador NO SE PUEDEN INSTANCIAR
               –   Ejemplo:
                     abstract class Punto                               //clase abstracta
                     {
                        int x;
                        int y;
                        void mover(int x, int y)
                        {       this.x += x; this.y += y;
                        }
                        abstract void dibujar();    //método abstracto
                     }
                     abstract class PuntoColoreable extends Punto
                     {
                        int color;
                     }
                     class PuntoSimple extends Punto
                     {
                                void dibujar()
                                {         System.out.println(“(”+ x + ”,” + y + ”)”);
                                }
                     }




Programación III                                       Tema 1 - Introducción
Modificadores de Clase Her.
                               (2/2)
   • final
           – Indica que la definición de la clase está completa.
                   • No se puede heredar de esa clase (no puede tener subclases).
                   • Si una clase es declarada abstract y final  Error de compilación
   • public
           – La clase es accesible a clases de otros paquetes. (Tema 3)
           – Sólo una clase public por fichero fuente (las otras clases si las hubiera
             son "privadas")




Programación III                              Tema 1 - Introducción
Polimorfismo
   • ¿Qué es?
           – Poder ejecutar código distinto de métodos iguales según el objeto que se haya
             instanciado.
           – En concreto...
                   • La variable que contiene un objeto y el objeto contenido no son del mismo tipo
                   • El método que se lanza se decide en ejecución, no en compilación
   • Condiciones mínimas en otros lenguajes
           – Herencia / misma signatura en métodos / método virtual
   • Condiciones mínimas en Java.
           – Herencia y misma signatura. Todos los métodos en Java son potencialmente
             virtuales (polimórficos)
   • Utilidad.
           – Independencia y abstracción.
   • Utilidad en Java.
           – Java no existiría sin el polimorfismo. Independiente de plataforma.
   • El uso de instanceof.
           – Permite conocer el tipo real del objeto que se ha instanciado.

           Animal a = new PastorAleman();
           System.out.println(a instanceof PastorAleman);




Programación III                                    Tema 1 - Introducción
Referencias this y super
           – this
                   • Es la referencia al propio objeto sobre el que se está trabajando.
                   • No hace falta usarla para acceder a los atributos y métodos
                     propios pero siempre está presente en métodos de instancia.
                   • A veces es necesaria cuando se quiere pasar la referencia al
                     propio objeto como parámetro de otro método.
                   • Ej:
                       – panel.dibujaObjeto( this )
           – super
                   • Permite referenciar a la clase padre.
                   • Se emplea cuando se ha redefinido un método y se quiere
                     acceder al método del padre (si no se usara esta palabra
                     reservada se llamaría al método de la propia clase y no habría
                     forma de invocar el del padre). [super.método(...)]
                   • Permite también llamar al constructor de la clase padre desde
                     el constructor de la clase hija. [super(...)]. En este caso, la
                     llamada debe ser la primera del constructor del hijo.


Programación III                                 Tema 1 - Introducción
Ejemplo this y super:
         class Rectangulo
         {
               void saludar()
               {
                          System.out.println("Hola, soy Rectangulo, y saludo");
               }
         }
         class Cuadrado extends Rectangulo
         {
               void saludar()                           //Método redefinido
               {
                          System.out.println("Hola, soy un cuadrado");
               }
               void saludos()
               {
                          saludar();          //Hola, soy un cuadrado
                          this.saludar();     //Hola, soy un cuadrado
                          super.saludar();    //Hola, soy Rectangulo, y saludo
               }
               public static void main (String[] args)
               {
                          Cuadrado c1 = new Cuadrado();
                          c1.saludos();
               }
         }




Programación III                              Tema 1 - Introducción
Cadenas de constructores

   • Los constructores se llaman en cadena
           – Se reserva espacio para el descendiente
           – Se ejecuta el código de todos los constructores
                   • Cada constructor inicializa sus atributos
                   • Primero los padres (de Object hacia abajo)
                   • Por eso lo primero que tiene que hacer cada
                     constructor es llamar al constructor de la clase padre
                      – super( ... )
                      – super() por defecto (lo hace Java si no lo hace el
                        programador)




Programación III                           Tema 1 - Introducción
La clase String
   • El String (en Java) no es un tipo primitivo, es una
     clase. Sin embargo, Java le ofrece un tratamiento
     especial.
           – Los literales de la cadena van entre comillas dobles.
                      String saludo = “Hola”;
           – Java permite la concatenación de cadenas mediante +
                      System.out.println(saludo + “ a todos!!!”);
           – Si se concatena una cadena con otro tipo, este último se
             convierte automáticamente a cadena
                      int valor = 5;
                      System.out.println(“Valor = ” + valor + ‘.’);
                   • (método toString())


Programación III                           Tema 1 - Introducción
Arrays (1/5)
   • Los arrays en Java se caracterizan por ser objetos.
   • Por tanto, se necesita una referencia para manipularlos.
   • Declaración de un array:
           int v[];             //No se indica el tamaño
           int[] v;
           – ¡Ojo! Aquí lo único que hemos hecho es declarar una referencia a un
             array de enteros. ¡El array todavía no está creado!
   • El array, como cualquier otro objeto, se crea con new.
           v = new int[10];
           float v2 = new float[50]
   • Para acceder a los elementos de una array se usa la notación
     clásica de arrays:
           v[0] = 5;
           int a = v[2];




Programación III                       Tema 1 - Introducción
Arrays (2/5)
   • El rango de un array está en 0 y N-1 (siendo N el tamaño)
   • Si se accede a una posición fuera de rango, el interprete nos
     avisa (se produce una excepción)
   • Como los arrays son objetos tienen atributos. El atributo
     length permite saber el tamaño de una array
           int tamaño = v.length
   • Java permite inicializar el array en su declaración
           int[] v = {1,2,3};
   • Equivale a:
           int[] v = new int[3];
           v[0] = 1;
           v[1] = 2;
           v[2] = 3;



Programación III                   Tema 1 - Introducción
Arrays (3/5)
   • Ejemplo:
           public class Ejemplo
           {
             public static void main(String[] args)
             {
               int[] a1 = {1,2,3,4};
               for(int i=0; i < a1.length; i++)
                      System.out.println(a1[i]);
             }
           }
   • Cuando el array no es de tipos primitivos lo que se almacena en
     cada posición es una referencia a un objeto
           Animal[] animales = new Animal[10];
   • Inicialmente, cada una de las referencias del array se inicializa a null.
   • Posteriormente habrá que crear los objetos y guardarlos en el array
           animales[0] = new Animal();
           animales[1] = new Animal();



Programación III                      Tema 1 - Introducción
Ejemplo de arrays
   •     De tipo primitivo
                                           • De objetos
   int      v[]; //Sólo referencia!!       Racional v[] = new Racional[3];
   v =      new int[6];                                     null   null   null
   //o      lo que es lo mismo
                                           //Si intentamos operar con Racionales
   int      v[] = new int[6];              v[0].setNumerador(1);//Null pointer Exc
                                           //Es necesario crear los objetos
                   0   0   0   0   0   0   v[0] = new Racional(1,1);
   //Acceso a los elementos
   v[0] = 3;                                                ref    null   null   1   1
   v[5] = 4;//Error
   v[3] = 2;                               v[0].setNumerador(2);

         3           0 0                                    ref    null   null   2   1
   for (int 0i=0; 2i < 6; i++)
               0

      v[i] = i;                            //Se pueden crear todos los objetos
                                           for (int i=0; i<v.length;i++)
               0                   4
                                              v[i] = new Racional(1,1);
                       1   2   3       5



Programación III                           Tema 1 - Introducción
Arrays (4/5)
   • Ejercicio: Indica qué se visualiza en cada caso por pantalla
           class PruebaArrays
           {
             public static void main(String[] args)
             {
               int[] a = new int[10];
               String[] b = new String[10];
               System.out.println("Longitud: " + a.length);
               for (int i=0;i<a.length;i++)
                       System.out.println(a[i]);
               System.out.println("Longitud: " + b.length);
               for (int i=0;i<b.length;i++)
                       System.out.println(b[i]);
               for (int i=0;i<b.length;i++)
                       b[i]=new String("" + i);
               for (int i=0;i<b.length;i++)
                       System.out.println(b[i]);
             }
           }




Programación III                         Tema 1 - Introducción
Arrays Multidimensionales
                             (5/5)
   • Arrays Multidimensionales
           – Los arrays multidimensionales no son más que arrays donde cada
             elemento es a su vez otro array (arrays de arrays)
           – El número de dimensiones lo indica el número de corchetes:
                   int [][] v1;                       //ref. a array de 2 dim
                   int [][][] v2;                     //ref. a array de 3 dim
           – A la hora de crear el array se indicará el tamaño de cada dimensión:
                   v1 = new int[10][20]               ;         //array de 10 x 20
                   v2 = new int[6][4][5];
           – Para acceder a un elemento de un array multidimensional:
                   v1[3][4] = 5;
                   v2[3][2][2] = 6;




Programación III                        Tema 1 - Introducción
Ejemplos de Arrays (1/2)
   class QueHago
   {
      public static void main(String[] args)
      {
           String[][] arrayOfStringArrays = new String[5][];
           for (int i=0;i<arrayOfStringArrays.length;i++)
           {
                    String[] nuevoArray = new String[10];
                    arrayOfStringArrays[i] = nuevoArray;
                    for (int j=0;j<nuevoArray.length;j++)
                            nuevoArray[j] = new String(“(”+i+“,”+j+”)”);
           }
           for (int i=0;i<arrayOfStringArrays.length;i++)
           {
                    for (int j=0;j<arrayOfStringArrays[i].length;j++)
                            System.out.print(arrayOfStringArrays[i][j]);
           }
      }
   }




Programación III                     Tema 1 - Introducción
Ejemplos de Arrays (2/2)
       class HolaConTiempo
       {
          static int contInstancias = 0;
          static HolaConTiempo[] instancias =new HolaConTiempo[10];
          int num;
          long tiempoCreacion;
          HolaConTiempo()
          {
               num = ++contInstancias;
               tiempoCreacion = System.currentTimeMillis();
          }
          void saludar()
          {
               System.out.println(“¡Hola! Soy la instancia “ + num + “ y he
          nacido en el milisegundo “ + tiempoCreacion);
          }
          public static void main(String args[])
          {
               //Creamos las 10 instancias
               for (int i=0;i<10;i++)
                        instancias[i] = new HolaConTiempo();
               //Que saluden las 10 instancias
               for (int i=0;i<10;i++)
                        instancias[i].saludar();
       } }


Programación III                       Tema 1 - Introducción
Composición (1/4)
       •     Las clases pueden incluir atributos que a su vez son objetos, o métodos que devuelven
             objetos.
       •     Los objetos se pueden encadenar para hacer llamadas.
       •     Ejemplo:
               class Persona {
                   Persona padre;            //Atributo de tipo clase
                   String nombre;
                   public Persona(Persona pPadre, String pNombre)
                   {
                     padre = pPadre; nombre = pNombre;
                   }
                   public String saluda()
                   {
                     return nombre;
                   }
                   public Persona getPadre()
                   {
                     return padre;
                   }
                   public static void main (String args[])
                   {
                     Persona filiberto = new Persona(null,"Filiberto");
                     Persona pablo = new Persona( filiberto, "Pablo" );
                     Persona nuria = new Persona( filiberto, "Nuria" );
                     Persona alberto = new Persona( nuria, "Alberto" );
                     //El nieto es Alberto
                     System.out.println("El nieto es: " + alberto.saluda());
                     //La madre es Nuria
                     System.out.println("La madre: " + alberto.getPadre().saluda());
                     //El abuelo es Filiberto
                     System.out.println("El abuelo es: " + alberto.getPadre().getPadre().saluda());
               }   }



Programación III                                       Tema 1 - Introducción
Composición (2/4)
                   class Punto
                   {
                              private int x,y;
                              public int getX() { return x; }
                              public int getY() { return y; }
                   }
                   public class Cuadrado
                   {
                              Punto[] vertices;
                              Cuadrado(Punto p1, Punto p2, Punto p3, Punto p4)
                              {          vertices = new Punto[4];
                                         vertices[0] = p1;
                                         vertices[1] = p2;
                                         vertices[2] = p3;
                                         vertices[3] = p4;
                              }
                              Punto getOrigen()
                              {
                                         return vertices[0];
                              }
                              public static void main(String[] args)
                              {
                                         Punto p1 = new Punto(0,0);
                                         Punto p2 = new Punto(2,0);
                                         Punto p3 = new Punto(0,2);
                                         Punto p4 = new Punto(2,2);
                                         Cuadrado c = new Cuadrado(p1,p2,p3,p4);
                                         System.out.println(c.getOrigen().getX());
                                         System.out.println(c.getOrigen().getY());
                              }
                   }


Programación III                                    Tema 1 - Introducción
Composición 3/4
   • ¡Atención al error de referencia nula ! (muy
     habitual en composición)
    class Fecha {                            class Persona {
       private int dia, mes, anyo;              private String nombre;
                                                private Fecha fechaNcto;
          Fecha (int d, int m, int a){          //COMPOSICIÓN
               dia = d;
               mes = m;                            void imprimir(){
               anyo = a;                             s.o.p.(nombre + “ “);
          }                                          s.o.p.(fechaNcto.dia +”/”); //ACCESO
    }                                                s.o.p.(fechaNcto.mes +”/”);
                                                     s.o.p.(fechaNcto.anyo +”/”);
                                                   }
                                             }
                                             class X {
                                                ...main(...){
                                                   Persona p = new Persona();
                                                   p.imprimir(); //ERROR. ¿POR QUÉ?

                                                   }
Programación III                         Tema 1 - Introducción
Composición 4/4
   •     Cuando se crea un objeto compuesto, se           •     Solución 2. Crear la fecha a la vez que la
         deben crear también TODOS los                          persona (en el constructor)
         objetos que lo componen
                                                          class Persona {
                                                             private String nombre;
   •     Solución 1. Crear la fecha después de la            private Fecha fechaNcto;
         persona
                                                                Persona(){
   class X {                                                         fechaNcto = new Fecha(0,0,0);
      ...main(...){                                             }
         Persona p = new Persona();                             ...
         p.setFecha(new Fecha(1,1,2000);                  }
         p.imprimir(); //CORRECTO                         class X {
                                                             ...main(...){
         }                                                      Persona p = new Persona();
                                                                p.imprimir(); //CORRECTO
   }
                                                                }
                                                          }




Programación III                                Tema 1 - Introducción
Otros aspectos:
        Wrappers (envoltorios)
  • ¿Cómo tratar un primitivo como un objeto?
          – Wrappers (envoltorios)
                   • Clase para cada tipo: Integer, Double, Char...
                   • Constructores muy sencillos
                    Integer i = new Integer(5)
                   • Métodos conversores
                    int j = i.intValue()
                   • Conversiones desde string
                    double r = Double.parseDouble( “185” );
                   • Métodos estáticos genéricos de tipo
                    Double.isNaN(5.75)
          – Las últimas ver. de Java hacen conv. automática
                     Integer i = 5; System.out.println( i + 3 );
Programación III                           Tema 1 - Introducción
Otros aspectos:
               Comparación
   • Dos objetos se comparan por referencias
           – if (o1 == o2) ...
   • Para comparar por valores:
           – equals(Object o)
           – Definido en Object (todos lo tienen)
           – if (o1.equals(o2)) ...
   • ¿Comparación >,<?
           – Método int compareTo(Object o)
                   • Devuelve -1, 0, +1
                   • No con todas las clases (ver interfaces)

Programación III                        Tema 1 - Introducción
Otros aspectos: javadoc

   • Utilidad incluida en JDK
   • Permite integrar la documentación de una
     clase con el código de la misma
   • Basada en comentarios con sintaxis fija
           – Inicio en /** en lugar de /*
   • Utilidad: javadoc.exe
           – Genera .html integrable con doc. java




Programación III                 Tema 1 - Introducción
Sintaxis comentarios

   • Justo antes de la clase o del método
   • Primera línea: descripción corta resumen
     (summary)
   • Comentarios de los parámetros con @param
   • Referencias a otras clases métodos @see
   • Retornos de párrafo con <p>
   • Otras posibilidades, como hiperenlaces
     ( {@link OtraCosa} )


Programación III            Tema 1 - Introducción
Javadoc - ejemplo
   /**
           Clase de ejemplo javadoc. Utiliza la clase {@link String}.<p>
   */
   public class Ejemplo {

         /**
          Devuelve una palabra a partir de un num. dado y de un gestor de ejemplos.
          El parámetro pista debe referenciar a una cadena válida. <p>
          Este método devuelve, de todas las palabras del gestor indicado,
          aquéllos cuyo valor no es nulo, ordenados por su nombre.
          Si no hay ninguno, devuelve una lista vacía.

           @param   numeroíndice válido de string
                          (si no es válido, se devuelve string vacío)
          @param inicio gestor de ejemplos fuente de datos
          @return         palabra índice del gestor de ejemplos
          @see            #ponePalabra(String)
          @see            GestorEjemplos
          @version 20090101
          @since   0.3
         */
          public String devuelvePalabra( int numero, GestorEjemplos inicio ) {
               return "";
          }



Programación III                         Tema 1 - Introducción
Visión documentación (1)




Programación III              Tema 1 - Introducción
Visión documentación (2)




Programación III              Tema 1 - Introducción
Ejercicios propuestos (1/4)
       •     Ejercicio 1:
               –   Solucionar los problemas de la siguiente clase, reescribiéndola para que se compile
                   correctamente.
                     class HolaMundo2
                     {
                        int cont;
                        public static void main( String args[] )
                        {
                                cont = 0;
                                HolaMundo2 a = new HolaMundo2();
                                HolaMundo2 b = new HolaMundo2();
                                HolaMundo2 c = new HolaMundo2();
                                a.saludar();
                                b.saludar();
                                c.saludar();
                        }
                        HolaMundo2()
                        {
                                cont++;
                        }
                        void saludar()
                        {
                                System.out.println(“Hola, soy la instancia " + cont );
                        }
                     }
               –   Modificarla para que cada instancia indique su número secuencial. No se puede cambiar el
                   método main (excepto la primera sentencia, aunque no es necesario).



Programación III                                       Tema 1 - Introducción
Ejercicios propuestos (2/4)
   • Ejercicio 2:
           – Crear una clase Vaca que tenga:
                      – Atributos: color de pelo (String), edad (entero), nombre (String)
                   • Métodos:
                      – debes elegir tres constructores diferentes
                      – Muu: método que hace que la vaca muja y diga su nombre y color de pelo
                        "Muuu...mi nombre es XXX y mi color de pelo es YYY"
                      – CompararEdad: dadas las edades de dos vacas (la que envía el mensaje y
                        otra como parámetro) saca el nombre de la vaca más antigua "La vaca XXX
                        es más vieja que la vaca YYY"
                   • Programa principal:
                      – Crear tres instancias de la clase Vaca, llamadas miVaca1, miVaca2 y miVaca3.
                        Para cada una de ellas utilizar un constructor diferente.
                      – Hacer que las tres mujan.
                      – Comparar la edad de miVaca1 y miVaca2.
                      – Modificar el programa para que cada vez que se cree una instancia de la
                        clase vaca salga un mensaje indicando el número de vaca creada: "Se ha
                        creado la vaca 1", etc.



Programación III                                Tema 1 - Introducción
Ejercicios propuestos (3/4)
       • Ejercicio 3:
               – Modificar la clase HolaMundo, llamándola HolaMundoAMedias:
                 (Hacerlo utilizando los métodos más apropiados de String)
                   • para que se parta de una variable String que contenga " ¡Esta es la cadena
                     Hola Mundo... a medias! ".
                   • posteriormente debe eliminar los espacios del inicio y del final.
                   • finalmente, quitar el substring que sobra para dejar simplemente "¡Hola
                     Mundo... a medias!", que debe ser el String visualizado.
                        – Ayudas para la realización del ejercicio:
                        – El método de instancia trim() de la clase String elimina espacios en blanco de los
                          extremos de un String.
                        – El método de instancia subString (inicio, fin) de la clase String devuelve los
                          caracteres de inicio a fin del String.
                        – El método de instancia indexOf(subString) de la clase String indica en qué posición
                          se encuentra la primera ocurrencia del subString en el String que llama al método.
       • Ejercicio 4:
               – Describe con tus palabras todos los pasos desde la edición hasta la
                 ejecución, los problemas que pueden surgir y cómo solucionarlos.
               – ¿Qué ficheros y programas son necesarios en cada etapa?
               – ¿Cuál es el conjunto mínimo de ficheros y programas necesarios para la
                 ejecución final de un programa Java?



Programación III                                   Tema 1 - Introducción
Ejercicios Propuestos (4/4)
       • Ejercicio 5:
               – Escribir un programa que coja todos los parámetros de la línea de comandos, si los
                 hay, y los muestre por pantalla, uno en cada línea, indicando con un solo asterisco
                 después de cada uno si está repetido (es decir, si algún otro parámetro previo es
                 un String igual)
       • Ejercicio 6:
               – ¿Por qué el siguiente trozo de código produce un error de compilación? ¿Cuál es
                 la diferencia entre a y c?
                    class Inicializacion
                    {
                      static int a;
                      public static void main(String[] args)
                      {
                            int c;
                            int b=17;
                            if ( b!= 0)
                                     System.out.println(b);
                            else
                            {
                                     System.out.println(a);
                                     System.out.println(c);
                            }
                      }
                    }



Programación III                                 Tema 1 - Introducción

Weitere ähnliche Inhalte

Was ist angesagt?

Jyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc X
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
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.Maximiliano Fierro
 
18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetosDavid Henrry Rosas Cruz
 
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooProgramacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooJosé Antonio Sandoval Acosta
 
Unidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetosUnidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetosRulox Quiñones
 
C3 las clases en java v2
C3 las clases en java v2C3 las clases en java v2
C3 las clases en java v2Mariano Galvez
 

Was ist angesagt? (20)

Aprendiendo objetos en c++
Aprendiendo objetos en c++Aprendiendo objetos en c++
Aprendiendo objetos en c++
 
Jyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetos
 
Unidad 1. Introducción. Conceptos fundamentales de la POO
Unidad 1. Introducción. Conceptos fundamentales de la POOUnidad 1. Introducción. Conceptos fundamentales de la POO
Unidad 1. Introducción. Conceptos fundamentales de la POO
 
Tema2
Tema2Tema2
Tema2
 
Java12
Java12Java12
Java12
 
Java
JavaJava
Java
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
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.
 
18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos
 
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooProgramacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma poo
 
9-Unidad 3: Encapsulamiento y modularidad
9-Unidad 3: Encapsulamiento y modularidad9-Unidad 3: Encapsulamiento y modularidad
9-Unidad 3: Encapsulamiento y modularidad
 
Unidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetosUnidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetos
 
Clases en java
Clases en javaClases en java
Clases en java
 
C3 las clases en java v2
C3 las clases en java v2C3 las clases en java v2
C3 las clases en java v2
 
Unidad 2 Sintaxis en java
Unidad 2 Sintaxis en javaUnidad 2 Sintaxis en java
Unidad 2 Sintaxis en java
 
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOSUnidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
 
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIASUnidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIAS
 
Programación 3: colecciones Java
Programación 3: colecciones JavaProgramación 3: colecciones Java
Programación 3: colecciones Java
 
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓNJAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
JAVA ORIENTADO A OBJETOS - INTRODUCCIÓN
 
Java OO: Introducción
Java OO: IntroducciónJava OO: Introducción
Java OO: Introducción
 

Ähnlich wie Programación III (Java) - 01 Introduccion

4-Unidad 1. Paradigma de la Programación-Orientación a Objetos
4-Unidad 1. Paradigma de la Programación-Orientación a Objetos 4-Unidad 1. Paradigma de la Programación-Orientación a Objetos
4-Unidad 1. Paradigma de la Programación-Orientación a Objetos Luis Fernando Aguas Bucheli
 
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...Didier Granados
 
Información básica Java
Información básica JavaInformación básica Java
Información básica JavaFordBull2er
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc X
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Maria Garcia
 
Anon metodologia de la programacion orientada a objetos con c++
Anon   metodologia de la programacion orientada a objetos con c++Anon   metodologia de la programacion orientada a objetos con c++
Anon metodologia de la programacion orientada a objetos con c++ratasquerosaXX
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Renny Batista
 
CURSO DE PROGRAMACION BASICA - Cap 7
CURSO DE PROGRAMACION BASICA - Cap 7CURSO DE PROGRAMACION BASICA - Cap 7
CURSO DE PROGRAMACION BASICA - Cap 7Daniel Irene
 
lenguajejava.pptx
lenguajejava.pptxlenguajejava.pptx
lenguajejava.pptxMiguelAmc
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Sergio Sanchez
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaAngel Vázquez Patiño
 

Ähnlich wie Programación III (Java) - 01 Introduccion (20)

Tema1
Tema1Tema1
Tema1
 
4-Unidad 1. Paradigma de la Programación-Orientación a Objetos
4-Unidad 1. Paradigma de la Programación-Orientación a Objetos 4-Unidad 1. Paradigma de la Programación-Orientación a Objetos
4-Unidad 1. Paradigma de la Programación-Orientación a Objetos
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
 
C1 - Conceptos OOP
C1 - Conceptos OOPC1 - Conceptos OOP
C1 - Conceptos OOP
 
Introducción al POO
Introducción al POOIntroducción al POO
Introducción al POO
 
Información básica Java
Información básica JavaInformación básica Java
Información básica Java
 
Clasesyobjetos
ClasesyobjetosClasesyobjetos
Clasesyobjetos
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 
Programación III (Java) - 08 threads
Programación III (Java) - 08 threadsProgramación III (Java) - 08 threads
Programación III (Java) - 08 threads
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)
 
Poo
PooPoo
Poo
 
Anon metodologia de la programacion orientada a objetos con c++
Anon   metodologia de la programacion orientada a objetos con c++Anon   metodologia de la programacion orientada a objetos con c++
Anon metodologia de la programacion orientada a objetos con c++
 
Ios.s2
Ios.s2Ios.s2
Ios.s2
 
Programación Orientada a Objetos
Programación Orientada  a ObjetosProgramación Orientada  a Objetos
Programación Orientada a Objetos
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
CURSO DE PROGRAMACION BASICA - Cap 7
CURSO DE PROGRAMACION BASICA - Cap 7CURSO DE PROGRAMACION BASICA - Cap 7
CURSO DE PROGRAMACION BASICA - Cap 7
 
lenguajejava.pptx
lenguajejava.pptxlenguajejava.pptx
lenguajejava.pptx
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 

Mehr von Andoni Eguíluz Morán

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611Andoni Eguíluz Morán
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Andoni Eguíluz Morán
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...Andoni Eguíluz Morán
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosAndoni Eguíluz Morán
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512Andoni Eguíluz Morán
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Andoni Eguíluz Morán
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoAndoni Eguíluz Morán
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesAndoni Eguíluz Morán
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Andoni Eguíluz Morán
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesAndoni Eguíluz Morán
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaAndoni Eguíluz Morán
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Andoni Eguíluz Morán
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasAndoni Eguíluz Morán
 
Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7Andoni Eguíluz Morán
 

Mehr von Andoni Eguíluz Morán (20)

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamos
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativo
 
Uso ético y seguro de las TIC
Uso ético y seguro de las TICUso ético y seguro de las TIC
Uso ético y seguro de las TIC
 
Redes Sociales Educativas
Redes Sociales EducativasRedes Sociales Educativas
Redes Sociales Educativas
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitales
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos Digitales
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativa
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)
 
SGGN 20140605
SGGN 20140605SGGN 20140605
SGGN 20140605
 
Programación III (Java) - 09 Cierre
Programación III (Java) - 09 CierreProgramación III (Java) - 09 Cierre
Programación III (Java) - 09 Cierre
 
Programación III (Java) - 07b Swing
Programación III (Java) - 07b SwingProgramación III (Java) - 07b Swing
Programación III (Java) - 07b Swing
 
Programación III (Java) - 07 Eventos
Programación III (Java) - 07 EventosProgramación III (Java) - 07 Eventos
Programación III (Java) - 07 Eventos
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 Ventanas
 
Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7
 

Kürzlich hochgeladen

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicialLorenaSanchez350426
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 

Kürzlich hochgeladen (20)

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicial
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 

Programación III (Java) - 01 Introduccion

  • 1. Características esenciales O.O. (1) • Abstracción – Quedarse con las características esenciales de algo (desde un cierto punto de vista), ignorando los detalles irrelevantes. Programación III Tema 1 - Introducción
  • 2. Características esenciales O.O. (2) • Clases y Objetos – Un programa orientado a objetos se compone sólo de objetos – Un Objeto... • Tiene datos (atributos) y comportamiento (métodos) • Es la concreción (un ejemplar, instancia) de una clase – Una Clase... • Es una plantilla (modelo) para crear objetos similares. • Define un conjunto de características comunes (atributos y métodos) a todos los objetos de esa clase. • Es la abstracción de un conjunto de objetos. • Puede utilizarse para crear muchos objetos, pocos o ninguno – En ese caso es simplemente una agrupación de código y datos únicos – Por ejemplo, Math Programación III Tema 1 - Introducción
  • 3. Características esenciales O.O. (3) Programación III Tema 1 - Introducción
  • 4. Características esenciales O.O. (4) – Atributos de Instancia • Cada instancia creada de la clase tiene sus propios valores y espacio de almacenamiento. Ej: velocidad Máxima, consumo y matrícula – Atributos de Clase • Se crea una variable única para la clase y TODOS los objetos que se creen a partir de esa clase. • Todos los objetos acceden a esa variable (se comparte por todos) • Lleva el modificador static • Ejemplo: numCoches Programación III Tema 1 - Introducción
  • 5. Características esenciales O.O. (5) • Métodos de Instancia – Método asociado a una instancia/objeto en particular – Cuando se llama, se tiene acceso a los datos contenidos en la instancia a la que está asociada. • Llamada: objeto.nombre_metodo(arg1, arg2,...argN) • Métodos de Clase – Método asociado a la clase y no a una instancia en particular. Es un método único para todos los objetos creados a partir de esa clase. – Manejan información significativa para toda la clase y no de una instancia en particular – Se declaran como static – No contemplan el polimorfismo (con herencia) • Llamada: nombre_clase.nombre_metodo(arg1, arg2,..., Programación III argN) Tema 1 - Introducción
  • 6. Características esenciales O.O. (6) • Actividades fundamentales de un programa OO – Crear los objetos necesarios (constructores) – Invocación de métodos de objetos (mensajes) – Borrar los objetos cuando no son necesarios (automático en Java: garbage collector) Programación III Tema 1 - Introducción
  • 7. Características esenciales O.O. (7) • Encapsulación y Ocultamiento de la Información – Manipulación de un objeto como una caja negra, sin necesidad de conocer nunca su estructura interna. – Se usan los servicios (métodos) que proporciona el objeto sin necesidad de conocer como está éste implementado por dentro – En las OO, las propiedades (atributos) de los objetos pueden ser privadas y se accede a ellas a través de los métodos • Se recomienda que los atributos sean siempre privados • Acceso público con get/set [ver luego] Programación III Tema 1 - Introducción
  • 8. Métodos get y set (1/3) • El acceso a los atributos tal y como se ha explicado anteriormente viola el concepto de encapsulación. • Solución: – Métodos get para consultar los atributos de una clase. – Métodos set para modificar los atributos de una clase. Programación III Tema 1 - Introducción
  • 9. Métodos get y set (2/3) • ¿Por qué complicarnos? – 1) Independencia de implementación y cambios • (ej: long getDNI()) – 2) Control de errores • (ej: setFecha( int dia, int mes, int anyo )) – 3) Campos calculados • (ej: setValorFactura ( base, iva ) -> base, iva, total) – 4) Polimorfismo • (diferente lógica en clase padre e hijo sobre el mismo dato) – 5) Para pruebas y depuración • es más fácil depurar el paso por un método que por un atributo: void getDNI() { if (...) System.out.println( "Cogiendo DNI " + dni ); return dni; } Programación III Tema 1 - Introducción
  • 10. Métodos get y set (3/3) • Ejemplo: public void setX(double pX) { x=pX; } public double getX() { return x; } public void setCentro(double pX, double pY) { this.x = pX; this.y = pY; } ... Programación III Tema 1 - Introducción
  • 11. Sintaxis básica de Java (1) • Normas de estilo seguidas en Java – Clases empiezan con mayúscula y cada cambio de concepto con mayúscula. class MiClase – Miembros (atributos y métodos) empiezan con minúsculas y cada cambio de concepto con mayúscula. int miAtributo void miMetodo() – Constantes todo con mayúsculas y cada cambio de concepto con guión bajo ‘_’ static final int MI_CONSTANTE Programación III Tema 1 - Introducción
  • 12. Sintaxis básica de Java (2) • Comentarios – El “//” comenta hasta el final de la línea – El “/*” comenta hasta el primer “*/” (no se permite anidamiento) – Comentarios de documentación “/**” al principio de una clase, atributo o método. (JavaDoc, herramienta por defecto). • Tipos – Java es un lenguaje con un control estricto de tipos • Cada variable debe declararse con un tipo – Los tipos se clasifican en dos grandes grupos: • Tipos Primitivos • Clases – Tipos Primitivos • char • boolean • Numéricos – Enteros (byte, short, int, long) (8, 16, 32, 64 bits con signo) – Reales (float, double) (32, 64 bits con signo, infinito, NaN) Programación III Tema 1 - Introducción
  • 13. Sintaxis básica de Java (3) – Conversiones entre los tipos enteros, reales y caracteres. De dos tipos: • Implícitas (automáticamente por el compilador) 5 + 2.3 [5  5.0] double x = 5 / 2.0; [5/2.0  5.0/2.0] real = entero [entero  real] • Explícitas (programador mediante un casting). Máxima: No perder precisión. (int)5.4 double x = 5 / (double)2 Programación III Tema 1 - Introducción
  • 14. Sintaxis básica de Java (4) • Todos los demás tipos son clases (referencias). • Definidas por el usuario o ya existentes en el API de Java • Las clases en Java se gestionan mediante referencias . ClaseX referencia = instanciaClaseX; ClaseX referencia = null; – Toda variable de un tipo de clase X (o sea, referencia) mantiene una referencia nula, expresada por la palabra clave null, o bien apunta a una instancia de la clase X (o alguna de sus subclases). – Las instancias hay que crearlas EXPLICITAMENTE (o algún método las creará por nosotros). La declaración no implica instanciación. Programación III Tema 1 - Introducción
  • 15. Sintaxis básica de Java (5) • Operadores – Aritméticos (enteros y reales) • + - * / – Aritméticos (enteros) • % (módulo o resto) – Booleanos • < <= > >= == != • && || ! – Manipulación de bits (enteros) • And (&), Or (|), Xor (^), Not (~), Desplazamiento (>> << >>>) – Incremento y decremento (forma prefija y postfija) • ++ -- – Asignación (=) Programación III Tema 1 - Introducción
  • 16. Sintaxis básica de Java (6) • Estructuras de Control  Iguales que en C y C++ • if ( exp ) sent1 [else sent2] • for (inic; exp.while; inc.) sent ; • switch (exp) { – case exp: sent; – ... } • while ( exp ) sent ; • do sent while ( exp ) ; Programación III Tema 1 - Introducción
  • 17. Sintaxis Java decl. de clases (1/4) [Modif. de clase] class Nombre_Clase [Clase Padre (0-1)] [Interfaces(0-N)] { [Cuerpo de la Clase] } [Modif. de clase]: public | abstract | final [Clase Padre]: extends Tipo_Clase_Padre [Interfaces]: implements Lista_Interfaces Programación III Tema 1 - Introducción
  • 18. Sintaxis Java decl. de clases (2/4) • Ejemplo de declaración de una clase public class Circulo { double x,y; double radio; public double perimetro() { return 2*3.1416*radio; } public double area() { return 3.1416*radio*radio; } } Programación III Tema 1 - Introducción
  • 19. Sintaxis Java decl. de clases (3/4) • Modificadores que no afectan al ámbito MODIFICADOR SIGNIFICADO final Atributo con valor constante Método que no puede ser redefinido Clase que no puede ser heredada static Método o atributo de clase abstract Método que está declarado pero no implementado (método abstracto). Deberá implementarse en las subclases Clase que no puede instanciarse Programación III Tema 1 - Introducción
  • 20. Sintaxis Java decl. de clases (4/4) – Modificadores que afectan al ámbito MODIFICADOR SIGNIFICADO public Mét/Atr accesible desde cualquier clase private Mét/Atr sólo accesible en métodos de la misma clase <Sin Mét/Atr accesible por la propia clase y por las Modificador> clases del mismo paquete protected Mét/Atr accesible por la propia clase, por las subclases y por las clases del mismo paquete Programación III Tema 1 - Introducción
  • 21. Constructores (1/2) • Tipo especial de método que permite crear objetos • Cuando una clase no declara ningún constructor, Java automáticamente crea un constructor por defecto (constructor sin parámetros). Cuando no se especifica uno por defecto pero se declara uno con parámetros, se pierde el constructor por defecto • Una clase puede tener uno o varios constructores. • El nombre del método constructor debe coincidir con el nombre de la clase y no devuelve ningún tipo de valor (ni void). • En principio suelen ser siempre públicos. ¿Por qué? Programación III Tema 1 - Introducción
  • 22. Constructores (2/2) • Ejemplo Constructores public class Circulo { double x,y; double radio; public Circulo() { x = 0; y = 0; radio = 0; } public Circulo(double cX, double cY, double r) { x = cX; y = cY; radio = r; } … } Programación III Tema 1 - Introducción
  • 23. Sintaxis para instancias (1/3) • Creación de instancias Circulo miCirculo; //CASO 1º – CASO 1º: Así no se crea ningún objeto, únicamente estamos declarando una referencia a un objeto de tipo Circulo (se inicializa a null). Circulo miCirculo = new Circulo(); //CASO 2º – CASO 2º: Así estamos creando un objeto de tipo Circulo mediante el constructor sin parámetros ( new Circulo() ) y se lo estamos asignando a la referencia miCirculo Circulo miCirculo = new Circulo(2,4,5);//CASO 3º – CASO 3º: Así estamos creando un objeto de tipo Circulo mediante la invocación al constructor con tres parámetros ( new Circulo (int,int,int) ) y se lo estamos asignando a la referencia miCirculo – En Java todos los objetos se crean en memoria dinámica (new) Programación III Tema 1 - Introducción
  • 24. Sintaxis para instancias (2/3) • Acceso a los atributos de un objeto miCirculo.x = 3; miCirculo.y = 3; miCirculo.radio = 3; Siempre bajo el supuesto de que los modificadores de esos atributos permitan el acceso a ellos. Programación III Tema 1 - Introducción
  • 25. Sintaxis para instancias (3/3) • Acceso a los métodos de un objeto miCirculo.area(); miCirculo.perímetro(); int a = miCirculo.area(); //CORRECTO int a = area(miCirculo); //ERROR Siempre bajo el supuesto de que los modificadores de esos métodos permitan el acceso a ellos. –En Java el acceso a los métodos y atributos de un objeto se realiza a través de la referencia que apunta al objeto. <referencia>.<nombre_metodo>(<argumentos>) <referencia>.<nombre_atributo> Programación III Tema 1 - Introducción
  • 26. Herencia (1/2) • Características de la Herencia • Diferencia los TADs de la POO • En Java, SOLO HAY HERENCIA SIMPLE (cada hijo sólo tiene 1 padre, aunque un padre puede tener N hijos) • Funciona de modo estrictamente jerárquico • Los métodos y atributos se heredan hacia abajo en la jerarquía • En Java, TODAS LAS CLASES DERIVAN DE LA CLASE Object (todas son subclases de ella) aunque no se indique explícitamente. • Las clases superiores describen un comportamiento más general, las inferiores son más específicas (ej: Animal y Perro) • Ventaja Principal: Reutilización de Código + simplificación conceptual y programática. Programación III Tema 1 - Introducción
  • 27. Herencia (2/2) – Sintaxis Java para la Herencia • La cláusula extends indica que una clase hereda de otra. public class Perro extends Animal { … } • La clase de la que se hereda (Animal) debe ser accesible: – Estar en el mismo paquete que la clase Coche. (Tema 3) – Estar declarada en otro paquete como public. (sgte apartado) – No estar declarada como final. (sgte apartado) Programación III Tema 1 - Introducción
  • 28. ¿De dónde se hereda? • La relación de herencia es transitiva – Si A es subclase de B y B es subclase de C, entonces A es subclase de C • Si no hay cláusula extends, entonces la superclase directa es java.lang.Object • Ejemplo: class Animal { } class Perro extends Animal { } class PastorAleman extends Perro { } • Animal es subclase de java.lang.Object • Perro es subclase de Animal y por tanto también de java.lang.Object • Perro es superclase de PastorAleman • ... Programación III Tema 1 - Introducción
  • 29. Modificadores de Clase Her. (1/2) • abstract – Sirve para proporcionar un comportamiento común a varias clases. – Indica que es una clase abstracta (una clase incompleta). La clase puede (no es obligatorio) tener algunos métodos declarados pero no implementados (métodos abstractos). – Las clases con este modificador NO SE PUEDEN INSTANCIAR – Ejemplo: abstract class Punto //clase abstracta { int x; int y; void mover(int x, int y) { this.x += x; this.y += y; } abstract void dibujar(); //método abstracto } abstract class PuntoColoreable extends Punto { int color; } class PuntoSimple extends Punto { void dibujar() { System.out.println(“(”+ x + ”,” + y + ”)”); } } Programación III Tema 1 - Introducción
  • 30. Modificadores de Clase Her. (2/2) • final – Indica que la definición de la clase está completa. • No se puede heredar de esa clase (no puede tener subclases). • Si una clase es declarada abstract y final  Error de compilación • public – La clase es accesible a clases de otros paquetes. (Tema 3) – Sólo una clase public por fichero fuente (las otras clases si las hubiera son "privadas") Programación III Tema 1 - Introducción
  • 31. Polimorfismo • ¿Qué es? – Poder ejecutar código distinto de métodos iguales según el objeto que se haya instanciado. – En concreto... • La variable que contiene un objeto y el objeto contenido no son del mismo tipo • El método que se lanza se decide en ejecución, no en compilación • Condiciones mínimas en otros lenguajes – Herencia / misma signatura en métodos / método virtual • Condiciones mínimas en Java. – Herencia y misma signatura. Todos los métodos en Java son potencialmente virtuales (polimórficos) • Utilidad. – Independencia y abstracción. • Utilidad en Java. – Java no existiría sin el polimorfismo. Independiente de plataforma. • El uso de instanceof. – Permite conocer el tipo real del objeto que se ha instanciado. Animal a = new PastorAleman(); System.out.println(a instanceof PastorAleman); Programación III Tema 1 - Introducción
  • 32. Referencias this y super – this • Es la referencia al propio objeto sobre el que se está trabajando. • No hace falta usarla para acceder a los atributos y métodos propios pero siempre está presente en métodos de instancia. • A veces es necesaria cuando se quiere pasar la referencia al propio objeto como parámetro de otro método. • Ej: – panel.dibujaObjeto( this ) – super • Permite referenciar a la clase padre. • Se emplea cuando se ha redefinido un método y se quiere acceder al método del padre (si no se usara esta palabra reservada se llamaría al método de la propia clase y no habría forma de invocar el del padre). [super.método(...)] • Permite también llamar al constructor de la clase padre desde el constructor de la clase hija. [super(...)]. En este caso, la llamada debe ser la primera del constructor del hijo. Programación III Tema 1 - Introducción
  • 33. Ejemplo this y super: class Rectangulo { void saludar() { System.out.println("Hola, soy Rectangulo, y saludo"); } } class Cuadrado extends Rectangulo { void saludar() //Método redefinido { System.out.println("Hola, soy un cuadrado"); } void saludos() { saludar(); //Hola, soy un cuadrado this.saludar(); //Hola, soy un cuadrado super.saludar(); //Hola, soy Rectangulo, y saludo } public static void main (String[] args) { Cuadrado c1 = new Cuadrado(); c1.saludos(); } } Programación III Tema 1 - Introducción
  • 34. Cadenas de constructores • Los constructores se llaman en cadena – Se reserva espacio para el descendiente – Se ejecuta el código de todos los constructores • Cada constructor inicializa sus atributos • Primero los padres (de Object hacia abajo) • Por eso lo primero que tiene que hacer cada constructor es llamar al constructor de la clase padre – super( ... ) – super() por defecto (lo hace Java si no lo hace el programador) Programación III Tema 1 - Introducción
  • 35. La clase String • El String (en Java) no es un tipo primitivo, es una clase. Sin embargo, Java le ofrece un tratamiento especial. – Los literales de la cadena van entre comillas dobles. String saludo = “Hola”; – Java permite la concatenación de cadenas mediante + System.out.println(saludo + “ a todos!!!”); – Si se concatena una cadena con otro tipo, este último se convierte automáticamente a cadena int valor = 5; System.out.println(“Valor = ” + valor + ‘.’); • (método toString()) Programación III Tema 1 - Introducción
  • 36. Arrays (1/5) • Los arrays en Java se caracterizan por ser objetos. • Por tanto, se necesita una referencia para manipularlos. • Declaración de un array: int v[]; //No se indica el tamaño int[] v; – ¡Ojo! Aquí lo único que hemos hecho es declarar una referencia a un array de enteros. ¡El array todavía no está creado! • El array, como cualquier otro objeto, se crea con new. v = new int[10]; float v2 = new float[50] • Para acceder a los elementos de una array se usa la notación clásica de arrays: v[0] = 5; int a = v[2]; Programación III Tema 1 - Introducción
  • 37. Arrays (2/5) • El rango de un array está en 0 y N-1 (siendo N el tamaño) • Si se accede a una posición fuera de rango, el interprete nos avisa (se produce una excepción) • Como los arrays son objetos tienen atributos. El atributo length permite saber el tamaño de una array int tamaño = v.length • Java permite inicializar el array en su declaración int[] v = {1,2,3}; • Equivale a: int[] v = new int[3]; v[0] = 1; v[1] = 2; v[2] = 3; Programación III Tema 1 - Introducción
  • 38. Arrays (3/5) • Ejemplo: public class Ejemplo { public static void main(String[] args) { int[] a1 = {1,2,3,4}; for(int i=0; i < a1.length; i++) System.out.println(a1[i]); } } • Cuando el array no es de tipos primitivos lo que se almacena en cada posición es una referencia a un objeto Animal[] animales = new Animal[10]; • Inicialmente, cada una de las referencias del array se inicializa a null. • Posteriormente habrá que crear los objetos y guardarlos en el array animales[0] = new Animal(); animales[1] = new Animal(); Programación III Tema 1 - Introducción
  • 39. Ejemplo de arrays • De tipo primitivo • De objetos int v[]; //Sólo referencia!! Racional v[] = new Racional[3]; v = new int[6]; null null null //o lo que es lo mismo //Si intentamos operar con Racionales int v[] = new int[6]; v[0].setNumerador(1);//Null pointer Exc //Es necesario crear los objetos 0 0 0 0 0 0 v[0] = new Racional(1,1); //Acceso a los elementos v[0] = 3; ref null null 1 1 v[5] = 4;//Error v[3] = 2; v[0].setNumerador(2); 3 0 0 ref null null 2 1 for (int 0i=0; 2i < 6; i++) 0 v[i] = i; //Se pueden crear todos los objetos for (int i=0; i<v.length;i++) 0 4 v[i] = new Racional(1,1); 1 2 3 5 Programación III Tema 1 - Introducción
  • 40. Arrays (4/5) • Ejercicio: Indica qué se visualiza en cada caso por pantalla class PruebaArrays { public static void main(String[] args) { int[] a = new int[10]; String[] b = new String[10]; System.out.println("Longitud: " + a.length); for (int i=0;i<a.length;i++) System.out.println(a[i]); System.out.println("Longitud: " + b.length); for (int i=0;i<b.length;i++) System.out.println(b[i]); for (int i=0;i<b.length;i++) b[i]=new String("" + i); for (int i=0;i<b.length;i++) System.out.println(b[i]); } } Programación III Tema 1 - Introducción
  • 41. Arrays Multidimensionales (5/5) • Arrays Multidimensionales – Los arrays multidimensionales no son más que arrays donde cada elemento es a su vez otro array (arrays de arrays) – El número de dimensiones lo indica el número de corchetes: int [][] v1; //ref. a array de 2 dim int [][][] v2; //ref. a array de 3 dim – A la hora de crear el array se indicará el tamaño de cada dimensión: v1 = new int[10][20] ; //array de 10 x 20 v2 = new int[6][4][5]; – Para acceder a un elemento de un array multidimensional: v1[3][4] = 5; v2[3][2][2] = 6; Programación III Tema 1 - Introducción
  • 42. Ejemplos de Arrays (1/2) class QueHago { public static void main(String[] args) { String[][] arrayOfStringArrays = new String[5][]; for (int i=0;i<arrayOfStringArrays.length;i++) { String[] nuevoArray = new String[10]; arrayOfStringArrays[i] = nuevoArray; for (int j=0;j<nuevoArray.length;j++) nuevoArray[j] = new String(“(”+i+“,”+j+”)”); } for (int i=0;i<arrayOfStringArrays.length;i++) { for (int j=0;j<arrayOfStringArrays[i].length;j++) System.out.print(arrayOfStringArrays[i][j]); } } } Programación III Tema 1 - Introducción
  • 43. Ejemplos de Arrays (2/2) class HolaConTiempo { static int contInstancias = 0; static HolaConTiempo[] instancias =new HolaConTiempo[10]; int num; long tiempoCreacion; HolaConTiempo() { num = ++contInstancias; tiempoCreacion = System.currentTimeMillis(); } void saludar() { System.out.println(“¡Hola! Soy la instancia “ + num + “ y he nacido en el milisegundo “ + tiempoCreacion); } public static void main(String args[]) { //Creamos las 10 instancias for (int i=0;i<10;i++) instancias[i] = new HolaConTiempo(); //Que saluden las 10 instancias for (int i=0;i<10;i++) instancias[i].saludar(); } } Programación III Tema 1 - Introducción
  • 44. Composición (1/4) • Las clases pueden incluir atributos que a su vez son objetos, o métodos que devuelven objetos. • Los objetos se pueden encadenar para hacer llamadas. • Ejemplo: class Persona { Persona padre; //Atributo de tipo clase String nombre; public Persona(Persona pPadre, String pNombre) { padre = pPadre; nombre = pNombre; } public String saluda() { return nombre; } public Persona getPadre() { return padre; } public static void main (String args[]) { Persona filiberto = new Persona(null,"Filiberto"); Persona pablo = new Persona( filiberto, "Pablo" ); Persona nuria = new Persona( filiberto, "Nuria" ); Persona alberto = new Persona( nuria, "Alberto" ); //El nieto es Alberto System.out.println("El nieto es: " + alberto.saluda()); //La madre es Nuria System.out.println("La madre: " + alberto.getPadre().saluda()); //El abuelo es Filiberto System.out.println("El abuelo es: " + alberto.getPadre().getPadre().saluda()); } } Programación III Tema 1 - Introducción
  • 45. Composición (2/4) class Punto { private int x,y; public int getX() { return x; } public int getY() { return y; } } public class Cuadrado { Punto[] vertices; Cuadrado(Punto p1, Punto p2, Punto p3, Punto p4) { vertices = new Punto[4]; vertices[0] = p1; vertices[1] = p2; vertices[2] = p3; vertices[3] = p4; } Punto getOrigen() { return vertices[0]; } public static void main(String[] args) { Punto p1 = new Punto(0,0); Punto p2 = new Punto(2,0); Punto p3 = new Punto(0,2); Punto p4 = new Punto(2,2); Cuadrado c = new Cuadrado(p1,p2,p3,p4); System.out.println(c.getOrigen().getX()); System.out.println(c.getOrigen().getY()); } } Programación III Tema 1 - Introducción
  • 46. Composición 3/4 • ¡Atención al error de referencia nula ! (muy habitual en composición) class Fecha { class Persona { private int dia, mes, anyo; private String nombre; private Fecha fechaNcto; Fecha (int d, int m, int a){ //COMPOSICIÓN dia = d; mes = m; void imprimir(){ anyo = a; s.o.p.(nombre + “ “); } s.o.p.(fechaNcto.dia +”/”); //ACCESO } s.o.p.(fechaNcto.mes +”/”); s.o.p.(fechaNcto.anyo +”/”); } } class X { ...main(...){ Persona p = new Persona(); p.imprimir(); //ERROR. ¿POR QUÉ? } Programación III Tema 1 - Introducción
  • 47. Composición 4/4 • Cuando se crea un objeto compuesto, se • Solución 2. Crear la fecha a la vez que la deben crear también TODOS los persona (en el constructor) objetos que lo componen class Persona { private String nombre; • Solución 1. Crear la fecha después de la private Fecha fechaNcto; persona Persona(){ class X { fechaNcto = new Fecha(0,0,0); ...main(...){ } Persona p = new Persona(); ... p.setFecha(new Fecha(1,1,2000); } p.imprimir(); //CORRECTO class X { ...main(...){ } Persona p = new Persona(); p.imprimir(); //CORRECTO } } } Programación III Tema 1 - Introducción
  • 48. Otros aspectos: Wrappers (envoltorios) • ¿Cómo tratar un primitivo como un objeto? – Wrappers (envoltorios) • Clase para cada tipo: Integer, Double, Char... • Constructores muy sencillos Integer i = new Integer(5) • Métodos conversores int j = i.intValue() • Conversiones desde string double r = Double.parseDouble( “185” ); • Métodos estáticos genéricos de tipo Double.isNaN(5.75) – Las últimas ver. de Java hacen conv. automática Integer i = 5; System.out.println( i + 3 ); Programación III Tema 1 - Introducción
  • 49. Otros aspectos: Comparación • Dos objetos se comparan por referencias – if (o1 == o2) ... • Para comparar por valores: – equals(Object o) – Definido en Object (todos lo tienen) – if (o1.equals(o2)) ... • ¿Comparación >,<? – Método int compareTo(Object o) • Devuelve -1, 0, +1 • No con todas las clases (ver interfaces) Programación III Tema 1 - Introducción
  • 50. Otros aspectos: javadoc • Utilidad incluida en JDK • Permite integrar la documentación de una clase con el código de la misma • Basada en comentarios con sintaxis fija – Inicio en /** en lugar de /* • Utilidad: javadoc.exe – Genera .html integrable con doc. java Programación III Tema 1 - Introducción
  • 51. Sintaxis comentarios • Justo antes de la clase o del método • Primera línea: descripción corta resumen (summary) • Comentarios de los parámetros con @param • Referencias a otras clases métodos @see • Retornos de párrafo con <p> • Otras posibilidades, como hiperenlaces ( {@link OtraCosa} ) Programación III Tema 1 - Introducción
  • 52. Javadoc - ejemplo /** Clase de ejemplo javadoc. Utiliza la clase {@link String}.<p> */ public class Ejemplo { /** Devuelve una palabra a partir de un num. dado y de un gestor de ejemplos. El parámetro pista debe referenciar a una cadena válida. <p> Este método devuelve, de todas las palabras del gestor indicado, aquéllos cuyo valor no es nulo, ordenados por su nombre. Si no hay ninguno, devuelve una lista vacía. @param numeroíndice válido de string (si no es válido, se devuelve string vacío) @param inicio gestor de ejemplos fuente de datos @return palabra índice del gestor de ejemplos @see #ponePalabra(String) @see GestorEjemplos @version 20090101 @since 0.3 */ public String devuelvePalabra( int numero, GestorEjemplos inicio ) { return ""; } Programación III Tema 1 - Introducción
  • 53. Visión documentación (1) Programación III Tema 1 - Introducción
  • 54. Visión documentación (2) Programación III Tema 1 - Introducción
  • 55. Ejercicios propuestos (1/4) • Ejercicio 1: – Solucionar los problemas de la siguiente clase, reescribiéndola para que se compile correctamente. class HolaMundo2 { int cont; public static void main( String args[] ) { cont = 0; HolaMundo2 a = new HolaMundo2(); HolaMundo2 b = new HolaMundo2(); HolaMundo2 c = new HolaMundo2(); a.saludar(); b.saludar(); c.saludar(); } HolaMundo2() { cont++; } void saludar() { System.out.println(“Hola, soy la instancia " + cont ); } } – Modificarla para que cada instancia indique su número secuencial. No se puede cambiar el método main (excepto la primera sentencia, aunque no es necesario). Programación III Tema 1 - Introducción
  • 56. Ejercicios propuestos (2/4) • Ejercicio 2: – Crear una clase Vaca que tenga: – Atributos: color de pelo (String), edad (entero), nombre (String) • Métodos: – debes elegir tres constructores diferentes – Muu: método que hace que la vaca muja y diga su nombre y color de pelo "Muuu...mi nombre es XXX y mi color de pelo es YYY" – CompararEdad: dadas las edades de dos vacas (la que envía el mensaje y otra como parámetro) saca el nombre de la vaca más antigua "La vaca XXX es más vieja que la vaca YYY" • Programa principal: – Crear tres instancias de la clase Vaca, llamadas miVaca1, miVaca2 y miVaca3. Para cada una de ellas utilizar un constructor diferente. – Hacer que las tres mujan. – Comparar la edad de miVaca1 y miVaca2. – Modificar el programa para que cada vez que se cree una instancia de la clase vaca salga un mensaje indicando el número de vaca creada: "Se ha creado la vaca 1", etc. Programación III Tema 1 - Introducción
  • 57. Ejercicios propuestos (3/4) • Ejercicio 3: – Modificar la clase HolaMundo, llamándola HolaMundoAMedias: (Hacerlo utilizando los métodos más apropiados de String) • para que se parta de una variable String que contenga " ¡Esta es la cadena Hola Mundo... a medias! ". • posteriormente debe eliminar los espacios del inicio y del final. • finalmente, quitar el substring que sobra para dejar simplemente "¡Hola Mundo... a medias!", que debe ser el String visualizado. – Ayudas para la realización del ejercicio: – El método de instancia trim() de la clase String elimina espacios en blanco de los extremos de un String. – El método de instancia subString (inicio, fin) de la clase String devuelve los caracteres de inicio a fin del String. – El método de instancia indexOf(subString) de la clase String indica en qué posición se encuentra la primera ocurrencia del subString en el String que llama al método. • Ejercicio 4: – Describe con tus palabras todos los pasos desde la edición hasta la ejecución, los problemas que pueden surgir y cómo solucionarlos. – ¿Qué ficheros y programas son necesarios en cada etapa? – ¿Cuál es el conjunto mínimo de ficheros y programas necesarios para la ejecución final de un programa Java? Programación III Tema 1 - Introducción
  • 58. Ejercicios Propuestos (4/4) • Ejercicio 5: – Escribir un programa que coja todos los parámetros de la línea de comandos, si los hay, y los muestre por pantalla, uno en cada línea, indicando con un solo asterisco después de cada uno si está repetido (es decir, si algún otro parámetro previo es un String igual) • Ejercicio 6: – ¿Por qué el siguiente trozo de código produce un error de compilación? ¿Cuál es la diferencia entre a y c? class Inicializacion { static int a; public static void main(String[] args) { int c; int b=17; if ( b!= 0) System.out.println(b); else { System.out.println(a); System.out.println(c); } } } Programación III Tema 1 - Introducción

Hinweis der Redaktion

  1. Añadir aquí el dibujo/ejemplo de las cajas - una por cada objeto con sus métodos saliendo. Otra para la clase que los engloba
  2. Prueba1.java
  3. Prueba2.java
  4. Ver ejemplo de bichos y muros