Tema 7. El sistema de clases

´ Declarativa – Haskell – Informatica ´ Programacion Sistemas – Curso 2003-2004 ´ Pepe Gallardo – Universidad de Malaga Tema 7. El sistema de clases

1 downloads 106 Views 86KB Size

Recommend Stories


TEMA 7.- SISTEMA CARDIOVASCULAR
TEMA 7.- SISTEMA CARDIOVASCULAR La función principal del sistema cardiovascular es el transporte. Mediante la sangre como vehículo de transporte y los

TEMA 7 EL PROCEDIMIENTO ADMINISTRATIVO
TEMA 7 EL PROCEDIMIENTO ADMINISTRATIVO PROCEDIMIENTO ADMINISTRATIVO: PRINCIPIOS INFORMADORES. LAS FASES DEL PROCEDIMIENTO ADMINISTRATIVO: INICIACIÓN,

TEMA 7: EL ARTE ETRUSCO
TEMA 7: EL ARTE ETRUSCO - I Milenio a.C. en Italia: Nacimiento de la civilización villanoviana: Edad del hierro Itálica. - La cultura villanoviana se

Tema 7: El adjetivo calificativo
Tema 7: El adjetivo calificativo El adjetivo Tengo un coche moderno. Tengo un coche antiguo. Las palabras moderno y antiguo permiten distinguir dos co

TEMA 7 EL TEXTO NARRATIVO
TEMA 7 EL TEXTO NARRATIVO • Superestructura de la narración (van Dijk) ESTRUCTURA NARRATIVA HISTORIA   MORALEJA                      TRAMA       

Story Transcript

´ Declarativa – Haskell – Informatica ´ Programacion Sistemas – Curso 2003-2004 ´ Pepe Gallardo – Universidad de Malaga

Tema 7. El sistema de clases 7.1 Funciones Sobrecargadas Clases e Instancias 7.2 Algunas Clases e Instancias predefinidas La clase Eq La clase Ord Las clases Show y Read Las clases Num y Fractional 7.3 Instancias param´etricas 7.4 Derivaci´on de instancias 7.5 Tipos sobrecargados: Contextos

7.1 Funciones Sobrecargadas X Tienen sentido para algunos tipos, pero no todos X Pueden tener definiciones distintas para cada tipo Ejemplo: Consideremos los tipos

type Lado type Radio ´ type Area data Cuadrado data C´ırculo

= = = = =

Float Float Float UnCuadrado Lado deriving Show UnC´ırculo Radio deriving Show

´ para calcular el area ´ de un Cuadrado : Tiene sentido definir una funcion

´ ´a rea :: Cuadrado → Area ´a rea (UnCuadrado l ) = l ∗ l O para un C´ırculo :

´ ´a rea :: C´ırculo → Area ´a rea (UnC´ırculo r ) = pi ∗ r ∧ 2 ´ ¿ Es el tipo de ´ a rea :: a → Area ? ´ NO, no tiene sentido, p. ej., calcular el area de un Bool

´a rea tiene sentido para los tipos Cuadrado y C´ırculo , pero no para Bool , luego no ´ es polimorfica

´ ´ – Pepe Gallardo – Universidad de Malaga Informatica

7.1

Clases e Instancias X ´a rea tiene sentido para varios tipos pero NO para todos ´ DISTINTA para cada tipo X ´a rea tiene una definicion ´ Sobrecargada ´a rea es un ejemplo de funcion ´ sobrecargada hay que crear una clase (conjunto de En Haskell, para definir funcion ´ tipos que implementan la funcion):

´ class Tiene Area t where ´ ´a rea :: t → Area ´ X Tiene Area es el nombre de la clase (empieza por mayuscula) ´ X t es una variable de tipo que representa los tipos de la clase ´ X El metodo ´a rea solo estara´ definido para los t que pertenezcan a la clase Para incluir un tipo en una clase se realiza una instancia

´ instance Tiene Area Cuadrado where ´a rea (UnCuadrado l ) = l ∗ l ´ instance Tiene Area C´ırculo where ´a rea (UnC´ırculo r ) = pi ∗ r ∧ 2 Uso: ?´ a rea (UnCuadrado 3) ´ 9.0 :: Area ?´ a rea (UnC´ırculo 3) ´ 28.2743 :: Area ?´ a rea True ERROR ...

– – Se usa primera instancia

– – Se usa segunda instancia

– – No existe instancia adecuada

´ ´ – Pepe Gallardo – Universidad de Malaga Informatica

7.2

7.2 Algunas Clases e Instancias predefinidas X Haskell organiza los tipos predefinidos en clases de tipos. Clase: conjunto de tipos para los que tiene sentido una serie de operaciones sobrecargadas.

X Algunas de las clases predefinidas: ¦ Eq tipos que definen igualdad: ( == ) y ( /= ) ¦ Ord tipos que definen un orden: (

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.