Prolog - . - . - , . . , . , . (. 15). , , , . . - .
, Prolog, - , . , . area (), , , . object[ Object, Methods)
Object , (, , ), Methods Prolog, . Prolog, .. Prolog ( , ). Prolog , , rectangle [ Length, Width). 4 3
II. Prolog
rectanglet 4, 3). , rectangle { Length, Width] , area describe, :
object! rectangle! Length, Width),
[(area(A):-A is Length * Width),
(describe:-write('Rectangle of size '), write(Length * Width)> ]).
: send(Object, Message)
4 3 , :
|
|
?- Reel = rectangle; 4, 3}, send! Reel, describe), send! Reel, area(Area)). Rectangle of size 4*3 Area = 12
send{ Object, Message) . Object. Prolog, Object. , Message. , , Head: - Body Head , . Message, , Message, Prolog.
, - "isa" () . , "isa" . , , . area; . , square , .
object! sguare(Side), [ (describe:-
write! 'Square with, side '),
write(Side)) ]). isa(square(Side), rectangle[ Side, Side)).
:
?- send! square(5), area(Area)!. - 25
area{ Area) : area (Area) square (5), . isa - rectangle (5, 5). area, .
- , , , 23.5, 23,& - , .
23.
23.5. -
' 1 -
4 send; Message, Object)
Object ,
i Message
send; Object, Message):-
get_methods(Object, Methods), \ Object
process! Message, Methods). %
get_methods(Object, Methods!:-
object! Object, Methods!. %
get_methods(Object, Methods):-
isa(Object, SuperObject),
getjmethads! SuperObject, Methods). %
process! Message, [Message I _]). %
process [ Message, [ (Message:- Body) I _]):- % call(Body),
process! Message, [_ I Methods]}:-process! Message, Methods).