A class is built by combining a derived type definition with the methods which work on that type. Static class members are emulated by adding data to the module. Encapsulation of any of these elements is directly supported.
Polymorphism is implemented by ordinary function overloading, since objects are ordinary arguments.
Class composition is directly supported, while simple inheritance is implemented as a special case of class composition. Full subtyping is emulated by means of a special subtype class, which contains a structure of pointers and a dispatch table for each class method. The functionality of the languages and their performance were compared. An object-oriented methodology in Fortran90 allows one to modernize old Fortran77 codes in an incremental fashion. As a result, the codes are easier to understand, modify, share, explain and extend.