Buscar

09 - Polimorfismo, Classes e Instâncias

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Polimor'ismo,	
  Classes	
  e	
  Instâncias	
  
Renata	
  Carvalho	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Funções	
  Polimór'icas	
  
(==)	
  ::	
  t	
  -­‐>	
  t	
  -­‐>	
  Bool	
  
	
  
(<)	
  ::	
  t	
  -­‐>	
  t	
  -­‐>	
  Bool	
  
	
  
show	
  ::	
  t	
  -­‐>	
  String	
  
	
  
	
  
Funcionam	
  para	
  qualquer	
  Npo	
  de	
  dado?	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Funções	
  Monomór'icas	
  
•  Definição	
  funciona	
  apenas	
  para	
  um	
  Npo	
  de	
  
dados	
  específico	
  
capitalize	
  ::	
  Char	
  -­‐>	
  Char	
  
capitalize	
  ch	
  =	
  chr	
  (ord	
  ch	
  +	
  offset)	
  
	
  where	
  offset	
  =	
  ord	
  ‘A’	
  –	
  ord	
  ‘a’	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Polimor'ismo	
  
•  Função	
  possui	
  um	
  Npo	
  genérico	
  
•  Reuso	
  de	
  código	
  
•  Uso	
  de	
  variáveis	
  de	
  Npos	
  
•  Polimorfismo	
  Paramétrico	
  (como	
  generics	
  de	
  Java)	
  
•  Quando	
  os	
  Npos	
  dos	
  elementos	
  não	
  importam	
  
zip	
  ::	
  [t]	
  -­‐>	
  [u]	
  -­‐>	
  [(t,	
  u)]	
  
zip	
  (a:as)	
  (b:bs)	
  =	
  (a,b)	
  :	
  zip	
  as	
  bs	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Polimor'ismo	
  
length	
  []	
  =	
  0	
  
length	
  (a:as)	
  =	
  1	
  +	
  length	
  as	
  
	
  
rev	
  []	
  =	
  []	
  
rev	
  (a:as)	
  =	
  rev	
  as	
  ++	
  [a]	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Polimor'ismo	
  
rep	
  0	
  ch	
  =	
  []	
  
rep	
  n	
  ch	
  =	
  ch	
  :	
  rep	
  (n-­‐1)	
  ch	
  
•  GHCI:	
  inferência	
  de	
  Npos	
  
:type	
  rep	
  
Int	
  -­‐>	
  a	
  -­‐>	
  [a]	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Overloading	
  
•  A	
  função	
  pode	
  ser	
  usada	
  para	
  vários	
  (alguns)	
  
Npos	
  de	
  dados	
  
•  Mesmo	
  nome	
  de	
  função,	
  mas	
  definições	
  
disNntas	
  para	
  cada	
  Npo	
  
•  Polimorfismo	
  de	
  Sobrecarga	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Overloading	
  
•  Classe:	
  coleção	
  de	
  Npos	
  para	
  os	
  quais	
  uma	
  
função	
  está	
  definida	
  
•  O	
  conjunto	
  de	
  Npos	
  para	
  os	
  quais	
  (==)	
  está	
  
definida	
  é	
  a	
  classe	
  igualdade,	
  Eq	
   Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Classes	
  
•  Usadas	
  para	
  permiNr	
  sobrecarga	
  (overloading)	
  
de	
  nomes	
  
•  Operação	
  de	
  igualdade	
  ==	
  
•  Diferentes	
  significados	
  para	
  diferentes	
  Npos	
  
•  Exemplos:	
  
•  Eq	
  
•  Ord	
  
•  Show	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Instâncias	
  
•  Tipos	
  membros	
  de	
  uma	
  classe	
  
•  São	
  instâncias	
  de	
  Eq	
  
•  Int,	
  Float,	
  Char,	
  Bool,	
  [Int],	
  (Int,	
  Bool),	
  [[Char]],	
  	
  	
  
[(Int,	
  [Bool])]	
  
•  (Int	
  -­‐>	
  Int)	
  não	
  é	
  
•  Instâncias	
  são	
  TIPOS,	
  não	
  valores	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Funções	
  que	
  usam	
  igualdade	
  
allEqual	
  ::	
  Eq	
  t	
  =>	
  t	
  -­‐>	
  t	
  -­‐>	
  t	
  -­‐>	
  Bool	
  
allEqual	
  n	
  m	
  p	
  =	
  (n	
  ==	
  m)	
  &&	
  (m	
  ==	
  p)	
  
•  Contexto	
  
•  Definido	
  pela	
  parte	
  antes	
  do	
  operador	
  =>	
  
member	
  ::	
  Eq	
  t	
  =>	
  [t]	
  -­‐>	
  t	
  -­‐>	
  Bool	
  
member	
  []	
  b	
  =	
  False	
  
member	
  (a:as)	
  b	
  =	
  (a	
  ==	
  b)	
  ||	
  member	
  as	
  b	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Classes	
  Prede'inidas	
  
show	
  ::	
  Show	
  t	
  =>	
  t	
  -­‐>	
  String	
  
	
  
read	
  ::	
  Read	
  t	
  =>	
  String	
  -­‐>	
  t	
  
	
  
(+)	
  ::	
  Num	
  a	
  =>	
  a	
  -­‐>	
  a	
  -­‐>	
  a	
  
	
  
(>)	
  ::	
  Ord	
  a	
  =>	
  a	
  -­‐>	
  a	
  -­‐>	
  Bool	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Exercício	
  
•  Crie	
  uma	
  função	
  que	
  recebe	
  uma	
  lista	
  de	
  listas	
  de	
  
valores	
  de	
  um	
  Npo	
  t	
  que	
  podem	
  ser	
  comparados	
  
para	
  saber	
  se	
  são	
  iguais	
  e	
  devolve	
  uma	
  lista	
  de	
  
pares	
  (t,	
  Int)	
  onde	
  o	
  primeiro	
  elemento	
  é	
  um	
  valor	
  
do	
  Npo	
  t	
  que	
  existe	
  em	
  pelo	
  menos	
  umas	
  das	
  sub-­‐
listas	
  da	
  entrada	
  e	
  o	
  segundo	
  é	
  o	
  número	
  de	
  
ocorrências	
  desse	
  valor	
  nas	
  sub-­‐listas:	
  
>	
  agrupar
[“Renata”,	
  “Carvalho”]	
  
>	
  [(‘R’,	
  1),	
  (‘e’,	
  1),	
  (‘n’,	
  1),	
  (‘a’,	
  4),	
  (‘t’,	
  1),	
  (‘C’,	
  1),	
  (‘r’,	
  1),	
  (‘v’,	
  
1),	
  (‘l’,	
  1),	
  (‘h’,	
  1),	
  (‘o’,	
  1)]	
  
	
  
>	
  agrupar	
  [[4,2,4,3,4,4,4,5,4,6],	
  [1,2,3,4,5],	
  [2]]	
  
>	
  agrupar	
  [(4,	
  7),	
  (2,	
  3),	
  (3,	
  2),	
  (5,	
  2),	
  (6,	
  1),	
  (1,	
  1)]	
  
Funções	
  
Polimórficas	
  
Funções	
  
Monomórficas	
  
Polimorfismo	
  
Overloading	
  
Classes	
  
Instâncias	
  
Funções	
  que	
  
usam	
  
igualdade	
  
Classes	
  
Predefinidas	
  
Exercício

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando