• No se han encontrado resultados

Programación Orientada a Objetos

N/A
N/A
Protected

Academic year: 2021

Share "Programación Orientada a Objetos"

Copied!
27
0
0

Texto completo

(1)

Departamento de Lenguajes y Ciencias de la Computación

E.T.S.I. Telecomunicación Universidad de Málaga

(2)

Contenido

• Introducción histórica

• Conceptos básicos de la Programación O. O. • Conceptos avanzados de la Programación O.O.

(3)
(4)

Evolución de los Lenguajes de

Programación

A B S T R A C C I Ó N O P E R A C I O N A L A B S T R A C C I Ó N D E D A T O S Lenguajes Máquina / Ensamblador Instrucciones Máquina Direcciones de Memoria, Registros FORTRAN Expresiones, Funciones Variables de Tipos Predef., Arrays PASCAL Estr. Control, Subprogramas Definición de Tipos, Punteros MODULA-2 ADA Ocultamiento Información, Interfaces Tipos Abstractos de Datos Lenguajes Clases, Métodos,

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

(6)

Conceptos Básicos de la

Programación O.O.

(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

(8)

(1,3) (2,2) (2,1) (5,2.5) ANIMAL VEHÍCULO FIGURA PUNTO

(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

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

(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

(12)

Un ejemplo: la clase Punto

trasladar(a,b) distancia(pto)

Atributos = Estado Propio

Métodos = Comportamiento Común

Punto R x,y; (Punto) x= 2 y= 3 (Punto) x= 5 (Punto) x= -1 y= 4 Clase Objetos

(13)

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

Definiendo la clase Punto

(14)

• 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);

(15)

IMPLEMENTACIÓN CLASE Punto ATRIBUTOS R x,y; MÉTODOS cambiar_x(E R nx) INICIO x = nx; FIN cambiar_y(E R ny) INICIO y = ny;

Implementando la clase Punto (I)

acceso al argumento implícito // x == éste.x // y == éste.y Estado

(16)

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

Implementando la clase Punto (II)

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

• El usuario sólo puede manipular un Punto

invocando a los métodos del interfaz de la

clase Punto (comportamiento)

(18)

(Punto) x=1

y=3

P

• 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) (Punto)

x= 5 y= 2

(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 R x,y;

trasladar(a,b) distancia(pto)

Segmento Punto Orig, Ext; trasladar(a,b) longitud()

(20)

Implementando la Composición (I)

INTERFAZ CLASE Segmento MÉTODOS

trasladar(E R dx,dy); R longitud();

(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

(22)

Conceptos Avanzados de la

Programación O.O.

(23)

Herencia

• Posibilidad de reutilizar código • Algo más que:

incluir ficheros, o importar módulos

• Distintos tipos de herencia: simple / múltiple estricta selectiva de implementación/de interfaz FiguraCerrada Polígono Elipse Círculo Cuadrilátero Pentágono Rombo Rectángulo

(24)

Herencia

Punto

Partícula

Padres / Ascendientes

Hijos / Descendientes

• Una clase heredera proporciona los

atributos y métodos de la clase heredada, 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.

• Los objetos de una clase que hereda de otra pueden verse como objetos de esta última.

(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

(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 R perímetro( ); Cuadrado R perimetro( ); R lado;

Suma de distancias entre puntos consecutivos

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

Referencias

Documento similar

En las noticias nacionales, HR Ratings comenta sobre la Inversión Fija Bruta y el consumo privado en abril, la inflación mensual de junio y las minutas de política monetaria del

Es la carta de amor de Dios para nosotros, y él nos llama – como primer y más importante mandamiento – a amarlo con todo lo que tenemos. (Mateo 22:36-40; Deuteronomio 6:4-5)

Para completar mi día «libre», había planeado ir a una librería esa misma tarde y comprar un libro de hindi, pero Manik tenía algo en mente: «Vamos a subir cinco minutos a

Para completar mi día «libre», había planeado ir a una librería esa misma tarde y comprar un libro de hindi, pero Manik tenía algo en mente: «Vamos a subir cinco minutos a casa

No comáis grasas animales // No comáis grasas, animales. En la primera frase recomiendo no comer grasas animales. En cambio, en la segunda frase, llamo animales a los que

En la implementación final, el programa principal ha hecho uso de ambas variables para comunicarse con el subprograma, pasando el número a comprobar a través de la

El Centro de juventud y familia del colegio Santa Mariana de Jesús orienta, guía y acompaña a la comunidad Marianita dinamizando espacios para la formación en liderazgo,

The buildings of Jose Llinas besides their formal aptitudes, in addi- tion to the quality of their materials, not to mention the perfection of their