Many software engineering techniques rely on code-based graph representations of software, such as control flow graphs or program dependence graphs. To apply these techniques to object-oriented software, we cannot necessarily use existing graph representations of procedural software. Graphs for object-oriented software, like those for procedural software, must represent individual procedures (methods) and entire programs; however, they must also represent classes and their interactions, and account for the effects of inheritance, scoping, persistence, polymorphism, and dynami c binding. These representations should facilitate the use of existing program-analysis techniques, rather than require creation of new techniques. A system for constructing and managing these representations should take advantage of the code reuse inherent in object-oriented software, by reusing representational components. This paper describes a coherent family of code-based graph representations of object-oriented software that meets the foregoing requirements, and outlines the architecture of an extensible system for constructing and managing those representations.