  A type system is introduced for a generic Object Oriented programming
language in order to infer resource upper bounds. A sound andcomplete
characterization of the set of polynomial time computable functions is
obtained. As a consequence, the heap-space and thestack-space requirements of
typed programs are also bounded polynomially. This type system is inspired by
previous works on ImplicitComputational Complexity, using tiering and
non-interference techniques. The presented methodology has several advantages.
First, itprovides explicit big $O$ polynomial upper bounds to the programmer,
hence its use could allow the programmer to avoid memory errors.Second, type
checking is decidable in polynomial time. Last, it has a good expressivity
since it analyzes most object oriented featureslike inheritance, overload,
override and recursion. Moreover it can deal with loops guarded by objects and
can also be extended tostatements that alter the control flow like break or
return.
