Right now I have enough to do. So far I've been putting all the map handling stuff into the Game class, so I'm starting work on a Map class. I also need to decide how the Viewport class is going to interface with the new Map class, if at all. I was thinking of passing the Viewport class a pointer to a Map object so the Viewport can return all of the visible objects too.
Drawing Class diagrams is your friend. It's a good way to write pseudo code when you don't feel like real work.
As a recommendation, I would have the Viewport class access the 'get visible objects(x1,x2,y1,y2) function and then parse it.
Should Viewport ever need access to things that aren't visible? (Also, GetVisible(5,5,4,4) is a good 'k' emulator) That way, the Viewport can manage all the LOS, lighting distance and special senses functions, but 'can I detect it' and 'is it visible' is still handled elsewhere.
Viewport should return a 2D array of references to the map tiles requested by it. It doesn't actually return visible/non-visible flags unless they are a part of the tile data. You can then pass the resultant array to a renderer, LOS calculator, fire spread calculation, or any other part of the program that needs a limited scope area {x1, y1, x2, y2} view of the map. The renderer would determine if the tile/creature was visible by the data contained in the tile it's processing at the time.
The player would reference a LOS method to get their view and pass it to the renderer. The LOS class will grab a limited view of the map... like so:
Player > LOSClass > Viewport > Map
player.setLocation(x, y);
myRenderEngine.render(player.getViewable());
As far as the whole "what has inventory?" question. IMHO, everything could have inventory capable of a specific number, weight or total volume of items. Worlds contain X number of regions, regions contain X number of districts, districts hold X number of maps, maps hold X number of tiles, tiles hold X number/volume of items/creatures, people can hold X number of items (weapons, armor, backpacks...) , items can contain X number of other items (gems, weapons, adornments...).
At least, that's what I'd do.