| utility | has definition A method or class that has wide applicability to many different subsystems and is designed to be reusable |   | 
| is a subtopic of 7.4 - The Basics of User Interface Design |   | 
| is a subtopic of 9.2 - Principles Leading to Good Design |   | 
| is a kind of class |   | 
| is a kind of method |   | 
| see also utility^2 |   | 
| method | is equivalent to the terms "function member" or "member function" which are used in C++ |   | 
| is equivalent to the terms "routine", "function" or "procedure" which are used in non object oriented languages |   | 
| should have a comment at its head if the method is non-obvious |   | 
| class | can have instances |   | 
contains all of the code that relates to its objects including - code describing how the objects of the class are structured - i.e. the data stored in each object that implement the properties
 -  The procedures, called methods, that implement the behaviour of the objects 
 
  |   | 
| contains data associated with each object |   | 
| declares a list of variables, called instance variables, corresponding to data that will be present in each instance |   | 
| has part class name |   | 
| has part class variable |   | 
| has part code |   | 
| has part constructor |   | 
| has part instance variable |   | 
| has part method |   | 
| has part variables |   | 
| is an abstract representation of all the instances of that class that may ever exist |   | 
| is probably useless if it has no responsibilities attached to it |   | 
| is the unit of data abstraction in an object-oriented program |   | 
| is divided up into methods |   | 
| is drawn as a box with the name of the class inside in a UML class diagram |   | 
| is needed in a domain model if you have to store or manipulate instances of it in order to implement a requirement |   | 
| represents several similar objects |   | 
| should be created to hold a responsibility if the responsibility cannot be attributed to any of the existing classes |   | 
| should be named after things their instances represent in the real world |   | 
| should have a comment at the top describing the purpose of the class, how it should be used, its authors and its history of modification |   | 
| should not be named after the internals of a computer system such as 'Record', 'Table', 'Data', 'Structure', or 'Information' |   | 
| procedural abstraction | has advantage when using a certain procedure, a programmer does not need to worry about all the details of how it performs its computations; he or she only needs to know how to call it and what it computes |   | 
| hides the details of procedures |   | 
| procedure | provides procedural abstraction |   | 
| data abstraction | groups the pieces of data that describe some entity, so that programmers can manipulate that data as a unit |   | 
| helps a programmer to cope with the complexity of data |   | 
| hides the details of data |   |