I think that one cannot expect the compiler to detect semantic errors.
As far as I can see it the initial object oriented model is unsound. Within the model 'BOY' and 'GIRL' are not valid substitutes for 'SKIER' since they fail to satify the Liskov substitution principle: http://en.wikipedia.org/w/index.php?title=Liskov_substitution_principle&oldid=484745299 Cheers, Famous
