What oo/modelling books/articles do we recommend these days?
As I see Exercism students grapple with more realistic problems which are less algorithmic and more potentially OO (in this case - https://github.com/exercism/pharo-smalltalk/blob/master/dev/src/Exercism/Tou... <https://github.com/exercism/pharo-smalltalk/blob/master/dev/src/Exercism/Tou...> ), I am wondering what we point people towards to learn about OO, identifying objects and more importantly responsibilities these days? There is the early Beck CRC paper - but looking at it again, I wonder if its a bit cursory for people who missed the whole OO discovery years ago, and are now faced with competing advice on how to write good programs (much of which seems to eschew OO these days - rather unfairly I think). Any good references come to mind? As Iâll build up a list that I can point people to, that hopefully puts them in a better place to solve these more interesting and hopefully rewarding problems. Tim Sent from my iPhone
On Sun, 24 Mar 2019 at 21:26, Tim Mackinnon <tim@testit.works> wrote:
Any good references come to mind? As Iâll build up a list that I can point people to, that hopefully puts them in a better place to solve these more interesting and hopefully rewarding problems.
Since 2003 in one of my courses I've used Craig Larman's Applying UML and Patterns because it has an analysis approach (getting from a semi-complex problem to a working OO solution in iterations, with UML if you want). It's using the Point Of Sale (cash register) problem which is complex yet familiar enough for most people to grasp (no pun intended, GRASP are the patterns he pushes as underlying responsibility-driven principles). Otherwise, Cay Horstmann's 3rd edition of OO Design and Patterns (Java, but applies to any OO language) should be out soon (I provided feedback on a draft copy last year). It has some good coverage of OO qualities and also uses a realistic problem (Graphics Editing framework, Violet) as the basis of lots of examples.
Has anyone else got any thoughts? I checked out the Larman book - but it seems very process heavy (probably excellent for a full blown course), while Iâm looking for something a bit lighter weight to guide students on the right way of thinking/approaching the little problems in Exercism. Wasnât there something that encouraged you to underline the nouns and circle the verbs and then start to identify objects and responsibilities? Its that kind of thing I am starting to see as the weak point in people approaching problems. Tim
On 24 Mar 2019, at 22:47, Christopher Fuhrman <christopher.fuhrman@gmail.com> wrote:
On Sun, 24 Mar 2019 at 21:26, Tim Mackinnon <tim@testit.works> wrote: Any good references come to mind? As Iâll build up a list that I can point people to, that hopefully puts them in a better place to solve these more interesting and hopefully rewarding problems.
Since 2003 in one of my courses I've used Craig Larman's Applying UML and Patterns because it has an analysis approach (getting from a semi-complex problem to a working OO solution in iterations, with UML if you want). It's using the Point Of Sale (cash register) problem which is complex yet familiar enough for most people to grasp (no pun intended, GRASP are the patterns he pushes as underlying responsibility-driven principles).
Otherwise, Cay Horstmann's 3rd edition of OO Design and Patterns (Java, but applies to any OO language) should be out soon (I provided feedback on a draft copy last year). It has some good coverage of OO qualities and also uses a realistic problem (Graphics Editing framework, Violet) as the basis of lots of examples.
Looking a bit further - Chapter 3 of: http://sdmeta.gforge.inria.fr/FreeBooks/STandOO/Smalltalk-and-OO.pdf <http://sdmeta.gforge.inria.fr/FreeBooks/STandOO/Smalltalk-and-OO.pdf> (Smalltalk and Object Orientation - Hunt) gets me a bit closer, but still thinking Iâve seen better somewhere. Tim
On 26 Mar 2019, at 09:16, Tim Mackinnon <tim@testit.works> wrote:
Has anyone else got any thoughts? I checked out the Larman book - but it seems very process heavy (probably excellent for a full blown course), while Iâm looking for something a bit lighter weight to guide students on the right way of thinking/approaching the little problems in Exercism.
Wasnât there something that encouraged you to underline the nouns and circle the verbs and then start to identify objects and responsibilities? Its that kind of thing I am starting to see as the weak point in people approaching problems.
Tim
On 24 Mar 2019, at 22:47, Christopher Fuhrman <christopher.fuhrman@gmail.com <mailto:christopher.fuhrman@gmail.com>> wrote:
On Sun, 24 Mar 2019 at 21:26, Tim Mackinnon <tim@testit.works <mailto:tim@testit.works>> wrote: Any good references come to mind? As Iâll build up a list that I can point people to, that hopefully puts them in a better place to solve these more interesting and hopefully rewarding problems.
Since 2003 in one of my courses I've used Craig Larman's Applying UML and Patterns because it has an analysis approach (getting from a semi-complex problem to a working OO solution in iterations, with UML if you want). It's using the Point Of Sale (cash register) problem which is complex yet familiar enough for most people to grasp (no pun intended, GRASP are the patterns he pushes as underlying responsibility-driven principles).
Otherwise, Cay Horstmann's 3rd edition of OO Design and Patterns (Java, but applies to any OO language) should be out soon (I provided feedback on a draft copy last year). It has some good coverage of OO qualities and also uses a realistic problem (Graphics Editing framework, Violet) as the basis of lots of examples.
http://books.pharo.org/learning-oop/ ?
Le 26 mars 2019 à 11:09, Tim Mackinnon <tim@testit.works> a écrit :
Looking a bit further - Chapter 3 of: http://sdmeta.gforge.inria.fr/FreeBooks/STandOO/Smalltalk-and-OO.pdf <http://sdmeta.gforge.inria.fr/FreeBooks/STandOO/Smalltalk-and-OO.pdf> (Smalltalk and Object Orientation - Hunt) gets me a bit closer, but still thinking Iâve seen better somewhere.
Tim
On 26 Mar 2019, at 09:16, Tim Mackinnon <tim@testit.works <mailto:tim@testit.works>> wrote:
Has anyone else got any thoughts? I checked out the Larman book - but it seems very process heavy (probably excellent for a full blown course), while Iâm looking for something a bit lighter weight to guide students on the right way of thinking/approaching the little problems in Exercism.
Wasnât there something that encouraged you to underline the nouns and circle the verbs and then start to identify objects and responsibilities? Its that kind of thing I am starting to see as the weak point in people approaching problems.
Tim
On 24 Mar 2019, at 22:47, Christopher Fuhrman <christopher.fuhrman@gmail.com <mailto:christopher.fuhrman@gmail.com>> wrote:
On Sun, 24 Mar 2019 at 21:26, Tim Mackinnon <tim@testit.works <mailto:tim@testit.works>> wrote: Any good references come to mind? As Iâll build up a list that I can point people to, that hopefully puts them in a better place to solve these more interesting and hopefully rewarding problems.
Since 2003 in one of my courses I've used Craig Larman's Applying UML and Patterns because it has an analysis approach (getting from a semi-complex problem to a working OO solution in iterations, with UML if you want). It's using the Point Of Sale (cash register) problem which is complex yet familiar enough for most people to grasp (no pun intended, GRASP are the patterns he pushes as underlying responsibility-driven principles).
Otherwise, Cay Horstmann's 3rd edition of OO Design and Patterns (Java, but applies to any OO language) should be out soon (I provided feedback on a draft copy last year). It has some good coverage of OO qualities and also uses a realistic problem (Graphics Editing framework, Violet) as the basis of lots of examples.
Thanks, I looked at that one - the title is right, but itâs more a tutorial where you type in code and follow along (and nothing wrong with that) - but Iâm looking for something that teaches/helps you translate a problem domain into the sea of objects we are all accustomed to. And also gets to to the point quickly so that users can apply this to a problem they are trying to solve. Iâm now thinking that maybe Chapter 1 of http://sdmeta.gforge.inria.fr/FreeBooks/InsideST/InsideSmalltalk.pdf <http://sdmeta.gforge.inria.fr/FreeBooks/InsideST/InsideSmalltalk.pdf> is pretty good (using a video game). Tim
On 26 Mar 2019, at 10:44, Christophe Demarey <christophe.demarey@inria.fr> wrote:
http://books.pharo.org/learning-oop/ <http://books.pharo.org/learning-oop/> ?
Le 26 mars 2019 à 11:09, Tim Mackinnon <tim@testit.works <mailto:tim@testit.works>> a écrit :
Looking a bit further - Chapter 3 of: http://sdmeta.gforge.inria.fr/FreeBooks/STandOO/Smalltalk-and-OO.pdf <http://sdmeta.gforge.inria.fr/FreeBooks/STandOO/Smalltalk-and-OO.pdf> (Smalltalk and Object Orientation - Hunt) gets me a bit closer, but still thinking Iâve seen better somewhere.
Tim
On 26 Mar 2019, at 09:16, Tim Mackinnon <tim@testit.works <mailto:tim@testit.works>> wrote:
Has anyone else got any thoughts? I checked out the Larman book - but it seems very process heavy (probably excellent for a full blown course), while Iâm looking for something a bit lighter weight to guide students on the right way of thinking/approaching the little problems in Exercism.
Wasnât there something that encouraged you to underline the nouns and circle the verbs and then start to identify objects and responsibilities? Its that kind of thing I am starting to see as the weak point in people approaching problems.
Tim
On 24 Mar 2019, at 22:47, Christopher Fuhrman <christopher.fuhrman@gmail.com <mailto:christopher.fuhrman@gmail.com>> wrote:
On Sun, 24 Mar 2019 at 21:26, Tim Mackinnon <tim@testit.works <mailto:tim@testit.works>> wrote: Any good references come to mind? As Iâll build up a list that I can point people to, that hopefully puts them in a better place to solve these more interesting and hopefully rewarding problems.
Since 2003 in one of my courses I've used Craig Larman's Applying UML and Patterns because it has an analysis approach (getting from a semi-complex problem to a working OO solution in iterations, with UML if you want). It's using the Point Of Sale (cash register) problem which is complex yet familiar enough for most people to grasp (no pun intended, GRASP are the patterns he pushes as underlying responsibility-driven principles).
Otherwise, Cay Horstmann's 3rd edition of OO Design and Patterns (Java, but applies to any OO language) should be out soon (I provided feedback on a draft copy last year). It has some good coverage of OO qualities and also uses a realistic problem (Graphics Editing framework, Violet) as the basis of lots of examples.
On Tue, 26 Mar 2019 at 10:17, Tim Mackinnon <tim@testit.works> wrote:
Wasnât there something that encouraged you to underline the nouns and circle the verbs and then start to identify objects and responsibilities? Its that kind of thing I am starting to see as the weak point in people approaching problems.
That's the Booch method which Larman mentions as the noun-phrase identification (I actually learned that in 1986 in my first Ada course). See slide 22 or so at http://stg-tud.github.io/eise/WS11-EiSE-07-Domain_Modeling.pdf You could/should cherry-pick Larman's book (there's way too much there even for one course). There are all the references to Resp-Driven Design and even a lightweight "domain model" pattern (which doesn't have separate conceptual classes) from Fowler. https://martinfowler.com/eaaCatalog/domainModel.html In my courses I get a lot of mileage from just the two GRASP patterns (that come from Wirfs-Brock et al if I'm not mistaken): Information Expert <https://en.wikipedia.org/wiki/GRASP_(object-oriented_design)#Information_exp...> and Creator, but the latter is easier to apply if you have a domain model as a separate artifact. IMO the older approaches to OO design get in to trouble today especially when 1) most objects use composition (an not inheritance with polymorphism, although it's very powerful for extending programs) and 2) inheritance is hard to get right the first time (and is difficult to change). There's real power in refactoring to patterns (e.g., ) There's the CRC method that Horstmann presents, too (I think that's what Pharo even recommends in the Class Comment template). Booch and CRC are mentioned on this page: http://www.cs.fsu.edu/~myers/cop3331/notes/analysis1.html Finally - I'm not familiar with exercism exercises (I signed up but saw that smalltalk is still in alpha). Is there a sneak peak of an example exercise? Cris
Tim
On 24 Mar 2019, at 22:47, Christopher Fuhrman < christopher.fuhrman@gmail.com> wrote:
On Sun, 24 Mar 2019 at 21:26, Tim Mackinnon <tim@testit.works> wrote:
Any good references come to mind? As Iâll build up a list that I can point people to, that hopefully puts them in a better place to solve these more interesting and hopefully rewarding problems.
Since 2003 in one of my courses I've used Craig Larman's Applying UML and Patterns because it has an analysis approach (getting from a semi-complex problem to a working OO solution in iterations, with UML if you want). It's using the Point Of Sale (cash register) problem which is complex yet familiar enough for most people to grasp (no pun intended, GRASP are the patterns he pushes as underlying responsibility-driven principles).
Otherwise, Cay Horstmann's 3rd edition of OO Design and Patterns (Java, but applies to any OO language) should be out soon (I provided feedback on a draft copy last year). It has some good coverage of OO qualities and also uses a realistic problem (Graphics Editing framework, Violet) as the basis of lots of examples.
Actually - Iâve been making good progress on Exercism (with help from Ben and Sam) - we can almost come out of alpha (but just need more exercises converted - not sure exactly what the limit is, but 22 isnât quite enough). Iâm just tuning the tooling - and putting some bits in place so that its easier for others to help convert exercises - as well as some tools to help with mentoring (e.g. I can load snapshots of user submissions, but would love to figure out how to re-use our diff browser). Iâm hoping to get a bit of input at Pharo days, to just nail it. Anyway - if you want to try it - follow the instructions here: https://github.com/exercism/pharo-smalltalk <https://github.com/exercism/pharo-smalltalk> (the top section outlines how to setup, the bottom is for contributors - but best to have tried it out first before taking that plunge). The example that triggered this off was seeing some of the beta testers struggle with: https://github.com/exercism/pharo-smalltalk/blob/master/dev/src/Exercism/Tou... <https://github.com/exercism/pharo-smalltalk/blob/master/dev/src/Exercism/Tou...> - a rather innocuous exercise, but actually the first one that wasnât just an algorithmic several lines of code. Thanks for for everyoneâs input - I think Iâm getting some ideas for material to put into the site, and possibly something to add to the hints for that exercise. Tim
On 26 Mar 2019, at 14:20, Christopher Fuhrman <christopher.fuhrman@gmail.com> wrote:
Finally - I'm not familiar with exercism exercises (I signed up but saw that smalltalk is still in alpha). Is there a sneak peak of an example exercise?
Tim Mackinnon wrote
Has anyone else got any thoughts?
I think Dan North's Behavior Driven Development stuff is great and covers both OOP and TDD. The code is in Ruby, but the concepts IMHO are on the money. For me, the holy grail of OOP books is A Mentoring Course on Smalltalk, but I definitely wouldn't consider it "lightweight" ha ha. I'm sure there are others, but that's off the top of my head... ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Tim Mackinnon <tim@testit.works> wrote:
As I see Exercism students grapple with more realistic, I am wondering what we point people towards to learn about OO, identifying objects and more importantly responsibilities these days?
There is the early Beck CRC paper - but looking at it again, I wonder if its a bit cursory for people who missed the whole OO discovery years ago, and are now faced with competing advice on how to write good programs (much of which seems to eschew OO these days - rather unfairly I think).
Any good references come to mind? As Iâll build up a list that I can point people to, that hopefully puts them in a better place to solve these more interesting and hopefully rewarding problems.
Rebecca Wirfs-Brock and Alan McKean (2002) Object Design, Roles, Responsibilities, and Collaborations? Stephan
Thanks, I recall the Wires-Brock books been pretty good, its a shame you canât preview any of them (and mine are in a box in my attic somewhere). Unfortunately I canât imagine that students first staring out will want to invest - but maybe I can find something that might fill the gap leading to those. Tim
On 26 Mar 2019, at 11:06, Stephan Eggermont <stephan@stack.nl> wrote:
Tim Mackinnon <tim@testit.works> wrote:
As I see Exercism students grapple with more realistic, I am wondering what we point people towards to learn about OO, identifying objects and more importantly responsibilities these days?
There is the early Beck CRC paper - but looking at it again, I wonder if its a bit cursory for people who missed the whole OO discovery years ago, and are now faced with competing advice on how to write good programs (much of which seems to eschew OO these days - rather unfairly I think).
Any good references come to mind? As Iâll build up a list that I can point people to, that hopefully puts them in a better place to solve these more interesting and hopefully rewarding problems.
Rebecca Wirfs-Brock and Alan McKean (2002) Object Design, Roles, Responsibilities, and Collaborations?
Stephan
participants (5)
-
Christophe Demarey -
Christopher Fuhrman -
Sean P. DeNigris -
Stephan Eggermont -
Tim Mackinnon