Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

A Brief History

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 19

A Brief History

The object-oriented paradigm took its shape from the initial concept of a new programming
approach, while the interest in design and analysis methods came much later.

 The first object–oriented language was Simula (Simulation of real systems) that was
developed in 1960 by researchers at the Norwegian Computing Center.
 In 1970, Alan Kay and his research group at Xerox PARK created a personal computer
named Dynabook and the first pure object-oriented programming language (OOPL) -
Smalltalk, for programming the Dynabook.
 In the 1980s, Grady Booch published a paper titled Object Oriented Design that mainly
presented a design for the programming language, Ada. In the ensuing editions, he
extended his ideas to a complete object–oriented design method.
 In the 1990s, Coad incorporated behavioral ideas to object-oriented methods.

The other significant innovations were Object Modelling Techniques (OMT) by James
Rumbaugh and Object-Oriented Software Engineering (OOSE) by Ivar Jacobson.

Object-Oriented Analysis
Object–Oriented Analysis (OOA) is the procedure of identifying software engineering
requirements and developing software specifications in terms of a software system’s object
model, which comprises of interacting objects.

The main difference between object-oriented analysis and other forms of analysis is that in
object-oriented approach, requirements are organized around objects, which integrate both data
and functions. They are modelled after real-world objects that the system interacts with. In
traditional analysis methodologies, the two aspects - functions and data - are considered
separately.

Grady Booch has defined OOA as, “Object-oriented analysis is a method of analysis that
examines requirements from the perspective of the classes and objects found in the vocabulary of
the problem domain”.

The primary tasks in object-oriented analysis (OOA) are:

 Identifying objects
 Organizing the objects by creating object model diagram
 Defining the internals of the objects, or object attributes
 Defining the behavior of the objects, i.e., object actions
 Describing how the objects interact

The common models used in OOA are use cases and object models.
Object-Oriented Design
Object–Oriented Design (OOD) involves implementation of the conceptual model produced
during object-oriented analysis. In OOD, concepts in the analysis model, which are
technology−independent, are mapped onto implementing classes, constraints are identified and
interfaces are designed, resulting in a model for the solution domain, i.e., a detailed description
of how the system is to be built on concrete technologies.

The implementation details generally include:

 Restructuring the class data (if necessary),


 Implementation of methods, i.e., internal data structures and algorithms,
 Implementation of control, and
 Implementation of associations.

Grady Booch has defined object-oriented design as “a method of design encompassing the
process of object-oriented decomposition and a notation for depicting both logical and physical
as well as static and dynamic models of the system under design”.

Object-Oriented Programming
Object-oriented programming (OOP) is a programming paradigm based upon objects (having
both data and methods) that aims to incorporate the advantages of modularity and reusability.
Objects, which are usually instances of classes, are used to interact with one another to design
applications and computer programs.

The important features of object–oriented programming are:

 Bottom–up approach in program design


 Programs organized around objects, grouped in classes
 Focus on data with methods to operate upon object’s data
 Interaction between objects through functions
 Reusability of design through creation of new classes by adding features to existing
classes

Some examples of object-oriented programming languages are C++, Java, Smalltalk, Delphi, C#,
Perl, Python, Ruby, and PHP.

Grady Booch has defined object–oriented programming as “a method of implementation in


which programs are organized as cooperative collections of objects, each of which represents an
instance of some class, and whose classes are all members of a hierarchy of classes united via
inheritance relationships”.

The prime purpose of C++ programming was to add object orientation to the C programming
language, which is in itself one of the most powerful programming languages.
C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at
Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various
versions of UNIX.

This reference will take you through simple and practical approach while learning C++
Programming language.

Audience

This reference has been prepared for the beginners to help them understand the basic to advanced
concepts related to C++ Programming languages.

Prerequisites

Before you start doing practice with various types of examples given in this reference, I'm
making an assumption that you are already aware about what is a computer program and what is
a computer programming language?

Execute C++ Online

For most of the examples given in this tutorial you will find Try it option, so just make use of
this option to execute your C++ programs at the spot and enjoy your learning.

Try following example using Try it option available at the top right corner of the below sample
code box −

#include <iostream>
using namespace std;

int main() {
cout << "Hello World";
return 0;
}

C++ is a statically typed, compiled, general-purpose, case-sensitive, free-form programming


language that supports procedural, object-oriented, and generic programming.

C++ is regarded as a middle-level language, as it comprises a combination of both high-level


and low-level language features.
C++ was developed by Bjarne Stroustrup starting in 1979 at Bell Labs in Murray Hill, New
Jersey, as an enhancement to the C language and originally named C with Classes but later it was
renamed C++ in 1983.

C++ is a superset of C, and that virtually any legal C program is a legal C++ program.

Note: A programming language is said to use static typing when type checking is performed
during compile-time as opposed to run-time.

Object-Oriented Programming
C++ fully supports object-oriented programming, including the four pillars of object-oriented
development:

 Encapsulation
 Data hiding
 Inheritance
 Polymorphism

Standard Libraries
Standard C++ consists of three important parts:

 The core language giving all the building blocks including variables, data types and
literals, etc.
 The C++ Standard Library giving a rich set of functions manipulating files, strings, etc.
 The Standard Template Library (STL) giving a rich set of methods manipulating data
structures, etc.

The ANSI Standard


The ANSI standard is an attempt to ensure that C++ is portable -- that code you write for
Microsoft's compiler will compile without errors, using a compiler on a Mac, UNIX, a Windows
box, or an Alpha.

The ANSI standard has been stable for a while, and all the major C++ compiler manufacturers
support the ANSI standard.

Learning C++
The most important thing to do when learning C++ is to focus on concepts and not get lost in
language technical details.
The purpose of learning a programming language is to become a better programmer; that is, to
become more effective at designing and implementing new systems and at maintaining old ones.

C++ supports a variety of programming styles. You can write in the style of Fortran, C,
Smalltalk, etc., in any language. Each style can achieve its aims effectively while maintaining
runtime and space efficiency.

Use of C++
C++ is used by hundreds of thousands of programmers in essentially every application domain.

C++ is being highly used to write device drivers and other softwares that rely on direct
manipulation of hardware under realtime constraints.

C++ is widely used for teaching and research because it is clean enough for successful teaching
of basic concepts.

Anyone who has used either an Apple Macintosh or a PC running Windows has indirectly used
C++ because the primary user interfaces of these systems are written in C++.

Try it Option Online


You really do not need to set up your own environment to start learning C++ programming
language. Reason is very simple, we already have set up C++ Programming environment online,
so that you can compile and execute all the available examples online at the same time when you
are doing your theory work. This gives you confidence in what you are reading and to check the
result with different options. Feel free to modify any example and execute it online.

Try the following example using Try it option available at the top right corner of the below
sample code box:

#include <iostream>
using namespace std;

int main() {
cout << "Hello World";
return 0;
}

For most of the examples given in this tutorial, you will find Try it option, so just make use of it
and enjoy your learning.

Local Environment Setup


If you are still willing to set up your environment for C++, you need following two softwares
available on your computer.
Text Editor:
This will be used to type your program. Examples of few editors include Windows Notepad, OS
Edit command, Brief, Epsilon, EMACS, and vim or vi.

Name and version of text editor can vary on different operating systems. For example, Notepad
will be used on Windows and vim or vi can be used on windows as well as Linux, or UNIX.

The files you create with your editor are called source files and for C++ they typically are named
with the extension .cpp, .cp, or .c.

Before starting your programming, make sure you have one text editor in place and you have
enough experience to type your C++ program.

C++ Compiler:
This is actual C++ compiler, which will be used to compile your source code into final
executable program.

Most C++ compilers don't care what extension you give your source code, but if you don't
specify otherwise, many will use .cpp by default

Most frequently used and free available compiler is GNU C/C++ compiler, otherwise you can
have compilers either from HP or Solaris if you have respective Operating Systems.

Installing GNU C/C++ Compiler:


UNIX/Linux Installation:
If you are using Linux or UNIX then check whether GCC is installed on your system by
entering the following command from the command line:

$ g++ -v

If you have installed GCC, then it should print a message such as the following:

Using built-in specs.


Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr .......
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)

If GCC is not installed, then you will have to install it yourself using the detailed instructions
available at https://gcc.gnu.org/install/
Mac OS X Installation:
If you use Mac OS X, the easiest way to obtain GCC is to download the Xcode development
environment from Apple's web site and follow the simple installation instructions.

Xcode is currently available at developer.apple.com/technologies/tools/.

Windows Installation:
To install GCC at Windows you need to install MinGW. To install MinGW, go to the MinGW
homepage, www.mingw.org, and follow the link to the MinGW download page. Download the
latest version of the MinGW installation program which should be named MinGW-
<version>.exe.

While installing MinGW, at a minimum, you must install gcc-core, gcc-g++, binutils, and the
MinGW runtime, but you may wish to install more.

Add the bin subdirectory of your MinGW installation to your PATH environment variable so
that you can specify these tools on the command line by their simple names.

When the installation is complete, you will be able to run gcc, g++, ar, ranlib, dlltool, and several
other GNU tools from the Windows command line.

When we consider a C++ program, it can be defined as a collection of objects that communicate
via invoking each other's methods. Let us now briefly look into what do class, object, methods
and Instance variables mean.

 Object − Objects have Properties and Behaviors. Example: A dog has Properties - color,
name, breed as well as Behaviors - wagging, barking, eating. An object is an instance of a
class.
 Class − A class can be defined as a template/blueprint that describes the behaviors/states
that object of its type support.
 Methods − A method is basically a behavior. A class can contain many methods. It is in
methods where the logics are written, data is manipulated and all the actions are
executed.
 Instance Variables − Each object has its unique set of instance variables. An object's
state is created by the values assigned to these instance variables.

C++ Program Structure:


Let us look at a simple code that would print the words Hello World.

#include <iostream>
using namespace std;
// main() is where program execution begins.

int main() {
cout << "Hello World"; // prints Hello World
return 0;
}

Let us look various parts of the above program:

 The C++ language defines several headers, which contain information that is either
necessary or useful to your program. For this program, the header <iostream> is needed.
 The line using namespace std; tells the compiler to use the std namespace. Namespaces
are a relatively recent addition to C++.
 The next line // main() is where program execution begins. is a single-line comment
available in C++. Single-line comments begin with // and stop at the end of the line.
 The line int main() is the main function where program execution begins.
 The next line cout << "This is my first C++ program."; causes the message "This is
my first C++ program" to be displayed on the screen.
 The next line return 0; terminates main( )function and causes it to return the value 0 to
the calling process.

Compile & Execute C++ Program


Let's look at how to save the file, compile and run the program. Please follow the steps given
below:

 Open a text editor and add the code as above.


 Save the file as: hello.cpp
 Open a command prompt and go to the directory where you saved the file.
 Type 'g++ hello.cpp ' and press enter to compile your code. If there are no errors in your
code the command prompt will take you to the next line and would generate a.out
executable file.
 Now, type ' a.out' to run your program.
 You will be able to see ' Hello World ' printed on the window.

$ g++ hello.cpp
$ ./a.out
Hello World

Make sure that g++ is in your path and that you are running it in the directory containing file
hello.cpp.

You can compile C/C++ programs using makefile. For more details, you can check Makefile
Tutorial.

Semicolons & Blocks in C++


In C++, the semicolon is a statement terminator. That is, each individual statement must be
ended with a semicolon. It indicates the end of one logical entity.

For example, following are three different statements −

x = y;
y = y+1;
add(x, y);

A block is a set of logically connected statements that are surrounded by opening and closing
braces. For example:

{
cout << "Hello World"; // prints Hello World
return 0;
}

C++ does not recognize the end of the line as a terminator. For this reason, it does not matter
where on a line you put a statement. For example:

x = y;
y = y+1;
add(x, y);

is the same as

x = y; y = y+1; add(x, y);

C++ Identifiers
A C++ identifier is a name used to identify a variable, function, class, module, or any other user-
defined item. An identifier starts with a letter A to Z or a to z or an underscore (_) followed by
zero or more letters, underscores, and digits (0 to 9).

C++ does not allow punctuation characters such as @, $, and % within identifiers. C++ is a case-
sensitive programming language. Thus, Manpower and manpower are two different identifiers
in C++.

Here are some examples of acceptable identifiers −

mohd zara abc move_name a_123


myname50 _temp j a23b9 retVal

C++ Keywords
The following list shows the reserved words in C++. These reserved words may not be used as
constant or variable or any other identifier names.
asm else new this
auto enum operator throw
bool explicit private true
break export protected try
case extern public typedef
catch false register typeid
char float reinterpret_cast typename
class for return union
const friend short unsigned
const_cast goto signed using
continue if sizeof virtual
default inline static void
delete int static_cast volatile
do long struct wchar_t
double mutable switch while
dynamic_cast namespace template  

Trigraphs
A few characters have an alternative representation, called a trigraph sequence. A trigraph is a
three-character sequence that represents a single character and the sequence always starts with
two question marks.

Trigraphs are expanded anywhere they appear, including within string literals and character
literals, in comments, and in preprocessor directives.

Following are most frequently used trigraph sequences −

Trigraph Replacement
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~

All the compilers do not support trigraphs and they are not advised to be used because of their
confusing nature.

Whitespace in C++
A line containing only whitespace, possibly with a comment, is known as a blank line, and C++
compiler totally ignores it.

Whitespace is the term used in C++ to describe blanks, tabs, newline characters and comments.
Whitespace separates one part of a statement from another and enables the compiler to identify
where one element in a statement, such as int, ends and the next element begins. Therefore, in
the statement,

int age;

there must be at least one whitespace character (usually a space) between int and age for the
compiler to be able to distinguish them. On the other hand, in the statement

fruit = apples + oranges; // Get the total fruit

no whitespace characters are necessary between fruit and =, or between = and apples, although
you are free to include some if you wish for readability purpose.

Program comments are explanatory statements that you can include in the C++ code that you
write and helps anyone reading it's source code. All programming languages allow for some
form of comments.

C++ supports single-line and multi-line comments. All characters available inside any comment
are ignored by C++ compiler.

C++ comments start with /* and end with */. For example:

/* This is a comment */

/* C++ comments can also


* span multiple lines
*/

A comment can also start with //, extending to the end of the line. For example:

#include <iostream>
using namespace std;

main() {
cout << "Hello World"; // prints Hello World

return 0;
}

When the above code is compiled, it will ignore // prints Hello World and final executable will
produce the following result:
Hello World

Within a /* and */ comment, // characters have no special meaning. Within a // comment, /* and
*/ have no special meaning. Thus, you can "nest" one kind of comment within the other kind. For
example:

/* Comment out printing of Hello World:

cout << "Hello World"; // prints Hello World

*/

Data types

While doing programming in any programming language, you need to use various variables to
store various information. Variables are nothing but reserved memory locations to store values.
This means that when you create a variable you reserve some space in memory.

You may like to store information of various data types like character, wide character, integer,
floating point, double floating point, boolean etc. Based on the data type of a variable, the
operating system allocates memory and decides what can be stored in the reserved memory.

Primitive Built-in Types


C++ offer the programmer a rich assortment of built-in as well as user defined data types.
Following table lists down seven basic C++ data types:

Type Keyword
Boolean bool
Character char
Integer int
Floating point float
Double floating point double
Valueless void
Wide character wchar_t

Several of the basic types can be modified using one or more of these type modifiers:

 signed
 unsigned
 short
 long

The following table shows the variable type, how much memory it takes to store the value in
memory, and what is maximum and minimum value which can be stored in such type of
variables.
Typical Bit
Type Typical Range
Width
char 1byte -128 to 127 or 0 to 255
unsigned char 1byte 0 to 255
signed char 1byte -128 to 127
int 4bytes -2147483648 to 2147483647
unsigned int 4bytes 0 to 4294967295
signed int 4bytes -2147483648 to 2147483647
short int 2bytes -32768 to 32767
unsigned short int 2bytes 0 to 65,535
signed short int 2bytes -32768 to 32767
long int 8bytes -2,147,483,648 to 2,147,483,647
-9,223,372,036,854,775,808 to
signed long int 8bytes
9,223,372,036,854,775,807
unsigned long int 8bytes 0 to 18,446,744,073,709,551,615
float 4bytes +/- 3.4e +/- 38 (~7 digits)
double 8bytes +/- 1.7e +/- 308 (~15 digits)
long double 8bytes +/- 1.7e +/- 308 (~15 digits)
wchar_t 2 or 4 bytes 1 wide character

The sizes of variables might be different from those shown in the above table, depending on the
compiler and the computer you are using.

Following is the example, which will produce correct size of various data types on your
computer.

#include <iostream>
using namespace std;

int main() {
cout << "Size of char : " << sizeof(char) << endl;
cout << "Size of int : " << sizeof(int) << endl;
cout << "Size of short int : " << sizeof(short int) << endl;
cout << "Size of long int : " << sizeof(long int) << endl;
cout << "Size of float : " << sizeof(float) << endl;
cout << "Size of double : " << sizeof(double) << endl;
cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
return 0;
}

This example uses endl, which inserts a new-line character after every line and << operator is
being used to pass multiple values out to the screen. We are also using sizeof() operator to get
size of various data types.

When the above code is compiled and executed, it produces the following result which can vary
from machine to machine −

Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 8
Size of float : 4
Size of double : 8
Size of wchar_t : 4

typedef Declarations:
You can create a new name for an existing type using typedef. Following is the simple syntax to
define a new type using typedef:

typedef type newname;

For example, the following tells the compiler that feet is another name for int:

typedef int feet;

Now, the following declaration is perfectly legal and creates an integer variable called distance:

feet distance;

Enumerated Types:
An enumerated type declares an optional type name and a set of zero or more identifiers that can
be used as values of the type. Each enumerator is a constant whose type is the enumeration.

To create an enumeration requires the use of the keyword enum. The general form of an
enumeration type is:

enum enum-name { list of names } var-list;

Here, the enum-name is the enumeration's type name. The list of names is comma separated.

For example, the following code defines an enumeration of colors called colors and the variable
c of type color. Finally, c is assigned the value "blue".
enum color { red, green, blue } c;
c = blue;

By default, the value of the first name is 0, the second name has the value 1, the third has the
value 2, and so on. But you can give a name a specific value by adding an initializer. For
example, in the following enumeration, green will have the value 5.

enum color { red, green=5, blue };

Here, blue will have a value of 6 because each name will be one greater than the one that
precedes it.

Applications and Benefits of using OOP

Applications and Benefits of using OOP

Applications of using OOP:

Main application areas of OOP are

Ø User interface design such as windows, menu ,…

Ø Real Time Systems

Ø Simulation and Modeling

Ø Object oriented databases

Ø AI and Expert System

Ø Neural Networks and parallel programming

Ø Decision support and office automation system

etc

Benefits of OOP

The main advantages are


Ø It is easy to model a real system as real objects are represented by programming objects in
OOP. The objects are processed by their member data and functions. It is easy to analyze the
user requirements.

Ø With the help of inheritance, we can reuse the existing class to derive a new class such that
the redundant code is eliminated and the use of existing class is extended. This saves time and
cost of program.

Ø In OOP, data can be made private to a class such that only member functions of the class can
access the data. This principle of data hiding helps the programmer to build a secure program
that can not be invaded by code in other part of the program.

Ø With the help of polymorphism, the same function or same operator can be used for different
purposes. This helps to manage software complexity easily.

Ø Large problems can be reduced to smaller and more manageable problems. It is easy to
partition the work in a project based on objects.

Ø It is possible to have multiple instances of an object to co-exist without any interference i.e.
each object has its own separate member data and function.

Difference Between Procedure Oriented Programming (POP) & Object Oriented


Programming (OOP)

Procedure Oriented Programming Object Oriented Programming


In POP, program is divided into small In OOP, program is divided into parts
Divided Into
parts called functions. called objects.
In POP,Importance is not given to data In OOP, Importance is given to the data
Importance but to functions as well as sequence of rather than procedures or functions
actions to be done. because it works as a real world.
Approach POP follows Top Down approach. OOP follows Bottom Up approach.
Access OOP has access specifiers named Public,
POP does not have any access specifier.
Specifiers Private, Protected, etc.
In OOP, objects can move and
In POP, Data can move freely from
Data Moving communicate with each other through
function to function in the system.
member functions.
To add new data and function in POP is OOP provides an easy way to add new
Expansion
not so easy. data and function.
In OOP, data can not move easily from
In POP, Most function uses Global data
function to function,it can be kept public
Data Access for sharing that can be accessed freely
or private so we can control the access of
from function to function in the system.
data.
Data Hiding POP does not have any proper way for OOP provides Data Hiding so provides
hiding data so it is less secure. more security.
In OOP, overloading is possible in the
Overloading In POP, Overloading is not possible. form of Function Overloading and
Operator Overloading.
Example of POP are : C, VB, Example of OOP are : C++, JAVA,
Examples
FORTRAN, Pascal. VB.NET, C#.NET.

The core of the pure object-oriented programming is to create an object, in code, that has certain
properties and methods. While designing C++ modules, we try to see whole world in the form of
objects. For example a car is an object which has certain properties such as color, number of
doors, and the like. It also has certain methods such as accelerate, brake, and so on.

There are a few principle concepts that form the foundation of object-oriented programming:

Object
This is the basic unit of object oriented programming. That is both data and function that operate
on data are bundled as a unit called as object.

Class
When you define a class, you define a blueprint for an object. This doesn't actually define any
data, but it does define what the class name means, that is, what an object of the class will consist
of and what operations can be performed on such an object.

Abstraction
Data abstraction refers to, providing only essential information to the outside world and hiding
their background details, i.e., to represent the needed information in program without presenting
the details.

For example, a database system hides certain details of how data is stored and created and
maintained. Similar way, C++ classes provides different methods to the outside world without
giving internal detail about those methods and data.

Encapsulation
Encapsulation is placing the data and the functions that work on that data in the same place.
While working with procedural languages, it is not always clear which functions work on which
variables but object-oriented programming provides you framework to place the data and the
relevant functions together in the same object.

Inheritance
One of the most useful aspects of object-oriented programming is code reusability. As the name
suggests Inheritance is the process of forming a new class from an existing class that is from the
existing class called as base class, new class is formed called as derived class.

This is a very important concept of object-oriented programming since this feature helps to
reduce the code size.

Polymorphism
The ability to use an operator or function in different ways in other words giving different
meaning or functions to the operators or functions is called polymorphism. Poly refers to many.
That is a single function or an operator functioning in many ways different upon the usage is
called polymorphism.

Overloading
The concept of overloading is also a branch of polymorphism. When the exiting operator or
function is made to operate on new data type, it is said to be overloaded.

You might also like