Softwaredesign: Modellierung von Adressen |
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
|
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
|
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: ???
|
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: ???
|
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: ???
|
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: ???
|
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: ???
|
Letzte Änderung: 13.04.2012 | © Prof. Dr. Uwe Schmidt |