Está en la página 1de 18

Vuela Tiene plumas Nada con fluidez Camina con torpeza Hace cuac, cuac

Qu cosa es?

Mi perro come El cndor vuela Las aves vuelan Los animales comen Mi perro vuela El pingino vuela x vuela

u es un Tipo?
Un conjunto de valores

+ una forma de representarlos computacionalmente


+ un conjunto de operaciones que se pueden
realizar sobre estos valores + propiedades que deben cumplir estas operaciones no siempre formalmente representables (ayuda, documentacin y otras herramientas en el IDE) debieran ser independientes de la representacin fsica Ejemplo: que en una fecha sean consistente el da y el mes

Todos los LPs manejan tipos

pos built-in
Todos los LPs manejan tipos
Tipos bsicos, integrados (built-in). float, int, long, bool, string en C#
Tienen una sintaxis para representar valores literalmente de manera directa "abc" , true , 23 , 14.55 , false Son los pilares de partida para construir nuevos tipos Suele haber operaciones en el LP para trabajar con ellos "abc" + "def", p && q 23*14.55, a<=b

pos built-in
Por lo general son simples (atmicos) y tienen una representacin directa en el hardware (enteros, float, bool en C#). Pero no necesariamente todos los built-in tienen que ser simples. Ejemplo COMPLEX en FORTRAN, string en C#

No necesariamente todo tipo simple tienen que ser built-in


enum Color {rojo, azul, blanco, verde, amarillo, naranja,

en C# los valores se representan por enteros pero salvo el bool no hay otros enum buil-in
morado}

nir nuevos tipos a partir de los built-in


Composicin o Producto cartesiano de tiposTuplas. Una instancia de un objeto en el modelo OO.
type circulo = record x,y:integer; radio: integer end Pascal typedef struct { int x; int y; int radio; } circulo C

Las operaciones (mtodos, funciones) que expresan la funcionalidad de estos tipos no estn sintcticamente integradas a estas formas de descripcin

cepto de objeto en la POO

Encapsula en una misma construccin sintctica la composicin de valores y las operaciones que el tipo ofrece
Encapsula en una misma definicin los tipos que lo componen y las funciones que ellos ofrecen

Peligros?

Si podemos interactuar directamente con los datos entonces para qu los mtodos

cepto de objeto en la POO

Encapsula en una misma construccin sintctica la composicin de valores y las operaciones que el tipo ofrece
Encapsula en una misma definicin los tipos que lo componen y las funciones que ellos ofrecen

Peligros?

Si podemos interactuar directamente con los datos entonces para qu los mtodos

Visibilidad

Si es privado entonces tampoco podemos ver el dato!

ropiedades

La puedo consultar

AZUCAR SINTCTICO
No la puedo cambiar!

Eiffel
En el lenguaje Eiffel las variables de instancia son pblicas by default pero solo en lectura (es decir se pueden ver pero no modificar) Eiffel presupone que si se quiere provocar un cambio en una variable de instancia esto debe hacerse a travs de un mtodo

Entonces no hacen falta propiedades a lo C#?

Abstraccin
El encapsulamiento en el paradigma OO para definir tipos es un gran paso en la abstraccin que unifica sintcticamente la definicin pero independiza al cdigo cliente de los aspectos internos de implementacin

La Separacin del Qu del Cmo Declaro lo Que ofrezco y No Cmo lo voy a implementar

CM O

QU

Abstraccin Acceder con la misma sintaxis a una "propiedad" del objeto


(dato) con independencia si est guardada en memoria o es computada
class Persona{ public string nombre; public int Edad; } class Persona{ string nombre; int Edad {get;} } class Persona{ string nombre; Fecha fechaNac; int Edad { get{ calcula la edad a partir de fechaNac } Persona x; ... x.Edad

Referencia Uniforme La forma en que se usa no depende de cmo se implementa. Un cambio en la implementacin no cambia el cdigo de los que la usan Cmo lo resolvera Eiffel?

rmas de tipado
Fuertemente tipado (strong typing)
No hay inconsistencias en el uso de los tipos, todas son detectadas

Estticamente tipado (static typing)


Los tipos y las inconsistencias son definidos y detectados estticamente (el concepto de tiempo de compilacin)

Dinmicamente tipado (dynamic typing)


Los tipos se pueden formar en tiempo de ejecucin. La ligadura con los tipos puede ocurrir dinmicamente en ejecucin Puedes querer que se sume i + 1 y el valor de i no sea
numrico? Puedes querer que se haga if cond . y el valor de cond no sea bool?

aracin de entidades
Con una declaracin a una entidad se le asocia un significado
Persona x; int k = 2;

Al conocerse el tipo se puede disponer de una herramienta como el Intellisense

erencia de Tipo
El tipo se infiere del contexto. Por ejemplo el tipo de una variable cuando aparece por primera vez en parte izquierda de una asignacin se puede inferir del tipo de la parte derecha Util para evitar tener que escribir el nombre del tipo O cuando no recordamos el nombre del tipo pero s sabemos el mtodo que queremos invocar

Pero no se puede usar si no es de acuerdo al tipo que tiene

s Annimos en C#
Se puede construir objetos sin explcitamente definir un tipo. Quien lo va a usar es el que tiene que saber lo que le interesa de ese objeto Tienen el mismo tipo annimo Lamentablemente no es posible

NO tienen el mismo tipo annimo

También podría gustarte