homeSoftwaredesign Softwaredesign: Modellierung von Adressen Prof. Dr. Uwe Schmidt FH Wedel

Modellierung von Adressen


weiter

Der 0. Versuch

   1module Adressen0
   2where
   3
   4-- Adressen modelliert mit Varianten (in Java: mit Vererebung)
   5
   6data Adresse0
   7    = Person { nname   :: String
   8             , vname   :: String
   9             , strasse :: String
  10             , ort     :: String
  11             }
  12    | Firma  { fnname  :: String
  13             , strasse :: String
  14             , ort     :: String
  15             }
  16    | PersonMitEmail
  17             { nname   :: String
  18             , vname   :: String
  19             , strasse :: String
  20             , ort     :: String
  21             , mail    :: String
  22             }
  23    | FirmaMitEmail
  24             { fnname  :: String
  25             , strasse :: String
  26             , ort     :: String
  27             , mail    :: String
  28             }
  29    | FirmaMitWeb
  30             { fnname  :: String
  31             , strasse :: String
  32             , ort     :: String
  33             , url     :: String
  34             }
  35    | FirmaMitEmailUndWeb
  36             { fnname  :: String
  37             , strasse :: String
  38             , ort     :: String
  39             , mail    :: String
  40             , url     :: String
  41             }
  42
  43-- Konsequezen, Vor- und Nachteile: ???
  44
weiter

weiter

Der 1. Versuch

   1module Adressen1
   2where
   3
   4-- Adressen modelliert mit Varianten und Rekursion (Dekorierer)
   5
   6data Adresse
   7    = OrtUndStrasse
   8             { strasse :: String
   9             , ort     :: String
  10             }
  11    | Person { nname   :: String
  12             , vname   :: String
  13             , rest    :: Adresse
  14             }
  15    | Firma  { fnname  :: String
  16             , rest    :: Adresse
  17             }
  18    | Email
  19             { mail    :: String
  20             , rest    :: Adresse
  21             }
  22    | Web
  23             { url     :: String
  24             , rest    :: Adresse
  25             }
  26
  27-- Konsequezen, Vor- und Nachteile: ???
  28
weiter

weiter

Der 2. Versuch

   1module Adressen2
   2where
   3
   4-- Adressen modelliert mit Varianten und Rekursion (Dekorierer)
   5-- und gleichfoermiger Behandlung aller Adresskomponenten
   6
   7data Adresse
   8    = LeereAdresse
   9    | Ort    { ort     :: String
  10             , rest    :: Adresse
  11             }
  12    | Strasse { strasse :: String
  13             , rest    :: Adresse
  14             }
  15    | VNname { vname   :: String
  16             , rest    :: Adresse
  17             }
  18    | NName  { nname   :: String
  19             , rest    :: Adresse
  20             }
  21    | Firma  { fnname  :: String
  22             , rest    :: Adresse
  23             }
  24    | Email  { mail    :: String
  25             , rest    :: Adresse
  26             }
  27    | Web    { url     :: String
  28             , rest    :: Adresse
  29             }
  30
  31-- Konsequezen, Vor- und Nachteile: ???
weiter

weiter

Der 3. Versuch

   1module Adressen3
   2where
   3
   4-- Adressen modelliert als Liste von Adressteilen
   5
   6type Adresse = [AdressTeil]
   7
   8data AdressTeil
   9    = Ort     { ort     :: String
  10              }
  11    | Strasse { strasse :: String
  12              }
  13    | VNname  { vname   :: String
  14              }
  15    | NName   { nname   :: String
  16              }
  17    | Firma   { fnname  :: String
  18              }
  19    | Email   { mail    :: String
  20              }
  21    | Web     { url     :: String
  22              }
  23
  24-- Konsequezen, Vor- und Nachteile: ???
weiter

weiter

Der 4. Versuch

   1module Adressen4
   2where
   3
   4-- Adressen modelliert als Liste von Paaren
   5
   6type Adresse = [AdressTeil]
   7
   8type AdressTeil = (AdressKomponente, String)
   9
  10data AdressKomponente
  11    = Ort
  12    | Strasse
  13    | VNname
  14    | NName
  15    | Firma
  16    | Email
  17    | Web
  18
  19-- Konsequezen, Vor- und Nachteile: ???
weiter

weiter

Der 5. Versuch

   1module Adressen5
   2where
   3
   4import Map
   5
   6-- Adressen modelliert als Tabelle
   7
   8type Adresse = Map AdressKomponente String
   9
  10data AdressKomponente
  11    = Ort
  12    | Strasse
  13    | VNname
  14    | NName
  15    | Firma
  16    | Email
  17    | Web
  18
  19-- Konsequezen, Vor- und Nachteile: ???
weiter

weiter

Der 6. Versuch

   1module Adressen6
   2where
   3
   4import Map
   5
   6-- Adressen modelliert als Tabelle
   7
   8type Adresse = Map AdressKomponente String
   9
  10type AdressKomponente = String
  11
  12-- Konsequezen, Vor- und Nachteile: ???
weiter

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