You are on page 1of 42

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Paradigma Orientado a Objetos


Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Otalora
Universidad Nacional de Colombia

17 de Octubre de 2013

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Outline
1

Tipos de Datos abstractos Denicin Ejemplos El modelo de objetos Caractersticas Lenguajes Orientados a Objetos SmallTalk RUBY Ejercicios Quaterniones Java Ejemplo SmallTalk

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Denicin Ejemplos

Content
1

Tipos de Datos abstractos Denicin Ejemplos El modelo de objetos Caractersticas Lenguajes Orientados a Objetos SmallTalk RUBY Ejercicios Quaterniones Java Ejemplo SmallTalk

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Denicin Ejemplos

Preludio: Tipos de Dato Abstracto

Los tipos de dato Abstracto fue una idea que precedio e inuyo en la programacion orientada a objetos. Abstraccion de datos extiende la nocion de tipo, que proporciona el programador con un mecanismo de encapsulacion para denir nuevos tipos de datos. Un tipo de dato abstracto (TDA) o Tipo abstracto de datos (TAD) es un modelo matemtico compuesto por una coleccin de operaciones denidas sobre un conjunto de datos para el modelo.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Denicin Ejemplos

TDA: Encapsulacin

Un concepto clave en los TDA es el de encapsulacion: Denicion: La encapsulacion es un mecanismo que permite a las constantes relacionadas logicamente, tipos, variables, metodos, y asi sucesivamente ser agrupadas en una nueva entidad. Los ejemplos incluyen los procedimientos, paquetes y clases.Utilizando los mecanismos de encapsulamiento el programa puede limitar tanto el alcance como la visibilidad de los valores y funciones para este nuevo tipo de dato. Es frecuente que el Encapsulamiento sea usado como un sinnimo del Ocultacin de informacin.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Denicin Ejemplos

Separacin de la interfaz e implementacin

Un TDA es representado por su interfaz, la cual hace de cubierta de la implementacion y que los usuarios de TDA solo se preocupen de la interfaz. En la terminologa de Lenguaje Orientado a Objetos, en general un TDA es una clase; una instancia de un TDA o clase, es un objeto.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Denicin Ejemplos

Content
1

Tipos de Datos abstractos Denicin Ejemplos El modelo de objetos Caractersticas Lenguajes Orientados a Objetos SmallTalk RUBY Ejercicios Quaterniones Java Ejemplo SmallTalk

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Denicin Ejemplos

TDA Pila
Push(x): Inserta el elemento x en el tope de la pila.

Pop() : Devuelve el elemento del tope de la pila y lo elimina.

Top() :Devuelve el elemento del tope de la pila pero no lo elimina

isEmpty(): Devuelve True en caso de que la pila este vacia en caso contrario False
Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Denicin Ejemplos

TDA Arbol
Enumerar todos los elementos.

Buscar un elemento.

Dado un nodo, listar los hijos (si los hay).

Borrar un elemento.

Eliminar un subrbol (algunas veces llamada podar).


Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Content
1

Tipos de Datos abstractos Denicin Ejemplos El modelo de objetos Caractersticas Lenguajes Orientados a Objetos SmallTalk RUBY Ejercicios Quaterniones Java Ejemplo SmallTalk

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Descripcin

An con la evolucin de mdulos y paquetes en la dcada de los 80s permanecan algunos problemas con los tipos de dato abstracto: NO haban mecanismos de inicializacin, ni de nalizacin. NO haba forma de extender un TDA. Se soluciona con la idea de clase. Se modelan GUI como coleccion de objetos.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Clases

Es un tipo de declaracin que encapsula constantes, variables y funciones para manipular las variables. Mecanismo para denir TDA en un programa. Constructores y destructores. Java permite usar clases internas.( Visual Basic, .NET, Ruby, C++)

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Clases
Ejemplo implementacin inner class Java:

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Visibilidad

La ocultacin de informacin es hecha explcita al requerir que todo mtodo y varible instanciados en una clase tengan un nivel particular de visibilitad, esta puede ser pblica, protegida o privada, con respecto a sus clases clientes y subclases.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Visibilidad

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Herencia
Reutilizacin de cdigo (variables y mtodos) Jerarqua de Clases Relacin es un" vs tiene un"(agregacin).

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Herencia Mltiple
Una clase hereda de varias superclases ( C++, Lisp, Curl, Dylan, Eiffel, Logtalk, Perl, Python)

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Polimorsmo
La capacidad de un objeto para cambiar. Diferentes implementaciones de mtodos.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Templates

Familia de clases parametrizadas por uno o mas tipos.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Templates
Ejemplo uso Templates:

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Clases Abstractas
No se pueden crear objetos. Tiene uno o mas mtodos abstractos (solo su rma) que son implementados por sus subclases

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Interfaces
Una interfaz es una estructura que dene un contrato de implementacin. Una interfaz representa un conjunto de responsabilidades o comportamientos.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Caractersticas

Reexin
Superclases. Nombres y tipos de atributos. Nombres y rmas de mtodos. Firmas de los constructores. Interfaces que la clase implementa.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Content
1

Tipos de Datos abstractos Denicin Ejemplos El modelo de objetos Caractersticas Lenguajes Orientados a Objetos SmallTalk RUBY Ejercicios Quaterniones Java Ejemplo SmallTalk

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

SmallTalk

SmallTalk es un lenguaje orientado a objetos puros, pues todas las entidades que maneja son objetos. El lenguaje se basa en conceptos tales como objetos y mensajes. Es descendiente del lenguaje SIMULA quien fue el primer lenguaje en implemetar programacin orientada a objetos y tiene sus orgenes en el Centro de Estudios de Palo Alto de Xerox, en los comienzos de 1970.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Caracteristicas: SmallTalk

Orientacin a Objetos Tipado dinmico Interaccin entre objetos mediante envo de mensajes Herencia simple y con raz comn. Compilacin en tiempo de ejecucin o Interpretado.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

ELementos: SmallTalk
Objetos y variables

Atributos de un objeto:
Variables de clase: guardan atributos comunes a todas las instancias de una misma clase (clase parrafo, variable sangra). Variables de instancia: tienen valores asociados nicamente con cada instancia u objeto creado a partir de una clase (clase Persona, variable Nombre).
Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

ELementos: SmallTalk
Mensajes: La computacin en Smalltalk tiene lugar como resultado de enviar mensajes a los objetos. - Componentes de un mensaje: receptor, selector y argumentos. - Tipos de mensajes:
Unarios: no tienen argumentos y deben comenzar con una letra minscula. Ejemplo pilaUno desapilar Binarios: permiten pasar un argumento y su selector est formado por uno o dos caracteres no alfabticos adyacentes. Ejemplo x<y Palabra clave: permiten pasar uno o ms argumentos. Ejemplos "pilaUno apilar: 80", "vectorA at: 3 put: 19"

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

ELementos: SmallTalk
Metodos: Los objetos responden a los mensajes mediante la ejecucin de mtodos.
Un mtodo se compone de dos partes: un encabezado y un cuerpo. Como en los lenguajes tradicionales, el encabezado se utiliza para identicar al mtodo cuando sea invocado y el cuerpo implementa la operacin correspondiente

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Elementos: SmallTalk
Clases
Una clase brinda la estructura general para objetos con caractersticas similares. El punto ms interesante es que en este lenguaje las clases son objetos a los cuales se les pueden enviar mensajes como a cualquier otro objeto.

Squeak Smalltalk tiene una gran variedad de clases predenidas. A estas clases el programador puede agregar otras, las cuales debern insertarse dentro de la estructura Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Lenguajes Otalorade Programacin jerrquica denida por Sebastian el lenguaje.

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Entorno y sintaxis: SmallTalk

El entorno Smalltalk es primordialmente grco y funciona como un sistema en tiempo de ejecucin que integra varias herramientas de programacin, utilidades multimedia y servicios del sistema operativo. Se utiliza una sintaxis explcita para denir ciertos elementos de un programa, tales como mtodos, por lo que dene una sintaxis abstracta de programas Smalltalk. Smalltalk-80 tiende a ser minimalista, el cual posee un grupo de 5 palabras reservadas: self, super, nil, true y false.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Ejemplos: SmallTalk

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Content
1

Tipos de Datos abstractos Denicin Ejemplos El modelo de objetos Caractersticas Lenguajes Orientados a Objetos SmallTalk RUBY Ejercicios Quaterniones Java Ejemplo SmallTalk

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Generalidades de Ruby
Inicios de RUBY.

Ruby es un lenguaje de programacin interpretado, reexivo y orientado a objetos, creado por el programador japons Yukihiro "Matz" Matsumoto, quien comenz a trabajar en Ruby en 1993, y lo present pblicamente en 1995. Combina una sintaxis inspirada en Python y Perl con caractersticas de programacin orientada a objetos similares a Smalltalk.
Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Semntica
Semantica de RUBY. Ruby es orientado a objetos: todos los tipos de datos son un objeto, incluidas las clases y tipos que otros lenguajes denen como primitivas, (como enteros, booleanos, y "nil"). Toda funcin es un mtodo. Las variables siempre son referencias a objetos, no los objetos mismos. A pesar de que Ruby no soporta herencia mltiple, la clases pueden importar mdulos como mixins. La sintaxis procedural est soportada, pero todos los mtodos denidos fuera del mbito de un objeto son realmente mtodos de la clase Object. Como esta clase es padre de todas las dems, los cambios son visibles para todas las clases y objetos.
Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Iniciando en Ruby

Denir un mtodo.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

SmallTalk RUBY

Iniciando en Ruby

Esto dene una nueva clase llamada Antrion y un par de mtodos para esa clase. Tambin toma nota de @nombre. Esta es una variable de instancia y est disponible para todos los mtodos de la clase.
Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Quaterniones Java Ejemplo SmallTalk

Content
1

Tipos de Datos abstractos Denicin Ejemplos El modelo de objetos Caractersticas Lenguajes Orientados a Objetos SmallTalk RUBY Ejercicios Quaterniones Java Ejemplo SmallTalk

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Quaterniones Java Ejemplo SmallTalk

Quaterniones Java

Implementar el TDA Quaternion, con todas las operaciones basicas y hacer un programa de ejemplo(body) que implemente las interfaces. http://en.wikipedia.org/wiki/Quaternion

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Quaterniones Java Ejemplo SmallTalk

Content
1

Tipos de Datos abstractos Denicin Ejemplos El modelo de objetos Caractersticas Lenguajes Orientados a Objetos SmallTalk RUBY Ejercicios Quaterniones Java Ejemplo SmallTalk

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Tipos de Datos abstractos El modelo de objetos Lenguajes Orientados a Objetos Ejercicios

Quaterniones Java Ejemplo SmallTalk

Ejemplo SmallTalk

Implementar el desarrollo de una clase, con todas las operaciones basicas.

Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

Appendix

For Further Reading

For Further Reading I


edited by Danny Z. Chen and D.T.Lee 12th annual international conference. Computing and combinatorics. Springer, 2006. Maxim Crochemore. An optimal algorithm for computing the repetitions in a word 12(5):2442500, 2000. Maxim Crochemore and Lucian Ilie. A simple algorithm to computing the Lempel-Ziv factorization. 2000.
Ivn Duque , Leonardo Muoz, David Gallego, Julio Narvaez, Sebastian Lenguajes Otalorade Programacin

You might also like