¿Qué Es Un Objeto
¿Qué Es Un Objeto
¿Qué es un objeto?
• Abstracción funcional
• Abstraccióndedatos
– Un coche tiene además ciertos atributos:
• color
• velocidad • tamaño
• etc.
¿Qué es un objeto?
• Es una forma de agrupar un conjunto de datos
(estado) y de funcionalidad
(comportamiento) en un mismo bloque de
código que luego puede ser referenciado desde otras
partes de un programa
Ejemplo
Clase
Objetos
Estado Constructor
Comportamiento
• Encapsulación:describelavinculacióndeun
comportamiento y un estado a un objeto en particular.
•
Ocultacióndeinformación:Permitedefinirquépar
tes del objeto son visibles (el interfaz público) que
partes son ocultas (privadas)
•La llave de contacto es un interfaz público del
mecanismo de arranque de un coche
•La implementación de cómo arranca realmente es
privada y sobre ella sólo puede actuar la llave de
contacto
El objeto puede cambiar y su interfaz pública ser
compatible con el original: esto facilita reutilización de
código
11
Encapsulación de objetos
MIEMBROS DE UNA CLASE
Los objetos encapsulan atributos permitiendo
acceso a ellos únicamente a través de los
métodos
Un objeto tiene:
Normalmente:
► Los métodos son públicos
► Los atributos son privados
► Puede haber métodos privados
► Es peligroso tener atributos públicos
Definición de objetos
Miembros públicos
• los miembros públicos
Miembros privados
describen la implementación de cómo lo hacen.
– Ejemplo: el objeto contacto interacciona con el
circuito eléctrico del vehículo, este con el motor, etc.
– Ensistemasorientadosa objetos puros todo el
estado es privado y sólo se puede cambiar a través
del interfaz público.
– Ej:Elmétodopúblicofrenar puede cambiar el valor
del atributo privado velocidad.
Paso de Mensajes
Arrancar
Implementación
• 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
Interfaz Pública
Clase Coche
Clase Motor
Ejemplo
Paso de mensajes
Clase Rueda
Clasificación de objetos
• Clase:Conjunto de objetos con estados
y comportamientos similares
– Podemos referirnos a la clase “Coche”
(cualquier instancia de la clasificación coche)
Nombre: Ferrari
Métodos: arrancar, avanzar, parar, ... Atributos: color =
“rojo”;
velocidad 300Km/h
18
Sobrecarga (Overloading)
¿Qué es?
Podemos definir una clase con dos
métodos con el mismo nombre si los
argumentos son distintos.
Se utiliza mucho para los constructores.
Sabemos cual de los dos métodos
tenemos que ejecutar por los parámetros
que le pasamos cuando le llamamos.
Clase
Objetos
Sobrecarga (Overloading)
¿Para qué sirve?
Sobrecarga
Son métodos distintos porque aunque tengan el mismo nombre
tienen distin tos a r g u men tos. Tienen distinta funcionalidad
Ejercicio 2
• Sobre la clase Bicicleta, implementa los
método sobrecargados cambiarPlato(), y
cambiarPiñon(), que no reciben
argumentos y que cambian el plato actual y el
piñón actual a un valor por defecto, en
concreto, 1.
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 declararlo
explícitamente.
Constructores
Array de objetos de la clase Coche
Sobrecarga de constructores
Ejercicio 3
• Sobre la clase Bicicleta,
implementa un constructor adicional
que no recibe parámetros y que
inicializa la velocidad actual a 0, y el
plato actual y el piñón actual a 1.
24
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
25
Modificadores y acceso
Static (miembros estáticos)
Atributo estático
...
Otros ejemplos
Atributo estático
http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html
Modificadores y acceso
Static. Algunas reglas
– Losmiembrosestáticosseinvocancon:
–
Paraaccederalosmiembrosnoestáticosnecesit
amos disponer de una instancia (objeto) de la
clase
NombreClase nombreObjeto = new
NombreClase();
– Losmiembrosnoestáticosseinvocancon:
–
Cuandoinvocación(llamada)aunmiembroestát
icodela clase se realiza dentro de la propia
clase se puede omitir el nombre de la misma.
Es decir podemos escribir:
en lugar de:
NombreClase.metodoEstatico();
NombreClase.atributoEstatico;
nombreObjeto.metodoNormal();
nombreObjeto.atributoNormal;
metodoEstatico(); atributoEstatico;
NombreClase.metodoEstatico();
NombreClase.atributoEstatico;
27
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()
28
Ejercicio 4
• Sobre la clase Bicicleta,
implementa los métodosget()
yset()necesariosparapoder acceder y
modificar todos los atributos.
29
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;