Re: [Pharo-users] double dispatch example

2016-10-11 Thread stepharo

Tx todd

For me it was too complex.

I should check the book and andres and now I used the examples given my 
alex.




Le 10/10/16 à 09:24, Todd Blanchard a écrit :


On Sep 13, 2016, at 12:35, Denis Kudriashov > wrote:



2016-09-13 20:56 GMT+02:00 stepharo >:



I was thinking about the code in Pharo.



Probably most known and beautiful case is arithmetic operations. Look 
at #adaptToInteger:andSend: and friends.


That one is my go-to example to explain it.




Re: [Pharo-users] double dispatch example

2016-10-10 Thread Todd Blanchard

> On Sep 13, 2016, at 12:35, Denis Kudriashov  wrote:
> 
> 
> 2016-09-13 20:56 GMT+02:00 stepharo  >:
> 
> I was thinking about the code in Pharo.

> Probably most known and beautiful case is arithmetic operations. Look at 
> #adaptToInteger:andSend: and friends.

That one is my go-to example to explain it.

Re: [Pharo-users] double dispatch example

2016-09-29 Thread Peter H. Meadows via Pharo-users
--- Begin Message ---
On 13 September 2016 at 11:33, stepharo  wrote:
> Hi
>
> If you happen to know a double dispatch situation in Pharo, I'm interested
> since I'm revisiting my lecture.
>

There is a good example in
http://www.lulu.com/shop/andres-valloud/fundamentals-of-smalltalk-programming-technique-volume-1/paperback/product-5299835.html

He uses it in an implementation of Game Of Life.

>
> Stef
>
>

--- End Message ---


Re: [Pharo-users] double dispatch example

2016-09-15 Thread Alexandre Bergel
> I was thinking about the code in Pharo.
> 
> Plenty of examples:
>> - Converting money
> 
> can you tell me more about this one?

I mean summing and converting different money. Here is the whole idea:

1 EUR = 662 CLP (Chilean pesos)

You have a class Money to which you can sum other money. 

Object subclass: #Money instVarNames: ‘value’
“I omit here the accessors of value. Note that generating the accessors of 
value produces a method value1, you have to rename it"

Money>>+ anotherMoney
self subclassResponsibility

Money>>sumWithEUR: money
self subclassResponsibility

Money>>sumWithCLP: money
self subclassResponsibility

Money>>= anotherMoney
^ self class == anotherMoney class and: [ self value = anotherMoney 
value ]

Money >>printOn: str
"Useful for debugging"
super printOn: str.
str nextPut: $<.
str nextPutAll: self value asString.
str nextPut: $>.



You have two subclasses:
Money subclass: #EUR
Money subclass: #CLP

EUR>>+ anotherMoney
^ anotherMoney sumWithEUR: self

EUR>>sumWithEUR: money
^ EUR new value: self value + money value

EUR>>sumWithCLP: money
^ CLP new value: (self value * 662) + money value


CLP>>+ anotherMoney
^ anotherMoney sumWithCLP: self

CLP>>sumWithEUR: money
^ EUR new value: (self value / 662) + money value

CLP>>sumWithCLP: money
^ CLP new value: self value + money value


Here is a test:
TestCase subclass: #MoneyTest

MoneyTest>>testSum
| clp1 eur1 clp2 eur2 |
clp1 := CLP new value: 3500.
eur1 := EUR new value: 10.
clp2 := CLP new value: 5000.
eur2 := EUR new value: 20.

self assert: clp1 + clp2 equals: (CLP new value: 8500).
self assert: clp1 + eur1 equals: (CLP new value: 3500 + 6620).

self assert: eur1 + eur2 equals: (EUR new value: 30).
self assert: eur1 + clp2 equals: (EUR new value: 5000 / 662 + 10).


To be really complete, the example also needs to implement hash and the test 
should also test equality.
I hope it helps!

Cheers,
Alexandre

> 
>> - Paper, Stone, Scissor
>> - A canvas containing triangle, circle, box has to be printed, on an html 
>> canvas or PDF. (Very close to the Visitor design pattern, but simpler)
>> 
>> Here are the lectures I use:
>> https://dl.dropboxusercontent.com/u/31543901/TMP/DoubleDispatch.zip
> 
> TX
> here is what I wrote today
> 
> 
> 
>> 
>> (One of them is highly inspired from a lecture from Oscar)
> 
> I will have a look now
>> 
>> Hope it helps!
>> 
>> Cheers,
>> Alexandre
>> 
>>> On Sep 13, 2016, at 7:33 AM, stepharo  wrote:
>>> 
>>> Hi
>>> 
>>> If you happen to know a double dispatch situation in Pharo, I'm interested 
>>> since I'm revisiting my lecture.
>>> 
>>> 
>>> Stef
>>> 
>>> 
>> 
>> 
> 
> 




Re: [Pharo-users] double dispatch example

2016-09-14 Thread Ben Coman
http://lists.pharo.org/mailman/listinfo/pharo-users_lists.pharo.org

On Thu, Sep 15, 2016 at 10:04 AM, Melanie Tarr  wrote:
> Can someone please tell me how to unsubscribe from this list,
>
> Kind Regards
> Melanie
>
> On Tue, Sep 13, 2016 at 10:16 PM, Alexandre Bergel 
> wrote:
>>
>> Hi Stef!
>>
>> Plenty of examples:
>>
>> - Converting money
>> - Paper, Stone, Scissor
>> - A canvas containing triangle, circle, box has to be printed, on an html
>> canvas or PDF. (Very close to the Visitor design pattern, but simpler)
>>
>> Here are the lectures I use:
>> https://dl.dropboxusercontent.com/u/31543901/TMP/DoubleDispatch.zip
>>
>> (One of them is highly inspired from a lecture from Oscar)
>>
>> Hope it helps!
>>
>> Cheers,
>> Alexandre
>>
>> > On Sep 13, 2016, at 7:33 AM, stepharo  wrote:
>> >
>> > Hi
>> >
>> > If you happen to know a double dispatch situation in Pharo, I'm
>> > interested since I'm revisiting my lecture.
>> >
>> >
>> > Stef
>> >
>> >
>>
>>
>



Re: [Pharo-users] double dispatch example

2016-09-14 Thread Melanie Tarr
Can someone please tell me how to unsubscribe from this list,

Kind Regards
Melanie

On Tue, Sep 13, 2016 at 10:16 PM, Alexandre Bergel 
wrote:

> Hi Stef!
>
> Plenty of examples:
>
> - Converting money
> - Paper, Stone, Scissor
> - A canvas containing triangle, circle, box has to be printed, on an html
> canvas or PDF. (Very close to the Visitor design pattern, but simpler)
>
> Here are the lectures I use:
> https://dl.dropboxusercontent.com/u/31543901/TMP/DoubleDispatch.zip
>
> (One of them is highly inspired from a lecture from Oscar)
>
> Hope it helps!
>
> Cheers,
> Alexandre
>
> > On Sep 13, 2016, at 7:33 AM, stepharo  wrote:
> >
> > Hi
> >
> > If you happen to know a double dispatch situation in Pharo, I'm
> interested since I'm revisiting my lecture.
> >
> >
> > Stef
> >
> >
>
>
>


Re: [Pharo-users] double dispatch example

2016-09-13 Thread Denis Kudriashov
2016-09-13 20:56 GMT+02:00 stepharo :

>
> I was thinking about the code in Pharo.
>
> Plenty of examples:
>
>> - Converting money
>>
>
> can you tell me more about this one?


Probably most known and beautiful case is arithmetic operations. Look at
#adaptToInteger:andSend: and friends.


Re: [Pharo-users] double dispatch example

2016-09-13 Thread Alexandre Bergel
Hi Stef!

Plenty of examples:

- Converting money
- Paper, Stone, Scissor
- A canvas containing triangle, circle, box has to be printed, on an html 
canvas or PDF. (Very close to the Visitor design pattern, but simpler)

Here are the lectures I use:
https://dl.dropboxusercontent.com/u/31543901/TMP/DoubleDispatch.zip

(One of them is highly inspired from a lecture from Oscar)

Hope it helps!

Cheers,
Alexandre

> On Sep 13, 2016, at 7:33 AM, stepharo  wrote:
> 
> Hi
> 
> If you happen to know a double dispatch situation in Pharo, I'm interested 
> since I'm revisiting my lecture.
> 
> 
> Stef
> 
> 




[Pharo-users] double dispatch example

2016-09-13 Thread stepharo

Hi

If you happen to know a double dispatch situation in Pharo, I'm 
interested since I'm revisiting my lecture.



Stef