Semana 6
Semana 6
Especialidad - NAC
Tema: PROGRAMACIÓN ORIENTADA A
OBJETOS
(Jim Ryun)
Contenido
Objetivo
Actualizar e igualar estilos de
programación en el campo del ● Clases, objetos, herencia,
lenguaje orientado a objetos. abstracción
Clases, objetos, herencia,
abstracción
Objetivos
• Definir los conceptos básicos de la
programación basada en objetos
– Clases, objetos
– Miembros (atributos, métodos)
– Abstracción y ocultación de información
• Describir relación entre objeto y clase
• Crear un objeto sencillo y modelar
– sus características (por medio de atributos)
– su comportamiento (por medio de métodos) 5
Temas
● Clases y objetos
● Encapsulación de objetos
○ Abstracción funcional
○ Abstracción de datos
● Miembros de una clase (atributos y métodos)
● Paso de mensajes
● Sobrecarga de métodos
● Constructores
● Modificadores y acceso
6
¿Qué es un objeto?
8
¿Qué es un objeto?
Constructor
Comportamiento
10
Ejercicio 1
código
Encapsulación de objetos
Normalmente:
● Los métodos son públicos
● Los atributos son privados
● Puede haber métodos privados 13
● Es peligroso tener atributos públicos
Definición de objetos
Interfaz
Implementación
Pública
Arrancar
• Un objeto envía un mensaje a otro
– Esto lo hace mediante una llamada a sus atributos o métodos
• Los mensajes son tratados por la interfaz pública
del objeto que los recibe
– Eso quiere decir que sólo podemos hacer llamadas a aquellos atributos o métodos de
otro objeto que sean públicos o accesibles desde el objeto que hace la llamada
• El objeto receptor reaccionará
– Cambiando su estado: es decir modificando sus atributos
– Enviando otros mensajes : es decir llamando a otros atributos o métodos del
mismo objeto (públicos o privados) o de otros objetos (públicos o accesibles
desde ese objeto) 16
Ejemplo
Clase Rueda
Paso de
mensajes
17
Clasificación de objetos
20
Sobrecarga (Overloading)
¿Para qué sirve?
Clase Objetos
Sobrecarga
21
Ejercicio 2
22
Constructores
• Cuando se crea un objeto sus miembros se inicializan con un
método constructor
• Los constructores:
– llevan el mismo nombre que la clase
– No tienen tipo de resultado (ni siquiera void)
• Conviene que haya al menos 1 constructor
• Pueden existir varios que se distinguirán por los parámetros que aceptan
(sobrecarga)
• Si no existen se crea un constructor por defecto sin parámetros
que inicializa las variables a su valor por defecto.
• Si la clase tiene algún constructor, el constructor por defecto deja de existir. En ese
caso, si queremos que haya un constructor sin parámetros tendremos que 23
declararlo explícitamente.
Constructores
Sobrecarga de constructores
24
Ejercicio 3
25
Modificadores y acceso
Static (miembros estáticos)
• Modificador static
• Sólo existen una vez por clase, independientemente del
número de instancias (objetos) de la clase que hayamos
creado y aunque no exista ninguna.
• El método o el atributo se comportan siempre de la
misma manera
• Se puede acceder a los miembros estáticos
utilizando el nombre de la clase.
• Un método estático no puede acceder a miembros
no estáticos directamente, tiene que crear primero un
objeto 26
Modificadores y acceso
Static (miembros estáticos)
Atributo estático
Otros ejemplos
Atributo estático
=> -231
… => 231-1
27
Modificadores y acceso
Static. Algunas reglas
– Los miembros estáticos se invocan con:
NombreClase.metodoEstatico();
NombreClase.atributoEstatico;
– Para acceder a los miembros no estáticos necesitamos disponer de una
instancia (objeto) de la clase
NombreClase nombreObjeto = new NombreClase();
– Los miembros no estáticos se invocan con:
nombreObjeto.metodoNormal();
nombreObjeto.atributoNormal;
– Cuando invocación (llamada) a un miembro estático de la clase se realiza
dentro de la propia clase se puede omitir el nombre de la misma. Es decir
podemos escribir:
metodoEstatico(); en lugar NombreClase.metodoEstatico();
atributoEstatico; de: NombreClase.atributoEstatico;
28
Acceso
Métodos get() y set()
• Los atributos de una clase son generalmente privados para
evitar que puedan ser accesibles / modificables desde
cualquier otra clase.
• A veces nos interesa que algunas clases determinadas sí
puedan acceder a los atributos.
• Uso de métodos get() y set()
29
Ejercicio 4
30
MODIFICADORES clase metodo atributo
a public Accesible desde cualquier otra clase
c
(friendly) Accesible sólo desde clases de su propio paquete
c
private Accesibles sólo dentro de la clase
e
s
s
otro
o copyrigh t Java:
31
Paquetes
• Un paquete agrupa clases (e interfaces)
• Las jerarquías de un paquete se corresponden con las
jerarquías de directorios
• Para referirse a miembros y clases de un paquete se utiliza la
notación de separarlos por puntos.
– Ej: Cuando importamos paquetes de clases matemáticas
import java.math.BigDecimal;
– La clase BigDecimal está en el directorio java/math dentro del JDK
– No es necesario importar todas las clases: paquete java/lang
– String
– Integer
– NullPointerException 32
– ArrayIndexOutOfBoundsException
Paquetes
import MiPropioPaquete.Clase1
33
¿Preguntas?
Gracias