14.2 Slightly less Bad Example

You could decide to give a warior the number 0, a rogue 1 and a priest 2. This makes your code a lot easier.

 
class enemy { 
  int type = -1; 
  Rect r; 
 
5  void setType(int type) { 
    T.type = type; 
  } 
 
  void draw() { 
10    switch(type) { 
      case 0: Images(=== warriorImage ===).draw(r); break
      case 1: Images(=== rogueImage   ===).draw(r); break
      case 2: Images(=== priestImage  ===).draw(r); break
    } 
15  } 
}  

Although this is better than the first version, you will mess up sooner or later and use the wrong number somewhere. Or maybe you will use a number for which no class exists.