- update fingerprint to: "81" + sha256("2016summerIII-ibarland") + "4" echo -n "2016summerIII-ibarland" | gpg --print-md sha256 | cut -c1-5 | echo 81 - 4 2016summerIII: 0x815F58D4 ...except that my solution also included some 0x81A605A4 2015fall: 0x814F8614 - change "format" to "number->string" - make into student-intermediate-level - in R0, swap the order of the 'add a binop' and 'add a ifZexpr' Make sure we have the funcs so we can write factorial and maybe 3n+1, later! - (ask for some sample R expressions earlier?) - change/combine "string->expr" to be "parse"? (w/ a comment) Substitutions: matey -> mates; '@' to '#' (except @author, @version, @see, @param, etc) blueroom: @William:
> to distinguish “has-a” from “uses” arrows, would all be nice features for a future version
>
Yes, this is all I'm saying.
Part of my course is teaching the Composite pattern, which means focusing on how BinExpr is-a Expr, but BinExpr also has-a Expr. So I want the students to be able to focus on that (with the appropriate amount of fear :-)
But just becase an Expr(ession) has one method (eval(uate)) which returns a Num(ber),
having ten arrows pointing to class Num aren't really that helpful.
(Certainly not the five emanating from the test-classes!)
So even though each class has a method that will return a Num,
and so it's true that each of those classes will need to call `new Num( .. )` correctly,
the arrows as shown overstate the case, and obscure the real architecture of the program.
[Consider somebody implementing an accounting system, and they have a class 'Amount'. That
class is likely used by many many others -- so there is coupling, but showing
every arrow for it arguably obscures the important relations.]
You're right, putting 'UtilIan' and 'Pair' in a nested package -- or really, an entirely separate package -- would be the proper (industrial) way. But of course I'm making compromises to keep things simpler for students, too.
Maybe part of the "problem" is BlueJ's success -- it's such a fantastic tool, esp. for beginning students,
that I start thinking about all sorts of other features which balance simplicity with expressiveness.
I don't mean to take BlueJ for granted, and only sound nagging in feature-requests.
I can't imagine using a different IDE in the classroom, and every time I use it I want
to give a big thanks to the BlueJ team. So:
**Thanks**!