47 lines
		
	
	
		
			817 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			817 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 
 | ||
|  | :- object(class, | ||
|  | 	instantiates(class), | ||
|  | 	specializes(abstract_class)). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	:- info([ | ||
|  | 		authors is 'Paulo Moura', | ||
|  | 		version is 1.0, | ||
|  | 		date is 2000/4/22, | ||
|  | 		comment is 'Instantiation root and default metaclass for all classes.']). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	:- public(new/1). | ||
|  | 	:- mode(new(+object), zero_or_one). | ||
|  | 
 | ||
|  | 	:- public(delete/1). | ||
|  | 	:- mode(delete(+object), zero_or_one). | ||
|  | 
 | ||
|  | 	:- public(instances/1). | ||
|  | 	:- mode(instances(-list), one). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	new(Object) :- | ||
|  | 		self(Self), | ||
|  | 		create_object(Object, [instantiates(Self)], [], []). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	delete(Object) :- | ||
|  | 		self(Self), | ||
|  | 		instantiates_class(Object, Self), | ||
|  | 		\+ instantiates_class(_, Object), | ||
|  | 		\+ specializes_class(_, Object), | ||
|  | 		abolish_object(Object). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	instances(Instances) :- | ||
|  | 		self(Self), | ||
|  | 		findall(Instance, instantiates_class(Instance, Self), Instances). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	abstract_class :- | ||
|  | 		fail. | ||
|  | 
 | ||
|  | 
 | ||
|  | :- end_object. |