SlideShare a Scribd company logo
Universitatea de Vest din Timişoara   Facultatea de Matematică şi Informatică




Object Oriented Programming




                                        Lect. Dr. Daniel POP
“Getting around”
    New things will be thought both in courses and in labs; don’t
    miss them; they all matter for the final exam!
    In the ‘Further Reading’ sections – what’s in bold is mandatory,
    the rest being optional reading
    Feedback is always welcome; there’s no stupid question!; don’t
    be afraid to interrupt!
    Attendance to courses and labs: according to faculty’s rules
    Final examination: practical + written tests (to be further refined)
    Contact information:
      – Email: danielpop@info.uvt.ro
      – Web: http://web.info.uvt.ro/~danielpop


Programming II                Object-Oriented Programming                  2
Scope and objectives
Scope
  Develop the knowledge and skills for building
  small/medium-sized object-oriented programs

Objectives
  To learn object-oriented concepts
  To know C++ language syntax
  To build console applications using C++ language (GUI,
  database access and other additional libraries are not in the
  scope of this course and will be covered by further courses)
  Introduction to object-oriented analysis and design

Programming II         Object-Oriented Programming                3
Course Outline
•     Programming techniques and object-oriented history
•     Abstract data types
•     Object-oriented concepts: classes and objects
•     Operator overloading
•     Class relationships
•     Inheritance. Multiple inheritance. Class hierarchies
•     Exception handling
•     Generic programming. Template class & functions. Standard
      Template Library (STL)
•     Object-oriented analysis and design. UML. Design patterns
Programming II          Object-Oriented Programming               4
Course #1 Agenda
•     The Road To Object-Oriented Programming and
      Beyond
•     Object-oriented Programming and C++ History




Programming II       Object-Oriented Programming    5
The Road to OOP and Beyond

   Unstructured programming
   Procedural programming
   Modular programming
   Data abstraction
   Object-oriented programming
   Generic programming




Programming II        Object-Oriented Programming   6
Unstructured Programming
   Simple / small application consisting of one main program
   Program = sequence of commands (statements) which modify global
   data
   Drawback: unmanageable as program gets bigger; a lot of
   copy/paste-ed code
   Example: in Assembler, C, Pascal etc.
    test.c

    // data
    void main(int argc, char* argv[]) {
        // local data
        // statements
    }


Programming II                            Object-Oriented Programming   7
Procedural Programming
   Based on the notion of procedure (function)
   Decide which procedures you want; use the best algorithms you can find.
   Drawback: handling different the data structures and the algorithms operating on
   data
   Example: programs written using C, Pascal, Fortran, Algol
    test.c
    double sqrt(double arg1) {                         void f(double arg1, sometype arg2) {
       ….                                                 ….
       ….                                                 sqrt(arg1);
    }                                                     ….
                                                       }
    void main(int argc, char* argv[]) {
       // local data
       f(10, data1);
       // statements
       sqrt(14.6);
    }
Programming II                            Object-Oriented Programming                         8
Modular Programming
   Program size grows  Organizing data
   Decide which modules you want; partition the program so that data is hidden in
   modules. (data hiding principle)
   Drawback: only one state per module + each module exists only once in one program
   user-defined types doesn’t behave the same way as built-in types
   Example: programs written in C, Modula-2
    stack.h                                                    stack.c
    // declaration of the interface of module                  #include "stack.h"
    char pop();                                                // ‘‘static’’ means local to this file/module
    void push(char);                                           static char v[stack_size];
    const stack_size = 100;
                                                               static char* p = v; // the stack is initially empty
    main.c
                                                               char pop() {
    #include "stack.h"
                                                                     // check for underflow and pop
    void some_function() {
                                                               }
       push(’c’);
       char c = pop();                                         void push(char c) {
       if (c != ’c’) error("impossible");                            // check for overflow and push
    }                                                          }
Programming II                              Object-Oriented Programming                                              9
Data Abstraction (I)
   Based on user-defined types that behave the same way as built-in types (Abstract
   Data Types)
   Decide which types you want; provide a full set of operations for each type.
   Drawback:no way of adapting an ADT to new uses except by modifying its
   definition (need for “type fields” that distinguish between various instantiations)
   Example: programs written using Ada, C++, Clu, Java
  complex.h                                                                    main.c
  class complex {
              double re, im;                                                   void f() {
  public:                                                                        int ia = 2,ib = 1/a;
              complex(double r, double i) { re=r; im=i; }                        complex a = 2.3;
              complex(double r) { re=r; im=0; } // float->complex conversion     complex b = 1/a;
              friend complex operator+(complex, complex);                        complex c = a+b*complex(1,2.3);
              friend complex operator-(complex, complex); // binary minus
              friend complex operator-(complex); // unary minus                    c = -(a/b)+2;
              // ...                                                           }
  };
Programming II                          Object-Oriented Programming                                            10
Data Abstraction (II)
   Drawback:no way of adapting an ADT to new uses except by
   modifying its definition (need for “type fields” that distinguish between
   various instantiations)            shape.cpp
                                      void shape::draw() {
   Example:                              switch (k) {
  shape.h                                                          case circle: // draw a circle
  enum kind { circle, triangle, square };                                       break;

  class shape {                                                    case triangle: // draw a triangle
      point center;                                                            break;
      color col;
      kind k;                                                      case square: // draw a square
      // representation of shape                                             break;
  public:
     point where() { return center; }                               default: // unknown shape
     void move(point to) { center = to; draw(); }              }
     void draw();                                          }
  };

Programming II                               Object-Oriented Programming                               11
Object-Oriented Programming
   World of interacting objects, each one managing its own state
   Decide which classes you want; provide a full set of
   operations for each class; make commonality explicit by
   using inheritance.
   Example: programs written using Simula, C++, Java, Eiffel, Smalltalk
   etc.
  shape.h                                               rectangle.h
  class shape {                                         class rectangle : public shape {
      point center;                                        double width, height;
      color col;                                           // representation of rectangle
      // representation of shape                        public:
  public:                                                  void draw() {
     point where() { return center; }                          // draw the rectangle
     void move(point to) { center = to; draw(); }          }
     virtual void draw();                               };
  };

Programming II                             Object-Oriented Programming                      12
Generic Programming
   Express algorithms independently of representation details
   Decide which algorithms you want; parameterize them so
   that they work for a variety of suitable types and data
   structures.
   Example: programs written using C++, Java (≥ 1.5)
   stack.h                                 file.cpp
   template<class T> class stack {         void f() {
      T* v;                                    stack<char> schar;
      int max_size, top;                       stack<complex> scomplex;
   Public:                                     stack<list<int>> slistint;
      stack(int s);
      ~stack();                                schar.push(‘c’);
      void push(T v);                          if(schar.pop()!=‘c’) throw Impossible();
      T pop();                                 scomplex.push(complex(3, 2));
   };                                      }

Programming II                        Object-Oriented Programming                         13
Object-Oriented Programming

1.    What is Object-Oriented Programming?
2.    Short history of OOP
3.    What is C++?
4.    Short history of C++




Programming II        Object-Oriented Programming   14
Definitions (I)
• DEFINITION [Object Oriented Programming] A language or technique is
object-oriented if and only if it directly supports [Stroustrup, 1995]:
[1] Abstraction – providing some form of classes and objects
[2] Inheritance – providing the ability to build new abstractions out of existing
ones
[3] Runtime polymorphism – providing some form of runtime binding.

• This definition includes all major languages commonly referred to as
object-oriented: Ada95, Beta, C++, Java, CLOS, Eiffel, Simula, Smalltalk,
and many other languages fit this definition. Classical programming
languages without classes, such as C, Fortran4, and Pascal, are excluded.
Languages that lack direct support for inheritance or runtime binding, such
as Ada88 and ML are also excluded.
Programming II              Object-Oriented Programming                        15
Definitions (II)
• DEFINITION A typical dictionary definition reads: object: a visible or tangible thing of
relative stable form; a thing that may be apprehended intellectually; a thing to which
thought or action is directed [The Random House College Dictionary, 1975]

• DEFINITION [Object] Samplings from the OO literature include:
[1] An object has identity, state and behavior ([Booch, 1990]).
[2] An object is a unit of structural and behavioral modularity that has properties ([Buhr,
1998]).
[3] An object as a conceptual entity that: is identifiable, has features that span a local
state space, has operations that can change the status of the system locally, while also
inducing operations in peer objects. ([de Champeaux, 1993])

• Not easy to think “object-oriented”; shift from structural thinking; using classes,
methods and attributes is not OO!

Programming II                   Object-Oriented Programming                                  16
A Short History of Object-Oriented Programming
    Simula 67 – the first OO programming language; extension of ALGOL60
    Smalltalk – conceived by Alan Kay (Smalltalk-72, Smalltalk-80); dynamically
    typed; Strongtalk (1993) – Smalltalk + type system
    mid 80’s – many languages added support for OO: Objective C, C++, Object
    Pascal, Modula 3, Oberon, Objective CAML, CLOS.
    Eiffel – Bertrand Meyer (1988) – Pascal-like syntax, design-by-contract
    Other “exotic” OO languages: Sather, Trellis/Owl, Emerald, Beta (evolution
    of Simula), Self
    Java – James Gosling (1995); Java 1.5 (2004) – support for generic
    programming
    (Theoretical) extensions to Java: e.g. GJ (1998)

[Bruce, 2002]
Programming II              Object-Oriented Programming                       17
What is C++?
• DEFINITION 1: C++ is a general-purpose programming language with a
bias towards systems programming that supports efficient low-level
computation, data abstraction, object-oriented programming, and generic
programming. [Stroustrup, 1999]

• DEFINITION 2: C++ is a statically-typed general-purpose language
relying on classes and virtual functions to support object-oriented
programming, templates to support generic programming, and providing
low-level facilities [Stroustrup, 1996]
to support detailed systems programming.




Programming II              Object-Oriented Programming                   18
C++ Design Ideas
C++ was designed to support a range of good and useful styles. Whether they were object-oriented,
   and in which sense of the word, was either irrelevant or a minor concern [Stroustrup, 1995]:

    [1] Abstraction – the ability to represent concepts directly in a program and hide incidental details
    behind well-defined interfaces – is the key to every flexible and comprehensible system of any
    significant size.
    [2] Encapsulation – the ability to provide guarantees that an abstraction is used only according to
    its specification – is crucial to defend abstractions against corruption.
    [3] Polymorphism – the ability to provide the same interface to objects with differing
    implementations – is crucial to simplify code using abstractions.
    [4] Inheritance – the ability to compose new abstractions from existing one – is one of the most
    powerful ways of constructing useful abstractions.
    [5] Genericity – the ability to parameterize types and functions by types and values – is essential
    for expressing type-safe containers and a powerful tool for expressing general algorithms.
    [6] Coexistence with other languages and systems – essential for functioning in real-world
    execution environments.
    [7] Runtime compactness and speed – essential for classical systems programming.
    [8] Static type safety – an integral property of languages of the family to which C++ belongs and
    valuable both for guaranteeing properties of a design and for providing runtime and space
    efficiency.
Programming II                       Object-Oriented Programming                                            19
A Short History of C++
    1979 – 1983 C with Classes: Bjarne Stroustrup (AT&T Bell Labs)
    ports concepts (e.g. classes, inheritance) from Simula67 to C
    1982 – 1985 From C with Classes to C++: the first commercial
    release and the printing of the book that defined C++ in October 1985
    1985 – 1988 Release 2.0: Evolutions from the first release
    1987 – today The Explosion in Interest and Use: growth of C++ tools
    and library industry.
    1988 – today Standardization: formal ISO and ANSI standardization.
    1994 : Standard Template Library
    1998 : International C++ standard

[Stroustrup 1992, Stroustrup 1997]

Programming II            Object-Oriented Programming                   20
Further Reading
Programming Techniques
• [Stroustrup, 1997] Bjarne Stroustrup – The C++ Programming Language 3rd Edition, Addison Wesley, 1997 [Chapter 2]
• [Mueller, 1996] Peter Müller – Introduction to Object-Oriented Programming Using C++, Globewide
 Network Academy (GNA) www.gnacademy.org, 1996 [Chapter 2]
• [Stroustrup, 1991] Bjarne Stroustrup
 - What is Object-Oriented Programming? (1991 revised version). Proc. 1st European Software Festival. February, 1991
• [Stroustrup, 1999] Bjarne Stroustrup - An Overview of the C++ Programming Language in “The Handbook of Object
Technology” (Editor: Saba Zamir). CRC Press LLC, Boca Raton. 1999. ISBN 0-8493-3135-8.
Short History of Object-Oriented Programming and C++
• [Bruce, 2002] Kim B. Bruce – Foundations of Object-Oriented Languages, MIT Press, 2002 [Page 113-116]
• [Stroustrup, 1992] Bjarne Stroustrup - A History of C++: 1979−1 991
• [Stroustrup, 1995] Bjarne Stroustrup - Why C++ is not just an Object-Oriented Programming Language, AT&T Bell
Laboratories Murray Hill, New Jersey; Invited talk given at OOPSLA’95, Austin, Texas.
• [Stroustrup, 1996] Bjarne Stroustrup
 – A Brief Look at C++. IEEE AI Expert, Intelligent Systems and their Applications, pp 13-15. February 1996
• [de Champeaux, 1993] Dennis de Champeaux, Douglas Lea, and Penelope Faure - Object-Oriented System
Development, Addison Wesley,1993
• [Booch, 1990] G. Booch. Object Oriented Design with Applications. Benjamin/Cummings, 1990.
• [Buhr, 1998] R. Buhr. Machine charts for visual prototyping in system design. Technical Report 88-2, Carlton
University, August 1988.
 Programming II                          Object-Oriented Programming                                            21

More Related Content

What's hot

C language
C languageC language
C language
Priya698357
 
2. data, operators, io
2. data, operators, io2. data, operators, io
2. data, operators, io
htaitk
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
changehee lee
 
C++ 11
C++ 11C++ 11
(4) c sharp introduction_object_orientation_part_i
(4) c sharp introduction_object_orientation_part_i(4) c sharp introduction_object_orientation_part_i
(4) c sharp introduction_object_orientation_part_i
Nico Ludwig
 
Introduction to c programming
Introduction to c programmingIntroduction to c programming
Introduction to c programming
gajendra singh
 
Reduce course notes class xii
Reduce course notes class xiiReduce course notes class xii
Reduce course notes class xii
Syed Zaid Irshad
 
Csc1100 lecture01 ch01-pt1
Csc1100 lecture01 ch01-pt1Csc1100 lecture01 ch01-pt1
Csc1100 lecture01 ch01-pt1
IIUM
 
Csc1100 lecture01 ch01-pt1
Csc1100 lecture01 ch01-pt1Csc1100 lecture01 ch01-pt1
Csc1100 lecture01 ch01-pt1
IIUM
 
OOP
OOPOOP
C++ Multiple Inheritance
C++ Multiple InheritanceC++ Multiple Inheritance
C++ Multiple Inheritance
harshaltambe
 
Constructor and destructor in C++
Constructor and destructor in C++Constructor and destructor in C++
Constructor and destructor in C++
Lovely Professional University
 
C and C ++ Training in Ambala ! BATRA COMPUTER CENTRE
C and C ++ Training in Ambala ! BATRA COMPUTER CENTREC and C ++ Training in Ambala ! BATRA COMPUTER CENTRE
C and C ++ Training in Ambala ! BATRA COMPUTER CENTRE
jatin batra
 
Programming in c
Programming in cProgramming in c
Programming in c
Ashutosh Srivasatava
 
Ec oop f90
Ec oop f90Ec oop f90
Ec oop f90
thang7788
 
OOP in C - Before GObject (Chinese Version)
OOP in C - Before GObject (Chinese Version)OOP in C - Before GObject (Chinese Version)
OOP in C - Before GObject (Chinese Version)
Kai-Feng Chou
 
C Programming Tutorial - www.infomtec.com
C Programming Tutorial - www.infomtec.comC Programming Tutorial - www.infomtec.com
C Programming Tutorial - www.infomtec.com
M-TEC Computer Education
 
Hands-on Introduction to the C Programming Language
Hands-on Introduction to the C Programming LanguageHands-on Introduction to the C Programming Language
Hands-on Introduction to the C Programming Language
Vincenzo De Florio
 
Oop04 6
Oop04 6Oop04 6
Oop04 6
schwaa
 

What's hot (19)

C language
C languageC language
C language
 
2. data, operators, io
2. data, operators, io2. data, operators, io
2. data, operators, io
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
 
C++ 11
C++ 11C++ 11
C++ 11
 
(4) c sharp introduction_object_orientation_part_i
(4) c sharp introduction_object_orientation_part_i(4) c sharp introduction_object_orientation_part_i
(4) c sharp introduction_object_orientation_part_i
 
Introduction to c programming
Introduction to c programmingIntroduction to c programming
Introduction to c programming
 
Reduce course notes class xii
Reduce course notes class xiiReduce course notes class xii
Reduce course notes class xii
 
Csc1100 lecture01 ch01-pt1
Csc1100 lecture01 ch01-pt1Csc1100 lecture01 ch01-pt1
Csc1100 lecture01 ch01-pt1
 
Csc1100 lecture01 ch01-pt1
Csc1100 lecture01 ch01-pt1Csc1100 lecture01 ch01-pt1
Csc1100 lecture01 ch01-pt1
 
OOP
OOPOOP
OOP
 
C++ Multiple Inheritance
C++ Multiple InheritanceC++ Multiple Inheritance
C++ Multiple Inheritance
 
Constructor and destructor in C++
Constructor and destructor in C++Constructor and destructor in C++
Constructor and destructor in C++
 
C and C ++ Training in Ambala ! BATRA COMPUTER CENTRE
C and C ++ Training in Ambala ! BATRA COMPUTER CENTREC and C ++ Training in Ambala ! BATRA COMPUTER CENTRE
C and C ++ Training in Ambala ! BATRA COMPUTER CENTRE
 
Programming in c
Programming in cProgramming in c
Programming in c
 
Ec oop f90
Ec oop f90Ec oop f90
Ec oop f90
 
OOP in C - Before GObject (Chinese Version)
OOP in C - Before GObject (Chinese Version)OOP in C - Before GObject (Chinese Version)
OOP in C - Before GObject (Chinese Version)
 
C Programming Tutorial - www.infomtec.com
C Programming Tutorial - www.infomtec.comC Programming Tutorial - www.infomtec.com
C Programming Tutorial - www.infomtec.com
 
Hands-on Introduction to the C Programming Language
Hands-on Introduction to the C Programming LanguageHands-on Introduction to the C Programming Language
Hands-on Introduction to the C Programming Language
 
Oop04 6
Oop04 6Oop04 6
Oop04 6
 

Viewers also liked

36 greedy
36 greedy36 greedy
36 greedy
Ikram Khan
 
Beekman5 std ppt_13
Beekman5 std ppt_13Beekman5 std ppt_13
Algorithm chapter 9
Algorithm chapter 9Algorithm chapter 9
Algorithm chapter 9
chidabdu
 
Introduction of programming tips site
Introduction of programming tips siteIntroduction of programming tips site
Introduction of programming tips site
Ryosuke Miyahara
 
Pharmaceutical suspension
Pharmaceutical suspensionPharmaceutical suspension
Pharmaceutical suspension
Ikram Khan Miwand Mohmand
 
C++ programs
C++ programsC++ programs
C++ programs
Mukund Gandrakota
 
Kfc project of intrntnl business
Kfc project of intrntnl businessKfc project of intrntnl business
Kfc project of intrntnl business
Tanya Sharma
 
OpenFOAM Programming Tips
OpenFOAM Programming TipsOpenFOAM Programming Tips
OpenFOAM Programming Tips
Fumiya Nozaki
 
Presentation On The Survey Of Washing Powder
Presentation On The Survey Of Washing PowderPresentation On The Survey Of Washing Powder
Presentation On The Survey Of Washing Powder
guest561f62
 
14 Principles of HENRI FAYOL project on KFC Class-XII
14 Principles of HENRI FAYOL  project on KFC Class-XII14 Principles of HENRI FAYOL  project on KFC Class-XII
14 Principles of HENRI FAYOL project on KFC Class-XII
Atif Khan
 
Ghari detergent ppt
Ghari detergent pptGhari detergent ppt
Ghari detergent ppt
Rajalaxmi Prakash
 

Viewers also liked (11)

36 greedy
36 greedy36 greedy
36 greedy
 
Beekman5 std ppt_13
Beekman5 std ppt_13Beekman5 std ppt_13
Beekman5 std ppt_13
 
Algorithm chapter 9
Algorithm chapter 9Algorithm chapter 9
Algorithm chapter 9
 
Introduction of programming tips site
Introduction of programming tips siteIntroduction of programming tips site
Introduction of programming tips site
 
Pharmaceutical suspension
Pharmaceutical suspensionPharmaceutical suspension
Pharmaceutical suspension
 
C++ programs
C++ programsC++ programs
C++ programs
 
Kfc project of intrntnl business
Kfc project of intrntnl businessKfc project of intrntnl business
Kfc project of intrntnl business
 
OpenFOAM Programming Tips
OpenFOAM Programming TipsOpenFOAM Programming Tips
OpenFOAM Programming Tips
 
Presentation On The Survey Of Washing Powder
Presentation On The Survey Of Washing PowderPresentation On The Survey Of Washing Powder
Presentation On The Survey Of Washing Powder
 
14 Principles of HENRI FAYOL project on KFC Class-XII
14 Principles of HENRI FAYOL  project on KFC Class-XII14 Principles of HENRI FAYOL  project on KFC Class-XII
14 Principles of HENRI FAYOL project on KFC Class-XII
 
Ghari detergent ppt
Ghari detergent pptGhari detergent ppt
Ghari detergent ppt
 

Similar to Course1

designpatterns_blair_upe.ppt
designpatterns_blair_upe.pptdesignpatterns_blair_upe.ppt
designpatterns_blair_upe.ppt
banti43
 
C++ language
C++ languageC++ language
C++ language
Elizabeth Pisarek
 
Functions And Header Files In C++ | Bjarne stroustrup
Functions And Header Files In C++ | Bjarne stroustrupFunctions And Header Files In C++ | Bjarne stroustrup
Functions And Header Files In C++ | Bjarne stroustrup
SyedHaroonShah4
 
c++-language-1208539706757125-9.pdf
c++-language-1208539706757125-9.pdfc++-language-1208539706757125-9.pdf
c++-language-1208539706757125-9.pdf
nisarmca
 
Basics of objective c
Basics of objective cBasics of objective c
Basics of objective c
sagaroceanic11
 
Csdfsadf
CsdfsadfCsdfsadf
Csdfsadf
Atul Setu
 
C
CC
C
CC
Oops lecture 1
Oops lecture 1Oops lecture 1
Oops lecture 1
rehan16091997
 
Dart, unicorns and rainbows
Dart, unicorns and rainbowsDart, unicorns and rainbows
Dart, unicorns and rainbows
chrisbuckett
 
Chapter27 polymorphism-virtual-function-abstract-class
Chapter27 polymorphism-virtual-function-abstract-classChapter27 polymorphism-virtual-function-abstract-class
Chapter27 polymorphism-virtual-function-abstract-class
Deepak Singh
 
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
LogeekNightUkraine
 
C notes.pdf
C notes.pdfC notes.pdf
C notes.pdf
Durga Padma
 
02 c++g3 d
02 c++g3 d02 c++g3 d
02 c++g3 d
mahago
 
Report on c and c++
Report on c and c++Report on c and c++
Report on c and c++
oggyrao
 
C programming day#1
C programming day#1C programming day#1
C programming day#1
Mohamed Fawzy
 
C by balaguruswami - e.balagurusamy
C   by balaguruswami - e.balagurusamyC   by balaguruswami - e.balagurusamy
C by balaguruswami - e.balagurusamy
Srichandan Sobhanayak
 
C++ Language
C++ LanguageC++ Language
C++ Language
Vidyacenter
 
C++primer
C++primerC++primer
C++primer
leonlongli
 
C tutorial
C tutorialC tutorial
C tutorial
Amit Dhiman
 

Similar to Course1 (20)

designpatterns_blair_upe.ppt
designpatterns_blair_upe.pptdesignpatterns_blair_upe.ppt
designpatterns_blair_upe.ppt
 
C++ language
C++ languageC++ language
C++ language
 
Functions And Header Files In C++ | Bjarne stroustrup
Functions And Header Files In C++ | Bjarne stroustrupFunctions And Header Files In C++ | Bjarne stroustrup
Functions And Header Files In C++ | Bjarne stroustrup
 
c++-language-1208539706757125-9.pdf
c++-language-1208539706757125-9.pdfc++-language-1208539706757125-9.pdf
c++-language-1208539706757125-9.pdf
 
Basics of objective c
Basics of objective cBasics of objective c
Basics of objective c
 
Csdfsadf
CsdfsadfCsdfsadf
Csdfsadf
 
C
CC
C
 
C
CC
C
 
Oops lecture 1
Oops lecture 1Oops lecture 1
Oops lecture 1
 
Dart, unicorns and rainbows
Dart, unicorns and rainbowsDart, unicorns and rainbows
Dart, unicorns and rainbows
 
Chapter27 polymorphism-virtual-function-abstract-class
Chapter27 polymorphism-virtual-function-abstract-classChapter27 polymorphism-virtual-function-abstract-class
Chapter27 polymorphism-virtual-function-abstract-class
 
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
 
C notes.pdf
C notes.pdfC notes.pdf
C notes.pdf
 
02 c++g3 d
02 c++g3 d02 c++g3 d
02 c++g3 d
 
Report on c and c++
Report on c and c++Report on c and c++
Report on c and c++
 
C programming day#1
C programming day#1C programming day#1
C programming day#1
 
C by balaguruswami - e.balagurusamy
C   by balaguruswami - e.balagurusamyC   by balaguruswami - e.balagurusamy
C by balaguruswami - e.balagurusamy
 
C++ Language
C++ LanguageC++ Language
C++ Language
 
C++primer
C++primerC++primer
C++primer
 
C tutorial
C tutorialC tutorial
C tutorial
 

Recently uploaded

UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 

Course1

  • 1. Universitatea de Vest din Timişoara Facultatea de Matematică şi Informatică Object Oriented Programming Lect. Dr. Daniel POP
  • 2. “Getting around” New things will be thought both in courses and in labs; don’t miss them; they all matter for the final exam! In the ‘Further Reading’ sections – what’s in bold is mandatory, the rest being optional reading Feedback is always welcome; there’s no stupid question!; don’t be afraid to interrupt! Attendance to courses and labs: according to faculty’s rules Final examination: practical + written tests (to be further refined) Contact information: – Email: danielpop@info.uvt.ro – Web: http://web.info.uvt.ro/~danielpop Programming II Object-Oriented Programming 2
  • 3. Scope and objectives Scope Develop the knowledge and skills for building small/medium-sized object-oriented programs Objectives To learn object-oriented concepts To know C++ language syntax To build console applications using C++ language (GUI, database access and other additional libraries are not in the scope of this course and will be covered by further courses) Introduction to object-oriented analysis and design Programming II Object-Oriented Programming 3
  • 4. Course Outline • Programming techniques and object-oriented history • Abstract data types • Object-oriented concepts: classes and objects • Operator overloading • Class relationships • Inheritance. Multiple inheritance. Class hierarchies • Exception handling • Generic programming. Template class & functions. Standard Template Library (STL) • Object-oriented analysis and design. UML. Design patterns Programming II Object-Oriented Programming 4
  • 5. Course #1 Agenda • The Road To Object-Oriented Programming and Beyond • Object-oriented Programming and C++ History Programming II Object-Oriented Programming 5
  • 6. The Road to OOP and Beyond Unstructured programming Procedural programming Modular programming Data abstraction Object-oriented programming Generic programming Programming II Object-Oriented Programming 6
  • 7. Unstructured Programming Simple / small application consisting of one main program Program = sequence of commands (statements) which modify global data Drawback: unmanageable as program gets bigger; a lot of copy/paste-ed code Example: in Assembler, C, Pascal etc. test.c // data void main(int argc, char* argv[]) { // local data // statements } Programming II Object-Oriented Programming 7
  • 8. Procedural Programming Based on the notion of procedure (function) Decide which procedures you want; use the best algorithms you can find. Drawback: handling different the data structures and the algorithms operating on data Example: programs written using C, Pascal, Fortran, Algol test.c double sqrt(double arg1) { void f(double arg1, sometype arg2) { …. …. …. sqrt(arg1); } …. } void main(int argc, char* argv[]) { // local data f(10, data1); // statements sqrt(14.6); } Programming II Object-Oriented Programming 8
  • 9. Modular Programming Program size grows  Organizing data Decide which modules you want; partition the program so that data is hidden in modules. (data hiding principle) Drawback: only one state per module + each module exists only once in one program user-defined types doesn’t behave the same way as built-in types Example: programs written in C, Modula-2 stack.h stack.c // declaration of the interface of module #include "stack.h" char pop(); // ‘‘static’’ means local to this file/module void push(char); static char v[stack_size]; const stack_size = 100; static char* p = v; // the stack is initially empty main.c char pop() { #include "stack.h" // check for underflow and pop void some_function() { } push(’c’); char c = pop(); void push(char c) { if (c != ’c’) error("impossible"); // check for overflow and push } } Programming II Object-Oriented Programming 9
  • 10. Data Abstraction (I) Based on user-defined types that behave the same way as built-in types (Abstract Data Types) Decide which types you want; provide a full set of operations for each type. Drawback:no way of adapting an ADT to new uses except by modifying its definition (need for “type fields” that distinguish between various instantiations) Example: programs written using Ada, C++, Clu, Java complex.h main.c class complex { double re, im; void f() { public: int ia = 2,ib = 1/a; complex(double r, double i) { re=r; im=i; } complex a = 2.3; complex(double r) { re=r; im=0; } // float->complex conversion complex b = 1/a; friend complex operator+(complex, complex); complex c = a+b*complex(1,2.3); friend complex operator-(complex, complex); // binary minus friend complex operator-(complex); // unary minus c = -(a/b)+2; // ... } }; Programming II Object-Oriented Programming 10
  • 11. Data Abstraction (II) Drawback:no way of adapting an ADT to new uses except by modifying its definition (need for “type fields” that distinguish between various instantiations) shape.cpp void shape::draw() { Example: switch (k) { shape.h case circle: // draw a circle enum kind { circle, triangle, square }; break; class shape { case triangle: // draw a triangle point center; break; color col; kind k; case square: // draw a square // representation of shape break; public: point where() { return center; } default: // unknown shape void move(point to) { center = to; draw(); } } void draw(); } }; Programming II Object-Oriented Programming 11
  • 12. Object-Oriented Programming World of interacting objects, each one managing its own state Decide which classes you want; provide a full set of operations for each class; make commonality explicit by using inheritance. Example: programs written using Simula, C++, Java, Eiffel, Smalltalk etc. shape.h rectangle.h class shape { class rectangle : public shape { point center; double width, height; color col; // representation of rectangle // representation of shape public: public: void draw() { point where() { return center; } // draw the rectangle void move(point to) { center = to; draw(); } } virtual void draw(); }; }; Programming II Object-Oriented Programming 12
  • 13. Generic Programming Express algorithms independently of representation details Decide which algorithms you want; parameterize them so that they work for a variety of suitable types and data structures. Example: programs written using C++, Java (≥ 1.5) stack.h file.cpp template<class T> class stack { void f() { T* v; stack<char> schar; int max_size, top; stack<complex> scomplex; Public: stack<list<int>> slistint; stack(int s); ~stack(); schar.push(‘c’); void push(T v); if(schar.pop()!=‘c’) throw Impossible(); T pop(); scomplex.push(complex(3, 2)); }; } Programming II Object-Oriented Programming 13
  • 14. Object-Oriented Programming 1. What is Object-Oriented Programming? 2. Short history of OOP 3. What is C++? 4. Short history of C++ Programming II Object-Oriented Programming 14
  • 15. Definitions (I) • DEFINITION [Object Oriented Programming] A language or technique is object-oriented if and only if it directly supports [Stroustrup, 1995]: [1] Abstraction – providing some form of classes and objects [2] Inheritance – providing the ability to build new abstractions out of existing ones [3] Runtime polymorphism – providing some form of runtime binding. • This definition includes all major languages commonly referred to as object-oriented: Ada95, Beta, C++, Java, CLOS, Eiffel, Simula, Smalltalk, and many other languages fit this definition. Classical programming languages without classes, such as C, Fortran4, and Pascal, are excluded. Languages that lack direct support for inheritance or runtime binding, such as Ada88 and ML are also excluded. Programming II Object-Oriented Programming 15
  • 16. Definitions (II) • DEFINITION A typical dictionary definition reads: object: a visible or tangible thing of relative stable form; a thing that may be apprehended intellectually; a thing to which thought or action is directed [The Random House College Dictionary, 1975] • DEFINITION [Object] Samplings from the OO literature include: [1] An object has identity, state and behavior ([Booch, 1990]). [2] An object is a unit of structural and behavioral modularity that has properties ([Buhr, 1998]). [3] An object as a conceptual entity that: is identifiable, has features that span a local state space, has operations that can change the status of the system locally, while also inducing operations in peer objects. ([de Champeaux, 1993]) • Not easy to think “object-oriented”; shift from structural thinking; using classes, methods and attributes is not OO! Programming II Object-Oriented Programming 16
  • 17. A Short History of Object-Oriented Programming Simula 67 – the first OO programming language; extension of ALGOL60 Smalltalk – conceived by Alan Kay (Smalltalk-72, Smalltalk-80); dynamically typed; Strongtalk (1993) – Smalltalk + type system mid 80’s – many languages added support for OO: Objective C, C++, Object Pascal, Modula 3, Oberon, Objective CAML, CLOS. Eiffel – Bertrand Meyer (1988) – Pascal-like syntax, design-by-contract Other “exotic” OO languages: Sather, Trellis/Owl, Emerald, Beta (evolution of Simula), Self Java – James Gosling (1995); Java 1.5 (2004) – support for generic programming (Theoretical) extensions to Java: e.g. GJ (1998) [Bruce, 2002] Programming II Object-Oriented Programming 17
  • 18. What is C++? • DEFINITION 1: C++ is a general-purpose programming language with a bias towards systems programming that supports efficient low-level computation, data abstraction, object-oriented programming, and generic programming. [Stroustrup, 1999] • DEFINITION 2: C++ is a statically-typed general-purpose language relying on classes and virtual functions to support object-oriented programming, templates to support generic programming, and providing low-level facilities [Stroustrup, 1996] to support detailed systems programming. Programming II Object-Oriented Programming 18
  • 19. C++ Design Ideas C++ was designed to support a range of good and useful styles. Whether they were object-oriented, and in which sense of the word, was either irrelevant or a minor concern [Stroustrup, 1995]: [1] Abstraction – the ability to represent concepts directly in a program and hide incidental details behind well-defined interfaces – is the key to every flexible and comprehensible system of any significant size. [2] Encapsulation – the ability to provide guarantees that an abstraction is used only according to its specification – is crucial to defend abstractions against corruption. [3] Polymorphism – the ability to provide the same interface to objects with differing implementations – is crucial to simplify code using abstractions. [4] Inheritance – the ability to compose new abstractions from existing one – is one of the most powerful ways of constructing useful abstractions. [5] Genericity – the ability to parameterize types and functions by types and values – is essential for expressing type-safe containers and a powerful tool for expressing general algorithms. [6] Coexistence with other languages and systems – essential for functioning in real-world execution environments. [7] Runtime compactness and speed – essential for classical systems programming. [8] Static type safety – an integral property of languages of the family to which C++ belongs and valuable both for guaranteeing properties of a design and for providing runtime and space efficiency. Programming II Object-Oriented Programming 19
  • 20. A Short History of C++ 1979 – 1983 C with Classes: Bjarne Stroustrup (AT&T Bell Labs) ports concepts (e.g. classes, inheritance) from Simula67 to C 1982 – 1985 From C with Classes to C++: the first commercial release and the printing of the book that defined C++ in October 1985 1985 – 1988 Release 2.0: Evolutions from the first release 1987 – today The Explosion in Interest and Use: growth of C++ tools and library industry. 1988 – today Standardization: formal ISO and ANSI standardization. 1994 : Standard Template Library 1998 : International C++ standard [Stroustrup 1992, Stroustrup 1997] Programming II Object-Oriented Programming 20
  • 21. Further Reading Programming Techniques • [Stroustrup, 1997] Bjarne Stroustrup – The C++ Programming Language 3rd Edition, Addison Wesley, 1997 [Chapter 2] • [Mueller, 1996] Peter Müller – Introduction to Object-Oriented Programming Using C++, Globewide Network Academy (GNA) www.gnacademy.org, 1996 [Chapter 2] • [Stroustrup, 1991] Bjarne Stroustrup - What is Object-Oriented Programming? (1991 revised version). Proc. 1st European Software Festival. February, 1991 • [Stroustrup, 1999] Bjarne Stroustrup - An Overview of the C++ Programming Language in “The Handbook of Object Technology” (Editor: Saba Zamir). CRC Press LLC, Boca Raton. 1999. ISBN 0-8493-3135-8. Short History of Object-Oriented Programming and C++ • [Bruce, 2002] Kim B. Bruce – Foundations of Object-Oriented Languages, MIT Press, 2002 [Page 113-116] • [Stroustrup, 1992] Bjarne Stroustrup - A History of C++: 1979−1 991 • [Stroustrup, 1995] Bjarne Stroustrup - Why C++ is not just an Object-Oriented Programming Language, AT&T Bell Laboratories Murray Hill, New Jersey; Invited talk given at OOPSLA’95, Austin, Texas. • [Stroustrup, 1996] Bjarne Stroustrup – A Brief Look at C++. IEEE AI Expert, Intelligent Systems and their Applications, pp 13-15. February 1996 • [de Champeaux, 1993] Dennis de Champeaux, Douglas Lea, and Penelope Faure - Object-Oriented System Development, Addison Wesley,1993 • [Booch, 1990] G. Booch. Object Oriented Design with Applications. Benjamin/Cummings, 1990. • [Buhr, 1998] R. Buhr. Machine charts for visual prototyping in system design. Technical Report 88-2, Carlton University, August 1988. Programming II Object-Oriented Programming 21