The tricky part of the Ocean class was defining what was food or not. In reality, that wasn't too hard.
Object subclass: #Ocean instanceVariableNames: 'occupants ' classVariableNames: '' poolDictionaries: '' category: 'FishWorld' Ocean methodsFor: 'initialization' initialize occupants := OrderedCollection new. Ocean methodsFor: 'food processing' isFood: food at: anX at: anY "Check all food's locations. If find one at same place, return it. Otherwise, return nil." food do: [:aLife | ((aLife positionX = anX) and: [aLife positionY = anY]) ifTrue: [^aLife]]. ^nil. Ocean methodsFor: 'connections' addToOcean: aLife occupants add: aLife. removeFromOcean: aLife occupants remove: aLife ifAbsent: [].