Object Oriented Programming: Its Origins and Importance in Computer Science Prof. Jeffrey S. Rosenschein School of Computer Science and Engineering Hebrew.

Slides:



Advertisements
Similar presentations
Overview of programming in C C is a fast, efficient, flexible programming language Paradigm: C is procedural (like Fortran, Pascal), not object oriented.
Advertisements

10-7 The Quadratic Formula
Semantic Analysis Chapter 6. Two Flavors  Static (done during compile time) –C –Ada  Dynamic (done during run time) –LISP –Smalltalk  Optimization.
C++ Basics March 10th. A C++ program //if necessary include headers //#include void main() { //variable declaration //read values input from user //computation.
Procedural programming in Java
Introduction to Programming Languages Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
solution If a quadratic equation is in the form ax 2 + c = 0, no bx term, then it is easier to solve the equation by finding the square roots. Solve.
Introduction to Scientific Computing ICE / ICE 508 Prof. Hyuckjae Lee KAIST- ICC
Faculty of Sciences and Social Sciences HOPE Structured Problem Solving Week 7: Java basics Stewart Blakeway
1 Key Concepts:  Why C?  Life Cycle Of a C program,  What is a computer program?  A program statement?  Basic parts of a C program,  Printf() function?
An Introduction to Programming with C++ Fifth Edition Chapter 1 An Introduction to Programming.
Lecture Notes Dr. Rakhmad Arief Siregar Universiti Malaysia Perlis
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To understand the structure of a C-language program. ❏ To write your first C.
C PROGRAMMING LECTURE C-language Computer Fundamentals.
The printf Method The printf method is another way to format output. It is based on the printf function of the C language. System.out.printf(,,,..., );
Concept of Computer Programming November 2, 2011.
Introduction to FORTRAN-90 University of Liverpool course.
6.5 – Solving Equations with Quadratic Techniques.
Hello World 2 What does all that mean?.
Runtime Environments Compiler Construction Chapter 7.
Programming With C.
Data Structures Chapter 1- Introduction Mohamed Mustaq.A.
Chapter 1 Object Orientation: Objects and Classes.
Solving Quadratic Equations by Factoring. Solution by factoring Example 1 Find the roots of each quadratic by factoring. factoring a) x² − 3x + 2 b) x².
The Quadratic Formula. What does the Quadratic Formula Do ? The Quadratic formula allows you to find the roots of a quadratic equation (if they exist)
Quadratics Solving equations Using “Completing the Square”
QuadraticEquation class. Background A quadratic equation is a second-order polynomial equation in a single variable x, ax 2 + bx + c = 0 (with a≠0.)
The History of Computer Programming Languages Introductory Programming Visual Basic.
BEGINNING PROGRAMMING.  Literally – giving instructions to a computer so that it does what you want  Practically – using a programming language (such.
1 Simple Input/Output  C++ offers the iostream library, which defines a system of character-oriented Input/Output (I/O) using object oriented programming.
5.3 – Solving Quadratic Equations by Factoring. Ex. 1 Solve y = x 2 + 5x + 6 by factoring.
Introduction to Computer Sciences References: [1] Fortran 95/2003 for Scientists and Engineers (3e) by Stephen J. Chapman. [2] Using Fortran 90 by Chester.
Print Me Who’s Data? First Executed Name Me My Mistake Q $100 Q $200 Q $300 Q $400 Q $500 Q $100 Q $200 Q $300 Q $400 Q $500 Final Jeopardy.
Textbook C for Scientists and Engineers © Prentice Hall 1997 Available at NUS CO-OP at S$35.10.
Aim: How do we solve quadratic equation with complex roots? Do Now: 1. Solve for x: 2. Solve for x: 3. Solve for x: HW: p.219 # 6,8,10,12,14 p.241 # 6,14,25.
Computer Programming 2 Lab (1) I.Fatimah Alzahrani.
FUNCTIONS (METHODS) Pascal C, C++ Java Scripting Languages Passing by value, reference Void and non-void return types.
C is a high level language (HLL)
Skill Area 311 Part B. Lecture Overview Assembly Code Assembler Format of Assembly Code Advantages Assembly Code Disadvantages Assembly Code High-Level.
Software Engineering Algorithms, Compilers, & Lifecycle.
Programming Languages Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To understand the structure of a C-language program. ❏ To write your first C.
Programming Languages and Data Organization
Basic concepts of C++ Presented by Prof. Satyajit De
The Quadratic Formula..
4.6 Quadratic formula.
Programming what is C++
The Quadratic Formula..
Bracketing Methods (Bisection Method)
Quadratic Formula Solving for X Solving for quadratic equations.
4.6 Quadratic formula.
Engineering Innovation Center
Computer science By/ Midhat Mohiey. Introduction to Programming using C ++ 2.
جامعة البحر الاحمر كلية العلوم التطبيقية قسم الفيزياء التطبيقية الفصل الداسي الثاني IIالمقرر: حاسوب د. خالد عثمان العالم.
Introduction to the C Language
Introduction to the C Language
Conversions of the type of the value of an expression
High Level Programming Languages
Topics discussed in this section:
جامعة البحر الاحمر كلية العلوم التطبيقية قسمي الحاسوب وتقنية المعلومات الفصل الداسي الثاني المقرر: اساليب برمجة 1 محاضرة رقم 1 د. خالد عثمان العالم.
Cs212: DataStructures Computer Science Department Lab 3 : Recursion.
An Introduction to Programming with C++ Fifth Edition
Introduction to Computer Science
5.4 Completing the Square.
The Quadratic Formula..
The Quadratic Formula..
Zorah Fung University of Washington, Winter 2016
quadratic formula. If ax2 + bx + c = 0 then
Presentation transcript:

Object Oriented Programming: Its Origins and Importance in Computer Science Prof. Jeffrey S. Rosenschein School of Computer Science and Engineering Hebrew University, Jerusalem, Israel

2 Computer Programming The history of computer programming is a steady move away from machine-oriented views of programming towards concepts and metaphors that more closely reflect the way in which we ourselves understand the world

3 Programming progression… Programming has progressed through:  machine code  assembly language  machine-independent programming languages  procedures & functions  objects

4 Machine language – Mark I

5 Machine Language

6 Assembly Language – PDP-11

7 Assembly Language – Macro-11 GCD:TSTB BEQSIMPLE MOVA, R5 SXTR4 DIVB, R4 MOVB, A MOV R5, B CALLGCD SIMPLE:RETURN

8 Assembly Language – Macro-11 GCD:TSTB BEQSIMPLE MOVA, R5 SXTR4 DIVB, R4 MOVB, A MOV R5, B CALLGCD SIMPLE:RETURN 20/20

9 Machine-Independent Programming Languages – Fortran ! This example program solves for roots of the quadratic equation, ! ax^2 +bx +c =0,for given values of a, b and c. ! PROGRAM bisection IMPLICIT NONE INTEGER :: iteration DOUBLE PRECISION :: CC, Er, xl, x0, x0_old, xr ! Set convergence criterion and guess for xl, xr. CC = 1.d-4 xl = 8.d-1 xr = 11.d-1 ! Bisection method. Er =CC +1 iteration = 0 DO WHILE (Er > CC) iteration = iteration + 1 ! Compute x0 and the error. x0_old = x0 x0 = (xl + xr) / 2.d0 Er = DABS((x0 - x0_old)/x0)*100.d0 WRITE (*,10) iteration, x0_old, x0, Er 10 FORMAT (1X,I4,3(2X,E10.4)) this is partial…

10 Procedures & Functions – Pascal program ValueArg(output); {Shows how to arrange for a procedure to have arguments.} procedure PrintInitials(First, Last : char); {Within this procedure, the names First and Last represent the argument values. We’ll call write to print them.} begin write(‘My initials are: ’); write(First); writeln(Last) end; {PrintInitials} begin PrintInitials (‘D’, ‘C’); {Any two characters can be arguments.} PrintInitials (‘Q’, ‘T’); {Like strings, characters are quoted.} PrintInitials (‘&’, ‘#’) end. {ValueArg}

11 Objects (My examples will be from Java) class Time { private int hour, minute; public Time (int h, int m) { hour = h; minute = m; } public void addMinutes (int m) { int totalMinutes = ((60*hour) + minute + m) % (24*60); if (totalMinutes<0) totalMinutes = totalMinutes + (24*60); hour = totalMinutes / 60; minute = totalMinutes % 60; } } this is partial…

12 “Intrinsic Power” vs. “Effective Power” This progression is not a matter of “intrinsic power” Anything you can do with a minimally capable computer language, you can theoretically do with any other minimally capable computer language But that is like saying a shovel is theoretically as capable as a tractor. In practice, using a shovel might make things very hard…

13 Objects hour minute void addMinutes( int m ) Time inTime Attributes: hour = 8 minute = 30 Methods: void addMinutes(int m) outTime Attributes: hour = 17 minute = 35 Methods: void addMinutes(int m) class objects

14 Classes and Objects A class is a prototype for creating objects When we write a program in an object-oriented language like Java, we define classes, which in turn are used to create objects A class has a constructor for creating objects

15 class Time { private int hour, minute; public Time (int h, int m) { hour = h; minute = m; } public void addMinutes (int m) { int totalMinutes = ((60*hour) + minute + m) % (24*60); if (totalMinutes<0) totalMinutes = totalMinutes + (24*60); hour = totalMinutes / 60; minute = totalMinutes % 60; } } A Simple Class, called “Time” (partial) constructor for Time

16 Definition of an “Object” An object is a computational entity that: 1. Encapsulates some state 2. Is able to perform actions, or methods, on this state 3. Communicates with other objects via message passing

17 1) Encapsulates some state Like a record in Pascal, it has a set of variables (of possibly different types) that describe an object’s state These variables are sometimes called an object’s attributes (or fields, or instance variables, or datamembers, or …)

18 Pascal Example: Represent a Time typeTimeTYPE = record Hour: 1..23; Minute: 0..59; end; var inToWork, outFromWork: TimeTYPE;

19 Java Example: Represent a Time class Time { private int hour, minute; public Time (int h, int m) { hour = h; minute = m; } … } Time inToWork = new Time(8, 30); Time outFromWork = new Time(17, 35); constructor for Time attributes of Time

20 Objects hour minute void addMinutes( int m ) Time inToWork Attributes: hour = 8 minute = 30 Methods: void addMinutes(int m) outFromWork Attributes: hour = 17 minute = 35 Methods: void addMinutes(int m) class objects

21 class Time { private int hour, minute; public Time (int h, int m) { hour = h; minute = m; } public void addMinutes (int m) { int totalMinutes = ((60*hour) + minute + m) % (24*60); if (totalMinutes<0) totalMinutes = totalMinutes + (24*60); hour = totalMinutes / 60; minute = totalMinutes % 60; } } 2) Is able to perform actions, or methods, on this state More than a Pascal record! An object can also include a group of procedures/functions that carry out actions a method of Time

22 3) Communicates with other objects via message passing Sends messages to objects, triggering methods in those objects void

23 Example of Object Creation and Message Passing bill Attributes: … Methods: …

24 Example of Object Creation and Message Passing bill Attributes: … Methods: … In one of bill’s methods, the following code appears: Time inToWork = new Time(8, 30); inToWork.addMinutes(15);

25 Example of Object Creation and Message Passing inToWork Attributes: hour = 8 minute = 30 Methods: void addMinutes(int m) bill Attributes: … Methods: … In one of bill’s methods, the following code appears: Time inToWork = new Time(8, 30); inToWork.addMinutes(15);

26 Example of Object Creation and Message Passing inToWork Attributes: hour = 8 minute = 30 Methods: void addMinutes(int m) inToWork.addMinutes(15) bill Attributes: … Methods: … In one of bill’s methods, the following code appears: Time inToWork = new Time(8, 30); inToWork.addMinutes(15);

27 Example of Object Creation and Message Passing inToWork Attributes: hour = 8 minute = 45 Methods: void addMinutes(int m) bill Attributes: … Methods: … In one of bill’s methods, the following code appears: Time inToWork = new Time(8, 30); inToWork.addMinutes(15);

28 Structure of a Class Definition class name { declarations constructor definition(s) method definitions } attributes and symbolic constants how to create and initialize objects how to manipulate the state of objects These parts of a class can actually be in any order

29 History of Object-Oriented Programming Started out for simulation of complex man- machine systems, but was soon realized that it was suitable for all complex programming projects SIMULA I ( ) and Simula 67 (1967) were the first two object-oriented languages  Developed at the Norwegian Computing Center, Oslo, Norway by Ole-Johan Dahl and Kristen Nygaard  Simula 67 introduced most of the key concepts of object-oriented programming: objects and classes, subclasses (“inheritance”), virtual procedures

30 The Ideas Spread Alan Kay, Adele Goldberg and colleagues at Xerox PARC extend the ideas of Simula in developing Smalltalk (1970’s)  Kay coins the term “object oriented”  Smalltalk is first fully object oriented language  Grasps that this is a new programming paradigm  Integration of graphical user interfaces and interactive program execution Bjarne Stroustrup develops C++ (1980’s)  Brings object oriented concepts into the C programming language

31 Other Object Oriented Languages Eiffel (B. Meyer) CLOS (D. Bobrow, G. Kiczales) SELF (D. Ungar et al.) Java (J. Gosling et al.) BETA (B. Bruun-Kristensen, O. Lehrmann Madsen, B. Møller-Pedersen, K. Nygaard) Other languages add object dialects, such as TurboPascal …

32 REVIEW: Definition of an “Object” An object is a computational entity that:  Encapsulates some state  Is able to perform actions, or methods, on this state  Communicates with other objects via message passing

33 Encapsulation The main point is that by thinking of the system as composed of independent objects, we keep sub-parts really independent They communicate only through well-defined message passing Different groups of programmers can work on different parts of the project, just making sure they comply with an interface It is possible to build larger systems with less effort

34 Advantages Building the system as a group of interacting objects: Allows extreme modularity between pieces of the system May better match the way we (humans) think about the problem Avoids recoding, increases code-reuse

35 But there’s more… Classes can be arranged in a hierarchy Subclasses inherit attributes and methods from their parent classes This allows us to organize classes, and to avoid rewriting code – new classes extend old classes, with little extra work! Allows for large, structured definitions

36 Example of Class Inheritance extends toString( ) equals( Object obj ) getClass( ) Shape Rectangle Time extends Objects made from this class, for example, have all the attributes and methods of the classes above them, all the way up the tree Object Circle Triangle extends void addMinutes( int m ) hour minute color borderWidth Color getColor( ) void setBorderWidth( int m ) int computeArea( ) length width int computeArea( ) radius base height int computeArea( )

37 Java Class Hierarchy

38 Java Class Hierarchy, another view

39 Polymorphism An object has “multiple identities”, based on its class inheritance tree It can be used in different ways

40 Polymorphism An object has “multiple identities”, based on its class inheritance tree It can be used in different ways A Circle is-a Shape is-a Object

41 Polymorphism An object has “multiple identities”, based on its class inheritance tree It can be used in different ways A Circle is-a Shape is-a Object Shape Circle Object A Circle object really has 3 parts

42 How Objects are Created Circle c = new Circle( );

43 How Objects are Created Circle c = new Circle( ); c Shape Circle Object 1.1. Execution Time

44 How Objects are Created Circle c = new Circle( ); c Shape Circle Object c Shape Circle Object Execution Time

45 How Objects are Created Circle c = new Circle( ); c Shape Circle Object c Shape Circle Object c Shape Circle Object Execution Time

46 Three Common Uses for Polymorphism 1. Using Polymorphism in Arrays 2. Using Polymorphism for Method Arguments 3. Using Polymorphism for Method Return Type

47 1) Using Polymorphism in Arrays We can declare an array to be filled with “Shape” objects, then put in Rectangles, Circles, or Triangles

48 1) Using Polymorphism in Arrays We can declare an array to be filled with “Shape” objects, then put in Rectangles, Circles, or Triangles samples (an array of Shape objects) [0][1][2]

49 1) Using Polymorphism in Arrays We can declare an array to be filled with “Shape” objects, then put in Rectangles, Circles, or Triangles [0][1][2] firstShape Attributes: length = 17 width = 35 Methods: int computeArea( ) secondShape Attributes: radius = 11 Methods: int computeArea( ) thirdShape Attributes: base = 15 height = 7 Methods: int computeArea( ) samples (an array of Shape objects)

50 1) Using Polymorphism in Arrays We can declare an array to be filled with “Shape” objects, then put in Rectangles, Circles, or Triangles [0][1][2] firstShape Attributes: length = 17 width = 35 Methods: int computeArea( ) secondShape Attributes: radius = 11 Methods: int computeArea( ) thirdShape Attributes: base = 15 height = 7 Methods: int computeArea( ) Rectangle Circle Triangle samples (an array of Shape objects)

51 2) Using Polymorphism for Method Arguments We can create a procedure that has Shape as the type of its argument, then use it for objects of type Rectangle, Circle, and Triangle public int calculatePaint (Shape myFigure) { final int PRICE = 5; int totalCost = PRICE * myFigure.computeArea( ); return totalCost; } The actual definition of computeArea( ) is known only at runtime, not compile time – this is “dynamic binding”

52 2) Using Polymorphism for Method Arguments Polymorphism give us a powerful way of writing code that can handle multiple types of objects, in a unified way public int calculatePaint (Shape myFigure) { final int PRICE = 5; int totalCost = PRICE * myFigure.computeArea( ); return totalCost; } To do this, we need to declare in Shape’s class definition that its subclasses will define the method computeArea( )

53 3) Using Polymorphism for Method Return Type We can write general code, leaving the type of object to be decided at runtime public Shape createPicture ( ) { /* Read in choice from user */ System.out.println(“1 for rectangle, ” + “2 for circle, 3 for triangle:”); SimpleInput sp = new SimpleInput(System.in); int i = sp.readInt( ); if ( i == 1 ) return new Rectangle(17, 35); if ( i == 2 ) return new Circle(11); if ( i == 3 ) return new Triangle(15, 7); }

54 Java Convinced Me to Start Teaching Object-Oriented in Intro to CS Java is Object-Oriented from the Ground Up Java has the elegance that comes from being designed after other OO languages had been in use for many years Java has strong type checking Java handles its own memory allocation Java’s syntax is “standard” (similar to C and C++) Java is a good teaching language, but it (or something close) will also be seen by students in industry

55 Object-Oriented Programming in Industry Large projects are routinely programmed using object-oriented languages nowadays MS-Windows and applications in MS- Office – all developed using object- oriented languages This is the world into which our students are graduating…

56 Conclusions Object-oriented programming provides a superior way of organizing programming projects  It encourages a high degree of modularity in programming, making large projects easier to implement  It provides powerful techniques like inheritance and polymorphism to help organize and reuse code Object-oriented languages like Java both provide a good environment for beginning students to learn programming, and match real-world developments in computer programming