Class Analysis of Object-Oriented Programs through Abstract Interpretation