Implementacja obiektu thermostatModel z przykładu Termostat w modelu MVC
:-object(thermostatModel, imports(properties)).
:-public(get_temp/4).
get_temp(Hour, Day, Month, T):-
checkDayTime(Hour),
season(S,Month),
checkWorkingTime(Day, Hour, O),
temperature(S, O, T),
write(T).
checkWorkingTime(Day, Hour, O):-
workday(Day),
Hour =< 17,
Hour >= 9,
operation(O,0).
checkWorkingTime(Day, Hour, O):-
workday(Day),
Hour < 9,
operation(O, 1).
checkWorkingTime(Day, Hour, O):-
workday(Day),
Hour > 17,
operation(O, 1).
checkWorkingTime(Day, _, O):-
\+ workday(Day),
weekday(_, Day),
operation(O, 1).
checkDayTime(Hour):-
Hour < 25,
Hour > 0.
operation(duringWorkingHours,0).
operation(notDuringWorkingHours, 1).
workday(Day):-
weekday(D, Day),
D \= sunday,
D \= saturday.
weekday(monday, 1).
weekday(tuesday, 2).
weekday(wednesday, 3).
weekday(thursday, 4).
weekday(friday, 5).
weekday(saturday, 6).
weekday(sunday, 7).
season(winter, 1).
season(winter, 2).
season(autumn, 3).
season(autumn, 4).
season(autumn, 5).
season(summer, 6).
season(summer, 7).
season(summer, 8).
season(spring, 9).
season(spring, 10).
season(spring, 11).
season(winter, 12).
temperature(winter, duringWorkingHours, T):-
T is 18,
write('18 degrees').
temperature(winter, notDuringWorkingHours, T):-
T is 14,
write('14 degress').
temperature(autumn, duringWorkingHours, T):-
T is 20,
write('20 degress').
temperature(autumn, notDuringWorkingHours, T):-
T is 16,
write('16 degress').
temperature(summer, duringWorkingHours, T):-
T is 24,
write('24 degress').
temperature(summer, notDuringWorkingHours, T):-
T is 27,
write('27 degress').
temperature(spring, duringWorkingHours, T):-
T is 20,
write('20 degress').
temperature(spring, notDuringWorkingHours, T):-
T is 15,
write('15 degress').
:-end_object.