programación orientada a objetos

download programación orientada a objetos

of 48

description

programación orientada a objetos

Transcript of programación orientada a objetos

  • Programacion Orientada a Objetos

    Informacion generalTema 1: Introduccion - el concepto de objeto

    Anders Jonsson & Mart Sa`nchezCurso 2015-16

  • Sesion 1 de Teora

    Informacion general

    Tema 1: Introduccion - el concepto de objeto

    Programacion orientada a objetos

  • Datos generales

    Profesores de teora (coordenadores)

    Anders Jonsson (grupo 1) Email: [email protected] Despacho: 55.219 Tutora: por cita

    Mart Sa`nchez (grupo 2) Email: [email protected] Despacho: 51.100 Tutora: por cita

  • Datos generales

    Organizacion:

    9 sesiones de teora

    5 sesiones de practicas

    4 sesiones de seminarios

    Ejercicios individuales de programacion

    Comunicacion:

    A traves del Aula Global Apuntes de las sesiones de teora Enunciados de seminarios y practicas Avisos en el foro de noticias etc.

  • Evaluacion

    Teora:

    Un examen al final del trimestre

    Un examen de recuperacion en julio (solo para suspendidos)

    Practicas:

    Cuatro entregas (con fecha posterior a cada sesion)

    Seminarios:

    Cuatro entregas (al final de cada sesion)

  • Evaluacion

    La nota final se calcula de la siguiente manera:

    Examen final: 40%

    Cuatro practicas: 4 10% = 40%

    Cuatro seminarios: 4 5% = 20%

    Para aprobar la asignatura se tiene que

    conseguir una nota final 5

    aprobar el examen con una nota 5

    aprobar las practicas con una nota promedia 5

    aprobar los seminarios con una nota promedia 5

  • Seminarios

    Objetivo: resolver ejercicios de diseno y modelado

    Preparacion previa (revisar conceptos, leer enunciado)

    Se presenta un problema concreto a resolver

    Trabajo conceptual sin ordenadores

    La solucion se elabora en la misma sesion

    Entrega al final de cada sesion

    Trabajo en pareja o individual

  • Practicas

    Objetivo: implementar (en Java) las soluciones de losseminarios

    Se entrega la solucion corregida del seminario anterior

    Se explican las tecnicas necesarias

    La solucion se implementa dentro y fuera de clase

    Entrega con fecha posterior a cada sesion

    Entrega: codigo + memoria

    Trabajo en pareja o individual

  • Ejercicios de programacion

    Objetivo: reforzar la habilidad de programar

    Se presenta una serie de ejercicios de programacion

    La solucion se implementa fuera de clase

    Trabajo individual

  • Profesorado

    Grupo X=1 X=2

    TX Anders Jonsson Mart Sa`nchezPX01 Filippos Kominis Damir LotinacPX02 Damir Lotinac Filippos KominisSX01 Anders Jonsson Mart Sa`nchezSX02 Damir Lotinac Damir LotinacSX03 Damir Lotinac Mart Sa`nchezSX04 Filippos Kominis Filippos Kominis

  • Temario de la asignatura

    Tema 1 Introduccion - el concepto de objeto

    Tema 2 El paradigma de la programacion orientada a objetos

    Tema 3 Modelado de objetos y relaciones entre objetos

    Tema 4 Tecnicas fundamentales - herencia y polimorfismo

    Tema 5 Conceptos avanzados - interfaces y clases abstractas

    Tema 6 Reutilizacion y estudio de problemas resueltos con objetos

  • Bibliografa

    Bertrand Meyer: Object Oriented Software Construction(disponible en castellano)

    Cay Horstmann: Object Oriented Design and Patterns

    Bruce Eckel: Thinking in Java (disponible en castellano yonline)

    Ken Arnold, James Gosling, David Holmes: JavaProgramming Language (disponible en castellano)

    Apuntes de las sesiones de teora

  • Sesion 1 de Teora

    Informacion general

    Tema 1: Introduccion - el concepto de objeto

    Programacion orientada a objetos

  • Que significa programacion?

  • Que significa programacion?

    De Wikipedia:

    La programacion es el proceso de disenar, codificar, depurary mantener el codigo fuente de programas computacionales

    El proposito de la programacion es crear programas queexhiban un comportamiento deseado

  • Incompatibilidad del lenguaje

  • Evolucion de la programacion

    1940 Programa: secuencia de 0s y 1s

    1951 Lenguaje asamblador: palabras cortas

    1955 FORTRAN: primer lenguaje imperativo

    1958 LISP: primer lenguaje funcional

    1967 Simula: primer lenguaje orientado a objetos

    1972 Prolog: primer lenguaje logico

    1973 C: traduccion eficiente a codigo maquina

    1980 C++: lenguaje imperativo y orientado a objetos

    1995 Java: lenguaje multiplataforma

  • Ejemplos de codigo

    C:

    x = 23 + 42;

    Asamblador:

    LDA #23

    ADD #42

    STO 34

    Codigo maquina:

    0001 00010111

    0100 00101010

    0000 00100010

  • Motivacion del progreso

    Fundamentalmente, facilitar la tarea de escribir programas

    Acercar el lenguaje de programacion al lenguaje natural

    Fomentar la abstraccion

    Fomentar la reutilizacion

  • Abstraccion

    Aislar un elemento de su contexto o del resto de loselementos que lo acompanan

    Enfocar en lo esencial

    Ignorar lo irrelevante

    Herramienta importante para reducir la complejidad

  • Reutilizacion

    La accion de volver a utilizar los bienes o productos

    Aprovechar elementos existentes

    No duplicar el trabajo necesario para crear un elemento nuevo

    Herramienta importante para reducir el esfuerzo

  • Evolucion hacia objetos

    1. Procedimientos y funciones

    2. Modulos (libreras, paquetes)

    3. Tipos de datos abstractos

    4. Objetos

  • Procedimientos y funciones

    Agrupan secuencias de instrucciones en acciones individuales

    Implementan tareas concretas

    Ejemplo:

    int sum( int a, int b ) {

    int s;

    s = a + b;

    return s;

    }

  • Modulos

    Agrupan procedimientos y funciones

    Implementan conjuntos de tareas relacionadas

    Se publica la definicion de los procedimientos y funciones,pero la implementacion queda oculta

    Ejemplo:

    stdio.h:

    int printf( const char * format, ... );

    // Print formatted data to stdout

    int scanf ( const char * format, ... );

    // Read formatted data from stdin

  • Tipos de datos abstractos

    Asocian estructuras de datos con operaciones sobre estasestructuras

    Abstractos: descripcion conceptual en vez de implementacionconcreta

    Ejemplo: Stack (pila) push(S,e): anadir el elemento e a la pila S pop(S): sacar el elemento superior de la pila S peek(S): acceder al elemento superior de la pila S

  • Objetos

    Tambien asocian entidades con caractersticas ycomportamientos

    Sin embargo, incorporan conceptos nuevos

    Objetivo: aumentar el nivel de abstraccion y reutilizacion

  • Aplicaciones de POO

  • Porque trabajar con objetos?

  • Porque trabajar con objetos?

  • Que entendemos por objeto?

  • Uso de objetos

    Los objetos nos ayudan a actuar en el mundo

    Herramienta importante de abstraccion

    Agrupamos los objetos por tipo

  • Que informacion proporcionan los objetos?

  • Que informacion proporcionan los objetos?

    Dos categoras fundamentales de informacion: Descriptiva: p.ej. rectangular, ligero, negro, etc. Funcional: p.ej. llamar, escuchar, jugar, ver, etc.

  • Como representar un objeto en el ordenador?

    El ordenador limita nuestra capacidad de representar objetosfsicos

    Idea: representar la esencia de un objeto (la informacion queproporciona)

    Objeto representado por las dos categoras fundamentales deinformacion:

    Atributos (o variables) para describir las caractersticas Metodos (o funciones) para implementar los comportamientos

  • Ejemplo

  • Atributos

    Atributos: variables que describen las caractersticas del objeto

  • Metodos

    Metodos: funciones que implementan el comportamiento del objeto

  • Sesion 1 de Teora

    Informacion general

    Tema 1: Introduccion - el concepto de objeto

    Programacion orientada a objetos

  • Programacion orientada a objetos

    Programacion:

    La programacion es el proceso de disenar, codificar, depurary mantener el codigo fuente de programas computacionales

    El proposito de la programacion es crear programas queexhiban un comportamiento deseado

    Programacion orientada a objetos:

    Un paradigma de programacion que usa los objetos en susinteracciones, para disenar aplicaciones y programasinformaticos

  • Delegacion de tareas

    Un mecanismo por medio de la cual un objeto delega en otrouna determinada funcionalidad

    Principio fundamental en la programacion orientada a objetos

    Fomenta la abstraccion y la reutilizacion

  • Ejemplo

    Juan Perez quiere viajar de Barcelona a Pars

    Cuales son las posibles soluciones a este problema?

  • Posibles soluciones

    1. Juan Perez va a pie (unica solucion que no delega tareas)

    2. Juan Perez va en coche (delega la tarea de transportarse alobjeto coche)

    3. Juan Perez va en avion Delega la tarea de buscar vuelos a un buscador en Internet Delega la tarea de transportarse a una aerolnea etc.

  • Discusion

    Diferentes objetos interactuan para llegar a una solucion

    Abstraccion: un objeto no necesita saber como otro objetolleva a cabo una tarea, solo que es capaz de hacerlo

    Reutilizacion: los objetos se pueden volver a usar

    Una vez delegada, otro objeto es responsable de la tarea

  • Diseno orientado a objetos

    1. Identificar los objetos que participaran en la solucion

    2. Si un objeto ya esta definido, reutilizar y/o modificar

    3. Si un objeto no esta definido, crear una definicion nueva

    4. Determinar como interactuaran los objetos en la solucion

  • Implementacion

    Traducir el diseno a codigo

    Existe una variedad de lenguajes orientados a objetos

    La mayora basada en texto, e.g. C++ y Java

    Encapsulamiento: el codigo del objeto inaccesible desde fuera

  • Ejemplo: Hello World

    C program:

    #include

    int main() {

    printf( "Hello World!\n" );

    }

    Java program:

    class HelloWorldApp {

    public static void main( String[] args ) {

    System.out.println( "Hello World!" );

    }

    }

  • Diferencias

    Programas no orientados a objetos:

    Programa: secuencia de instrucciones

    Se puede agrupar codigo por procedimientos o funciones

    Comunicacion: llamadas a procedimientos o funciones

    Programas orientados a objetos:

    Programa: conjunto de definiciones de objetos

    Variables y funciones agrupadas por tipo de objeto

    Comunicacion: mensajes entre objetos

  • Resumen

    Facilitar la programacion implica acercar el lenguaje a nuestromodo de pensar

    Estamos programados de pensar en terminos de objetos

    La programacion orientada a objetos fomenta la abstraccion yla reutilizacion

    Programar: definir objetos y especificar su interaccion

    Informacin generalTema 1: Introduccin - el concepto de objetoProgramacin orientada a objetos