I am working on an app for universities. The case is this:
Each university has several academic programmes. Each programme has many subjects (modules). Each subject can be offered in different locations. The academic year is split into terms and each term lasts for a number of weeks. Not all modules are offered in the same locations each term and programmes can be offered to different groups of students with different start dates within the same academic year.
For example, University A has a MBA programme offered in New York and London. The MBA has 2 modules per term (10 weeks) offered in both locations (Say MBA-NY and MBA-L). It is possible and based on demand, to have a third run of the programme (and therefore of the modules in this term) that starts a week later than the normal intake. So, there is another MBA-NY group but with different timeline. But, this group is, also, part of the same term in the MBA curriculum (that is, the two groups are doing Term 2 of MBA).
My question is how to model locations, academic terms and runs in OO design. Are location, academic terms (and perhaps "runs") properties of the university object or of the programme object? or of the module object?
Update: Based on your responses, my difficulty is to model the academic terms, the cohorts and the different timelines. It's not really the location as it looks straight forward to me. I just included it in the description to show you the connections.
Animal
instead ofLocation
? How would you classify things in general?