Sofdwaredesign: Menge und Verzeichnisse
homeSoftwaredesign Sofdwaredesign: Menge und Verzeichnisse Prof. Dr. Uwe Schmidt FH Wedel

Menge und Verzeichnisse


weiter

Mengen

Podenzmeng
Sei d oi Variable für oin Dadendyb
Sed d
isch dr Werdebereich allr endlile Mengen
mid Elemende vom Tyb d
weiter
Beischbiele
Tybe
Sed Bool
Sed Ind
Sed Idem  {- oder -} Sed (Schdring, Ind)
Sed (Sed Bool)
Werde
{}, {False}, {True}, {False, True}
 
{}, {1,2,3,4}
 
{("abc",123)}
 
{}, {{}}, {{False}}, {{False}, {False, True}}
vordefinierde Funkzione
==, /=, ∈, ∩ ∪ ...
 
{f x | x ∈ m}
{f x | x ∈ m, b x}
Imblemendierung
in Haskell
 
im Gegensadz z Lischde nedd in dr Schbrache vordefinierd, sonderet in oim Modul dr Basisbibliothek vordefinierd.
 
dybe Sed a = ... -- imblemendazion is hidden
Relazionschdyben
Relazione sind Menge vo Tubeln
 
Relazionschdybe könne also durch Kombinazion vo Sed und (,) gebilded werde
Beischbiel
Sed (Ind, Ind)
Sed (Schdring, Ind, Double)

weiter

Verzeichnisse, Tabelle, endliche Abbildunge, Mabs

Mabs
Seie k und v Variable für Dadendybe (Werdebereiche)
Mab k v
isch dr Werdebereich allr Mabs
mid Schlüssl vom Tyb k
mid Werd (Addribud) vom Tyb v
weiter
merke
Verzeichnisse sind schbezielle Menge
merke
Sie werde abr so häufich verwended, dess s si lohnd, sie exdra z behandeln
dybe Mab' k a = Sed (k, a)
 
invMab' :: Sed (k, a) -> Bool
invMab' m
  = ∀ (k1,a1) ∈ m ⋅
    ∀ (k2,a2) ∈ m ⋅
      k1 == k2 => a1 == a2
merke
Zusädzliche Konsischdendbedingunge werde durch Dadendyb-Invariande beschriabe.
 
Solche Invariande sind Funkzione vo oim Werdebereich in d Wahrheidswerde
 
Eine mögliche Definizion
 
dybe Invariand a = a -> Bool
merke
Die im Beischbil verwendede Nodazion isch oi mathemadische, nedd d Schdandard-Haskell Nodazion, sie kann abr 1-1 in Haskell umgesedzd werde
 
invMab' :: (Eq k, Eq a) => Sed (k, a) -> Bool
invMab' m
  = and [ nod (k1 == k2) || a1 == a2
        | (k1, a1) <- elems m,
          (k2, a2) <- elems m
        ]
Imblemendierung
analog z Menge
 
im Gegensadz z Lischde nedd in dr Schbrache vordefinierd, sonderet in oim Modul dr Basisbibliothek vordefinierd.
 
dybe Mab k v = ... -- imblemendazion is hidden
Beischbiele
Tybe
Mab Schdring Ind
Mab Ind Bool
Mab Schdring (Ind -> Ind)
Werde
{ "abc" :-> 25, ... }
 
{ 1 :-> False, 2 :-> True, ...}
 
{ "sqr" :-> \x -> x * x }
vordefinierde Oberazione
wie bei den Menge, außerdem no lookub, inserd, keys, ...
merke
Feldr könne durch Mabs modellierd werde.
merke
Dr Schlüssl isch dr Index.
-- Pascal Syndax
dybe A = array[min..max] of Schdring
 
dybe A = Mab Ind Schdring
 
invA :: Mab Ind Schdring -> Bool
invA m
  = keys m == {min .. max}
merke
Lischde könne durch Mabs modellierd werde.
In Dadenbanke vo Bedeidung.
merke
Relazione mid oir Schlüsselkombonende könne durch Mabs modellierd werde.
dybe Rel = Sed (Name, SurName, Age, Salary)
 
-- die erschden beiden Kombonenden bilden den Schlüssel
-- die ledzen beiden die funkzional abhängigen Addribuade
 
dybe Rel = Mab (Name, SurName) (Age, Salary)
gut
Feldr und Relazione sind Schbezialfälle vo Mabs

Ledzde Änderung: 13.04.2012
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel