Home Segments Index Top Previous Next

455: Mainline

Using what you have learned previously from Segment 447 and Segment 450, you can write initializeFrom:, which initializes a Food instance (the receiver) with information from a file (the argument). The Food class is the same as that shown in Segment 232, except that an extra instance variable, name, is added.

Food class definition 
Object subclass: #Food 
  instanceVariableNames: 'name fCalories cCalories pCalories' 
  classVariableNames: '' 
  poolDictionaries: '' 
Food method definition • instance 
name ^ name. 
Food method definition • instance 
name: aString name:= aString. 
Food method definition • instance 
fCalories ^ fCalories 
Food method definition • instance 
fCalories: aNumber fCalories := aNumber 
Food method definition • instance 
cCalories ^ cCalories 
Food method definition • instance 
cCalories: aNumber cCalories := aNumber 
Food method definition • instance 
pCalories ^ pCalories 
Food method definition • instance 
pCalories: aNumber pCalories := aNumber 
Food method definition • instance 
initializeFrom: aFile 
  | inputStream | 
  inputStream := File pathName: aFile. 
  self name: inputStream nextWord. 
  self fCalories: inputStream nextWord asInteger. 
  self cCalories: inputStream nextWord asInteger. 
  self pCalories: inputStream nextWord asInteger. 
  inputStream close. 
  ^ self. 
Workspace
Test := (Food new initializeFrom: 'c:\test\vtbls.dta'). 
Transcript show: Test name printString; cr;  
           show: Test fCalories printString; cr;  
           show: Test pCalories printString; cr; 
           show: Test cCalories printString; cr. 
Transcript ***** Testing 
'Asparagus' 
3 
9 
16