Ada 9X -the revised definition of the Ada programming language- provides support for object-oriented programming. This course offers a comprehensive view of object-oriented programming with Ada; it is divided in three parts. First, we examine the object-oriented features of the language, their use, and how they fit into Ada's strong type system and genericity mechanisms. Basic object-oriented mechanisms are covered: extension, inheritance, and polymorphism. Second, we show how to integrate these mechanisms into good programming practices; topics include incremental programming, heterogeneous data structures, mixin and sibling inheritance. Finally, we compare standard object-oriented idioms in Ada vs. major object-oriented languages (C++, Smalltalk, Eiffel).