Gentner classifies analogies in three groups.
Firstly there are literal similarities where the varieties share many attributes and operations. These are the mostly everyday analogies that we use without our brain telling us. For example two solar systems can be considered as literal similarities of one another. Instances of a class are literal similarities of one another, the mapping description is the class.
Secondly there are vanilla analogies. Vanilla analogies are responsible for many of the leaps of understanding in history such as Bohr's model of the atom. The main difference with literal similarities is the mapping is more at the operation level. Interfaces and abstract classes are typically used to define the important analogies in software applications.
Rule analogies are the most abstract of analogies. They typically contain the rules and formula that are at the heart of the mapping and are not dependent upon the attributes that are peculiar to individual varieties. Code structures of rule analogies usually involve late binding or loose typing.