18448198 programacion-orientada-a-objetos

11
Taller de Programación Lenguajes Emergentes Conceptos de Orientación a Objetos en Java

Transcript of 18448198 programacion-orientada-a-objetos

Page 1: 18448198 programacion-orientada-a-objetos

Taller de Programación Lenguajes Emergentes

Conceptos de Orientación a Objetos en Java

Page 2: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

2

Agenda

• Programación Orientada a Objetos– Clases y Objetos

• Tipos de métodos• Herencia• Herencia múltiple (interfaces)

Page 3: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

3

Programación Orientada a Objetos (OOP)• En OOP el principio básico es el

encapsulamiento– Separa el qué (especificación funcional, pública)– Del cómo (implementación, privada)

• OOP también engloba conceptos como– Código genérico– Herencia– Polimorfismo

• En Java un objeto es una instancia de una clase

• Un objeto combina datos y operaciones

Page 4: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

4

Tipos de métodos

• Constructores– Permiten inicializar un objeto– Puede haber varios constructores con distinto

número de parámetros– Si no hay constructor definido, los campos del

objeto se inicializan nulos– El constructor debe tener el mismo nombre de

la clase

Page 5: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

5

Tipos de métodos

• Mutators y Accessors– Los campos de las clases son típicamente privados– Para mirar o cambiar su valor se debe hacer por medio

de métodos que aíslan los detalles de la implementación

• toString()– La clase Object tiene un método llamado toString() que

transforma el Objeto en un formato imprimible, este es llamado automáticamente cuando se envía el objeto a alguna salida (ej.: System.out.println())

• equals()– La clase Object, también tiene un método llamado

equals() que se utiliza para ver si dos objetos tienen el mismo valor

Page 6: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

6

Tipos de métodos

• this– La referencia this identifica al objeto actual– Permite acceder los campos propios (ej.:

this.valor), desde dentro de la clase– Permite comparar si el objeto actual es el

mismo que otro (si son la misma referencia)– Puede usarse como constructor

Page 7: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

7

Tipos de métodos

• El modificador static– En Java se pueden declarar campos, métodos, clases y

bloques de código con el modificador static– Una clase static es un clase interna de nivel superior,

visible y accesable por todos los objetos de la clase– Un método static está asociado a una clase (no a un

objeto), esto quiere decir que no es necesario “instanciar” la clase para utilizarlo (ej.: Integer.parseInt(“1”));

– Un campo static funciona de modo similar a un método– Un bloque static es ejecutado cuando la clase es

cargada o instanciada

Page 8: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

8

Tipos de métodos

• Packages– Agrupan clases– Cada clase debe ser precedida por la

declaración del package– Si a un campo o método no se le antepone el

modificador public o private es visible sólo en el package

Page 9: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

9

Herencia

• Permite reutilizar el trabajo hecho• Se basa en la relación es-un(a)

– Ejemplos• Círculo es-una Figura• Auto es-un Vehículo

• Clase base– La clase de la cual se derivan otras

• Clase derivada– Hereda todas las propiedades de la clase base.

Puede agregar campos y métodos, o redefinir métodos

Page 10: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

10

Herencia

• Clase derivada– Los campos adicionales generalmente son

privados– Los métodos de la clase base que no se

redefinen en la clase derivada se heredan sin cambio, excepto por el constructor

– Los métodos que se redefinen tienen prioridad– Se pueden agregar nuevos métodos– Los métodos públicos se pueden redefinir

como privados

Page 11: 18448198 programacion-orientada-a-objetos

10 de Agosto de 2009 Taller de Programación Lenguajes Emergentes

11

Herencia múltiple

• En algunos lenguajes, una clase puede heredar de más de una clase base. En Java esto no se permite, lo cual evita los conflictos que se podrían producir al heredarse definiciones incompatibles de métodos y variables.

• Interfaz– Una interfaz es un mecanismo que permite lograr

algunos de los efectos de la herencia múltiple, sin sus problemas

– Una interfaz es una clase que sólo tiene métodos públicos abstractos y campos públicos estáticos finales

– Se dice que una clase implementa a la interfaz si provee definiciones para todos los métodos abstractos de la interfaz

– Una clase puede extender sólo a una clase base, pero puede implementar muchas interfaces