Está en la página 1de 43

Estructuras de control y Tipos

definidos por el usuario

Mtro. Jos David Uc Salas


Objetivo de la sesin. : Comprender el concepto de tipos de datos
abstractos mediante la comprensin del concepto y un ejemplo que
apoye en la comprensin.
3/12/15

POO TDA

Introduccin
Abstraccin
Es "ignorancia selectiva
Decidir que es importante y que no lo es
Enfocarse y depender de lo que ES importante
Ignorar y no depender de lo que NO ES importante

El propsito de la abstraccin no es ser


poco especifico, es ms bien crear un
nuevo nivel, en el cual se puede ser
absolutamente preciso.
Edsger Dijkstra
3/12/15

POO TDA

Abstraccin para resolver


problemas
La mejor abstraccin es aquella que hace simples
las cosas complejas
Rescatar y resaltar los conceptos fundamentales
Esconder los aspectos no importantes
Ejemplo: Detalles de la implementacin

Mientras ms perfecta es una mquina, ms


oculto se encuentra su funcionamiento. Al
parecer, la perfeccin no se logra cuando no
hay ms que aadir, si no cuando no haya ms
que quitar.
Antoine de Saint - Exupry
3/12/15

POO TDA

Abstraccin de datos

Es una tcnica poderosa de programacin

Permite "inventar" o "definir" nuevos tipos de datos


Observando e identificando identidades del mundo real:
objetos
Ocultando datos irrelevantes para la resolucin de problemas

Gracias a esto se pueden disear programas


Ms cortos, legibles y flexibles

Esto nuevos tipos de datos se conocen como:


TIPOS ABSTRACTOS DE DATOS (TDA)

3/12/15

POO Principios-2

Tipos de Datos Abstractos

Trata de representar entidades del mundo real: objetos

Especificando el QUE y no el COMO

Se compone de:

Comportamiento Operaciones
Los TDAs existen para proveer operaciones
Ejemplo: Un carro, es til porque se le puede manejar
Manejar es un comportamiento u operacin del TDA Carro

Estado
Se refiere al funcionamiento interno del TDA
Un TDA correctamente creado mantiene su estado OCULTO
Ejemplo: No nos interesa como el CARRO funciona, solo nos interesa que
funcione

3/12/15

POO TDA

Tipos de Datos Abstractos


Algunos tipos de datos que se encuentran en
los lenguajes de programacin son:

int

float

double

char

cadena de caracteres(String)

arreglos

3/12/15

POO TDA

Tipos de Datos Abstractos


Considere el tipo de datos int

Cules nmeros pertenecen a este tipo de dato

Cuntos elementos tiene

Qu operaciones se pueden realizar sobre los


enteros

Tipos de Datos Abstractos

El tipo de datos int es un subconjunto de los nmeros


enteros. Son finitos.
int Z

Algunas de las operaciones que estn permitidas sobre


enteros son:
+: int x int int
- : int x int int
* : int x int int
/ : int x int double
%: int x int double

Tipos de Datos Abstractos

El tipo de datos float es un subconjunto de los nmeros


reales. Son finitos.
float R

Algunas de las operaciones que estn permitidas sobre


flotantes son:
+: float x float float
-: float x float float
*: float x float float
/: float x float float

Tipos de Datos Abstractos

El tipo de datos String (cadena de caracteres)


cadena = <carcter0,carcter1, , carctern-1>

Algunas de las operaciones que estn permitidas sobre


cadenas de caracteres son:
strlen : cadena int
+ : cadena x cadena cadena

Tipos de Datos Abstractos

Desde un enfoque orientado a objetos, considere el tipo


Automvil, definido de la siguiente manera
Automovil = (motor, baul, areapasajeros, chasis,carroceria)
Automovil Vehiculo

Algunas de las operaciones que estn permitidas sobre un


Automovil
encender : Automovil x Llave Automovil
acelerar : Automovil x Intensidad Automovil

Tipos de Datos Abstractos

En todos los tipos definidos considerados anteriormente


se tienen en cuenta dos aspectos

Proposiciones lgicas que indican qu elementos


pertenecen, o no, al tipo

Conjunto de operaciones o acciones que se


pueden realizar sobre los elementos del tipo

Tipos de Datos Abstractos


Un tipo de datos define el conjunto de valores
vlidos del tipo y las operaciones que se pueden
aplicar al tipo.

Tipos de Datos Abstractos


Un Tipo de Dato Abstracto debe definir
dos partes:

El invariante

Un conjunto de operaciones.

Tipos de Datos Abstractos

El invariante.
El invariante es una proposicin que expresa
el conjunto de valores vlidos del TDA. Permite
saber qu elementos pertenecen al TDA y qu
elementos no.
Un invariante tambin expresa la estructura
abstracta del TDA.

Tipos de Datos Abstractos

Se dice que la estructura es abstracta porque se trata


de que el TDA tenga un nivel alto de generalidad

Una de las formas para que esto se cumpla es que el


TDA debe ser lo ms independiente posible de su
implementacin

Tipos de Datos Abstractos

Un conjunto de operaciones
Una operacin es algo que se le puede hacer al TDA.
El
conjunto
de
las
operaciones
define
el
comportamiento del TDA, esto es, define lo que se
puede hacer o no con el TDA.

Tipos de Datos Abstractos


Un TDA puede estar compuesto por otros TDAs.
En trminos formales, un TDA se define como el par
(invariante , operaciones), donde invariante es una
proposicin (que tiene un valor verdadero o falso) y
operaciones es el conjunto de las operaciones del TDA.

Tipos de Datos Abstractos


Que es una instancia de TDA?
Una instancia de TDA, o simplemente instancia, es un
elemento que pertenece al TDA.
El TDA es abstracto mientras que la instancia es concreta

Tipos de Datos Abstractos


Que es una instancia de TDA?
Un TDA es como un molde, o un sello, que define como
ser la forma y comportamiento de los elementos que le
pertenecen.
Una instancia, por su parte, es la impresin del sello o
molde.

Tipos de Datos

El ciclo de vida de un TDA, se compone de tres etapas:

Diseo
Implementacin
Uso.

DISEO

IMPLEMENTACION

USO

Tipos de Datos
DISEO
Se describe cmo va a ser el TDA, su invariante y sus
operaciones.
Es en esta etapa cuando el TDA es verdaderamente
abstracto, en las otras etapas comienza a ser real.
La etapa de diseo del TDA responde a las preguntas:
Cmo es el TDA?.
Cmo es la estructura del TDA?
Cul es el conjunto de valores vlidos?
Cules son sus operaciones?

Tipos de Datos Abstractos


DISEO

Proposiciones lgicas que indican qu elementos


pertenecen, o no, al tipo

Conjunto de operaciones o acciones que se pueden


realizar sobre los elementos del tipo
Por cada operacin se debe establecer el dominio y el
codominio

Tipos de Datos Abstractos


DISEO (Documento formal)
1. Nombre: La letra inicial en mayscula el resto en minsculas.
2. Descripcin del TDA: Una frase en lenguaje natural
describiendo el TDA.
3. Invariante de TDA: Una proposicin lgica que expresa el
conjunto de valores
vlidos del TDA.
4. Las operaciones
4.1 Nombre de operacin: Todas las letras en minscula a
excepcin de las
operaciones constructoras que tienen el mismo nombre del
TDA.
4.1.1 Descripcin: Una frase en lenguaje natural describiendo
la operacin.
4.1.2 Descripcin operacional: La descripcin en trminos del
dominio y

Tipos de Datos Abstractos


IMPLEMENTACION
La implementacin consiste en tomar el diseo del TDA y
convertirlo en algo real, en nuestro caso es llevarlo a un
lenguaje de programacin.
La implementacin de un TDA no es nica; dado un
diseo de un TDA es posible implementarlo de diversas
formas,

Tipos de Datos Abstractos


IMPLEMENTACION
DISEO

IMPLEMENTACION 1

IMPLEMENTACION 2

Diferentes
implementacion
es pueden
representar el
mismo TDA

IMPLEMENTACION 3

IMPLEMENTACION 4

USO

Tipos de Datos Abstractos


USO
El uso de un TDA se refiere a cuando se utiliza en una
aplicacin para resolver una problema especifico.
Los diversos usos de un TDA es una prueba de la
generalidad de este.
Tener un conjunto de TDAs reutilizables hace mucho ms
fcil construir un software complejo. Para hacer esto es
solo unir las implementaciones que necesitemos de la
forma adecuada y se tiene la aplicacin.

Tipos de Datos Abstractos


USO
En el caso en que se presenten errores en la
implementacin de un TDA es ms fcil corregir un error
pues es solo corregir en este y automticamente quedar
corregido en todo el software que lo utilice, ya que los
errores estn modularizados.
La
reutilizacin
y
la
modularidad
hacen
las
implementaciones de los TDA una herramienta poderosa
para el desarrollo de software de calidad.

Tipos de Datos Abstractos


IMPLEMENTACION
IMPLEMENTACION

USO 1

USO 2

Diversos usos de
la
implementacin
de un TDA.

USO 3

USO 4

Tipos de Datos Abstractos


TDA Complejo
Un nmero complejo es un objeto matemtico que se
puede representar como una pareja ordenada, por
ejemplo (2,3) o como el polinomio 2 + 3i , donde i es la
unidad bsica de los nmeros imaginarios.
Los nmeros complejos tienen operaciones como las de
suma, resta y multiplicacin. Si tenemos dos complejos
c1=(r1,i1) y c2=(r2,i2), las operaciones se pueden definir
de la siguiente manera:
C1 + C2 = (r1 + r2, i1 + i2)
C1 - C2 = (r1 - r2, i1 - i2)

Tipos de Datos Abstractos


TDA Complejo(Invariante)
Para establecer el invariante debemos responder a las
dos preguntas:
Cmo es la estructura del TDA?
El TDA Complejo contiene dos partes: la real y la
imaginaria.

Tipos de Datos Abstractos


TDA Complejo(Invariante)
Cul es el conjunto de valores vlidos?
Se puede expresar en trminos del conjunto de valores
vlidos de cada una de las partes del TDA, es decir, la
primera parte de un Complejo es un nmero que
pertenece al conjunto de los nmeros reales y las
segunda es un nmero imaginario. Formalmente se
puede expresar como:
Complejo=(real, imaginario), real R imaginario I

Tipos de Datos Abstractos


TDA Complejo(Operaciones)
Cules son sus operaciones?
sumar: Complejo x Complejo Complejo
restar: Complejo x Complejo Complejo
obtenerReal: Complejo R
obtenerImaginario: Complejo I
Complejo: R x I Complejo

(Operacin de construccin)

Las operaciones sumar y restar tienen como dominio el


producto cartesiano de Complejos y como rango un
Complejo.

Tipos de Datos Abstractos


TDA Complejo (Documento final)
TDA
Complejo
Descripcin:
El TDA Complejo representa al concepto
matemtico de nmero complejo, es decir, un
nmero que tiene una parte real y otra imaginaria.
Invariante:
Complejo=(real, imaginario), real R imaginario
I
Operaciones:

Tipos de Datos Abstractos


TDA Complejo (Documento final)
Operacin: Complejo
Descripcin:
Construye un nmero complejo con base en un real real
y un
imaginario imaginario.
Descripcin operacional:
Complejo: R x I Complejo
Precondicin:
real R imaginario I
Poscondicin:
Complejo = (real, imaginario)

Tipos de Datos Abstractos


TDA Complejo (Documento final)
Operacin: Sumar
Descripcin:
Suma dos nmeros complejos.
Descripcin operacional:
sumar: Complejo x Complejo Complejo
Precondicin:
otro Complejo
Poscondicin:
sumar = (real + otro.real, imaginario +
otro.imaginario)

Tipos de Datos Abstractos


TDA Complejo (Documento final)
Operacin: ObtenerReal
Descripcin:
Retorna la parte real del nmero complejo.
Descripcin operacional:
obtenerReal: Complejo R
Precondicin:
Poscondicin:
obtenerReal = real

Tipos de Datos Abstractos

IMPLEMENTACION

Tipos de Datos Abstractos


public class Complejo{
double real;
double imaginario;
public Complejo(double r, double i)
{
real = r;
imaginario = i;
}

Tipos de Datos Abstractos

public Complejo sumar(Complejo C1, Complejo C2)


{
Complejo C3 = new Complejo(0,0);
C3.real = C1.real + C2.real;
C3.imaginario = C1.imaginario + C2.imaginario;
return C3;
}

Tipos de Datos Abstractos

public double obtenerReal(Complejo C1)


{
return C1.real;
}

Tipos de Datos Abstractos


USO

Tipos de Datos Abstractos


TDA RACIONAL
TDA
Racional
Descripcin:
El TDA Racional representa al concepto
matemtico de nmero racional, es decir, un
nmero que tiene un numerador y un
denominador, ambos valores deben ser de
tipo
entero.
Invariante:
Operaciones:

También podría gustarte