Frogs design

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
 
(22 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
'''An OO model of frogs.''' This beautiful design appeared in the 2004 427 exam.
 
'''An OO model of frogs.''' This beautiful design appeared in the 2004 427 exam.
  
[[image:frogs.gif|900px]]
+
[[image:frogs.gif]]
  
 
== Design notes ==
 
== Design notes ==
Line 12: Line 12:
 
* ''Toad''s eat ''AdultFrogs''.
 
* ''Toad''s eat ''AdultFrogs''.
  
== Broken heuristics ==
+
== Criticisms ==
  
* [[Avoid becomes]] - ''Frog'' phases of life are modeled by inheritance: ''Egg'' ''Tadpole'', ''AdultFrog''.
+
* [[2009 frog design criticisms]]
* [[Beware type switches]] - the ''phase'' variable in ''Frog'' is based on the type of an object (''Frog'').
+
* [[Beware value switches]] - the ''swim()'' method in ''Tadpole'' differs in behavior based on the value of an attribute (''type'').
+
* [[Avoid no-op overrides]] ("Design by Contract") - the derived class ''Egg'' overrides the base class's ''hop()'' and ''swim()'' methods with methods which does nothing.
+
* [[One key abstraction]] - the ''Move'' interface contains more than one key abstraction. It contains methods to move such as ''hop()'' and ''swim()'', but it also contains a ''display()'' method which is a separate key abstraction.
+
  
== "Feels Bad" ==
+
* [[2010 frog design criticisms]]
 
+
* ''Toad'' is a subclass of ''AdultFrog''.
+
* ''FrogBrain'' contains an array of ''Egg''.
+
 
+
:''Why do these things feel bad? --[[User:Warwick Irwin|Wal]]''
+
 
+
== Go export yourself ==
+
 
+
Should a ''Frog'' be able to export itself?
+
 
+
[[image:frog.jpg]]
+

Latest revision as of 04:31, 15 July 2010

An OO model of frogs. This beautiful design appeared in the 2004 427 exam.

Frogs.gif

Design notes

  • This design models the lifecycles of Frogs.
  • A Frog begins life as an Egg, grows into a Tadpole and then an AdultFrog.
  • A FrogBrain belongs to a Frog and manages its behaviour.
  • There is one Biologist, Igor, who sometimes moves Frogs around. Igor has been known to fry their legs in white wine.
  • Toads don’t have the same lifecycle as Frogs, but they look and act a lot like Frogs.
  • Toads eat AdultFrogs.

Criticisms

Personal tools