users-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: instantiates & specializes keywords


From: Paulo Moura
Subject: Re: instantiates & specializes keywords
Date: Thu, 15 Jul 2004 23:10:23 +0100


On 15/jul/2004, at 21:48, Saurabh Bhatla wrote:

hi all,
can anybody please explain mean how instantiates and specializes work
in logtalk. I am getting a hard time understanding the semantics of
these two key words.

Logtalk objects encapsulate Prolog code. An object may be a stand-alone entity or be related to other objects. In object-oriented programming, there are two classes of systems: prototype-based systems and class-based systems. Logtalk supports both. In Logtalk, a hierarchy of prototypes is constructed using the "extends" relation. Class hierarchies use the "instantiates" and "specializes" relations. An "instantiates" relation means that an object is an instance of another object (it's class). A "specializes" relation means that an object (sub-class) is a specialization of another object (super-class). You may equate the notion of a class as corresponding to a set and the notion of instance as corresponding to an element of the set. These are basic notions of object-oriented programming which, as such, are explained on most books on the subject. These different relations ("extends", "instantiates", and "specializes") imply different forms of code reuse. This means that, when a message is sent to an object, the lookup for the corresponding predicate declaration (in order to check if the message is valid) and the lookup for the predicate definition (in order to answer the message) depends on the possible relations of the object receiving the message with other objects. In the case of a prototype hierarchy, both lookups start on the object itself and then continue on the "extended" objects. In the case of an instance, the lookup for the predicate declaration starts in the instance class(es) and then continue in the class(es) super-class(es). The lookup for the predicate definition starts in the instance itself and then continues in the instance class(es) and then the class(es) suuper-class(es). A stand-alone object (i.e. an object that is not related to other objects) is always interpreted as a prototype. Please take a look at the Logtalk examples; "shapes" is a good one to learn the differences between prototype hierarchies and class hierarchies.

    I know the questions are stupid but they are really confusing me.

There are no stupid questions when learning new subjects. Feel free to ask.

Please explain them in simple language and not the language used in user
manual.

Note that the Logtalk documentation assumes that the reader already knows the basics of object-oriented programming and Prolog programming.

Best regards,

Paulo


P.S. This question is more appropriated for the Logtalk mailing list than for the GNU Prolog one.

-----------------------------------------------------------
Paulo Jorge Lopes de Moura
Dep. of Informatics                   Office 4.3  Ext. 3257
University of Beira Interior          Phone: +351 275319700
6201-001 Covilhã                      Fax:   +351 275319891
Portugal

<mailto:address@hidden>
<http://www.di.ubi.pt/~pmoura>     <http://www.logtalk.org>
-----------------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]