If the Finch has been used from the beginning of the class, students have already instantiated the Finch object and called its methods in their previous assignments, and so introducing them to the notion of the object should be fairly straight-forward.
The physicality of the Finch may lend itself to explaining the concept of the object. We can consider the Finch's state in real world terms related to its sensors and outputs (e.g., the speed of the wheels, the color of the LED, the orientation of the robot, etc.). From there, we can show how the Finch object contains methods that can get or set these states.
In addition to the Finch class, the Finch download package also includes classes that create RSS feed readers (for grabbing data from the internet). The RSS feed readers are an interesting case study in inheritance, as each specialized reader is a sub-class of a more general RSS reader.
Two methods, saySomething and setLED take objects as arguments. These can be used to tie in to standard external objects. saySomething takes any String, and so can be used as a fun replacement of a print method in assignments focusing on String manipulation. A variant of the setLED method takes a Color object, and so students can more easily set a specific color for the Finch's beak.
Two or more Finches can be controlled by a single program by simply plugging them in and instantiating multiple Finch objects. This fact can be exploited to demonstrate the modularity and independence of objects.
Advanced OOP Concepts
Depending on the course, advanced OOP concepts such as inheritance, polymorphism, and interfaces may not be covered until well after students have been introduced to the basic concept of the object. These concepts are given their own sections in our assignments corpus.