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.

Slides:



Advertisements
Similar presentations
Agenda Definitions Evolution of Programming Languages and Personal Computers The C Language.
Advertisements

Programming Paradigms Introduction. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1:
Programming Languages Marjan Sirjani 2 2. Language Design Issues Design to Run efficiently : early languages Easy to write correctly : new languages.
Computers Are Your Future
CS ExCo Advanced in Topics Object-Oriented Programming.
1 Object-Oriented Programming (Section ) CSCI 431 Programming Languages Fall 2003 A compilation of material developed by Felix Hernandez-Campos.
Programming Languages Language Design Issues Why study programming languages Language development Software architectures Design goals Attributes of a good.
1 ) Definition 2) Note on structured and modular programming, and information hiding 3) Example imperative languages 4) Features of imperative languages.
Computers Are Your Future © 2006 Prentice Hall, Inc.
Computer Concepts 5th Edition Parsons/Oja Page 546 CHAPTER 11 Software Engineering Section A PARSONS/OJA Computer Programming.
High-Level Programming Languages
Reasons to study concepts of PL
A Quick Overview of Languages. FORTRAN Designed in 1955 First release of the compiler in 1957 Algebraic in nature Scientific (numeric not string oriented)
Computers: Tools for an Information Age
COMP205 Comparative Programming Languages
6/27/2015G. Levine1 PROGRAMMING LANGUAGES Text: Programming Languages, Design and Implementation Pratt and Zelkowitz 4 th ed. Prentice-Hall.
1 Introduction to C++ Programming Concept Basic C++ C++ Extension from C.
Summer 02-03Programming Language Concepts1 Programming Language Concepts (CS 360) Lecture 1: Overview, Grammars, and Little Languages Jeremy R. Johnson.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Programming languages Prepared by : Jyrald Aquino.
OBJECT ORIENTED PROGRAMMING IN C++ LECTURE
CS102 Introduction to Computer Programming
PROGRAMMING LANGUAGES The Study of Programming Languages.
BIT Presentation 6. Contents GENERATIONS OF LANGUAGES COMPILERS AND INTERPRETERS VIRTUAL MACHINES OBJECT-ORIENTED PROGRAMMING SCRIPTING LANGUAGES.
Programming Languages CPS120: Introduction to Computer Science Lecture 5.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
Course Overview. What are Computers? From Outside –CPU box, Monitor, Keyboard, mouse and Printers From inside –ICs, Chipsets, Hard Disks, PCB cards, Drives,
1 Programming Language History and Evolution In Text: Chapter 2.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Computer Concepts 2014 Chapter 12 Computer Programming.
Chapter 12 Computer Programming. Chapter Contents Chapter 12: Computer Programming 2  Section A: Programming Basics  Section B: Procedural Programming.
Module 4 Part 2 Introduction To Software Development : Programming & Languages Introduction To Software Development : Programming & Languages.
The Evolution of Programming Languages Day 2 Lecturer: Xiao Jia The Evolution of PLs1.
Chapter 4 Software. Chapter 4: Software Generations of Languages Each computer is wired to perform certain operations in response to an instruction. An.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 12: Computer Programming 1 Computer Programming Chapter 12.
Introduction to OOP Mehdi Einali Advanced Programming in Java 1.
1-1 1 Introduction  Programming linguistics: concepts and paradigms syntax, semantics, and pragmatics language processors.  Historical development of.
Introduction to OOP Mehdi Einali Advanced Programming in Java 1.
MANAGING COMPLEXITY Lecture OO01 Introduction to Object-oriented Analysis and Design Abstract Data Types.
Structure of Programming Languages – CS43101 Fall 2004 Paul J Durand.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Cs205: engineering software university of virginia fall 2006 David Evans Object-Oriented Programming.
Welcome to OBJECT ORIENTED PROGRAMMING Prepared By Prepared By : VINAY ALEXANDER PGT(CS) KV jhagrakhand.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Victoria Ibarra Mat:  Generally, Computer hardware is divided into four main functional areas. These are:  Input devices Input devices  Output.
History. Development Driven by Function Functions of a Programming Language –To describe computation for use by computers –To describe computation and.
Language Paradigms CS655.
CPS120 Introduction to Computer Science High Level Language: Paradigms.
Programming Language History and Evolution
Programming paradigms
Zuse’s Plankalkül – 1945 Never implemented Problems Zuse Solved
CSCI-235 Micro-Computer Applications
Differents between Structured Analysis and UML
Application Development Theory
Programming Language History and Evolution
Names, Binding, and Scope
Subprograms and Programmer Defined Data Type
Ada – 1983 History’s largest design effort
Advanced Programming in Java
The Object model The Evolution of the Object Model Elements of the Object Model Applying the Object Model.
Programming Language Design
Introduction to Computer Programming
Principles of Programming Languages
Overview of Programming Paradigms
Object-Oriented Programming
Programming Languages and Paradigms
Presentation transcript:

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 to programming-in-the- large The evolution of high-order programming languages Most new industrial-strength software systems are larger and more complex than their predecessors growth in complexity has prompted research in software engineering, particularly with regard to decomposition, abstraction, and hierarchy

programming languages generations arranged according to the language features First-Generation Languages ( ) FORTRAN-I Mathematical expressions ALGOL 58 Mathematical expressions Flowmatic Mathematical expressions IPL V Mathematical expressions Focus - mathematical formulas step closer to the problem space, and a step further away from the machine (binary & assembly)

programming languages generations arranged according to the language features Second-Generation Languages (1959~1961) FORTRAN-II Subroutines, separate compilation ALGOL 60 Block structure, data types COBOL Data description, file handling Lisp List processing, pointers, garbage collection emphasis was upon algorithmic abstractions. New class of application “business applications” is considered focus was largely upon telling the machine what to do

programming languages generations arranged according to the language features Third-Generation Languages ( ) PL/1 FORTRAN + ALGOL + COBOL ALGOL 68 Rigorous successor to ALGOL 60 Pascal Simple successor to ALGOL 60 Simula Classes, data abstraction Due to the advent of transistors and then IC technology Cost Dropped Processing Power Increased Which implies that – Larger problems could now be solved, but these demanded the manipulation of more kinds of data Thus, ALGOL 60 and, later, Pascal evolved with support for data abstraction

programming languages generations arranged according to the language features programmer could describe the meaning of related kinds of data (their type) and let the programming language enforce these design decisions Thus, today we have Smalltalk (a revolutionary successor to Simula), Ada (a successor to ALGOL 68 and Pascal, with contributions from Simula, Alphard, and CLU) CLOS (which evolved from Lisp, LOOPS, and Flavors), C++ (derived from a marriage of C and Simula), and Eiffel (derived from Simula and Ada) Java & C#

What is of the greatest interest to us is the class of languages we call object-based and object-oriented Because they support the object-oriented decomposition of software

programming languages generations arranged according to the language features The Generation Gap ( ) Many different languages were invented, but few continued

PL Topology Topology means the basic physical building blocks of the language and how those parts can be connected

The Topology of First- and Early Second-Generation Programming Languages basic physical building block of all applications is the subprogram (or paragraph) Example PL: FORTRAN, COBOL consisting only of global data (exposed to all) and subprograms During design, one can logically separate different kinds of data from one another, but there is no PL support that can enforce these design decisions.

The Topology of First- and Early Second-Generation Programming Languages contains a tremendous amount of cross-coupling among subprograms, implied meanings of data, and twisted flows of control, thus threatening the reliability of the entire system and certainly reducing the overall clarity of the solution.

The Topology of Late Second- and Early Third-Generation Programming Languages People accepted the concept of Procedural Abstraction Earlier the Sub-programs were seen simply as a labor-saving devices realization that subprograms could serve as an abstraction mechanism had three important consequences languages were invented that supported a variety of parameter passing mechanisms. the foundations of structured programming were laid, manifesting themselves in language support for the nesting of subprograms and the development of theories regarding control structures and the scope and visibility of declarations. structured design methods emerged, offering guidance to designers trying to build large systems using subprograms as basic physical building blocks

The Topology of Late Second- and Early Third-Generation Programming Languages but it still fails to address the problems of programming-in-the-large and data design

The Topology of Late Third-Generation Programming Languages Another important structuring mechanism evolved to address the growing issues of programming-in-the-large. Larger programming projects meant larger development teams, and thus the need to develop different parts of the same program independently answer to this need was the separately compiled module PL supported modular structure, but, no support to check semantic consistency among module interfaces (Prototype & Call)

The Topology of Late Third-Generation Programming Languages Almost no support for data abstraction and strong typing errors could be detected only during execution

The Topology of Object-Based and Object-Oriented Programming Languages data-driven design emerged theories regarding the concept of a type appeared

Object Based vs. Object Oriented PL