The term abstract data type can also be regarded as a generalized approach of a number of algebraic structures, such as lattices, groups, and rings.[4] The notion of abstract data types is related to the concept of data abstraction, important in object-oriented programming and design by contract methodologies for software development.[5]