Java - PowerPoint PPT Presentation

1 / 97
About This Presentation
Title:

Java

Description:

private double radio; public Circulo() { this(new Punto(),1); public ... public Circulo(Punto centro, double radio) { this.centro = centro; this.radio = radio; ... – PowerPoint PPT presentation

Number of Views:568
Avg rating:3.0/5.0
Slides: 98
Provided by: ldcUs
Category:
Tags: dbl | java

less

Transcript and Presenter's Notes

Title: Java


1
Java Modulo 2
  • Clases, Herencia, Interfaces

2
Contenido
  • Arreglos
  • UML Diagramas de Clase
  • Declarando clases repaso detalle
  • Atributos y métodos de clase
  • Modificadores de Acceso
  • Herencia
  • De Diagramas de Clase a Java
  • Paquetes
  • Clases Abstractas
  • Interfaces
  • Vector
  • Colecciones

3
Tipos
  • Básicos int, float, etc
  • Clases Integer, Float, String, etc
  • Arrays
  • Almacenan multiples valores de cualquier tipo
  • Se crean con new
  • Se usan para declarar y acceder

4
Arrays
  • Declaracion
  • int a equivale a int a
  • a es un array b y c son enteros
  • int a, b, c
  • a, b y c son arrays
  • int a, b, c
  • Instanciacion
  • a new int20 ó int a new int20
  • a0 15 // desde cero
  • System.out.println(a.length) // imprime 20

5
Arreglos
6
Inicializacion de Arrays
  • Sus elementos se inicializan al valor por defecto
    del tipo correspondiente
  • int cuadrados 0, 1, 4, 9
  • que equivale a int cuadrados new
    int4 cuadrados0 0 cuadrados1 1
    cuadrados2 4 cuadrados3 9

7
Ejemplos de Arrays
  • int digitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • String dias "lunes","martes","miércoles","jue
    ves", "viernes","sábado","domin
    go"
  • Fecha festivos new Fecha ( 1, 1, 2000),
    new Fecha ( 15, 5, 2000),
    new Fecha ( 12, 10, 2000),
    new Fecha ( 6, 12, 2000),
  • Recorrido int lista new lista10 for
    (int i 0 i lt lista.length i)
    System.out.println(listai)

8
Arrays Multidimensionales
  • Un array bidimensional es un array de arrays.Se
    necesita un conjunto de corchetes por cada
    dimensiónint unAnno new int12 int
    tresAnnos new int312
  • TresAnnos00 2
  • tresAnnos211 1

9
Arrays Bidimensionales No Rectangulares
  • Un array de 2 dimensiones se puede crear sin
    especificar el tamaño de su segunda dimensión
  • int tresAnnos new int3
    tresAnnos0 new int12 tresAnnos1 new
    int12 tresAnnos2 new int12 Si se
    indica sólo una dimensión, ésta debe ser la
    primera int tresAnnos new int3 //
    Error Esta separación permite crear arrays no
    rectangulares tresAnnos0 new int12
    tresAnnos1 new int5 tresAnnos2 new
    int9

10
Inicialización de Arrays Multidimensionales
  • Se necesita un conjunto de datos entre llaves
    para cada dimensión
  • int matriz
  • 1, 2, 3,
  • 4, 5, 6
  • equivale a int matriz
  • new int23 matriz00 1
    matriz01 2 matriz02 3
    matriz10 4 matriz11 5
    matriz12 6

11
Clases para Manejar Cadenas de Caracteres
  • Hay dos clases en el paquete java.lang que
    permiten la manipulación de cadenas de
    caracteres
  • La clase String maneja cadenas constantes, es
    decir, que no pueden cambiar
  • La clase StringBuffer permite cambiar la cadena
    insertando, añadiendo o borrando caracteres
  • La clase String es más eficiente, mientras que la
    clase StringBuffer ofrece más posibilidades

12
Ejemplo con Strings Palindromo
  • protected static String reverse(String
    string)
    StringBuffer sb new
  • StringBuffer(string)
    return sb.reverse().toString()
    public static void main(String args)
    String string "Madam, I'm Adam."
    System.out.println() System.out.println(
  • "Testing whether the following "
    "string is a palindrome")
    System.out.println(" " string)
    System.out.println() if
    (isPalindrome(string))
    System.out.println(
  • "It IS a palindrome!") else
    System.out.println(
  • "It is NOT a palindrome!")
    System.out.println()
  • public class Palindrome public static
    boolean isPalindrome(
  • String stringToTest) String
    workingCopy removeJunk(stringToTest)
    String reversedCopy
    reverse(workingCopy) return
    reversedCopy.
  • equalsIgnoreCase(workingCopy)
    protected static String removeJunk(String
    string)
  • int i, len string.length()
    StringBuffer dest new
    StringBuffer(len)
    char c for (i (len - 1) i gt 0 i--)
    c string.charAt(i)
    if (Character.isLetterOrDigit(c))
    dest.append(c)
    return dest.toString()

13
Mas Orientacion a Objetos
  • UML

14
Orientación a Objetos
  • Clases Patrones que indican como construir
    objetos
  • Objetos Instancias de las clases en tiempo de
    ejecución.
  • Miembros de la clase
  • Atributos Características o propiedades de los
    objetos (o clases). Pueden ser variables de tipos
    simples o referencias a otros objetos
  • Métodos Comportamientos de los objetos. Son
    funciones que operan sobre los atributos de los
    objetos.
  • Herencia, Relaciones, Agregaciones
  • UML Unified Modeling Language
  • Lenguaje para varias metodologias
  • Presentaremos sólo Diagramas de Clase

15
Una clase
  • class Persona
  • // Atributos private String nombre private
    String telefono private Persona padre private
    Persona madre
  • // Constructorespublic Persona(String nombre,
    String telefono) this(nombre,telefono,null,
    null) public Persona(String nombre, String
    telefono,
  • Persona padre, Persona madre)
    this.nombre nombre this.telefono
    telefono this.padre padre
    this.madre madre
  • ....
  • // Metodos, acceden a atributos privados
  • public String nombre() return nombre
  • public String telefono() return telefono
  • public Persona padre() return padre
  • public Persona madre() return madre
  • public boolean hayPadre() return padre ! null
  • public boolean hayMadre() return madre ! null

16
El Lenguaje de Modelación Unificado (UML)?
Es un lenguaje estándar para la escritura de
modelos de software. UML puede ser utilizado para
visualizar, especificar, construir y documentar
los artefactos de un sistema de software
intensivo.
17
Construcción de Bloques UML
  • Elementos
  • Relaciones
  • Diagramas

18
Elementos
  • Elementos Estructurales
  • clases, interfaces, colaboraciones, caso de uso,
    clases activas, componentes, nodos.
  • Elementos de Comportamiento
  • interacciones, máquinas de estado
  • Elementos de Agrupación
  • Paquetes
  • Elementos de Anotación
  • Notas

19
Relaciones
  • Dependencia
  • Asociación
  • Generalización
  • Realización

20
Diagramas
  • Diagramas de Clase
  • Diagramas de Objeto
  • Diagramas de Caso de Uso
  • Diagrama de Secuencia
  • Diagrama de Estado
  • Diagramas de Actividad
  • Diagramas de Componente
  • Diagramas de Desarrollo

21
Elementos Estructurales
Los elementos estructurales son los sustantivos
de los modelos UML. Estos son la mayoría de las
partes estáticas de un modelo, representando
elementos que son conceptuales o físicos.
22
(No Transcript)
23
(No Transcript)
24
Más Orientación a Objetos
  • Volviendo a Java

25
Ciclo de vida de un objeto
  • Persona p1 // Aun no existe, null
  • Creacion de objetos p1 new Persona(juan..
  • Llama al Constructor.
  • Puede dar excepcion OutOfMemoryError
  • Uso del objeto
  • p1.nombre otro // illegal privated
  • p1.nombre()?
  • new Persona(maria,...).nombre() maria
  • No hay más referencias recolector de basura

26
Declarando
  • Clase
  • Atributos
  • Métodos
  • Constructores

27
Declarando una clase
  • Por defecto no public, no abstract, no final,
    extends Object
  • Sino es publica, solo visible en el mismo paquete.

28
Declarando un atributo
29
Declarando un método
  • Sintaxis
  • modificadores tipo nombre(parametrosFormales)
  • throws excepciones
  • sentencias
  • Tipo a retornar puede ser void
  • Valor devuelto return ltvaluegt
  • Se pueden declarar variables locales si son
    necesarias
  • Paso de parámetros en Java por valor. Incluso
    las referencias, imitando el pasaje por
    referencia de otros lenguajes.

30
Modificadores para métodos
31
Constructores
  • Inicialización de la instancia de una clase
    atributos
  • Tan complejos como se desee (ej pueden invocarse
    otros métodos de la misma clase, o de otras
    instancias creadas en el constructor).
  • Los constructores tienen el nombre de la clase
    argumentos Persona(String ....
  • Cero o más constructores por clase.
  • Sino se declara el constructor por defecto pone
    los atributos en cero (false, null).
  • Pueden levantar excepciones, pero no pueden
    devolver un resultado.
  • No se heredan, solo pueden llamarse

32
Constructores
  • class Circulo
  • private Punto centro
  • private double radio
  • public Circulo()
  • this(new Punto(),1)
  • public Circulo(double x,
  • double y, double radio)
  • this(new Punto(x,y),radio)
  • public Circulo(Punto centro, double radio)
  • this.centro centro
  • this.radio radio
  • ...
  • class Punto
  • private double x
  • private double y
  • public Punto()
  • this(0.0,0.0)
  • public Punto(double x,
  • double y)
  • this.x x
  • this.y y
  • ...

33
Sobrecarga de métodos (Polimorfismo)?
  • Todo método tiene una firma su nombre con el
    número y el tipo de sus parámetros.
  • Sobrecargar métodos mismo nombre, distinta firma
  • Siempre se resuelve en tiempo de compilación (en
    base al tipo estático de los parámetros reales)
    en base al número y la especificidad del tipo de
    los argumentos.
  • 1. Aplicables el número correcto de parámetros,
    y cuyos parámetros formales son de tipos que
    incluyen, por orden, los de los parámetros reales
  • 2. Si algún método tiene parámetros cuyos tipos
    incluyen, por orden, a los tipos de los
    parámetros del resto de los métodos, dicho método
    se elimina del conjunto conflicto (ya que es más
    genérico)?
  • 3. El paso (2) se repite hasta que no pueden
    eliminarse más métodos. Si el conflicto
    prevalece, se señala un error de compilación
  • En la práctica solo paso (1)?

34
Sobrecarga de métodos (Polimorfismo)?
  • public class DemoOverloading void print(int a,
    int b) ... void print(int a, char b) ...
    void print(char a, int b) ... void
    print(int a, int b, int c) ...
  • public class EjemplosManipulacionObjetos
    public static void main(String args)
    DemoOverloading dm new DemoOverloading()
    md.print(1, 2) md.print(1, a)
  • md.print(a, 1) md.print(1,
    2, h)

35
Destructores
  • No existen como en C
  • Metodo finalize que se ejecuta cuando va a ser
    liberado por el recolector de basura.
  • Util para liberar objetos fuera de Java C/C

36
Atributos y metodos de clase
  • Refieridos a la clase y no a una instancia
    particular

37
Atributos de clase
  • De instancia. Cada una tiene un valor particular.
    Representan el estado particular de cada objeto.
  • De clase. Todas las instancias comparten el mismo
    valor para estos atributos (como atributo
    global).
  • Si se cambia en una instancia, se refleja en
    todas.
  • Representan el estado compartido
  • Se declaran utilizando el modificador static.
    class Ficha public long id public static
    long idactual 0 public Ficha() id
    idactual

38
Métodos de clase
  • Como atributos static
  • Unicamente pueden acceder a atributos de clase
  • No pueden usar la referencia this
  • Unicamente pueden invocar a métodos de clase
  • El acceso a los métodos y atributos de clase se
    realiza utilizando el operador y el nombre de la
    clase Math.sqrt(...) Math.PI
  • Los métodos de clase son útiles para
  • Modularizar el método main de las aplicaciones
  • Bibliotecas de subrutinas (por ejemplo,
    java.lang.Math)?

39
Ejemplo de static
  • public class Error
  • int x
  • public static y
  • public static void main (String args)?
  • y 15
  • x 20 ERROR

40
Inicialización de atributos estáticos
  • En la declaración (de arriba a abajo)?
  • o con bloques de inicialización
  • class Primos public static int primos new
    int4 static primos0 2 for (int
    i 1 i lt primos.length i) primosi
    siguientePrimo() private static int
    siguientePrimo() ...

41
Acceso a atributos y métodos
  • El operador . aplicado a referencias permite el
    acceso a atributos y métodos.
  • public class EjemplosManipulacionObjetos
    public static void main(String args)
    Ficha f1 new Ficha()
    System.out.println(f1.id) f1.id 34
    Persona juan new Persona("Juan","5555555"
    ) Persona maria new
    Persona("María","5555555") Persona
    pedro new Persona("Pedro","5555555",
    juan,maria)
  • System.out.println(pedro.nombre())
    System.out.println(pedro.padre().nombre())
    System.out.println(pedro.madre().nombre()
    )

42
Referencias
  • En los métodos de instancia disponible una
    referencia que refiere a la instancia particular
    this
  • Por ejemplo para acceder a los atributos ocultos
    por declaraciones locales en el método
  • null valor de las referencias que no refieren a
    ningún objeto.
  • Por defecto toda referencia se inicializa a null

43
Referencias Null Pointer
  • Error muy común tratar de acceder a referencias
    null.
  • public class EjemplosManipulacionObjetos2
    public static void main(String args)
    Persona juan
  • new Persona("Juan", "5555555")
  • // Levantará nullPointerException
    juan.padre.nombre()

44
Ejemplo con referencias
  • public class RefDemo public static void
    main(String args) Ficha f1 Ficha
    f2 // 1 f1 new Ficha() // 2
    f2 new Ficha() // 3 f2 f1
    // 4 f1.id // 5 f2.id
    // 6

45
Ejemplo con referencias
  • public class RefDemo2 public static void
    main(String args) Persona juan new
    Persona("Juan","5555555") // 1 Persona maria
    new Persona("María","5555555") // 2
    Persona pedro new Persona("María","5555555",
    juan,maria) // 3 juan maria
    null // 4

46
Modificadores de Acceso
47
Modificadores de acceso atributos y métodos
  • El acceso desde otras clases, puede controlarse
    mediante modificadores en su declaración
  • public Accesibles en cualquier lugar desde
    donde la clase es accesible. Así mismo, son
    heredados por las subclases.
  • private Accesibles únicamente en el interior de
    la clase.
  • protected accesibles en las subclases y en el
    código del mismo paquete.
  • Ninguno (package) Accesible en la clase y el
    paquete.

48
Métodos privados
  • En lugar de construir métodos públicos
    gigantescos e ininteligibles, mejor utilizar
    métodos privados.
  • Otro caso útil class Quicksort implements
    EstrategiaOrdenacion public void
    ordena(Comparable v)
    quicksort(v,0,v.length1) private
    void quicksort(Comparable v,
  • int inf, int sup) ....

49
Métodos para controlar el acceso al estado
  • No es buena práctica de programación disponer
    directamente de atributos de acceso público,
    excepto constantes (final)?
  • Permite cambiar la implementación
  • Mejor métodos que controlen el acceso al estado
    (lectores, escritores setters, getters)
    encapsulamiento, control de acceso,
    mantenibilidad.
  • class Ficha private long id private
    static long idactual 0 public Ficha()
    id idactual public long id()
    return id

50
Partes protegidas (protected)?
  • Se utiliza para aquellos atributos y métodos que
    pueden ser únicamente accedidos a nivel de
    subclase. De esta forma, la parte protegida de
    una clase es aquellas parte que se publica
    únicamente a los implementadores que extienden la
    clase.
  • También desde cualquier clase que pertenece al
    paquete de la clase que lo declara.
  • Como una familia y los de confianza.

51
Protected Caso particular
  • public class A protected int p
  • // presume class B is in a different package from
    Aclass B extends A void myMethod() p
    1 // ok A a new A() a.p 1 // not ok, p
    would have to be
  • //public for this to work.

52
Modificadores de acceso atributos y métodos
53
Herencia
54
Herencia
  • La clase extendida es la superclase. La clase que
    se extiende es la subclase
  • Las subclases heredan características y métodos
    de las superclases (excepto los constructores)?
  • Puede heredarse de solo una clase
  • Se define una jerarquía de objetos
  • Pero pueden implementarse varias interfaces
  • Difiere de C herencia multiple

55
Object
  • Todas las clases implícitamente de la clase
    Object raiz de la jerarquía.
  • Object define un conjunto de métodos
    redefinibles
  • public boolean equals(Object o) Permite definir
    el criterio de igualdad de contenido de una
    determinada clase
  • El operador únicamente chequea la igualdad de
    referencias.
  • En Object, equals se define directamente como la
    identidad de referencias.
  • public String toString() Permite decidir la
    representación externa de un objeto. Por defecto
    es el valor de su referencia, etiquetada con el
    nombre de la clase.

56
Object
  • public class Ficha private long id private
    static long idactual 0 public Ficha()
    id idactual public long id()
    return id
  • public boolean equals(Object o) return (o
    instanceof Ficha) ((Ficha)o).id() id
    public String toString() return
    "Ficha(id"id")"

57
Operadores de Comparación de Objetos
  • String s1 new String("Hola")String s2 new
    String("Hola")if (s1 s2) //
    false...if (s1.equals(s2)) //
    true...s1.equals(s2) equivale a s2.equals(s1)?

58
Heredando clases
  • La herencia de clases se lleva a cabo mediante
    extends
  • Establece una relación de especialización --
    generalización entre clases.
  • La subclase puede introducir nuevos métodos y
    redefinir métodos de la superclase.

59
Heredando clases
  • public class Persona // Hereda de Object
    private String nombre public Persona(String
    nombre) this.nombre nombre public
    String nombre() return nombre public class
    Empleado extends Persona private double
    salario public Empleado(String nombre,double
    salario) super(nombre) this.salario
    salario public double salario() return
    salario

60
Constructores y Subclases
  • public class Persona private String nombre
    public Persona(String nombre) this.nombre
    nombre public String nombre()
  • return nombre public class Anonimo
  • extends Persona private String
    encontradoEn public Anonimo
  • (String encontradoEn) this.encontradoEn
    encontradoEn public String encontradoEn()?
  • return encontradoEn
  • Los constructores de las subclases siempre
    invocan un constructor en la superclase como
    primera acción
  • El estado establecido en las superclases se
    inicializa siempre antes
  • Por defecto, este constructor es el que no tiene
    argumentos.
  • Qué ocurre en el ejemplo?

61
Constructores y Subclases
  • public class Empleado
  • extends Persona private double salario
    public Empleado() this("desconocido",0)
    public Empleado(double salario)
    this("desconocido",salario) public
    Empleado(String nombre,
  • double salario) super(nombre)
    this.salario salario pulic double
    salario()
  • return salario
  • Los constructores no se heredan.
  • La forma de invocar constructores de la
    superclase desde la subclase es a través de
    super(...)?
  • El uso de this(...) como primera sentencia de un
    constructor permite retardar la elección del
    constructor de la superclase que se va a
    ejecutar.

62
Relación "es-un
  • Para saber si la relación de herencia es
    correcta, se plantea la pregunta
  • "la subclase es-una superclase?". La respuesta
    debe ser "sí
  • el Jefe es-un Empleado? Sí
  • la Secretaria es-un Empleado? Sí
  • class Bici
    class Bici
    int numRuedas
    int numRuedas int
    numAsientos int numAsientos
    int velocidadMax
    int velocidadMax
    class Avion
    class Avion extends Bici
    int
    numRuedas int numAlas
    int numAsientos
    int velocidadMax int numAlas
    Avion es-una Bici? NO

63
Relación de Contenido ("tiene-un")?
  • Una clase puede contener referencias de objetos
    de otras clases
  • Se diferencia de la herencia en que es necesario
    instanciarlos por separado
  • Responde afirmativamente a la pregunta
    ltContenedorgt tiene-un ltContenidogt?class Motor
    class Chasis class Coche
    ... ...
    Motor
    m
    Chasis ch
    un Coche tiene-un
    Motor? Síun Coche tiene-un Chasis? Sí

64
Sobreescritura de Métodos
  • Métodos virtuales en C
  • Una subclase puede modificar los métodos que ha
    heredado de la superclase, manteniendo los mismos
    nombre, tipo de retorno y lista de argumentos
  • class Empleado ... int
    calcularVacaciones()...class Jefe extends
    Empleado int numTrabajadores int
    calcularVacaciones()...

65
Polimorfismo en Herencia
  • Una clase sólo tiene una forma, pero una variable
    que hace referencia a la superclase de una
    jerarquía puede tener muchas formas (una por
    cada subclase)Empleado e1 new
    Empleado()Empleado e2 new Jefe()Empleado e3
    new Secretaria()e2.numTrabajadores15 //
    Error((Jefe)e2).numTrabajadores15
  • Pueden utilizarse de dos maneras
  • Parámetros polimórficos
  • Colecciones heterogéneas

66
Parámetros Polimórficos
  • class Mascota ...class Raton extends Mascota
    ...class Gato extends Mascota
    ...class Veterinario void vacunar (
    Mascota m ) ......Veterinario
    doctor new Veterinario()Gato tom new
    Gato()Raton jerry new Raton()doctor.vacunar(
    tom)doctor.vacunar(jerry)...

67
Colecciones Heterogéneas
  • Hasta ahora un array sólo podía contener
    elementos del mismo tipo (colección homogénea)?
  • Utilizando polimorfismo se pueden tener elementos
    de distinto tipo en un array (colección
    heterogénea)?
  • Se crean utilizando arrays definidos con el tipo
    superclaseMascota listaMascotas new
    Mascota5listaMascotas0 new
    Mascota()listaMascotas1 new Gato()
    listaMascotas2 new Raton()
    listaMascotas3 new Raton()
    listaMascotas4 new Gato()

68
Ejemplo de Colecciones Heterogéneas
  • Se consigue tratar a todos los elementos por
    igual, aunque alguno tenga un tratamiento
    especial
  • class Empleado
  • ...int salarioint calcularVacaciones()...
  • class Jefe extends Empleado
  • int numTrabajadoresint calcularVacaciones()..
    .
  • ...
  • Empleado lista
  • new Empleado100lista0 new
    Empleado()lista1 new Empleado()...lista5
    6 new Jefe()...lista99 new
    Empleado()for (int i 0
  • i lt lista.length i)
    System.out.println(
  • listai.
  • calcularVacaciones())

69
De diagramas de clase (UML)a Java
70
(No Transcript)
71
Transformación de asociaciones para una
implementación OO
  • Una asociación bidireccional es implementada,
    normalmente, como un atributo de referencia
    dentro de cada objeto asociado.
  • Si la asociación es unidireccional sólo se
    necesita añadir un atributo de referencia a una
    de las clases.
  • Una asociación también se puede implementar como
    una clase.

72
Transformación de asociaciones para una
implementación OO
  • Los atributos de referencia de la clase uno
    son simplemente referencias a un objeto.
  • Los atributos de referencia de la clase muchos
    necesitan un contenedor de objetos.
  • Una asociación cualificada se puede implementar
    en forma de objeto diccionario.

73
(No Transcript)
74
Transformación de asociaciones para una
implementación OO
1..
1
Edita
Libros
Editorial
class Editorial Libro mislibros
Editorial( )
class Libro Libro( )
75
Transformación de clase asociación para una
implementación OO
0..
Esta autorizado en
0..
Usuario
Estación de trabajo
Autorización
class autorización usuario miusuario
estaciónt miestación autorización( )
class Usuario autorización miautori
Usuario( )
class estaciónt autorización miautori
estaciónt( )
76
Transformación de atributos de enlace para una
implementación OO
  • Asociación uno-a-uno Los atributos de enlace se
    pueden almacenar como atributos de cualquiera de
    los objetos.
  • Asociación uno-a-muchos Los atributos de enlace
    se pueden almacenar como atributos del objeto
    muchos.
  • Asociación muchos-a-muchos Se implementa la
    asociación como una clase.

77
Transformación de agregación para una
implementación OO
  • Se implementa igual que la asociación.

computadora
1
1..
monitor
teclado
class Computadora Monitor mismonitores
Teclado miteclado Computadora( )
class Monitor Monitor( )
class Teclado Teclado( )
78
Transformación de herencia simple para una
implementación OO
Lámpara
Incandescente
Fluorescente
class Fluorescente extends
Lámpara Fluorescente( )
class Incandescente extends Lámpara
Incandescente( )
class Lámpara Lámpara( )
79
Paquetes
80
Paquetes
  • Un paquete es una agrupación de clases
    (librería)?
  • El programador puede crear sus propios paquetes
    con la sentencia package al principio del fichero
    fuente
  • package ltnombre.paquetegt
  • Ejemplo package empresa.finanzas
  • La composición de nombres (separados por puntos)
    está relacionada con la jerarquía de
    directoriosCLASSPATH\empresa\finanzas\
  • Los nombres de los paquetes se suelen escribir en
    minúsculas

81
Ejemplo de Paquetes
  • Fichero fuente Empleado.java
  • package empresa.finanzaspublic class
    Empleado ...
  • La clase Empleado realmente se llama
    empresa.finanzas.Empleado
  • Si no se indica la sentencia package, la clase
    Empleado pertenecerá a un paquete por defecto sin
    nombre

82
Sentencia import
  • La sentencia import indica al compilador dónde
    están ubicadas las clases que estamos utilizando
  • Para importar sólo una clase de un paquete
  • import ltnombre.paquetegt.ltNombreClasegt
  • Para importar todas las clases de un paquete
  • import ltnombre.paquetegt.
  • El compilador añade a todos los ficheros la línea
  • import java.lang.
  • El paquete que contiene las clases fundamentales
    para programar en Java (System, String,
    Object...)?

83
Ejemplo de import
  • import empresa.finanzas.public class Jefe
    extends Empleado String departamento
    Empleado subordinadosSi no se pone el
    import, deberíamos referirnos a Empleado como
    empresa.finanzas.EmpleadoLa clase Jefe pertenece
    al paquete anónimo por defectoString pertenece
    al paquete java.lang

84
Modificadores de acceso atributos y métodos
85
Clases Abstractas
86
Clases Abstractas
  • Una clase abstracta es una clase de la que no se
    pueden crear objetos
  • Representa un concepto que no se puede instanciar
  • Se define anteponiendo el modificador abstract a
    la definición de una claseabstract class
    Mamifero ...class Canino extends Mamifero
    ...class Felino extends Mamifero ...class
    Roedor extends Mamifero ......Mamifero m
    new Mamifero() // Error

87
Métodos Abstractos
  • Un método es abstracto si se declara (dentro de
    una clase abstracta), pero no se implementa
  • abstract class Mamifero ... public abstract
  • void alimentar()
  • Todas las subclases de una clase abstracta deben
    implementar los métodos abstractos que tenga
    definidos, a menos que sea tambien abstracta
  • class Canino extends Mamifero ... public
    void alimentar() ...
  • class Felino extends Mamifero ... public
    void alimentar() ...

88
Ejemplo
  • Jerarquía de figuras geométricas
  • class Punto int x int y
  • int color
  • abstract class Figura
  • Punto ptoOrigen abstract void
  • dibujar()
  • class Rectangulo
  • extends Figura Punto ptoFinal void
    dibujar()?
  • ...
  • class Circulo
  • extends Figura int radio void
    dibujar()?
  • ...

89
Interfaces
90
Interfaces (I)?
  • Una interface es un conjunto de declaraciones de
    métodosDeclaracióninterface
    ltNombreInterfazgt lttipogt ltnombreMétodo1gt (
    ltargsgt ) lttipogt ltnombreMétodo2gt ( ltargsgt
    ) ...
  • Una clase que implemente el código de la interfaz
    debe implementar todos sus métodosclass
    ltNombreClasegt implements ltNombreInterfazgt
    lttipogt ltnombreMétodo1gt ( ltargsgt ) ltcódigogt
    lttipogt ltnombreMétodo2gt ( ltargsgt ) ltcódigogt
    ...

91
Interfaces (II)?
  • Las interfaces sirven para
  • Declarar métodos que serán implementados por una
    o más clases
  • Definir la interfaz de programación de un objeto,
    sin mostrar el cuerpo actual de la clase
  • Cada interfaz debe escribirse en un fichero
    .java con el mismo nombre de la interfaz

92
Equivalencia Interfaz - Clase Abstracta
  • interface Interfaz lttipogt
    ltmétodo1gt() lttipogt ltmétodo2gt()
    ... lttipogt ltmétodoNgt() equivale
    aabstract class Interfaz abstract
    lttipogt ltmétodo1gt() abstract lttipogt
    ltmétodo2gt() ... abstract
    lttipogt ltmétodoNgt()

93
Vector
94
La Clase Vector (I)?
  • La clase Vector (paquete java.util) representa
    una colección heterogénea de objetos (referencias
    a objetos de tipo Object o a cualquiera de sus
    subclases)?
  • El vector al crearse reserva cierta cantidad de
    memoria, aunque sus elementos sólo utilicen una
    parte
  • El tamaño del vector se incrementa por bloques
    cuando se añade y se agota el espacio reservado.
    El tamaño de incremento se indica en el atributo
    capacityIncrement
  • El vector se mantiene compacto en todo momento
  • Cada elemento es accesible a través de un índice,
    pero no con los corchetes,

95
La Clase Vector (II)?
  • Atributos
  • int capacityIncrement incremento en la capacidad
    del vector. Si vale cero, duplica el tamaño
    actual del vector.
  • int elementCount número de elementos válidos del
    vector
  • Object elementData array de objetos donde se
    guardan los elementos
  • Constructores
  • Vector() Crea un vector vacío (capacidad 10,
    incremento 0)?
  • Vector(int initialCapacity) Crea un vector vacío
    con la capacidad dada (incremento 0)?
  • Vector(int initialCapacity, int
    initialIncrement) Crea un vector vacío con la
    capacidad y el incremento dados

96
(No Transcript)
97
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com