:- object(bounded_point,
	imports(bounded_coordinate),
	instantiates(class),
	specializes(point)).


	:- info([
		version is 1.1,
		date is 2000/10/31,
		authors is 'Paulo Moura',
		comment is 'Two dimensional point moving in a constrained area.',
		source is 'Example adopted from the SICStus Objects documentation.']).


	:- uses(list).


	move(X, Y) :-
		::check_bounds(x, X),
		::check_bounds(y, Y),
		^^move(X, Y).


	print :-
		::print_bounds(x),
		::print_bounds(y),
		^^print.


	instance_base_name(bp).


	default_init_option(bounds(x)-(-10, 10)).

	default_init_option(bounds(y)-(-10, 10)).

	default_init_option(Default) :-
		^^default_init_option(Default).


	process_init_option(bounds(Coordinate)-(Min, Max)) :-
		::set_bounds(Coordinate, Min, Max).

	process_init_option(Option) :-
		^^process_init_option(Option).


:- end_object.