tx for the feedback!
On Mon, Sep 11, 2017 at 1:18 PM, H. Hirzel <hannes.hir...@gmail.com> wrote: > Hello Stephane > > I like the emphasis of the chapter that implementing same selector > several times at the proper place in a couple of classes is more > important than to rely on inheritance. > > In particular the conclusion > > <citation> > What is important to realise is that classes are cheap. It is better > to write 5 little classes than a huge one. Some (even smart) people > got confused by measuring complexity of a system using number of > classes. Having many classes representing good abstractions with a > single responsibility is much much better than having a single class > exhibiting multiple responsibilities. > </citation> > > Suggestion: put it into a 'Note' box. > > > > > > And replace > > 'got confused' > > with: > > 'get confused' > > > > > > > > Replace: > > Now the choices can be made over multiple tenth of classes. > > 'multiple tenth' is an uncommon expression > > Suggestion: > Now the choices can be made over dozens of classes. > > > > > > > However > 'Sending a message is making a choice!' > takes the view point of the mechanism which does the late binding. > > If I write > > aNode emitHTML: aStream > > I do not make the choice. There are different types of nodes and they > all do the same in the sense that they produce HTML code. > > In any case to drive the point home more examples are needed. > > The Boolean example is the minimal example and as such is interesting. > But it is a borderline case which just illustrates that Smalltalk goes > a long way to implement the object and message pattern consistently. > > The Pillar example is fine but too terse. > For people who already understand the issue just a reference is fine. > But for people new to the concept of replacing a case statement with a > class hierarchy it is too short. > > Elaborate! > > > E.g. have a diagram for a subset of the hierarchy > > PRObject #(''properties'') > PRDocumentItem #(''counter'') > PRDocumentGroup #(''children'') > PRDocument #() > PRHeader #(''level'') > PRList #() > PROrderedList #() > PRUnorderedList #() > PRParagraph #() > PRReference #(''reference'' ''parameters'') > PRFigure #() > PRSlide #(''title'' ''label'') > PRText #(''text'')' > > And show all the emitHTML: messages. > > > And go for a third example, e.g. from Morphic or Bloc > > > position: > extent: > color: > owner: > submorphs: > drawOn: aCanvas > > > Meaning of last sentence is not clear. > > <citation> > Remember that when we execute a method (and also write it), one key > information we get is that the receiver from this class or one of its > subclasses as we will later. > <citation> > > > Regards > > Hannes > > On 9/11/17, Ricardo Pacheco <ricardo.pacheco.rol...@gmail.com> wrote: >> Looks Great, congratulations!! I just read it and has a couple of mistakes >> in the first figures. The return value of the false (2.3, 2.4). >> >> Regards >> Ricardo >> >> El sept. 11, 2017 12:12 AM, "Stephane Ducasse" <stepharo.s...@gmail.com> >> escribió: >> >> Hi >> >> after this crazy esug I took a long bus and I wrote one missing >> chapter for the forhtcoming bus. >> I plan to have a first full version for 1 of October :) >> >> I reorganised and massively clean the book contents. >> >> Comments are welcome in any form. >> >> Stef >> >> https://github.com/SquareBracketAssociates/LearningOOPWithPharo >> >