Starting out with Java : from control structures through objects - Gaddis (Addison-Wesley, 2010)