SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
Programación Orientada a Objetos
Departamento de Lenguajes y
Ciencias de la Computación
E.T.S.I. Telecomunicación
Universidad de Málaga

http://www.lcc.uma.es/
Contenido
• Introducción histórica
• Conceptos básicos de la Programación O. O.
• Conceptos avanzados de la Programación O.O.

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

2
Introducción Histórica

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

3
A
B
S
T
R
A
C
C
I
Ó
N
O
P
E
R
A
C
I
O
N
A
L

Evolución de los Lenguajes de
Programación
Instrucciones
Máquina
Expresiones,
Funciones
Estr. Control,
Subprogramas
Ocultamiento
Información,
Interfaces
Métodos,
Mensajes

Departamento de Lenguajes y
Ciencias de la Computación

Lenguajes
Máquina /
Ensamblador

Direcciones de
Memoria,
Registros

FORTRAN

Variables de
Tipos Predef.,
Arrays

PASCAL

Definición de
Tipos,
Punteros

MODULA-2
ADA
Lenguajes
Orientados a
Objetos

Tipos
Abstractos de
Datos

A
B
S
T
R
A
C
C
I
Ó
N
D
E
D
A
T
O
S

Clases,
Objetos
Programación Orientada a Objetos

4
Evolución de los Lenguajes
Orientados a Objetos
•
•
•
•
•
•

Simula (Nygaard, 60s)
Smalltalk (Xerox PARC, 70s)
Eiffel (Meyer, 80s)
C++ (Stroustrup, 80s)
Java (Sun Microsystems, 90s)
C# (Microsoft, 00s)

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

5
Conceptos Básicos de la
Programación O.O.

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

6
Clases y Objetos
• CLASE = SUBPROGRAMAS + VARIABLES
Criterio de Modularización
Estado + Comportamiento
Entidad estática
Clase ≈ Tipo

• OBJETO = Instancia de una CLASE
Entidad dinámica
Cada objeto tiene su propio estado
Objetos de una misma clase comparten un comportamiento
Objeto ≈ Variable

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

7
VEHÍCULO
ANIMAL

PUNTO
(1,3)
FIGURA

(2,2)

(5,2.5)

(2,1)
Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

8
¿Qué es una Clase?
Caja negra que oculta en su implementación:
Atributos: variables que codifican el estado de una
instancia de la clase (objeto)
Métodos: subprogramas que describen el
comportamiento de un objeto de la clase

Una clase es semejante a un tipo:
Atributos: estructura de datos
Métodos: operaciones sobre el tipo
Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

9
¿Qué es un Objeto?
Instancia de una clase:
Cada objeto de una clase tiene su propia copia de los
atributos (estado propio)
Todos los objetos de una clase comparten los mismos
métodos (comportamiento común)

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

10
Implementador vs. Usuario
• Las clases son cajas negras con
Interfaz (uso)
Implementación (funcionamiento)

• El implementador se encarga de definir el
interfaz y de desarrollar la implementación
• El usuario empleará los objetos de la clase
exclusivamente a través del interfaz

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

11
Un ejemplo: la clase Punto
Punto
R x,y;

Clase

Objetos

Atributos = Estado Propio

trasladar(a,b)
distancia(pto)

(Punto)
x= 2
y= 3

Departamento de Lenguajes y
Ciencias de la Computación

Métodos = Comportamiento Común

(Punto)
x= -1
y= 4
(Punto)
x= 5
y= 7
Programación Orientada a Objetos

12
Definiendo la clase Punto
INTERFAZ CLASE Punto
MÉTODOS
cambiar_x(E R nx);
Comportamiento
cambiar_y(E R ny);
trasladar(E R dx,dy);
R distancia(E Punto p);
FIN Punto;

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

13
Definición de Métodos
• El objeto afectado no aparece como argumento
del método:
trasladar(E R dx,dy);

• En realidad, el objeto afectado es un argumento
de entrada/salida implícito llamado éste:
ALGORITMO trasladar(ES Punto éste,E R dx,dy);

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

14
Implementando la clase Punto (I)
IMPLEMENTACIÓN CLASE Punto
ATRIBUTOS
R x,y;
Estado

acceso al
argumento
implícito

MÉTODOS
cambiar_x(E R nx)
INICIO
x = nx;
// x == éste.x
FIN
cambiar_y(E R ny)
INICIO
y = ny;
// y == éste.y
FIN

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

15
Implementando la clase Punto (II)
trasladar(E R dx,dy)
INICIO
x = x+dx;
y = y+dy;
FIN
R distancia(E Punto p)
INICIO
DEVOLVER sqrt(pow(x-p.x,2) +
pow(y-p.y,2))
FIN
FIN Punto;
Departamento de Lenguajes y
Ciencias de la Computación

acceso total a otros objetos
de la misma clase
Programación Orientada a Objetos

16
Usando la clase Punto
• El usuario declara objetos como cualquier
otra variable:
Punto p1, p2;

• Como usuario, no se puede acceder a la
parte privada de los objetos:
p1.X = 2;

Error

• El usuario sólo puede manipular un Punto
invocando a los métodos del interfaz de la
clase Punto (comportamiento)
Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

17
Invocación de Métodos
• Los métodos se invocan mediante paso de
mensajes:
P.trasladar(4,-1) = trasladar(P,4,-1)

• El objeto P es el receptor del mensaje:
trasladar(4,-1)

Departamento de Lenguajes y
Ciencias de la Computación

(Punto)
x= 5
x=1
y= 2
y=3

P

Programación Orientada a Objetos

18
Relación de Composición
• la composición permite expresar una relación de
tipo “está compuesto por”
• Por ejemplo, un segmento está compuesto por dos
puntos: origen y extremo
Punto

Segmento

R x,y;

Punto Orig, Ext;

trasladar(a,b)
distancia(pto)

trasladar(a,b)
longitud()

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

19
Implementando la Composición (I)

INTERFAZ CLASE Segmento
MÉTODOS
trasladar(E R dx,dy);
R longitud();
FIN Segmento;

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

20
Implementando la Composición (II)
IMPLEMENTACIÓN CLASE Segmento
ATRIBUTOS
Punto Orig, Dest;
MÉTODOS
trasladar(E R dx,dy)
INICIO
Orig.trasladar(dx,dy);
Dest.trasladar(dx,dy);
FIN
R longitud();
INICIO
DEVOLVER Orig.distancia(Dest);
FIN
FIN Segmento;
Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

21
Conceptos Avanzados de la
Programación O.O.

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

22
Herencia
FiguraCerrada

• Posibilidad de reutilizar código
• Algo más que:
incluir ficheros, o
importar módulos

Elipse

Polígono

• Distintos tipos de herencia:
simple / múltiple
Pentágono
estricta
selectiva
de implementación/de interfaz

Cuadrilátero

Rectángulo

Departamento de Lenguajes y
Ciencias de la Computación

Círculo

Rombo

Programación Orientada a Objetos

23
Herencia
Padres / Ascendientes Una clase heredera proporciona los
•
atributos y métodos de la clase heredada,
Punto
y puede añadir otros nuevos.
• La clase heredera puede modificar el
comportamiento heredado (por ejemplo,
redefiniendo algún método heredado) .
• La herencia es transitiva.
Partícula
• Los objetos de una clase que hereda de
otra pueden verse como objetos de esta
Hijos / Descendientes última.
Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

24
Herencia Múltiple
• Existen lenguajes con herencia múltiple, lo que
permite que una clase reutilice la funcionalidad
ofrecida por varias clases.
Pensionista

TrabajadorActivo

MedioPensionista

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

25
Herencia y Redefinición
• En la herencia las clases herederas pueden
heredar un método o servicio, y luego redefinirlo,
modificando su implementación.

Polígono

Suma de distancias entre
puntos consecutivos

Cuadrado
R lado;

R perímetro( );

Departamento de Lenguajes y
Ciencias de la Computación

Resultado = 4*lado

R perimetro( );

Programación Orientada a Objetos

26
Polimorfismo sobre los datos
• Una variable puede referirse a objetos de clases distintas
de la que se ha declarado.
• La restricción dada por la herencia, permite construir
estructuras con elementos de naturaleza distinta, pero
con un comportamiento común:

Departamento de Lenguajes y
Ciencias de la Computación

Programación Orientada a Objetos

27

Más contenido relacionado

La actualidad más candente

La actualidad más candente (12)

lenguaje de Programacion
lenguaje de Programacionlenguaje de Programacion
lenguaje de Programacion
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Actividad N° 2 - Unidad 4
Actividad N° 2 - Unidad 4 Actividad N° 2 - Unidad 4
Actividad N° 2 - Unidad 4
 
Avanse de proyecto de calculo
Avanse de proyecto de calculoAvanse de proyecto de calculo
Avanse de proyecto de calculo
 
Clase # 1 fundamentos de programación
Clase # 1   fundamentos de programaciónClase # 1   fundamentos de programación
Clase # 1 fundamentos de programación
 
Clasificacion
ClasificacionClasificacion
Clasificacion
 
Modelado con clases instancias
Modelado con clases instanciasModelado con clases instancias
Modelado con clases instancias
 
Java
JavaJava
Java
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programación en Lenguajes Estructurados 2012. Parte II
Programación en Lenguajes Estructurados 2012. Parte IIProgramación en Lenguajes Estructurados 2012. Parte II
Programación en Lenguajes Estructurados 2012. Parte II
 
Sesion 1
Sesion 1Sesion 1
Sesion 1
 

Destacado

Librería String, Math de Java (NetBeans)
Librería String, Math de Java (NetBeans)Librería String, Math de Java (NetBeans)
Librería String, Math de Java (NetBeans)Daniel Gómez
 
Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6Andres Garcia Garcia
 
Introducción a la programación orientada objetos
Introducción a la programación orientada objetosIntroducción a la programación orientada objetos
Introducción a la programación orientada objetosRenny Batista
 
Ecuaciones Cuadraticas
Ecuaciones CuadraticasEcuaciones Cuadraticas
Ecuaciones Cuadraticaseccutpl
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Renny Batista
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y ObjetosKudos S.A.S
 
Variables y metodos de instancia
Variables y metodos de instanciaVariables y metodos de instancia
Variables y metodos de instanciaRobert Wolf
 
2 1 1 Definiendo Clases
2 1 1 Definiendo Clases2 1 1 Definiendo Clases
2 1 1 Definiendo ClasesUVM
 
Tm04 modelo de clases
Tm04 modelo de clasesTm04 modelo de clases
Tm04 modelo de clasesJulio Pari
 
Como programar java, 9na edicion deitel
Como programar java, 9na edicion   deitelComo programar java, 9na edicion   deitel
Como programar java, 9na edicion deitelSantos Isaias Itc
 

Destacado (18)

Librería String, Math de Java (NetBeans)
Librería String, Math de Java (NetBeans)Librería String, Math de Java (NetBeans)
Librería String, Math de Java (NetBeans)
 
Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6
 
MéTodos En Java
MéTodos En JavaMéTodos En Java
MéTodos En Java
 
Introducción a la programación orientada objetos
Introducción a la programación orientada objetosIntroducción a la programación orientada objetos
Introducción a la programación orientada objetos
 
Ecuaciones Cuadraticas
Ecuaciones CuadraticasEcuaciones Cuadraticas
Ecuaciones Cuadraticas
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
Paradigma orientado a objetos
Paradigma orientado a objetosParadigma orientado a objetos
Paradigma orientado a objetos
 
METODOS
METODOSMETODOS
METODOS
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
 
Taller 1 3
Taller 1 3Taller 1 3
Taller 1 3
 
Variables y metodos de instancia
Variables y metodos de instanciaVariables y metodos de instancia
Variables y metodos de instancia
 
Clase math.java
Clase math.javaClase math.java
Clase math.java
 
2 1 1 Definiendo Clases
2 1 1 Definiendo Clases2 1 1 Definiendo Clases
2 1 1 Definiendo Clases
 
Java
JavaJava
Java
 
Tm04 modelo de clases
Tm04 modelo de clasesTm04 modelo de clases
Tm04 modelo de clases
 
POO
POOPOO
POO
 
Como programar java, 9na edicion deitel
Como programar java, 9na edicion   deitelComo programar java, 9na edicion   deitel
Como programar java, 9na edicion deitel
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
 

Similar a Transp objetos

Tema 1 2_poo
Tema 1 2_pooTema 1 2_poo
Tema 1 2_poodemon_628
 
Programación Orientada a Objetos Programación Orientada a Objetos
Programación Orientada a Objetos Programación Orientada a ObjetosProgramación Orientada a Objetos Programación Orientada a Objetos
Programación Orientada a Objetos Programación Orientada a Objetosanytrix
 
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...Jose Emilio Labra Gayo
 
Silabo fundamentos programación
Silabo fundamentos programaciónSilabo fundamentos programación
Silabo fundamentos programaciónFernando Solis
 
Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++Christian Castro
 
planificacion-general-programacion-ii-visual-basicnet.docx
planificacion-general-programacion-ii-visual-basicnet.docxplanificacion-general-programacion-ii-visual-basicnet.docx
planificacion-general-programacion-ii-visual-basicnet.docxManolinGarcia1
 
Silabo fund programación abril agosto2015
Silabo fund programación abril agosto2015Silabo fund programación abril agosto2015
Silabo fund programación abril agosto2015Fernando Solis
 
Aprender a-programar-con-python
Aprender a-programar-con-pythonAprender a-programar-con-python
Aprender a-programar-con-pythonfer zepeda
 
TEMA A TRATARSE: Fundamento de programación
TEMA A TRATARSE: Fundamento de programaciónTEMA A TRATARSE: Fundamento de programación
TEMA A TRATARSE: Fundamento de programaciónNOE NUÑEZ CONGACHE
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no ProgramadoresJavier_J
 
Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'AulaDeVideojuegos
 
Proyecto docente para habilitacion LSI
Proyecto docente para habilitacion LSIProyecto docente para habilitacion LSI
Proyecto docente para habilitacion LSIOscar Ardaiz
 

Similar a Transp objetos (20)

Transp objetos
Transp objetosTransp objetos
Transp objetos
 
Transp objetos
Transp objetosTransp objetos
Transp objetos
 
Transp objetos
Transp objetosTransp objetos
Transp objetos
 
Tema 1 2_poo
Tema 1 2_pooTema 1 2_poo
Tema 1 2_poo
 
Poo
PooPoo
Poo
 
Programación Orientada a Objetos Programación Orientada a Objetos
Programación Orientada a Objetos Programación Orientada a ObjetosProgramación Orientada a Objetos Programación Orientada a Objetos
Programación Orientada a Objetos Programación Orientada a Objetos
 
1poo
1poo1poo
1poo
 
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
 
Silabo fundamentos programación
Silabo fundamentos programaciónSilabo fundamentos programación
Silabo fundamentos programación
 
Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1
 
Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++
 
Programación
ProgramaciónProgramación
Programación
 
planificacion-general-programacion-ii-visual-basicnet.docx
planificacion-general-programacion-ii-visual-basicnet.docxplanificacion-general-programacion-ii-visual-basicnet.docx
planificacion-general-programacion-ii-visual-basicnet.docx
 
Informática 2
Informática 2Informática 2
Informática 2
 
Silabo fund programación abril agosto2015
Silabo fund programación abril agosto2015Silabo fund programación abril agosto2015
Silabo fund programación abril agosto2015
 
Aprender a-programar-con-python
Aprender a-programar-con-pythonAprender a-programar-con-python
Aprender a-programar-con-python
 
TEMA A TRATARSE: Fundamento de programación
TEMA A TRATARSE: Fundamento de programaciónTEMA A TRATARSE: Fundamento de programación
TEMA A TRATARSE: Fundamento de programación
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no Programadores
 
Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'Primera Interaula, 'Programación para no programadores'
Primera Interaula, 'Programación para no programadores'
 
Proyecto docente para habilitacion LSI
Proyecto docente para habilitacion LSIProyecto docente para habilitacion LSI
Proyecto docente para habilitacion LSI
 

Transp objetos

  • 1. Programación Orientada a Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S.I. Telecomunicación Universidad de Málaga http://www.lcc.uma.es/
  • 2. Contenido • Introducción histórica • Conceptos básicos de la Programación O. O. • Conceptos avanzados de la Programación O.O. Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 2
  • 3. Introducción Histórica Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 3
  • 4. A B S T R A C C I Ó N O P E R A C I O N A L Evolución de los Lenguajes de Programación Instrucciones Máquina Expresiones, Funciones Estr. Control, Subprogramas Ocultamiento Información, Interfaces Métodos, Mensajes Departamento de Lenguajes y Ciencias de la Computación Lenguajes Máquina / Ensamblador Direcciones de Memoria, Registros FORTRAN Variables de Tipos Predef., Arrays PASCAL Definición de Tipos, Punteros MODULA-2 ADA Lenguajes Orientados a Objetos Tipos Abstractos de Datos A B S T R A C C I Ó N D E D A T O S Clases, Objetos Programación Orientada a Objetos 4
  • 5. Evolución de los Lenguajes Orientados a Objetos • • • • • • Simula (Nygaard, 60s) Smalltalk (Xerox PARC, 70s) Eiffel (Meyer, 80s) C++ (Stroustrup, 80s) Java (Sun Microsystems, 90s) C# (Microsoft, 00s) Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 5
  • 6. Conceptos Básicos de la Programación O.O. Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 6
  • 7. Clases y Objetos • CLASE = SUBPROGRAMAS + VARIABLES Criterio de Modularización Estado + Comportamiento Entidad estática Clase ≈ Tipo • OBJETO = Instancia de una CLASE Entidad dinámica Cada objeto tiene su propio estado Objetos de una misma clase comparten un comportamiento Objeto ≈ Variable Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 7
  • 8. VEHÍCULO ANIMAL PUNTO (1,3) FIGURA (2,2) (5,2.5) (2,1) Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 8
  • 9. ¿Qué es una Clase? Caja negra que oculta en su implementación: Atributos: variables que codifican el estado de una instancia de la clase (objeto) Métodos: subprogramas que describen el comportamiento de un objeto de la clase Una clase es semejante a un tipo: Atributos: estructura de datos Métodos: operaciones sobre el tipo Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 9
  • 10. ¿Qué es un Objeto? Instancia de una clase: Cada objeto de una clase tiene su propia copia de los atributos (estado propio) Todos los objetos de una clase comparten los mismos métodos (comportamiento común) Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 10
  • 11. Implementador vs. Usuario • Las clases son cajas negras con Interfaz (uso) Implementación (funcionamiento) • El implementador se encarga de definir el interfaz y de desarrollar la implementación • El usuario empleará los objetos de la clase exclusivamente a través del interfaz Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 11
  • 12. Un ejemplo: la clase Punto Punto R x,y; Clase Objetos Atributos = Estado Propio trasladar(a,b) distancia(pto) (Punto) x= 2 y= 3 Departamento de Lenguajes y Ciencias de la Computación Métodos = Comportamiento Común (Punto) x= -1 y= 4 (Punto) x= 5 y= 7 Programación Orientada a Objetos 12
  • 13. Definiendo la clase Punto INTERFAZ CLASE Punto MÉTODOS cambiar_x(E R nx); Comportamiento cambiar_y(E R ny); trasladar(E R dx,dy); R distancia(E Punto p); FIN Punto; Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 13
  • 14. Definición de Métodos • El objeto afectado no aparece como argumento del método: trasladar(E R dx,dy); • En realidad, el objeto afectado es un argumento de entrada/salida implícito llamado éste: ALGORITMO trasladar(ES Punto éste,E R dx,dy); Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 14
  • 15. Implementando la clase Punto (I) IMPLEMENTACIÓN CLASE Punto ATRIBUTOS R x,y; Estado acceso al argumento implícito MÉTODOS cambiar_x(E R nx) INICIO x = nx; // x == éste.x FIN cambiar_y(E R ny) INICIO y = ny; // y == éste.y FIN Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 15
  • 16. Implementando la clase Punto (II) trasladar(E R dx,dy) INICIO x = x+dx; y = y+dy; FIN R distancia(E Punto p) INICIO DEVOLVER sqrt(pow(x-p.x,2) + pow(y-p.y,2)) FIN FIN Punto; Departamento de Lenguajes y Ciencias de la Computación acceso total a otros objetos de la misma clase Programación Orientada a Objetos 16
  • 17. Usando la clase Punto • El usuario declara objetos como cualquier otra variable: Punto p1, p2; • Como usuario, no se puede acceder a la parte privada de los objetos: p1.X = 2; Error • El usuario sólo puede manipular un Punto invocando a los métodos del interfaz de la clase Punto (comportamiento) Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 17
  • 18. Invocación de Métodos • Los métodos se invocan mediante paso de mensajes: P.trasladar(4,-1) = trasladar(P,4,-1) • El objeto P es el receptor del mensaje: trasladar(4,-1) Departamento de Lenguajes y Ciencias de la Computación (Punto) x= 5 x=1 y= 2 y=3 P Programación Orientada a Objetos 18
  • 19. Relación de Composición • la composición permite expresar una relación de tipo “está compuesto por” • Por ejemplo, un segmento está compuesto por dos puntos: origen y extremo Punto Segmento R x,y; Punto Orig, Ext; trasladar(a,b) distancia(pto) trasladar(a,b) longitud() Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 19
  • 20. Implementando la Composición (I) INTERFAZ CLASE Segmento MÉTODOS trasladar(E R dx,dy); R longitud(); FIN Segmento; Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 20
  • 21. Implementando la Composición (II) IMPLEMENTACIÓN CLASE Segmento ATRIBUTOS Punto Orig, Dest; MÉTODOS trasladar(E R dx,dy) INICIO Orig.trasladar(dx,dy); Dest.trasladar(dx,dy); FIN R longitud(); INICIO DEVOLVER Orig.distancia(Dest); FIN FIN Segmento; Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 21
  • 22. Conceptos Avanzados de la Programación O.O. Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 22
  • 23. Herencia FiguraCerrada • Posibilidad de reutilizar código • Algo más que: incluir ficheros, o importar módulos Elipse Polígono • Distintos tipos de herencia: simple / múltiple Pentágono estricta selectiva de implementación/de interfaz Cuadrilátero Rectángulo Departamento de Lenguajes y Ciencias de la Computación Círculo Rombo Programación Orientada a Objetos 23
  • 24. Herencia Padres / Ascendientes Una clase heredera proporciona los • atributos y métodos de la clase heredada, Punto y puede añadir otros nuevos. • La clase heredera puede modificar el comportamiento heredado (por ejemplo, redefiniendo algún método heredado) . • La herencia es transitiva. Partícula • Los objetos de una clase que hereda de otra pueden verse como objetos de esta Hijos / Descendientes última. Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 24
  • 25. Herencia Múltiple • Existen lenguajes con herencia múltiple, lo que permite que una clase reutilice la funcionalidad ofrecida por varias clases. Pensionista TrabajadorActivo MedioPensionista Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 25
  • 26. Herencia y Redefinición • En la herencia las clases herederas pueden heredar un método o servicio, y luego redefinirlo, modificando su implementación. Polígono Suma de distancias entre puntos consecutivos Cuadrado R lado; R perímetro( ); Departamento de Lenguajes y Ciencias de la Computación Resultado = 4*lado R perimetro( ); Programación Orientada a Objetos 26
  • 27. Polimorfismo sobre los datos • Una variable puede referirse a objetos de clases distintas de la que se ha declarado. • La restricción dada por la herencia, permite construir estructuras con elementos de naturaleza distinta, pero con un comportamiento común: Departamento de Lenguajes y Ciencias de la Computación Programación Orientada a Objetos 27