OO Programming  «Prev  Next»
Lesson 1

Why object-oriented programming?

Object orientation has become the development paradigm of choice for programmers in the 1990s, 2000s, and beyond.
In this module, you will explore how object-oriented programming (OOP) differs from traditional, procedural, or structured programming and how you can exploit those differences to produce faster, more maintainable code.
In this module, you will learn:
  1. How traditional programs are designed
  2. How object-oriented programs are designed
  3. How to choose the initial classes in your system
  4. Some of the qualities of a "good class" for an object-oriented application

Object-oriented programming (OOP) is a programming paradigm that uses objects to design applications and computer programs. It uses several techniques from previously established paradigms, including encapsulation, inheritance, and polymorphism.
Even though it originated in the 1960s, OOP was not commonly used in mainstream software application development until the 1990s. Today, many popular programming languages support OOP. The origins of object-oriented programming reach all the way back to the 1960s, when the field of software engineering had begun to discuss the idea of a software crisis. As hardware and software became increasingly complex, how could software quality be maintained?
Object-oriented programming addresses this problem by strongly emphasizing modularity in software.

Functional Programming

Programming in a functional language consists of building definitions and using the computer to evaluate expressions. The primary role of the programmer is to construct a function to solve a given problem. This function, which may involve a number of subsidiary functions, is expressed in notation that obeys normal mathematical principles. The primary role of the computer is to act as a calculator: its job is to evaluate expressions and print the results. In this respect, the computer acts much like an ordinary pocket calculator.
What distinguishes a functional calculator from a standard calculator is the programmer's ability to make definitions to increase its powers of calculation. Expressions which contain occurrences of the names of functions defined by the programmer are evaluated by using the given definitions as simplification (or 'reduction') rules for converting expressions to printable form. A characteristic feature of functional programming is that if an expression possesses a well-defined value, then the order in which a c.omputer may carry out the evaluation does not affect the outcome.
In other words, the meaning of an expression is its value and the task of the computer is simply to obtain it. It follows that expressions in a functional language can be constructed, manipulated and reasoned about, like any other kind of mathematical expression, using more or less familiar algebraic laws. The result, as we hope to justify, is a conceptual framework for programming which is at once very simple, very concise, very flexible and very powerful.

Modular Programming

Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.
A module interface expresses the elements that are provided and required by the module. The elements defined in the interface are detectable by other modules. The implementation contains the working code that corresponds to the elements declared in the interface. Modular programming is closely related to structured programming and object-oriented programming, all having the same goal of facilitating construction of large software programs and systems by decomposition into smaller pieces, and all originating around the 1960s. While historically usage of these terms has been inconsistent, today "modular programming" refers to high-level decomposition of the code of an entire program into pieces, structured programming to the low-level code use of structured control flow, and object-oriented programming to the data use of objects, a kind of data structure.