Upload
david-henrry-rosas-cruz
View
35
Download
0
Embed Size (px)
Citation preview
Taller de Programación Lenguajes Emergentes
Conceptos de Orientación a Objetos en Java
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)
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
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
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
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
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
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
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
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
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