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.
Programming Paradigms and languages
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.
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.
Computers Are Your Future
Introduction Class Notes How to Program in C++ By : dettle & dettle READING MATERIAL
Solutions to Review Questions. 4.1 Define object, class and instance. The UML Glossary gives these definitions: Object: an instance of a class. Class:
Access Trisha Cummings. Access 1.Microsoft Access is a relational database management system from Microsoft, 2.Skilled software developers and data architects.
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.
Object-Oriented Databases v OO systems associated with – graphical user interface (GUI) – powerful modeling techniques – advanced data management capabilities.
Overview of Programming Paradigms
Object Oriented System Development with VB .NET
1 Basic Object Oriented Concepts Overview l What is Object-Orientation about? l What is an Object? l What is a Class? l Constructing Objects from Classes.
7M701 1 Class Diagram advanced concepts. 7M701 2 Characteristics of Object Oriented Design (OOD) objectData and operations (functions) are combined 
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.
Object-Oriented Databases
1 CMSC 132: Object-Oriented Programming II Software Development IV Department of Computer Science University of Maryland, College Park.
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.
The chapter will address the following questions:
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
PROGRAMMING LANGUAGES The Study of Programming Languages.
PZ01A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ01A -- Introduction Programming Language Design and.
History of Object Orientation. What is Object-Orientation? Programming is one of the most complicated and difficult of human activities. It helps a great.
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.
Introduction By: Dr. Javad Razjouyan. Programming Languages.
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.
CS 350 – Software Design The Object Paradigm – Chapter 1 If you were tasked to write code to access a description of shapes that were stored in a database.
SE-1010 Dr. Mark L. Hornick 1 Introduction to Object-Oriented Programming (OOP) Part 1.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
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
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.
OOAD Unit – I OBJECT-ORIENTED ANALYSIS AND DESIGN With applications
Computer Science and Software Engineering© 2014 Project Lead The Way, Inc. Procedural Abstraction Object-Oriented Code.
Learners Support Publications Object Oriented Programming.
CS 3050 Object-Oriented Analysis and Design. Objectives What is “Object-Oriented?” Object-Oriented Approach Vs. Structured Approach How Has the Object-Oriented.
OBJECT ORIENTED AND FUNCTION ORIENTED DESIGN 1 Chapter 6.
Object Orientation Concepts, Terminology and a Story. © Allan C. Milne School of Engineering, Computing & Applied Mathematics University of Abertay v
Chapter 3 - Language Design Principles
Java Fundamentals Usman Ependi UBD
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
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.
Identifying Objects CSE301 University of Sunderland Harry R. Erwin, PhD.
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.
OODBMS and ORDBMS. Background Object-oriented software, based on the principles of user-defined datatypes, along with inheritance and polymorphism, is.
Sadegh Aliakbary Sharif University of Technology Fall 2010.
1 THE OBJECT-ORIENTED TECHNOLOGY: An Executive Summary 서울대학교 컴퓨터공학부 Internet Database Lab 교수 김형주 Spring 2007.
CSCI 383 Object-Oriented Programming & Design Lecture 15 Martin van Bommel.
Object Oriented Systems Design
Programming paradigms
OBJECT ORIENTED PROGRAMMING overview
Ada – 1983 History’s largest design effort
Overview of Programming Paradigms
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
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 with developed a real world solution to the problem. –requirements are easier to understand, –more realism in the expectations of others, –debugging eased by access to the real world solution. This informal approach—the design of the programme 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 the thing that changes. Weaknesses: –It is often very hard to grasp the behaviour of the system as a whole, and –There is no ‘best’ object decomposition for a system of any size.

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 other objects. –Each object belongs to a class, which defines the behaviour for objects in that class. –Classes inherit behaviour 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 do internal computation, so an object-oriented model of a bat colony misses a lot. Also, bats change their behaviour (‘class’) with age. However, a model of the bat colony that fails to deal the bats as individual behaving objects will miss a lot. An object-oriented model is in the right direction.

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, behaving 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 the 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).

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.

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. I developed a major simulation for NASA in Smalltalk about 1990, and found it a delightful language.

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, with Java, one of the two major OO languages. The 1995 version is remarkably powerful. My primary O-O expertise is in C++—I’m a simulation modeller—and I’ve been involved in the standards definition for the current version.

Java Java—A language deliberately designed for object-oriented programming in embedded environments. This module uses Java 5. Popular for web and cross-platform independent applications. Evolving towards 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.