A complex data type is a data type that shows a structure.
All complex data type are based on a class concept. They are complex because they shows a structure
A data type that is not complex is primitive (ie can be compared by a single value)
A complex data type is created from this three basic type primitives:
and can also be composed from other complex type.
(aggregate|compounds) types: a type that contains other type (ie elements)
Composite: that is, types built up from simpler ones
An abstract data type (tables, tree…) defines the behavior (method) via an interface and may be implemented in different ways. When a type is not abstract, it's know as a concrete type.
An abstract type and its implementation have a implementation relationship.