PDF de programación - Programación Orientada a Objetos - Tema 1: Introducción

Imágen de pdf Programación Orientada a Objetos - Tema 1: Introducción

Programación Orientada a Objetos - Tema 1: Introduccióngráfica de visualizaciones

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 3 de Julio del 2017
2.029 visualizaciones desde el 3 de Julio del 2017
1,9 MB
49 paginas
Programación Orientada a Objetos

Tema 1: Introducción

Eduardo Mosqueira Rey

LIDIA
Laboratorio de Investigación y
desarrollo en Inteligencia Artificial

Departamento de Computación
Universidade da Coruña, España

Objetivos

• Contextualizar el paradigma de la orientación a
objetos dentro de los distintos paradigmas de
programación existentes.

• Analizar las diferencias metodológicas entre la
programación por descomposición funcional y
la programación orientada a objetos.

• Introducir al alumno en el contexto de los

lenguajes orientados a objetos.

• Conocer la historia y los aspectos básicos tanto

del lenguaje como de la plataforma Java.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

2

Índice

1. Paradigmas de Programación
2. Evolución de los lenguajes imperativos
3. Programación orientada a objetos
4. Lenguajes orientados a objetos
5. Lenguaje Java
6. Bibliografía

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

3

Índice

1. Paradigmas de Programación

– Paradigma operacional
– Paradigma declarativo
– Paradigma demostrativo

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

4

Paradigmas Programación

• Paradigma

– Palabra proveniente del griego paradeigma y cuyo

significado es: modelo o ejemplo representativo.

• Paradigma de Programación

– Colección de patrones conceptuales que juntos

modelan el proceso de diseño y, finalmente,
determinan la estructura del programa.

– Tipos (según Ambler):

• Operacionales
• Declarativos
• Demostrativos

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

5

Paradigmas Programación

Especifican la programación como

un conjunto de secuencias

computacionales que se ejecutan

paso a paso

No existe una descripción paso a
paso de cómo llegar a la solución,
sino que el programa se construye

estableciendo hechos, reglas,

restricciones, ecuaciones, etc. Que
debe cumplir el conjunto de valores

que constituyen la solución.

Paradigma
operacional

Paradigmas de
programación

Paradigma
declarativo

Paradigma
imperativo

Paradigma de orien-

tación a objetos

Paradigma
funcional

Paradigma

lógico

Paradigma

transformacional

Paradigma
relacional

Paradigma
de inducción

Haskell,
Erlang

Prolog

Sistemas
basados en

reglas

SQL

Se provee al sistema de soluciones
a problemas similares y se deja que
generalice una solución a partir de

estos ejemplos.

Paradigma
demostrativo

Paradigma de redes

de neuronas

Paradigma
genético

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

6

Paradigmas Programación

Paradigma Operacional
• Paradigma imperativo (o procedimental)

– Definición

• Son lenguajes centrados en la acción, es decir, la

computación se ve como una secuencia de acciones
(especificadas paso a paso) que convierten los datos de
entrada iniciales en los datos de salida finales.

– Ecuación

• Algoritmos + Estructuras de Datos = Programas

– Lenguajes

• FORTRAN, COBOL, BASIC, C, Ada, Pascal, etc.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

7

Paradigmas Programación

Paradigma Operacional

• Paradigma de la orientación a objetos

– Orígenes

• Evolución natural de los lenguajes que siguen el paradigma

imperativo ⇒ el módulo o tipo abstracto evoluciona al concepto de
objeto.

• Sin embargo, la filosofía de programación difiere del modelo

imperativo

– Definición. La programación consiste en:

• Definir cuáles son los objetos adecuados para resolver un

problema determinado.

• Resolver el problema mediante la interacción entre los distintos

objetos a través del intercambio de mensajes

– Ecuación

– Lenguajes

• Objetos + Mensajes = Programas

• Smalltalk, Eiffel, C++, Java, Object Pascal, etc.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

8

Índice

2. Evolución de los lenguajes imperativos

– Programación no estructurada
– Programación procedimental
– Programación estructurada
– Programación modular
– Tipos abstractos de datos (TADs)

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

9

Evolución Lenguajes

Imperativos

Programación
no estructurada

Programación
procedimental

Programación
estructurada

Procedimientos

Programa

Programa principal

datos

Estructuras
básicas de

diseño

Programa

Programa principal

datos

Procedimiento #1

datos #1

Procedimiento #2

datos #2

Procedimiento #3

datos #3

Procedimiento #1.1

datos #1.1

Procedimiento #1.2

datos #1.2

Procedimiento #3.1

datos #1.3

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

10

Evolución Lenguajes

Imperativos

Programación
no estructurada

Programación
procedimental

Programación
estructurada

Programación

modular

Tipos abstractos

de datos

Programación
orientada objetos

Procedimientos

Estructuras
básicas de

diseño

Encapsulación

en módulos

Instanciación

Herencia,

polimorfismo,

etc.

Programa

Programa principal

datos

Modulo #1

Modulo #2

Parte pública

datos públicos #1

Parte privada

datos privados #1

Procedimiento #1.1

datos #1.1

Procedimiento #1.2

datos #1.2

Parte pública

datos públicos #2

Parte privada

datos privados #2

Procedimiento #2.1

datos #2.1

Procedimiento #2.2

datos #2.2



Programa

Objeto #2



datos #2

Objeto #1



datos #1

Objeto #5



datos #5

Objeto #3



datos #3

Objeto #4



datos #4

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

11

Índice

3. Programación orientada a objetos

– Introducción
– Top-down vs. Bottom-up
– Ventajas de la POO
– Inconvenientes de la POO

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

12

Prog. Orientada a Objetos

Introducción

• Características

– Cambio de notación:

• tipos → clases
• variables → objetos.

– Nuevas características OO no presentes en los TADs

– Las clases pueden establecer relaciones de generalización-
especialización de forma que, implícitamente, las clases
especializadas hereden propiedades de las clases genéricas

• Herencia:

• Polimorfismo:

superclase

– Capacidad de una subclase de actuar como si fuera su

– La nueva filosofía de programación se orienta a la
estructura de los datos en vez de a la estructura de
las funciones

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

13

Prog. Orientada a Objetos

Top-down vs. Bottom-up
• Diseño top-down o descomposición funcional

– Características

• Consiste en ir descomponiendo el programa en piezas más

pequeñas y manejables (subrutinas, funciones o procedimientos).

1

1.1

1.2

1.3

1.2.1

1.2.2

– Problemas

• No favorece la reutilización porque las funciones de más bajo nivel
desarrolladas son muy dependientes del problema que pretenden
resolver y de los datos globales existentes en el programa en el
que se incluyen.

• Se ve muy afectado por cambios en los requisitos funcionales.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

14

Prog. Orientada a Objetos

Top-down vs. Bottom-up

• Diseño Bottom-up

– Filosofía de la orientación a objetos

• Se trata de identificar cómo es la estructura de datos del programa

y qué interacciones aparecen entre los distintos datos.

• A partir de los datos y sus interacciones se desarrollan las

funciones que produzcan las salidas adecuadas

• El programa se compone de una serie de objetos con un estado

interno propio y que interactúan intercambiando mensajes

– Ejemplo

• Para realizar un juego de cartas empezamos realizando los objetos

carta, mazo, tapete, jugador, etc.

• Los objetos se prueban de forma independiente y posteriormente

se integran para formar el juego (bottom-up)

• Los objetos son fácilmente reutilizables para cualquier otro juego

de cartas

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

15

Prog. Orientada a Objetos

Ventajas

• Reutilización

– Los objetos bien diseñados pueden utilizarse como base de

otros sistemas, que se constituyen como una combinación de
los objetos existentes.

• Modularidad

– Los objetos son autocontenidos y tienen definido de forma

clara sus interfaces con otros objetos.

• Comprensión

– Al estar los datos y procedimientos que conforman los objetos
encapsulados en un mismo compartimento, los objetos pueden
ser desarrollados y probados en forma independiente.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

16

Prog. Orientada a Objetos

Ventajas

• Extensibilidad

– La herencia permite que sea posible definir y utilizar de forma
clara módulos funcionalmente incompletos y, luego, permiten
su extensión sin trastornar la operación de los módulos cliente.

• Escalabilidad

– Los diseños orientados a objetos, al ser fácilmente extensibles,
permiten que el esfuerzo no aumente exponencialmente con el
tamaño y la complejidad del proyecto, tal y como sucede con
los sistemas convencionales

• Naturalidad

– El análisis y el diseño que dividen un dominio en objetos, está
más acorde con la realidad que una descomposición funcional
por refinamiento progresivo.

© Eduardo Mosqueira Rey Departamento de Computación Universidade da Coruña

17

Prog. Orientada a Objetos

Ventajas

• Seguridad

seguros

– La ocultación de información contribuye a crear sistemas

• Facilidad de mantenimiento

– La evolución de un sistema y los problemas de mantenimiento

quedan mitigados por la sólida partición que resulta del
encapsulamiento y de las interfaces uniformes entre objetos.

• Reducción de la complejidad

– La estructura que impone la orientación a obj
  • Links de descarga
http://lwp-l.com/pdf4824

Comentarios de: Programación Orientada a Objetos - Tema 1: Introducción (1)

Gustavo Muñoz Muzquiz
3 de Julio del 2018
estrellaestrellaestrellaestrellaestrella
Muy buenos ejemplos
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad