[Pharo] Personal fitness tracker web app.
Introduce equality predicates.
Changed files
src/MyFitnessTracker-Core/MFTEquipment.class.st
@@ -49,6 +49,15 @@
49
49
^ self newWithEnglishName
50
50
]
51
51
52
Added:
{ #category : 'comparing' }
53
Added:
MFTEquipment >> = anObject [
54
Added:
"Answer whether the receiver and anObject represent the same object."
55
Added:
56
Added:
self == anObject ifTrue: [ ^ true ].
57
Added:
self class = anObject class ifFalse: [ ^ false ].
58
Added:
^ englishName = anObject canonicalName
59
Added:
]
60
Added:
52
61
{ #category : 'initialization' }
53
62
MFTEquipment >> canonicalName [
54
63
@@ -65,4 +74,11 @@
65
74
MFTEquipment >> englishName: aString [
66
75
67
76
englishName := aString
77
Added:
]
78
Added:
79
Added:
{ #category : 'comparing' }
80
Added:
MFTEquipment >> hash [
81
Added:
"Answer an integer value that is related to the identity of the receiver."
82
Added:
83
Added:
^ englishName hash
68
84
]
src/MyFitnessTracker-Core/MFTExercise.class.st
@@ -207,6 +207,16 @@
207
207
^ self newWithEnglishName
208
208
]
209
209
210
Added:
{ #category : 'comparing' }
211
Added:
MFTExercise >> = anObject [
212
Added:
"Answer whether the receiver and anObject represent the same object."
213
Added:
214
Added:
self == anObject ifTrue: [ ^ true ].
215
Added:
self class = anObject class ifFalse: [ ^ false ].
216
Added:
^ equipment = anObject equipment and: [
217
Added:
englishName = anObject englishName ]
218
Added:
]
219
Added:
210
220
{ #category : 'accessing' }
211
221
MFTExercise >> activates: aMFTMuscleGroup [
212
222
@@ -259,6 +269,13 @@
259
269
MFTExercise >> frenchName: aString [
260
270
261
271
frenchName := aString
272
Added:
]
273
Added:
274
Added:
{ #category : 'comparing' }
275
Added:
MFTExercise >> hash [
276
Added:
"Answer an integer value that is related to the identity of the receiver."
277
Added:
278
Added:
^ equipment hash bitXor: englishName hash
262
279
]
263
280
264
281
{ #category : 'initialization' }
src/MyFitnessTracker-Core/MFTRepScheme.class.st
@@ -22,10 +22,26 @@
22
22
yourself
23
23
]
24
24
25
Added:
{ #category : 'comparing' }
26
Added:
MFTRepScheme >> = anObject [
27
Added:
"Answer whether the receiver and anObject represent the same object."
28
Added:
29
Added:
self == anObject ifTrue: [ ^ true ].
30
Added:
self class = anObject class ifFalse: [ ^ false ].
31
Added:
^ minReps = anObject minReps and: [ maxReps = anObject maxReps ]
32
Added:
]
33
Added:
25
34
{ #category : 'initialization' }
26
35
MFTRepScheme >> canonicalName [
27
36
28
37
^ minReps asString , '–' , maxReps asString
38
Added:
]
39
Added:
40
Added:
{ #category : 'comparing' }
41
Added:
MFTRepScheme >> hash [
42
Added:
"Answer an integer value that is related to the identity of the receiver."
43
Added:
44
Added:
^ minReps hash bitXor: maxReps hash
29
45
]
30
46
31
47
{ #category : 'testing' }
src/MyFitnessTracker-Core/MFTSetPrescription.class.st
@@ -30,6 +30,15 @@
30
30
yourself
31
31
]
32
32
33
Added:
{ #category : 'comparing' }
34
Added:
MFTSetPrescription >> = anObject [
35
Added:
"Answer whether the receiver and anObject represent the same object."
36
Added:
37
Added:
self == anObject ifTrue: [ ^ true ].
38
Added:
self class = anObject class ifFalse: [ ^ false ].
39
Added:
^ repScheme = anObject repScheme and: [ exercise = anObject exercise ]
40
Added:
]
41
Added:
33
42
{ #category : 'initialization' }
34
43
MFTSetPrescription >> canonicalName [
35
44
@@ -46,6 +55,13 @@
46
55
MFTSetPrescription >> exercise: aMFTExercise [
47
56
48
57
exercise := aMFTExercise
58
Added:
]
59
Added:
60
Added:
{ #category : 'comparing' }
61
Added:
MFTSetPrescription >> hash [
62
Added:
"Answer an integer value that is related to the identity of the receiver."
63
Added:
64
Added:
^ repScheme hash bitXor: exercise hash
49
65
]
50
66
51
67
{ #category : 'as yet unclassified' }