How to override equality method in Smalltalk?

Viewed 1226

I'm reading a book on Smalltalk and I have an exercise about the anomaly of disappearing element I'm not able to solve.

Object subclass: Book [
    | isbn |
    <comment: 'A book class'>

    setIsbn: anIsbn [
        isbn := anIsbn.
    ]

    getIsbn [
        ^isbn.
    ]

    = anotherBook [
        ^self getIsbn = anotherBook getIsbn.
    ]
]

| Library |

Library := Set new: 100.
Library add: (Book new setIsbn: '0-671-2-158-1').
(Library includes: (Book new setIsbn: '0-671-2-158-1')) printNl.

I read I have to override the hash method too, but I don't know how to do it. How do I amend the Book class in order to avoid the anomaly?

3 Answers
Related