As the fundamental concepts of the object-oriented paradigm, classes and inheritance contribute to enhancing the reusability and the extensibility of object-oriented systems. A class is a model of an entity in an application domain and serves as a unit of encapsulation. Class inheritance enables us to create new classes by reusing existing class libraries.
However, improper modeling in design phase or uncontrolled change during maintenance activities can degrade the structure of classes. This thesis proposes two restructuring methods to improve the quality of the degraded object-oriented systems : restructuring of classes and restructuring of the inheritance hierarchy. Restructuring of classes is an attempt to improve the quality of classes by transforming a less cohesive class into a more cohesive one. We propose a cohesion metrics for classes in order to quantify the quality of a class and methods of restructuring which use the metrics as a guide for restructuring. Restructuring of the inheritance hierarchy attempts to improve a degraded inheritance hierarchy so that it conforms to the inheritance relationships among entities which are modeled by the hierarchy. We propose two rules in order to identify a defective inheritance link: the interface inclusion principle and the behavioral conformance principle. These two principles stipulate that the essential features of a supercalss should be entirely inherited by a subclass, and the behavior of a subcalss should conform to that of a supercalss.