Vous êtes sur la page 1sur 48

Programacion Orientada a Objetos

Informacion general
Tema 1: Introducci
on - el concepto de objeto

Anders Jonsson & Mart S`


anchez
Curso 2015-16

Sesion 1 de Teora

Informacion general

Tema 1: Introducci
on - el concepto de objeto

Programaci
on orientada a objetos

Datos generales

Profesores de teora (coordenadores)

Anders Jonsson (grupo 1)

Email: anders.jonsson@upf.edu
Despacho: 55.219
Tutora: por cita

Mart S`anchez (grupo 2)

Email: marti.sanchez@upf.edu
Despacho: 51.100
Tutora: por cita

Datos generales

Organizaci
on:

9 sesiones de teora

5 sesiones de practicas

4 sesiones de seminarios

Ejercicios individuales de programacion

Comunicaci
on:
A trav
es 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 recuperaci
on en julio (s
olo para suspendidos)

Practicas:

Cuatro entregas (con fecha posterior a cada sesi


on)

Seminarios:

Cuatro entregas (al final de cada sesi


on)

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 dise


no y modelado

Preparaci
on previa (revisar conceptos, leer enunciado)

Se presenta un problema concreto a resolver

Trabajo conceptual sin ordenadores

La soluci
on se elabora en la misma sesi
on

Entrega al final de cada sesi


on

Trabajo en pareja o individual

Practicas

Objetivo: implementar (en Java) las soluciones de los


seminarios

Se entrega la soluci
on corregida del seminario anterior

Se explican las tecnicas necesarias

La soluci
on se implementa dentro y fuera de clase

Entrega con fecha posterior a cada sesi


on

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 soluci
on se implementa fuera de clase

Trabajo individual

Profesorado

Grupo
TX
PX01
PX02
SX01
SX02
SX03
SX04

X=1
Anders Jonsson
Filippos Kominis
Damir Lotinac
Anders Jonsson
Damir Lotinac
Damir Lotinac
Filippos Kominis

X=2
Mart S`
anchez
Damir Lotinac
Filippos Kominis
Mart S`
anchez
Damir Lotinac
Mart S`
anchez
Filippos Kominis

Temario de la asignatura

on - el concepto de objeto
Tema 1 Introducci
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 Reutilizaci
on 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 y


online)

Ken Arnold, James Gosling, David Holmes: Java


Programming Language (disponible en castellano)

Apuntes de las sesiones de teora

Sesion 1 de Teora

Informacion general

Tema 1: Introducci
on - el concepto de objeto

Programaci
on orientada a objetos

Que significa programacion?

Que significa programacion?

De Wikipedia:

La programacion es el proceso de dise


nar, codificar, depurar
y mantener el codigo fuente de programas computacionales

El proposito de la programacion es crear programas que


exhiban 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 l
ogico
1973 C: traduccion eficiente a c
odigo m
aquina
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 abstracci
on

Fomentar la reutilizacion

Abstraccion

Aislar un elemento de su contexto o del resto de los


elementos que lo acompa
nan

Enfocar en lo esencial

Ignorar lo irrelevante

Herramienta importante para reducir la complejidad

Reutilizacion

La acci
on 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 definici
on de los procedimientos y funciones,
pero la implementaci
on 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 estas


estructuras

Abstractos: descripci
on conceptual en vez de implementaci
on
concreta
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 y


comportamientos

Sin embargo, incorporan conceptos nuevos

Objetivo: aumentar el nivel de abstracci


on 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 abstracci


on

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 objetos


fsicos

Idea: representar la esencia de un objeto (la informacion que


proporciona)
Objeto representado por las dos categoras fundamentales de
informacion:

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: Introducci
on - el concepto de objeto

Programaci
on orientada a objetos

Programacion orientada a objetos

Programaci
on:

La programacion es el proceso de dise


nar, codificar, depurar
y mantener el codigo fuente de programas computacionales

El proposito de la programacion es crear programas que


exhiban un comportamiento deseado

Programaci
on orientada a objetos:

Un paradigma de programacion que usa los objetos en sus


interacciones, para dise
nar aplicaciones y programas
informaticos

Delegacion de tareas

Un mecanismo por medio de la cual un objeto delega en otro


una determinada funcionalidad

Principio fundamental en la programacion orientada a objetos

Fomenta la abstracci
on y la reutilizacion

Ejemplo

Juan Perez quiere viajar de Barcelona a Pars

Cuales son las posibles soluciones a este problema?

Posibles soluciones

unica soluci
on que no delega tareas)
1. Juan Perez va a pie (
2. Juan Perez va en coche (delega la tarea de transportarse al
objeto 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 interact


uan para llegar a una soluci
on

Abstraccion: un objeto no necesita saber como otro objeto


lleva a cabo una tarea, s
olo que es capaz de hacerlo

Reutilizaci
on: los objetos se pueden volver a usar

Una vez delegada, otro objeto es responsable de la tarea

Diseno orientado a objetos

an en la soluci
on
1. Identificar los objetos que participar
2. Si un objeto ya est
a definido, reutilizar y/o modificar
3. Si un objeto no est
a definido, crear una definici
on nueva
4. Determinar como interactuar
an los objetos en la soluci
on

Implementacion

Traducir el dise
no a c
odigo

Existe una variedad de lenguajes orientados a objetos

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

Encapsulamiento: el c
odigo del objeto inaccesible desde fuera

Ejemplo: Hello World


C program:
#include <stdio.h>
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 c
odigo por procedimientos o funciones

Comunicaci
on: llamadas a procedimientos o funciones

Programas orientados a objetos:

Programa: conjunto de definiciones de objetos

Variables y funciones agrupadas por tipo de objeto

Comunicaci
on: mensajes entre objetos

Resumen

Facilitar la programacion implica acercar el lenguaje a nuestro


modo de pensar

Estamos programados de pensar en terminos de objetos

La programacion orientada a objetos fomenta la abstracci


on y
la reutilizacion

Programar: definir objetos y especificar su interaccion

Vous aimerez peut-être aussi