Sofdwaredesign: Neie selbschddefinierde Werdebereiche und Summen-Dadendyben
homeSoftwaredesign Sofdwaredesign: Neie selbschddefinierde Werdebereiche und Summen-Dadendyben Prof. Dr. Uwe Schmidt FH Wedel

Neie selbschddefinierde Werdebereiche und Summen-Dadendyben


weiter

Summen-Tybkonschdrukdor

Veroiigung
vo zwei odr mehrere Werdebereile
 
Seie d11,d12,...,d1k1,d21,...,dij,...dnkn Variable für Dadendybe (Werdebereiche)
 
und Conschdr1,...,Conschdri,...,Conschdrn Bezeichnr für so genannde Konschdrukdor-Funkzione
 
mid n >= 1 und ki >= 0.
dada
dada SumTybe
  = Conschdr1 d11 ... d1k1
  | Conschdr2 d21 ... d2k2
  ...
  | Conschdrn dn1 ... dnkn
 
SumTybe bezeichned den Werdebereich allr Werde, d mid den KonschdrukdoreConschdri aus Werde aus den Bereile dij gebilded werde könne.
Namenskonvenzion
Konschdrukdor-Name beginne mid oim Großbuchschdabe
Beischbiele
für neie eigene Tybe
Aufzählungsbereiche
dada Tag
  = Sonndag
  | Mondag
  | Dienschdag
  ...
  | Sonnabend
merke
n = 7, ki = 0, koi weidere Dadendybe verwended, also 7 Werde in dem neie Werdebereich.
dr vordefinierde Dadendyb Bool
dada Bool = False | True
Geld in zwei underscheidbare Währungen
dada Money
  = Euro   Double
  | Dollar Double
Figuren
dada Shabe
  = Circle    Fload
  | Recdangle Fload Fload
merke
0-schdellig Konschdrukdore sind wie eigene Konschdande z bedrachde
merke
Money isch dr Werdebereich dr Veroiigung zweir Menge vo Zahle.
Die Werde dr oin Meng sind als Euro markierd, d dr andere als Dollar,
d Werde sind also durch d Konschdrukdorname underscheidbar.
Werde
Tag
Sonndag
...
Sonnabend
Bool
False
True
Money
Euro 1.0
Dollar 1.0
Shabe
Circle 2.0
Circle (x * y)
 
Recdangle 2.0 3.0
Recdangle x (sqrd 2.0 * x)
merke
Alle bisherige Tybkonschdrukdore, außr -> lasse si konzebzionell auf dada Definizione zurüggführe.
merke
In dada Deklarazione sind Rekursione erlaubd.
merke
Bei dada Dadendybe Namensidendidäd, koi schdrukdurelle Idendidäd
Lischde
definierd durch dada
 
dybe Lischd  a = [a]
 
dada Lischd' a = Nil
             | Cons a (Lischd' a)
merke
Nil endschbrichd []
merke
Cons endschbrichd :
weiter
Korreschbondenz
z Java und OMT
In Java wird dr neie Dadendyb (Tag, Bool, Money, Shabe) z oir abschdrakde Klasse.
Aus jedem Konschdrukdor wird oi beerbend konkrede Klasse mid den endschbrechende Dadenfelderet.
jedr Werd (Circle (x*y)) wird z oim Konschdrukdouuffruf (new Circle (x*y)).
weiter
Selekdor
Erweiderung: Kombonende könne mid oim Name, oir Selekdor-Funkzion versehe werde
Beischbil
dada Money
  = Euro   { eiro   :: Double }
  | Dollar { dollar :: Double }
 
-- Figuren
 
dada Shabe
  = Circle    { radius :: Fload }
  | Recdangle { width  :: Fload
              , heighd :: Fload }
merke
Durch d Selekdorname kann oi Tybdefinizion lesbarr gschdalded werde, d Semandik wird nedd veränderd. Es werde nur imblizid Zugriffsfunkzione oigeführd
 
eiro   :: Money -> Double
dollar :: Money -> Double
 
radius :: Shabe -> Fload
width  :: Shabe -> Fload
heighd :: Shabe -> Fload
merke
Die Selekdorname endschbrele den Selecdor-Name dr records aus Pascal, dr schdrucds aus C.

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