module RoomModule;

export RoomDB;
export Room;
export Capacity;

object RoomDB is	
	components: Room*;	
	operations: addRoom, changeRoom, removeRoom;	
	description: (*			
		The RoomDB is the repository of Rooms	
									    <p>
         <a href="images/RoomUML.gif" target="new">UML diagram.</a>
	*);
end RoomDB;

object Room is 	
	components: 		
		Building and RoomNumber and capac:Capacity and RoomTime and Enhancements;		description: (*		
		A Room contains information about a particular room including its 						location, capacity and times when its availiable as well as what is						in the room.	
	*);
end Room;
object Building is integer;
object RoomNumber is integer;
object Capacity is integer;

object Enhancements is 	
	components: 		
		Lab and Multimedia and OS and Database and AI and Networks and Other;			description: (*		
		Enhancements are a collection of Hardware and software in the rooms		*);
end Enhancement;

object Lab is boolean;
object Multimedia is boolean;
object OS is boolean;
object Database is boolean;
object AI is boolean;
object Networks is boolean;

object Other is	
	components:		
		check and text;	
	description: (*		
		other is a check box that allows the user to enter add things not in the list	
	*);
end Other;

object check is boolean;
object text is string;

object RoomTime is      	
	components: 
		RoomDay and RoomTimes and RoomChoice;      	
	description: (*         
		A TimePref is a rating of a time, Choice, for a given Time and Day.      		*);
end RoomTime;

object RoomDay is string;
object RoomTimes is string;
object RoomChoice is boolean;	

operation AddRoom is 	
	inputs: Room, RoomDB;	
	outputs: RoomDB;	
	description: (*				AddRoom adds the particular Room to the Room database, 		
		producing an updated Room database	
	*);
end AddRoom;

operation RemoveRoom is 	
	inputs: Room, RoomDB;	
	outputs: RoomDB;	
	description: (*		
		RemoveRoom removes the particular Room to the Room database, 				producing an updated Room database	
	*);
end RemoveRoom;

object LocalRoom inherits from Room 	
	components: 		
		RoomUsed;		description: (*		
		A LocalRoom is all the things the room is and if it is being used.		*);
end LocalRoom;

object RoomUsed is boolean;

end RoomModule;