History of Object Orientation. What is Object-Orientation? Programming is one of the most complicated and difficult of human activities. It helps a great.

Slides:



Advertisements
Similar presentations
Construction process lasts until coding and testing is completed consists of design and implementation reasons for this phase –analysis model is not sufficiently.
Advertisements

An Introduction to Programming General Concepts. What is a program? A program is an algorithm expressed in a programming language. programming language.
1 OBJECT-ORIENTED CONCEPTS. 2 What is an object?  An object is a software entity that mirrors the real world in some way.  A software object in OOP.
Introduction to Programming Languages Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
Computer Science Dept. Fall 2003 Object models Object models describe the system in terms of object classes An object class is an abstraction over a set.
Programming Languages Marjan Sirjani 2 2. Language Design Issues Design to Run efficiently : early languages Easy to write correctly : new languages.
Introduction Class Notes How to Program in C++ By : dettle & dettle READING MATERIAL
OOP - Object Oriented Programming Object Oriented Programming is an approach to programming that was developed to make large programs easier to manage.
Solutions to Review Questions. 4.1 Define object, class and instance. The UML Glossary gives these definitions: Object: an instance of a class. Class:
History of Object Orientation. What is Object-Orientation? Programming is one of the most complicated and difficult of human activities. It helps a great.
A brief history of programming languages
Object-Oriented Programming OOP John Gilligan School of Computing DIT Kevin St.
Object-Oriented Design & Programming Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Programming Languages Language Design Issues Why study programming languages Language development Software architectures Design goals Attributes of a good.
Overview of Programming Paradigms
What is an object? Your dog, your desk, your television set, your bicycle. Real-world objects share two characteristics: They all have state and behavior;
The Object Oriented Programming Languages (OOPL). Done by: Tayeb El Alaoui Supervised by: Dr Driss Kettani.
Principles of Object-oriented Programming Programming Language Paradigms August 26, 2002.
1 CMSC 132: Object-Oriented Programming II Software Development IV Department of Computer Science University of Maryland, College Park.
Introduction to Alice Basics : What is Alice? Object Oriented Definitions What Does it Look Like? Where Can I Use it?
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
OBJECT ORIENTED PROGRAMMING IN C++ LECTURE
1 INTRODUCTION TO OOP Objective: Know the difference between functional programming and OOP Know basic terminology in OOP Know the importance of OOP Know.
Introduction to Object-oriented Programming Introduction to Object-oriented Programming CMPS 2143.
CSCI-383 Object-Oriented Programming & Design Lecture 15.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Principles of Programming Chapter 1: Introduction  In this chapter you will learn about:  Overview of Computer Component  Overview of Programming 
PROGRAMMING LANGUAGES The Study of Programming Languages.
PZ01A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ01A -- Introduction Programming Language Design and.
OBJECT ORIENTED DESIGN Mohammad Amin Kuhail M.Sc. (York, UK)  Introduction to Object Oriented Design & Analysis  University of Palestine  Faculty of.
11 1 Object oriented DB (not in book) Database Systems: Design, Implementation, & Management, 6 th Edition, Rob & Coronel Learning objectives: What.
Sadegh Aliakbary Sharif University of Technology Fall 2011.
The Evolution of the Object Model OOAD. The Evolution of the Object Model software engineering trends observed The shift in focus from programming-in-the-small.
Early History of Object Oriented Programming
CS6359 Introduction to OO An Introduction to Object-oriented Analysis and Design.
SE-1010 Dr. Mark L. Hornick 1 Introduction to Object-Oriented Programming (OOP) Part 1.
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
1 Programming Languages Marjan Sirjani Course web site:
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
SE: CHAPTER 7 Writing The Program
National Diploma Unit 4 Introduction to Software Development Introduction to Programming Languages.
Chapter 2: A Brief History Object- Oriented Programming Presentation slides for Object-Oriented Programming by Yahya Garout KFUPM Information & Computer.
Chapter 12 Support for Object oriented Programming.
Programming Language 1. Programming language A programming language is a machine-readable artificial language designed to express computations that can.
Programming language. Definition Programming language is a formal language designed to communicate instructions to a computer. Programming languages can.
CS 3050 Object-Oriented Analysis and Design. Objectives What is “Object-Oriented?” Object-Oriented Approach Vs. Structured Approach How Has the Object-Oriented.
Chapter 3 - Language Design Principles
Salman Marvasti Sharif University of Technology Winter 2015.
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
Object-Oriented Design Concepts CSE301 University of Sunderland Harry R. Erwin, PhD.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
OOP (Object Oriented Programming) Lecture 1. Why a new paradigm is needed? Complexity Five attributes of complex systems –Frequently, complexity takes.
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
Ole-Johan Dahl ACM Turing Award (2001) Presentation by Carsten Hood CSCE | Spring 2014.
Chapter 5 System Modeling. What is System modeling? System modeling is the process of developing abstract models of a system, with each model presenting.
Introduction To OOP 1.0 Fundamentals Of Java Programming Language 2.0 Exception Handling 3.0 Classes, Inheritance And Polymorphism © 2011 | PN AZRINA.
1-1 1 Introduction  Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors.  Historical development of.
Object-Oriented Design Concepts University of Sunderland.
MANAGING COMPLEXITY Lecture OO01 Introduction to Object-oriented Analysis and Design Abstract Data Types.
Chapter 1: Preliminaries Lecture # 2. Chapter 1: Preliminaries Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation.
Programming Language Theory 2014, 1 Chapter 1 :: Introduction Origin : Michael L. Scott School of Computer & Information Engineering,
Sadegh Aliakbary Sharif University of Technology Fall 2010.
CSCI 383 Object-Oriented Programming & Design Lecture 15 Martin van Bommel.
Programming paradigms
OBJECT ORIENTED PROGRAMMING overview
INTRODUCTION TO OBJECT-ORIENTED PROGRAMMING (OOP) & CONCEPTS
Ada – 1983 History’s largest design effort
Overview of Programming Paradigms
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
School of Computer & Information Engineering,
Presentation transcript:

History of Object Orientation

What is Object-Orientation? Programming is one of the most complicated and difficult of human activities. It helps a great deal if the program being developed is analogous to a real world solution to the problem. –requirements are easier to understand, –more realism in the expectations of others, –debugging is eased by access to the real world solution –the system is less likely to be obsolete in the end. This informal approach—the design of the program reflects objects and their behaviour in the real world—is called “object- oriented programming” First adopted by simulation programmers ca

Strengths and Weaknesses of Object-Orientation Strengths: –the underlying objects are usually well-defined and unchanging –the structure of the solution is variable Weaknesses: –It is often very hard to grasp the behaviour of the system as a whole –There is no ‘best’ object decomposition for a system of any size. This approach is considered analogous to the way humans think.

Start with Objects So we start with objects. –Correspond to real things, having state and behaviour. –Computation performed by objects communicating with each other (“message passing”). –Objects have memory (“state”), consisting of variables or objects. –Each object belongs to a class, which defines the behaviour for objects in that class. –Classes inherit behavior from other, more general classes, forming a hierarchy. Alan Kay (1993) identified these characteristics as fundamental to object-oriented programming.

Too Simple? Now this is clearly too simple. Consider a bat colony—the objects are bats, which communicate and have memory. Much of their behaviour is general for bats, rather than specific to an individual bat, but it is also clear that bats are individuals and perform internal computation, so an object-oriented model of a bat colony misses a lot of details. Also, bats change their behaviour (‘class’) with age. However, a model of the bat colony that fails to consider the bats as individual behaving objects will be incomplete. An object-oriented model is useful –A way to take individuals into consideration

A Definition Object-oriented design and programming is an approach to defining a solution to a problem that uses the system's natural structure as a system of interacting objects to provide a programming solution. Although it will still miss some of the constraints that would apply to a real-world solution, it provides an approach to design that promises to reduce the space of alternative designs enough that the programmer is no longer working with abstract thought.

Ancestry of Object-Oriented Programming The ancestry of object-oriented programming can be found in imperative and applicative languages. (Languages that define processing instead of state and relations.) The object-oriented paradigm emerged into the general software community from the simulation community in the early 1970s.

Simulation Objects Simulation programmers have always viewed the world as objects and semantic relationships, and this led to a natural programming model consisting of objects with –Identity (object names or references) –Behaviour (attributes or methods) and –State (internal data).

Formalism and Simulation Theoretical workers have long been aware that object-orientation is an inadequate model, because –formal syntax cannot express semantics fully (Alan Turing) –the discrete representation of the world implicit in programming means that formal syntax cannot express causal entailment fully (Robert Rosen). BUT, it is an adequate approximation for our purposes. Note: This means object-oriented programming cannot be formalized completely.

ALGOL ALGOL 58 and 60 were early languages designed to express the constructs of structured programming in a fashion that could be reasoned about effectively. Ancestors of many languages, including Pascal, C, C++, C#, Java, Ada, and the simulation language, Simula.

SIMULA SIMULA 1 and 67 were defined by Nygaard and Dahl as object-oriented extensions of ALGOL. Given that object orientation did not exist at the time, it is probably more accurate to describe it as a simulation language based on ALGOL 60 that incorporated much of what later would become known as object-orientation. In addition to the features most of us would recognize, it incorporated something elegant called the ‘coroutine’. –This is an instantiation of a subroutine with storage for input and local data that could interact as an object with other coroutines. –The corresponding concept in C++ and Java is the functor. An object that can be called as if it was a function.

SmallTalk SmallTalk (Goldberg and Robson, 1982) was a consistent attempt to define computation as objects interfacing by message passing. Everything, including primitive types, was an object, and all function calls were implemented using messages. This included primitive arithmetic operations! Smalltalk is slow (at least ten times slower than C++) but is easy to write in if you can understand the model of computation.

Eiffel Eiffel was a language designed by Bertrand Meyer (1988) to implement ‘design by contract’. (If you're interested in exploring Eiffel, it is available in the Metrowerks Codewarrior development environment for the Macintosh.) Meyer’s work in this area was an attempt to formalize object-oriented programming, and was moderately successful. The principles of modularity (discussed later) are from Meyer.

C++ C++—Bjarne Stroustrup (Stroustrup, various) designed C++ as ‘C with classes’ to support his simulation work. This language has become remarkably popular, and is one of the two major OO languages (with Java).

Java Java—A language deliberately designed for object-oriented programming in embedded environments. Popular for web and cross-platform independent applications. Evolving towards C++.

C# C#—Microsoft lost a court case with SUN over its specialization of Java for the ‘WINTEL’ environment. C# is Microsoft's attempt to take over the niche occupied by Java. As part of this strategy, Microsoft removed the Java Virtual Machine from the Windows operating system, which led to a further court case that they lost. Java 5 is quite similar to C#.

Ada Ada 95 (AARM, 1995) is the latest generation of Ada. Originally designed (on the basis of Pascal) to be a high-reliability language for embedded systems, but soon accumulated features to support almost any US Department of Defense application. Not designed to be object-oriented, but during the 1980s-90s, support for object-oriented programming was added to the wish-list. Named after Augusta Ada Byron, Lady Lovelace, a daughter of Lord Byron and the first computer programmer.

Conclusions Just like you can write FORTRAN in almost any language, you can use object- orientation in almost any language, but… Some languages make it easier to be object- oriented.