object-oriented programming oop

22
Object-Oriented Programming OOP John Gilligan School of Computing DIT Kevin St

Upload: louisa

Post on 13-Feb-2016

89 views

Category:

Documents


5 download

DESCRIPTION

Object-Oriented Programming OOP. John Gilligan School of Computing DIT Kevin St. What is a program?. “A program is a text which evokes computation” Edsgar Dijkstra As we will see there are many kinds and styles of program. What does it mean to evoke computation? . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Object-Oriented Programming         OOP

Object-Oriented Programming OOP

John GilliganSchool of Computing DIT Kevin St

Page 2: Object-Oriented Programming         OOP

What is a program? “A program is a text which evokes

computation” Edsgar Dijkstra

As we will see there are many kinds and styles of program.

Page 3: Object-Oriented Programming         OOP

What does it mean to evoke computation?

Well there is a program and something is computed when the program is executed.

Ideally the computation should achieve something that we want when the program is run. The executed program should meet our requirements.

There may be an informal or formal specification of these requirements

Page 4: Object-Oriented Programming         OOP

Clearly there is a relationship between specification and program

SpecSpec ProgramProgram

Page 5: Object-Oriented Programming         OOP

From Specification to Program Different Approaches to Programming vary in

how they consider this relationship. Typically the specification describes the problem

in terms of inputs and outputs. That is the input conditions or preconditions

describe conditions or the state that holds now The output conditions or postcondition describes

the desired conditions or result that will hold after the problem has been solved or the program executed.

Page 6: Object-Oriented Programming         OOP

Verification The program must be able to match the

specification , that is do what its supposed to.

To prove that it does, it must be shown that the output state is reachable from the input state given the program.

This is called program verification.

Page 7: Object-Oriented Programming         OOP

There are many ways of developing programs

Traditional programming, called imperative programming, produces a sequence of statements which bring you from input to output conditions.

There are many formal verification techniques such as Dijkstras weakest precondition semantics.

Imperative programs tell you how to achieve a solution. They implement an algorithm .i.e. a sequence of steps which yield a solution.

Page 8: Object-Oriented Programming         OOP

Declarative Programming The major alternative to imperative programming

is declarative programming which says what is to be done not how to do it.

Examples of declarative programming include functional and logic programming such as Prolog.

In logic programming computation is produced as a by-product of proving that the output can be derived from the input.

In a pure functional language, such as Haskell, all functions are without side effects, and no explicit state or state changes exist at all.

Page 9: Object-Oriented Programming         OOP

So how does Object Oriented Programming fit into this

Object-oriented programming (OOP) is a programming paradigm that uses "objects" and their interactions to design applications and computer programs.

Programming techniques may include features such as encapsulation, modularity, polymorphism, and inheritance.

Many modern programming languages now support OOP.

Page 10: Object-Oriented Programming         OOP

Imperative Versus OOP The big 2 approaches to Programming are

Imperative and Object Oriented

Let us look at these in more detail.

Page 11: Object-Oriented Programming         OOP

History of Imperative programming The earliest imperative languages were the machine languages of the

original computers. FORTRAN was a compiled language that allowed named variables,

complex expressions, subprograms, and many other features now common in imperative languages.

In the late 1950s and 1960s, ALGOL was developed in order to allow mathematical algorithms to be more easily expressed, and even served as the operating system's target language for some computers.

COBOL (1960) and BASIC (1964) were both attempts to make programming syntax look more like English.

In the 1970s, Pascal was developed by Niklaus Wirth C was created by Dennis Ritchie while he was working at Bell

Laboratories. Wirth went on to design Modula-2, and Oberon.

Page 12: Object-Oriented Programming         OOP

Features of Imperative Languages

Variables and Constant Declarations Assignment Statements If Statements Loops Arrays

Page 13: Object-Oriented Programming         OOP

Example of imperative program piece int is_leap_year(int year)

{   int result;

   if ( (year%4) != 0 )           //  or:    if ( year%4 )       result = FALSE;            //  means: if year is not divisible by 4   else if ( (year%400) == 0 )    //  or:    if ( !(year%400) )       result = TRUE;             //  means: if year is divisible by 400   else if ( (year%100) == 0 )    //  or:    if ( !(year%100) )       result = FALSE;            //  means: if year is divisible by 100   else                           //  (but not by 400, since that case       result = TRUE;             //  considered already)      return ( result );}

Page 14: Object-Oriented Programming         OOP

And another m_fMin = 10000; m_fMax = 0; int i; for ( i = 0; i < ARRAY_SIZE; i++ ) { m_fResultArray[i] = sqrt(m_fInitialArray[i] * 2.8f); if ( m_fResultArray[i] < m_fMin ) m_fMin = m_fResultArray[i]; if ( m_fResultArray[i] > m_fMax ) m_fMax = m_fResultArray[i]; }}

Page 15: Object-Oriented Programming         OOP

Advantages of Imperative Programming

Works Follows intuitive algorithmic reasoning Can be made modular Can be documented Good proof techniques Widely accepted

Page 16: Object-Oriented Programming         OOP

Disadvantages of imperative programming

Can be messy Poor for re-use Data types buried in code (millenium Bug) Arbitrary variable names Allows bad programmers to have long

unwieldy programs Maintenance a high cost

Page 17: Object-Oriented Programming         OOP

As an Alternative Consider Object Oriented Programming

The term “object-oriented” was coined by Alan Kay in 1967

Page 18: Object-Oriented Programming         OOP

Roots Object-oriented programming can trace its roots to the

1960s. As hardware and software became increasingly complex,

quality was often compromised. Researchers studied ways in which software quality could

be maintained. Object-oriented programming was deployed in part as an attempt to address this problem by strongly emphasizing discrete units of programming logic and re-usability in software.

Computer programming methodology focuses on data rather than processes, with programs composed of self-sufficient modules (objects) containing all the information needed within its own data structure for manipulation.

Page 19: Object-Oriented Programming         OOP

OOP Object-oriented programming may be seen as a collection of

cooperating objects, as opposed to a traditional view in which a program may be seen as a group of tasks to compute ("subroutines"). In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects.

Each object can be viewed as an independent little machine with a distinct role or responsibility. The actions or "operators" on the objects are closely associated with the object.

For example, in object oriented programming, the data structures tend to carry their own operators around with them (or at least "inherit" them from a similar object or "class"). The traditional approach tends to view and consider data and behavior separately.

Page 20: Object-Oriented Programming         OOP

At First The Simula programming language was the first to

introduce the concepts underlying object-oriented programming (objects, classes, subclasses, virtual methods, coroutines, garbage collection, and discrete event simulation) as a superset of Algol. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. Smalltalk was the first programming language to be called "object-oriented".

Page 21: Object-Oriented Programming         OOP

History The 1980s saw a rapid growth in interest in object-oriented programming.

These languages were imperative in style, but added features to support objects. The last two decades of the 20th century saw the development of a considerable number

of such programming languages. Smalltalk, originally conceived by Alan Kay in 1969, was released in 1980 by the Xerox

Palo Alto Research Center. Drawing from concepts in another object-oriented language — Simula (which is

considered to be the world's first object-oriented programming language, developed in the late 1960s) — Bjarne Stroustrup designed C++, an object-oriented language based on C. C++was first implemented in 1985.

In the late 1980s and 1990s, the notable imperative languages drawing on object-oriented concepts were Perl, released by Larry Wall in 1987; Python, released by Guido van Rossum in 1990; PHP, released by Rasmus Lerdorf in 1994; Java, first released by Sun Microsystems in 1994 and Ruby, released in 1995 by Yukihiro “matz” Matsumoto.

Page 22: Object-Oriented Programming         OOP

JAVA In the past decade Java has emerged in wide

use partially because of its similarity to C and to C++, but perhaps more importantly because of its implementation using a virtual machine that is intended to run code unchanged on many different platforms.