Apresentar os conceitos básicos, técnicas e problemas relacionados a programação orientada a objetos.
Classes e objetos. Mensagens e métodos. Subclasses: herança, poliformismo. Classes abstratas e interfaces. UML, análise e projeto OO. Padrões de projeto OO. Smalltalk, C++, Java, Ruby: classes versus tipos, linguagens estáticas versus dinâmicas, métodos de resolução de mensagens, metaclasses, templates, coleções. Refatoração. Testes.
Oscar Nierstrasz, Andrew P. Black, Stéphan Ducasse, Damien Pollet, Squeak by Example Square Bracket Associates, 2007.Adele Goldberg, David Robson, Smalltalk-80: the language, Addison-Wesley, 1989.Wilf Lalonde, Discovering Smalltalk, Benjamin/Cummings, 1994.Ken Arnold, James Gosting, David Holmes, The Java Programming Language, Addison-Wesley, 1996.Grady Booch, Object-Oriented Analysis and Design with Applications, Benjamin/Cummings, 1994.Timothy Budd, An Introduction to Object Oriented Programming, Addison-Wesley, 1996.Frank Buschman, Regine Meunier, Hans Rohnert, Peter Sommerland, Pattern-Oriented Software Architecture: A System of Patterns, John Wiley & Sons, 1996.Margaret A. Ellis and Bjarne Stroustrup, The Annotated C++ Reference Manual, Addison-Wesley, 1991.Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Robert, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999.