I don't know how much programming experience you have, but I'll suggest that before you start planning out a city and filling it with things you try a single room. Then implement some of the things you'd like to simulate, like interacting with another person in the room. After that add a second room, and implement the features that multiple rooms would require, like the ability to move between them, update a room while the player is not there, etc.
It's amazing how many design steps you can miss when you start with content in a type of program you haven't written before. I've been amazed by it in my own projects.
If you are going to stick with the design as you've laid it out (and for all I know you already have all the details planned for how everything will fit together), it may be better to use a more general Location class as Dragoncar suggested. But your needs and style will inform the specific design approach you use, and there is always more than one way to accomplish a programming task. The right way is a way that works, and you can refine things after the basics are running.