.


:




:

































 

 

 

 


-




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).





:


: 2015-10-01; !; : 374 |


:

:

! . .
==> ...

1508 - | 1306 -


© 2015-2024 lektsii.org - -

: 0.009 .