View raw

1 " 2 I represent a group of muscles in the human body. 3 " 4 Class { 5 #name : 'MFTMuscleGroup', 6 #superclass : 'MFTObject', 7 #instVars : [ 8 'englishName', 9 'frenchName', 10 'muscles' 11 ], 12 #category : 'MyFitnessTracker-Core-Anatomy', 13 #package : 'MyFitnessTracker-Core', 14 #tag : 'Anatomy' 15 } 16 17 { #category : 'instance creation' } 18 MFTMuscleGroup class >> abdominal [ 19 20 ^ self newWithEnglishName 21 muscles: { 22 MFTMuscle rectusAbdominis. 23 MFTMuscle obliquusExternusAbdominis. 24 MFTMuscle obliquusInternusAbdominis. 25 MFTMuscle transversusAbdominis }; 26 yourself 27 ] 28 29 { #category : 'instance creation' } 30 MFTMuscleGroup class >> arm [ 31 32 ^ self newWithEnglishName 33 muscles: { 34 MFTMuscle bicepsBrachii. 35 MFTMuscle tricepsBrachii }; 36 yourself 37 ] 38 39 { #category : 'instance creation' } 40 MFTMuscleGroup class >> back [ 41 42 ^ self newWithEnglishName 43 muscles: { 44 MFTMuscle latissimusDorsi. 45 MFTMuscle trapezius. 46 MFTMuscle erectorSpinae }; 47 yourself 48 ] 49 50 { #category : 'instance creation' } 51 MFTMuscleGroup class >> calf [ 52 53 ^ self newWithEnglishName 54 muscles: { 55 MFTMuscle gastrocnemius. 56 MFTMuscle soleus }; 57 yourself 58 ] 59 60 { #category : 'instance creation' } 61 MFTMuscleGroup class >> chest [ 62 63 ^ self newWithEnglishName 64 muscles: { 65 MFTMuscle pectoralisMajor. 66 MFTMuscle pectoralisMinor }; 67 yourself 68 ] 69 70 { #category : 'instance creation' } 71 MFTMuscleGroup class >> forearm [ 72 73 ^ self newWithEnglishName 74 muscles: { 75 MFTMuscle brachioRadialis. 76 MFTMuscle flexorCarpiRadialis. 77 MFTMuscle flexorCarpiUlnaris. 78 MFTMuscle extensorCarpiRadialisLongus. 79 MFTMuscle extensorCarpiRadialiasBrevis. 80 MFTMuscle extensorCarpiUlnaris }; 81 yourself 82 ] 83 84 { #category : 'instance creation' } 85 MFTMuscleGroup class >> hips [ 86 87 ^ self newWithEnglishName 88 muscles: { 89 MFTMuscle gluteusMaximus. 90 MFTMuscle gluteusMedius. 91 MFTMuscle gluteusMinimus }; 92 yourself 93 ] 94 95 { #category : 'instance creation' } 96 MFTMuscleGroup class >> leg [ 97 98 ^ self newWithEnglishName 99 muscles: { 100 MFTMuscle quadricepsFemoris. 101 MFTMuscle hamstring }; 102 yourself 103 ] 104 105 { #category : 'instance creation' } 106 MFTMuscleGroup class >> newWithEnglishName [ 107 "I return a MFTMuscle Group instance for which latinName is set to the calling method selector." 108 109 ^ self new 110 englishName: thisContext sender selector; 111 yourself 112 ] 113 114 { #category : 'instance creation' } 115 MFTMuscleGroup class >> shoulder [ 116 117 ^ self newWithEnglishName 118 muscles: { 119 MFTMuscle deltoidAnterior. 120 MFTMuscle deltoidMedial. 121 MFTMuscle deltoidPosterior. 122 MFTMuscle rotatorCuff }; 123 yourself 124 ] 125 126 { #category : 'comparing' } 127 MFTMuscleGroup >> = anObject [ 128 "Answer whether the receiver and anObject represent the same object." 129 130 self == anObject ifTrue: [ ^ true ]. 131 self class = anObject class ifFalse: [ ^ false ]. 132 ^ muscles asBag = anObject muscles asBag 133 ] 134 135 { #category : 'accessing' } 136 MFTMuscleGroup >> canonicalName [ 137 138 ^ englishName 139 ] 140 141 { #category : 'accessing' } 142 MFTMuscleGroup >> englishName [ 143 144 ^ englishName 145 ] 146 147 { #category : 'accessing' } 148 MFTMuscleGroup >> englishName: aString [ 149 150 englishName := aString 151 ] 152 153 { #category : 'accessing' } 154 MFTMuscleGroup >> frenchName [ 155 156 ^ frenchName 157 ] 158 159 { #category : 'accessing' } 160 MFTMuscleGroup >> frenchName: anObject [ 161 162 frenchName := anObject 163 ] 164 165 { #category : 'comparing' } 166 MFTMuscleGroup >> hash [ 167 "Answer an integer value that is related to the identity of the receiver." 168 169 ^ muscles asBag hash 170 ] 171 172 { #category : 'testing' } 173 MFTMuscleGroup >> includes: aMFTMuscle [ 174 175 ^ muscles includes: aMFTMuscle 176 ] 177 178 { #category : 'initialization' } 179 MFTMuscleGroup >> initialize [ 180 181 super initialize. 182 englishName := String new. 183 frenchName := String new. 184 muscles := OrderedCollection new 185 ] 186 187 { #category : 'accessing' } 188 MFTMuscleGroup >> muscles [ 189 190 ^ muscles 191 ] 192 193 { #category : 'accessing' } 194 MFTMuscleGroup >> muscles: aMFTMuscleCollection [ 195 196 muscles := aMFTMuscleCollection asOrderedCollection 197 ] 198