Programación Orientada a Objetos

Documentos relacionados
Programación Orientada a Objetos

Programación Orientada a Objetos

Tema 1. Introducción a la Programación Orientada a Objetos

Programación orientada a objetos

TEMA 1. Agenda. Introducción a la Programación Orientada a Objetos

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

Bloque II. Elementos del lenguaje de programación Java

Tema 5. Herencia. Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada

Programación Orientada a Objetos

Tema 1 Introducción al paradigma de programación orientado a objetos

PROGRAMACION ORIENTADA A OBJETOS EN C++

Tema: Funciones Virtuales y Polimorfismo.

Curso de Java POO: Programación orientada a objetos

UAA-DSE Programación 2 / C++ Eduardo Serna-Pérez

TEMA 5. Agenda. Herencia

Programación Orientada a Objetos

Programación Orientada a Objetos. Integrantes: Santiago Hernández Bolívar Edwin Alexander Bohórquez

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Informática I para Bachillerato

Programación Orientada a Objetos

PROGRAMACION ORIENTADA A OBJETOS: Tema 2. Conceptos básicos de la Programación Orientada a Objetos

Introducción a la Programación en C

La Herencia: Teoría (1)

Metodologías en la Ingeniería del Software Métodos Orientados a Objetos

Introducción a OOP. Programación Orientada a Objeto

Guía práctica de estudio 08: Polimorfismo

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Introducción. Introducción y conceptos de POO. En qué consiste la POO? Vocabulario. Definiciones

INFORMÁTICA INDUSTRIAL

Introducción a la Orientación a Objetos

Introducción y conceptos de POO

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

Tipo de Datos Abstractos y Programación Orientada a Objetos

Herencia. Implementación en Java

PROGRAMACIÓN ORIETADA A OBJETOS

Apuntes de Programación y estructuras de datos. Control de datos

Criterios de Evaluación

CAPÍTULO 2: CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS. ABSTRACCIÓN. ENCAPSULAMIENTO. PRINCIPIO DE OCULTACIÓN. HERENCIA. POLIMORFISMO.

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Tema 1. Herencia y Polimorfismo

Conceptos de Programación Orientada a Objetos

OOP y C++ Indice. 0.1 Análisis orientado a objetos(1/4) Análisis orientado a objetos(2/4) 0.- OOP 1.- INTRODUCCIÓN.

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011

Programación Orientada a Objetos. Conceptos Básicos

Programación Orientada a Objetos

Encapsulamiento, polimorfismo, abstracción y herencia

Programación. Orientada a Objetos. Prof. Angela Di Serio. Universidad Simón Bolívar Especialización en Telemática

A3F. Objetos (uso) Carlos Fontela

TEMA 1: Orientación a Objetos, una técnica para mejorar la calidad del software. Programación Orientada a Objetos Curso 2009/2010

Evolución de la Programación Orientada a Objetos

Programación orientada a objetos I

Edwin Andrés Cubillos Vega

Introducción al Lenguaje "C++"

acceso Implementación de conceptos P.O.O. en Java Orientada a Objetos 2. Modificadores de en Java Temario

Cómo implementar tus propias funciones en Lenguaje C?

Curso de Java POO: Programación orientada a objetos

PROGRAMACIÓN ORIENTADA A OBJETOS

Introducción a la programación

Introducción al Paradigma Orientado a Objetos

Introducción a la Orientación a Objetos

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

PROGRAMACIÓN EN JAVA

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

Reutilización con delegación, herencia y polimorfismo

Tema 1 Introducción al paradigma de programación orientado a objetos

Reutilización con Delegación y Herencia

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016

UML: Diagrama de Clases

Cuerpo de Profesores Técnicos de Formación Profesional

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

Transcripción:

Programación Orientada a Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S.I. Informática Universidad de Málaga

Contenido Introducción histórica Conceptos básicos de la Programación O. O. Conceptos avanzados de la Programación O.O. Programación Modular. Programación Orientada a Objetos 2

Introducción Histórica Programación Modular. Programación Orientada a Objetos 3

Evolución de los Lenguajes de A B S T R A C C I Ó N O P E R A C I O N A L Instrucciones Máquina Expresiones, Funciones Estr. Control, Subprogramas Ocultamiento Información, Interfaces Programación Lenguajes Máquina / Ensamblador FORTRAN PASCAL MODULA-2 ADA Direcciones de Memoria, Registros Variables de Tipos Predef., Arrays Definición de Tipos, Punteros Tipos Abstractos de Datos A B S T R A C C I Ó N D E D A T O S Métodos, Mensajes Lenguajes Orientados a Objetos Clases, Objetos Programación Modular. 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) Programación Modular. Programación Orientada a Objetos 5

Conceptos básicos de la programación orientada a objetos Programación Modular. 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 Programación Modular. Programación Orientada a Objetos 7

VEHÍCULO ANIMAL PUNTO FIGURA (1,3) (2,2) (2,1) (5,2.5) Programación Modular. 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 Programación Modular. 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) Programación Modular. Programación Orientada a Objetos 10

Implementador frente a 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 Programación Modular. Programación Orientada a Objetos 11

Un ejemplo: la clase Punto Clase R x,y; Punto trasladar(a,b) distancia(pto) Atributos = Estado Propio Métodos = Comportamiento Común Objetos (Punto) x= 2 y= 3 (Punto) x= 5 y= 7 (Punto) x= -1 y= 4 Programación Modular. Programación Orientada a Objetos 12

Definición de 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; Programación Modular. 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); Programación Modular. Programación Orientada a Objetos 14

Implementación de la clase Punto (1) Estado IMPLEMENTACIÓN CLASE Punto ATRIBUTOS R x,y; 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 Programación Modular. Programación Orientada a Objetos 15

Implementación de la clase Punto (2) 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; acceso total a otros objetos de la misma clase Programación Modular. Programación Orientada a Objetos 16

Uso de 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 a invocando a los métodos del interfaz de la clase Punto (comportamiento) Programación Modular. 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) (Punto) x=1 y=3 P Programación Modular. Programación Orientada a Objetos 18

Relación de Composición la composición permite expresar a una relación de tipo está compuesto por Por ejemplo, un segmento está compuesto por dos puntos: origen y extremo R x,y; Punto trasladar(a,b) distancia(pto) Segmento Punto Orig, Ext; trasladar(a,b) longitud() Programación Modular. Programación Orientada a Objetos 19

Implementación de la Composición (1) INTERFAZ CLASE Segmento MÉTODOS trasladar(e R dx,dy); R longitud(); FIN Segmento; Programación Modular. Programación Orientada a Objetos 20

Implementación de la Composición (2) IMPLEMENTACIÓN CLASE Segmento ATRIBUTOS Punto Orig, Dest MÉTODOS trasladar(e R dx,dy) INICIO Orig.trasladar(dx,dy) Ext.trasladar(dx,dy) FIN R longitud(); INICIO DEVOLVER Orig.distancia(Ext) FIN FIN Segmento; Programación Modular. Programación Orientada a Objetos 21

Conceptos avanzados de la programación orientada a objetos Programación Modular. Programación Orientada a Objetos 22

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 Pentágono de implementación/de interfaz FiguraCerrada Polígono Elipse Cuadrilátero Círculo Rectángulo Rombo Programación Modular. Programación Orientada a Objetos 23

Herencia Padres / Ascendientes Punto Partícula 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. Programación Modular. 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 Programación Modular. 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 R perímetro( ); Suma de distancias entre puntos consecutivos Resultado = 4*lado Cuadrado R lado; R perimetro( ); Programación Modular. 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: Programación Modular. Programación Orientada a Objetos 27