460 likes | 587 Views
EIFFEL TIME. K észítette: Árvai Mária Tünde fluke@inf.elte.hu people.inf.elte.hu / fluke/eiffel. abszolút (pl. "Mennyi az idő?") intervallum időtartam (az időintervallum hossza). 3 típus:. Abszolút. konstansok: TIME_VALUE DATE_VALUE DATE_TIME_VALUE. DATE TIME DATE_TIME.
E N D
EIFFELTIME Készítette: Árvai Mária Tünde fluke@inf.elte.hu people.inf.elte.hu/fluke/eiffel
abszolút (pl. "Mennyi az idő?") intervallum időtartam (az időintervallum hossza) 3 típus:
Abszolút konstansok: TIME_VALUE DATE_VALUE DATE_TIME_VALUE DATE TIME DATE_TIME DATE_DURATION TIME_DURATION DATE_TIME_DURATION
Származás COMPARABLE ABSOLUTE DATE, TIME, DATE_TIME
órák percek másodpercek TIME
make(h,m,s: INTEGER) make_now: a rendszeridő lekérdezése make_by_seconds(sec: INTEGER) TIME létrehozása
összehasonlítás: <,<=,>,>=,is_equal,= beállítás: set_hour(h: INTEGER)set_minute(m: INTEGER)set_second(s: INTEGER) TIME műveletei
összeadás:hour_add(h: INTEGER)minute_add(m: INTEGER)second_add(s: INTEGER) rákövetkező, megelőző:hour_forth,hour_backminute_forth,minute_backsecond_forth,second_back TIME műveletei
évek hónapok napokAz időszámítás kezdete: 01/01/1600 DATE
make(y,m,d: INTEGER)make_month_day_year (m,d,y: INTEGER)make_day_month_year (d,m,y: INTEGER) make_now: rendszerdátum make_by_days(n: INTEGER): az eltelt napok száma DATE létrehozása
összehasonlítás: <,<=,>,>=,is_equal,= beállítás: set_year(y: INTEGER)set_month(m: INTEGER)set_day(d: INTEGER)(korlátok: set_month_cut_days,set_year_cut_days) DATE műveletei
összeadás:year_add(y: INTEGER)month_add(m: INTEGER)day_add(d: INTEGER)(augusztus 31. + 1 hónap = szeptember 30.) rákövetkező, megelőző:year_forth,year_backmonth_forth,month_backday_forth,day_back DATE műveletei
make(y,mo,d,h,mi,s: INTEGER) make_now: rendszerdátum, rendszeridő make_by_date_time(d: DATE, t: TIME) make_by_date(d: DATE) DATE_TIME létrehozása
összehasonítható elemenként változtatható DATE_TIME műveletei
INTERVALLUM osztály Két ugyanolyan, ABSOLUTE-ból származó osztály példányával foglalkozik start_bound, end_bound Intervallum
Származás COMPARABLE ABSOLUTE INTERVALLUM
make(s,e: G) set_start_bound(s: G)set_end_bound(e: G) INTERVALLUM létrehozása
összehasonlítás:is_equal: értékeket és nem referenciákat<,<=,>,>=int1 < int2, ha int1 kezdete és vége szigorúan megelőzi int2-t INTERVALLUM műveletei
intersects: két intervallum metszete overlaps: van-e metszetükis_overlapped_by: az ellentéte meets, is_met_by: van-e közös határuk includes strict_includesis_included_by is_strict_included_by INTERVALLUM műveletei
empty: egyenlőek a határok adott elem kapcsolata az intervallummalhas(v: G)strict_before(v: G) strict_after(v: G)before(v: G)after(v: G) INTERVALLUM műveletei
union intersection gather: unió, de kell közös rész INTERVALLUM műveletei
DATE_DURATIONTIME_DURATION DATE_TIME_DURATIONosztályok Időtartam
Származás GROUP_ELEMENT PART_COMPARABLE DURATION DATE_DURATION TIME_DURATION DATE_TIME_DURATION
make(h,m,s: INTEGER) make_by_seconds(s: INTEGER) TIME_DURATION létrehozása
összehasonlítás: <,<=,>,>=,is_equal,=1:-40:0 < 0:0:1800 beállítás: set_hour(h: INTEGER)set_minute(m: INTEGER)set_second(s: INTEGER) TIME_DURATION műveletei
összeadás:hour_add(h: INTEGER)minute_add(m: INTEGER)second_add(s: INTEGER) +, - TIME_DURATION műveletei
konverzió: to_days25:70:600 => 1 (day)-23:-80:300 => 2 (day) time_modulo_day25:70:600 =>2:20:0-23:-80:300 => 23:45:0 TIME_DURATION műveletei
canonical pozitív: óra, perc, másodperc >= 0 perc, másodperc < 60 negatív: óra, perc, másodperc <= 0 perc, másodperc > -60 kanonikus TIME_DURATION
bonyolult két típus: definite és relative DATE_DURATION
definite = true év, hónap = 0 <=> definite definite DATE_DURATION
összehasonlítás: <,<=,>,>=,is_equal,=csak két definite hasonlítható össze, különben hamisat ad kanonikus definite definite DATE_DURATION műveletei
definite = false év, hónap, nap > 0 relative DATE_DURATION
nem összehasonlítható <, > mindig hamisat ad is_equal relative DATE_DURATION műveletei
canonical(date: DATE) 1 <= hónap <= 12, 1 <= nap <= 30 (28) nem mindig tudunk 30 napot 1 hónappá konvertálni 01/15 – 02/14: kanonikus, nem tudunk 04/15 – 05/15: nem kanonikus => 1 hónap pozitív, negatív lehet kanonikus relative DATE_DURATION
make(y,m,d: INTEGER)ha y=m=0, akkor definite make_by_days(n: INTEGER)definite DATE_DURATION létrehozása
összehasonlítás beállítás: set_date(y,m,d: INTEGER)set_year(y: INTEGER)set_month(m: INTEGER)set_day(d: INTEGER) DATE_DURATION műveletei
canonical(date: DATE) to_canonical kanonikus DATE_DURATION
definite és relative kanonikus és nem kanonikus DATE_TIME_DURATION
make(y,mo,d,h,mi,s: INTEGER) make_definite(d,h,m,s: INTEGER) make_by_date(d: DATE_DURATION)idő = 0.0.0 make_by_date_time (d: DATE_DURATION,t: TIME_DURATION) DATE_TIME_DURATIONlétrehozása
összehasonlítás: <,<=,>,>=,is_equal,=ha mindkettő definite, akkor a napok összehasonlíthatóak, különben hamisat ad beállítás: set_date(d: DATE_DURATION)set_time(t: TIME_DURATION) DATE_TIME_DURATIONműveletei
canonical to_canonical: csak ha mind a DATE, mind a TIME kanonikus time_to_canonical kanonikus DATE_TIME_DURATION
TIME_VALUE fine_second fractional_second Pontosság
létrehozás: make_fine(h,m: INTEGER, s: DOUBLE) make_by_fine_seconds(sec: INTEGER) beállítás: set_fine_second(s: DOUBLE) set_fractionals(f: DOUBLE) TIME, TIME_DURATION
fine műveletei fine_seconds_add(f: DOUBLE) canonical, to_canonical