Object-Oriented Programming (OOP) Is A
Object-Oriented Programming (OOP) Is A
programming
Features
Object-oriented programming uses objects, but
not all of the associated techniques and
structures are supported directly in languages
that claim to support OOP. The features listed
below are common among languages
considered to be strongly class- and object-
oriented (or multi-paradigm with OOP support),
with notable exceptions mentioned.[3][4][5][6]
Class-based vs prototype-based …
Encapsulation …
Encapsulation is an object-oriented
programming concept that binds together the
data and functions that manipulate the data,
and that keeps both safe from outside
interference and misuse. Data encapsulation
led to the important OOP concept of data
hiding.
Polymorphism …
Open recursion …
History
OOP languages
This section does not cite any sources.
Learn more
Design patterns
Challenges of object-oriented design are
addressed by several approaches. Most
common is known as the design patterns
codified by Gamma et al.. More broadly, the
term "design patterns" can be used to refer to
any general, repeatable, solution pattern to a
commonly occurring problem in software
design. Some of these commonly occurring
problems have implications and solutions
particular to object-oriented development.
Formal semantics
Objects are the run-time entities in an object-
oriented system. They may represent a person,
a place, a bank account, a table of data, or any
item that the program has to handle.
See also
Comparison of programming languages
(object-oriented programming)
Comparison of programming paradigms
Component-based software engineering
Design by contract
Object association
Object database
Object modeling language
Object-oriented analysis and design
Object-relational impedance mismatch (and
The Third Manifesto)
Object-relational mapping
Systems …
CADES
Common Object Request Broker Architecture
(CORBA)
Distributed Component Object Model
Distributed Data Management Architecture
Jeroo
Modeling languages …
IDEF4
Interface description language
Lepus3
UML
References
1. Kindler, E.; Krivy, I. (2011). "Object-Oriented
Simulation of systems with sophisticated
control". International Journal of General
Systems: 313–343.
2. Lewis, John; Loftus, William (2008). Java
Software Solutions Foundations of
Programming Design 6th ed. Pearson Education
Inc. ISBN 978-0-321-53205-3., section 1.6
"Object-Oriented Programming"
3. Deborah J. Armstrong. The Quarks of Object-
Oriented Development. A survey of nearly 40
years of computing literature which identified a
number of fundamental concepts found in the
large majority of definitions of OOP, in
descending order of popularity: Inheritance,
Object, Class, Encapsulation, Method, Message
Passing, Polymorphism, and Abstraction.
4. John C. Mitchell, Concepts in programming
languages, Cambridge University Press, 2003,
ISBN 0-521-78098-5, p.278. Lists: Dynamic
dispatch, abstraction, subtype polymorphism,
and inheritance.
5. Michael Lee Scott, Programming language
pragmatics, Edition 2, Morgan Kaufmann, 2006,
ISBN 0-12-633951-1, p. 470. Lists encapsulation,
inheritance, and dynamic dispatch.
6. Pierce, Benjamin (2002). Types and
Programming Languages. MIT Press. ISBN 978-
0-262-16209-8., section 18.1 "What is Object-
Oriented Programming?" Lists: Dynamic
dispatch, encapsulation or multi-methods
(multiple dispatch), subtype polymorphism,
inheritance or delegation, open recursion
("this"/"self")
7. Booch, Grady (1986). Software Engineering with
Ada . Addison Wesley. p. 220. ISBN 978-
0805306088. "Perhaps the greatest strength of
an object-oriented approach to development is
that it offers a mechanism that captures a
model of the real world."
8. Ali, Junade (28 September 2016). Mastering
PHP Design Patterns | PACKT Books (1 ed.).
Birmingham, England, UK: Packt Publishing
Limited. p. 11. ISBN 978-1-78588-713-0.
Retrieved 11 December 2017.
9. Jacobsen, Ivar; Magnus Christerson; Patrik
Jonsson; Gunnar Overgaard (1992). Object
Oriented Software Engineering . Addison-Wesley
ACM Press. pp. 43–69 . ISBN 978-0-201-54435-
0.
10. McCarthy, J.; Brayton, R.; Edwards, D.; Fox, P.;
Hodes, L.; Luckham, D.; Maling, K.; Park, D.;
Russell, S. (March 1960). "LISP I Programmers
Manual" (PDF). Boston, Massachusetts:
Artificial Intelligence Group, M.I.T. Computation
Center and Research Laboratory: 88f. Archived
from the original (PDF) on 17 July 2010. "In the
local M.I.T. patois, association lists [of atomic
symbols] are also referred to as "property lists",
and atomic symbols are sometimes called
"objects"."
11. McCarthy, John; Abrahams, Paul W.; Edwards,
Daniel J.; Hart, swapnil d.; Levin, Michael I.
(1962). LISP 1.5 Programmer's Manual . MIT
Press. p. 105 . ISBN 978-0-262-13011-0.
"Object — a synonym for atomic symbol"
12. "Dr. Alan Kay on the Meaning of "Object-Oriented
Programming" " . 2003. Retrieved 11 February
2010.
13. Sutherland, I. E. (30 January 1963). "Sketchpad:
A Man-Machine Graphical Communication
System" . Technical Report No. 296, Lincoln
Laboratory, Massachusetts Institute of
Technology via Defense Technical Information
Center (stinet.dtic.mil). Retrieved 17 July 2019.
14. The Development of the Simula Languages,
Kristen Nygaard, Ole-Johan Dahl, p.254 Uni-
kl.ac.at
15. Ross, Doug. "The first software engineering
language" . LCS/AI Lab Timeline. MIT Computer
Science and Artificial Intelligence Laboratory.
Retrieved 13 May 2010.
16. Holmevik, Jan Rune (1994). "Compiling Simula:
A historical study of technological genesis"
(PDF). IEEE Annals of the History of Computing.
16 (4): 25–37. doi:10.1109/85.329756 .
Archived from the original (PDF) on 30 August
2017. Retrieved 3 March 2018.
17. Dahl, Ole Johan (2004). "The Birth of Object
Orientation: The Simula Languages" (PDF).
From Object-Orientation to Formal Methods.
Lecture Notes in Computer Science. 2635.
pp. 15–25. CiteSeerX 10.1.1.133.6730 .
doi:10.1007/978-3-540-39993-3_3 . ISBN 978-3-
540-21366-6. Retrieved 3 March 2018.
18. Bertrand Meyer (2009). Touch of Class: Learning
to Program Well with Objects and Contracts.
Springer Science & Business Media. p. 329.
Bibcode:2009tclp.book.....M .
ISBN 9783540921448.
19. Kay, Alan. "The Early History of Smalltalk" .
Archived from the original on 10 July 2008.
Retrieved 13 September 2007.
20. 1995 (June) Visual FoxPro 3.0, FoxPro evolves
from a procedural language to an object-
oriented language. Visual FoxPro 3.0 introduces
a database container, seamless client/server
capabilities, support for ActiveX technologies,
and OLE Automation and null support. Summary
of Fox releases
21. FoxPro History web site: Foxprohistory.org
22. 1995 Reviewers Guide to Visual FoxPro 3.0:
DFpug.de
23. Khurana, Rohit (1 November 2009). Object
Oriented Programming with C++, 1E .
ISBN 9788125925323.
24. "The Emerald Programming Language" . 26
February 2011.
25. Neward, Ted (26 June 2006). "The Vietnam of
Computer Science" . Interoperability Happens.
Archived from the original on 4 July 2006.
Retrieved 2 June 2010.
26. Meyer, Second Edition, p. 230
27. M.Trofimov, OOOP – The Third "O" Solution:
Open OOP. First Class, OMG, 1993, Vol. 3, issue
3, p.14.
28. Wirth, Nicklaus (2006). "Good Ideas, Through the
Looking Glass" (PDF). Computer. 39 (1): 28–39.
doi:10.1109/mc.2006.20 . Retrieved 2 October
2016.
29. Yegge, Steve (30 March 2006). "Execution in the
Kingdom of Nouns" . steve-yegge.blogspot.com.
Retrieved 3 July 2010.
30. Boronczyk, Timothy (11 June 2009). "What's
Wrong with OOP" . zaemis.blogspot.com.
Retrieved 3 July 2010.
31. Ambler, Scott (1 January 1998). "A Realistic
Look at Object-Oriented Reuse" . drdobbs.com.
Retrieved 4 July 2010.
32. Shelly, Asaf (22 August 2008). "Flaws of Object
Oriented Modeling" . Intel Software Network.
Retrieved 4 July 2010.
33. James, Justin (1 October 2007). "Multithreading
is a verb not a noun" . techrepublic.com.
Archived from the original on 10 October 2007.
Retrieved 4 July 2010.
34. Shelly, Asaf (22 August 2008). "HOW TO:
Multicore Programming (Multiprocessing) Visual
C++ Class Design Guidelines, Member
Functions" . support.microsoft.com. Retrieved
4 July 2010.
35. Robert Harper (17 April 2011). "Some thoughts
on teaching FP" . Existential Type Blog.
Retrieved 5 December 2011.
36. Cardelli, Luca (1996). "Bad Engineering
Properties of Object-Oriented Languages" . ACM
Comput. Surv. 28 (4es): 150–es.
doi:10.1145/242224.242415 . ISSN 0360-0300 .
Retrieved 21 April 2010.
37. Armstrong, Joe. In Coders at Work: Reflections
on the Craft of Programming. Peter Seibel, ed.
Codersatwork.com Archived 5 March 2010 at
the Wayback Machine, Accessed 13 November
2009.
38. Stepanov, Alexander. "STLport: An Interview with
A. Stepanov" . Retrieved 21 April 2010.
39. Rich Hickey, JVM Languages Summit 2009
keynote, Are We There Yet? November 2009.
40. Potok, Thomas; Mladen Vouk; Andy Rindos
(1999). "Productivity Analysis of Object-Oriented
Software Developed in a Commercial
Environment" (PDF). Software – Practice and
Experience. 29 (10): 833–847.
doi:10.1002/(SICI)1097-
024X(199908)29:10<833::AID-SPE258>3.0.CO;2-
P . Retrieved 21 April 2010.
41. C. J. Date, Introduction to Database Systems,
6th-ed., Page 650
42. C. J. Date, Hugh Darwen. Foundation for Future
Database Systems: The Third Manifesto (2nd
Edition)
43. Krubner, Lawrence. "Object Oriented
Programming is an expensive disaster which
must end" . smashcompany.com. Archived from
the original on 14 October 2014. Retrieved
14 October 2014.
44. Graham, Paul. "Why ARC isn't especially Object-
Oriented" . PaulGraham.com. Retrieved
13 November 2009.
45. Brodie, Leo (1984). Thinking Forth (PDF).
pp. 92–93. Retrieved 4 May 2018.
46. Hunt, Andrew. "Don't Repeat Yourself" . Category
Extreme Programming. Retrieved 4 May 2018.
47. "Stevey's Blog Rants: Execution in the Kingdom
of Nouns" . Retrieved 20 May 2020.
48. Eric S. Raymond (2003). "The Art of Unix
Programming: Unix and Object-Oriented
Languages" . Retrieved 6 August 2014.
49. Pike, Rob (2 March 2004). "[9fans] Re: Threads:
Sewing badges of honor onto a Kernel" .
comp.os.plan9 (Mailing list). Retrieved
17 November 2016.
50. Pike, Rob (25 June 2012). "Less is exponentially
more" . Retrieved 1 October 2016.
51. Pike, Rob (14 November 2012). "A few years ago
I saw this page" . Archived from the original on
14 August 2018. Retrieved 1 October 2016.
52. Poll, Erik. "Subtyping and Inheritance for
Categorical Datatypes" (PDF). Retrieved 5 June
2011.
53. Abadi, Martin; Cardelli, Luca (1996). A Theory of
Objects . Springer-Verlag New York, Inc.
ISBN 978-0-387-94775-4. Retrieved 21 April
2010.
Further reading
Abadi, Martin; Luca Cardelli (1998). A Theory of
Objects. Springer Verlag. ISBN 978-0-387-
94775-4.
Abelson, Harold; Gerald Jay Sussman (1997).
Structure and Interpretation of Computer
Programs . MIT Press. ISBN 978-0-262-01153-
2.
Armstrong, Deborah J. (February 2006). "The
Quarks of Object-Oriented Development".
Communications of the ACM. 49 (2): 123–128.
doi:10.1145/1113034.1113040 . ISSN 0001-
0782 .
Booch, Grady (1997). Object-Oriented Analysis
and Design with Applications . Addison-Wesley.
ISBN 978-0-8053-5340-2.
Eeles, Peter; Oliver Sims (1998). Building
Business Objects . John Wiley & Sons.
ISBN 978-0-471-19176-6.
Gamma, Erich; Richard Helm; Ralph Johnson;
John Vlissides (1995). Design Patterns:
Elements of Reusable Object Oriented
Software . Addison-Wesley.
Bibcode:1995dper.book.....G . ISBN 978-0-201-
63361-0.
Harmon, Paul; William Morrissey (1996). The
Object Technology Casebook – Lessons from
Award-Winning Business Applications . John
Wiley & Sons. ISBN 978-0-471-14717-6.
Jacobson, Ivar (1992). Object-Oriented Software
Engineering: A Use Case-Driven Approach.
Addison-Wesley. Bibcode:1992oose.book.....J .
ISBN 978-0-201-54435-0.
Kay, Alan. The Early History of Smalltalk .
Archived from the original on 4 April 2005.
Retrieved 18 April 2005.
Meyer, Bertrand (1997). Object-Oriented
Software Construction. Prentice Hall. ISBN 978-
0-13-629155-8.
Pecinovsky, Rudolf (2013). OOP – Learn Object
Oriented Thinking & Programming . Bruckner
Publishing. ISBN 978-80-904661-8-0.
Rumbaugh, James; Michael Blaha; William
Premerlani; Frederick Eddy; William Lorensen
(1991). Object-Oriented Modeling and Design .
Prentice Hall. ISBN 978-0-13-629841-0.
Schach, Stephen (2006). Object-Oriented and
Classical Software Engineering, Seventh Edition.
McGraw-Hill. ISBN 978-0-07-319126-3.
Schreiner, Axel-Tobias (1993). Object oriented
programming with ANSI-C. Hanser.
hdl:1850/8544 . ISBN 978-3-446-17426-9.
Taylor, David A. (1992). Object-Oriented
Information Systems – Planning and
Implementation . John Wiley & Sons. ISBN 978-
0-471-54364-0.
Weisfeld, Matt (2009). The Object-Oriented
Thought Process, Third Edition. Addison-
Wesley. ISBN 978-0-672-33016-2.
West, David (2004). Object Thinking (Developer
Reference). Microsoft Press. ISBN 978-
0735619654.
External links