BETA - An Example (of Failure)
The BETA project started in 1976, briefly escaped into the real world and was quickly beaten to death only to have its corpse revived in academia. It's one of quite a few languages which seems destined to never catch on. It's kind of a shame as it's an interesting language, but I'm certainly in no position to change this and, in any event, am not certain I would want to.
Yesterday I posted an example of OO in BETA. Prior to that, I posted an interesting quote from the BETA researchers. In the quote, they talked about how BETA was for modelling and they didn't like inheritance for code reuse. BETA is all about modelling things properly. They talk about this a lot.
That's interesting because in yesterday's example, they have an employee pattern (class) which must have subpatterns (subclasses) for instantiation. Those subpatterns are "worker" and "salesman". That allows us to present a dilemma many OO design books include: what happens if you're a boss and one of your workers loves your products and wants to sell part-time to prove they can do it? Do you tell them "no" because your software won't model it? Of course not! You might tell them "no", but not because of software. The software is there for you, not the other way around (curiously, many businesses I've worked at seem to have overlooked this point).
So your challenge — the same one that many beginning OO design students pull their hair out over — is to decide how would you design employee objects which allow an employee to be both a worker and a salesman? Or a programmer and a manager? What about any arbitrary combinations?
Hint: roles make this much, much easier.