The term complex classes is used in object-oriented programming (OOP). This refers to a class for which one or more attributes are defined with an object type. An object of a complex class, called a complex object, consists of one or more objects of other classes, called subobjects. A complex object can have any number of subobjects, since an object type can also be used to implement lists, sets, or arrays of objects of a particular type. A complex object is also an instance of a complex class.