Logtalk reference manual
Built-in predicate: create_object/4

create_object/4

Description

create_object(Identifier, Relations, Directives, Clauses)

Creates a new, dynamic object. The word object is used here as a generic term. This predicate can be used to create new prototypes, instances, and classes. This predicate is often used as a primitive to implement object creation methods.

Template and modes

create_object(+object_identifier, +list, +list, +list)

Errors

One of the predicate arguments is a variable:
instantiation_error
Identifier is not a valid object identifier:
type_error(object_identifier, Identifier)
Identifier is already in use:
permission_error(replace, category, Identifier)
permission_error(replace, object, Identifier)
permission_error(replace, protocol, Identifier)
Relations is neither a variable nor a proper list:
type_error(list, Relations)
Directives is neither a variable nor a proper list:
type_error(list, Directives)
Clauses is neither a variable nor a proper list:
type_error(list, Clauses)

Examples

Creating a simple, stand-alone object (a prototype):
| ?- create_object(translator, [], [public(int/2)], [int(0, zero)]).
Creating a new prototype derived from a parent prototype:
| ?- create_object(mickey, [extends(mouse)], [public(alias/1)], [alias(mortimer)]).
Creating a new class instance:
| ?- create_object(p1, [instantiates(person)], [], [name('Paulo Moura'), age(42)]).
Creating a new class as a specialization of another class:
| ?- create_object(hovercraft, [specializes(vehicle)], [propeller/2, fan/2], []).