Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 35

Fundamentos de la

Especialidad - NAC
Tema: PROGRAMACIÓN ORIENTADA A
OBJETOS

Autor : Henry Recalde


 La motivación es lo que te pone en marcha, el
hábito es lo que hace que sigas 

(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?

• Los objetos son representaciones (simples/complejas)


(reales/imaginarias) de cosas: reloj, avión, coche
• No todo puede ser considerado como un objeto,
algunas cosas son simplemente características o
atributos de los objetos: color, velocidad, nombre
7
¿Qué es un objeto?

• Abstracción funcional • Abstracción de datos


– Hay cosas que sabemos – Un coche tiene además
que los coches hacen ciertos atributos:
pero no cómo lo hacen: • color
• avanzar • velocidad
• parar • tamaño
• girar a la derecha • etc.
• girar a la izquierda

8
¿Qué es un objeto?

• Es una forma de agrupar un conjunto de


datos (estado) y de funcionalidad
(compor tamiento) en un mismo bloque
de código que luego puede ser
referenciado desde otras partes de un
programa
• La clase a la que pertenece el objeto
puede considerarse como un nuevo
tipo de datos 9
Ejemplo
Clase Objetos
Estado

Constructor

Comportamiento

• this referencia al objeto de la clase actual

10
Ejercicio 1

• Implementa la clase Bicicleta, que tiene tres atributos,


velocidadActual, platoActual y piñonActual, de tipo
entero y cuatro métodos acelerar(),frenar(),
cambiarPlato(int plato), y cambiarPiñon(int
piñon), donde el primero dobla la velocidad actual, el segundo
reduce a la mitad la velocidad actual, y el tercero y cuarto ajustan el
plato y el piñón actual respectivamente según los parámetros recibidos.
La clase debe tener además un constructor que inicialice todos los
atributos.

• Crea dos objetos de la clase bicicleta: miBicicleta y


11
tuBicicleta
Encapsulación de objetos
• Encapsulación: describe la vinculación de un
comportamiento y un estado a un objeto en particular.
• Ocultación de información: Permite definir qué partes 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 12

código
Encapsulación de objetos

MIEMBROS DE UNA CLASE


Los objetos encapsulan atributos permitiendo acceso a ellos únicamente
a través de los métodos
► Atributos (Variables): Contenedores de valores
► Métodos: Contenedores de funciones
Un objeto tiene
► Estado: representado por el contenido de sus atributos
► Comportamiento: definido por sus métodos

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

Miembros públicos Miembros privados


• los miembros públicos • describen la implementación de
describen qué pueden
hacer los objetos de esa
cómo lo hacen.
– Ejemplo: el objeto contacto
clase interacciona con el circuito eléctrico
del vehículo, este con el motor, etc.
– Qué pueden hacer
– En sistemas orientados a objetos
puros todo el estado es privado
los objetos (métodos)
y sólo se puede cambiar a través
– Qué son los objetos del interfaz público.
(su abstracción) – Ej: El método público frenar
puede cambiar el valor del
atributo privado velocidad. 14
Interacciones entre objetos

• El modelado de objetos modela:


– Los objetos y
– Sus interrelaciones
• Para realizar su tarea el objeto puede
delegar trabajos en otro que puede ser
parte de él mismo o de cualquier otro
objeto del sistema.
• Los objetos interaccionan entre sí
enviándose mensajes 15
Paso de Mensajes

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 Coche Clase Motor

Clase Rueda
Paso de
mensajes

17
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)
• “Mi coche” es un objeto, es decir una
instancia particular de la clase coche
• La clasificación depende del problema a
resolver 18
Objetos vs. Clases
Una clase es una entidad abstracta
• Es un tipo de clasificación de datos
• Define el comportamiento y atributos de un grupo de
estructura y comportamiento similar
Clase Coche Nombre de la clase
Métodos (funciones)
Métodos: arrancar, avanzar, parar, ...
Atributos (datos)
Atributos: color, velocidad, etc.
Un objeto es una instancia de una clase
• Un objeto se distingue de otros miembros de la clase por sus
atributos
Nombre: Ferrari
Objeto Ferrari Métodos: arrancar, avanzar, parar, ...
Perteneciente a la Atributos: color = “rojo”;
clase coche velocidad 300Km/h
• Una clase se declara, un objeto además se crea
19
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.

20
Sobrecarga (Overloading)
¿Para qué sirve?
Clase Objetos

Sobrecarga

Son métodos distintos porque


aunque tengan el mismo nombre
tienen distintos argumentos. Tienen
distinta funcionalidad

21
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.

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

Array de objetos de la clase Coche

Sobrecarga de constructores

24
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.

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

Método estático: Tiene acceso a atributos estáticos No


necesitamos crear instancias
http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html

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

• Sobre la clase Bicicleta, implementa los


métodos get() y set()necesarios para poder
acceder y modificar todos los atributos.

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:

static mcfp@it .uc3m.es


Clase de nivel máximo.
Es el mismo para todos Es la misma para todos los
Se aplica a clases los objetos de la clase. objetos de la clase.
internas Se utiliza:
Se utiliza: NombreClase.metodo();
NombreClase.atributo;

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

• ¿Cómo crear mis propios paquetes?


– Almaceno mis clases en un directorio con el nombre del paquete
– Pongo al principio de todas las clases que
pertenezcan al paquete la instrucción
package MiPropioPaquete;

– Si quiero importar las clases de ese paquete desde otras


clases y/o proyectos, pongo al principio de cada clase

import MiPropioPaquete.Clase1

33
¿Preguntas?
Gracias

Responsabilidad con pensamiento positivo

También podría gustarte