Coping with Complexity: When computing was in its infancy most programs were written in assembly language, by s
single individual, and would not be considered large by today’s standard. Programs became more
complex, programmers found it difficult to remember all the information they needed to know in order
to develop or debug their software. Which values were contained in what register? Did a new identifier
name conflict with any previously defined name? What variables needed to be initialized before control
could be transferred to another section of code?
a.) The non-Linear behavior of complexity As programming projects became larger, an interesting phenomenon was observed. A
ask that would take one programmer two months to perform could not be accomplished by two
programmers working for one month.
In Fred Book’s memorable phrase “The bearing of a child takes nine months, no matter how
many women are assigned to the task”.
The reason for this non linear behavior was complexity- in particular, the
interconnection between software components were complicated and large quantities of
information had to be communicated among the various members of the programming team.
b.) Abstraction Mechanism: Abstraction refers to the act of representing essential features without including the background
details or explanation. Classes use the concept of abstraction and are defined as a list of abstract
attributes such as size, weight and cost and functions to operate on these attributes. They encapsulate
all the properties of the objects that are to be created. The attributes are sometime called data
members because they hold information. The functions that operate on these data sometimes called
methods are member functions. Since the classes use the concept of data abstraction, they are also
known as Abstraction data type (ADT)