Katana VentraIP

Object-oriented programming

Object-oriented programming (OOP) is a programming paradigm based on the concept of objects,[1] which can contain data and code: data in the form of fields (often known as attributes or properties), and code in the form of procedures (often known as methods). In OOP, computer programs are designed by making them out of objects that interact with one another.[2][3]

"Object-oriented" redirects here. For other meanings of object-oriented, see Object-orientation.

Many of the most widely used programming languages (such as C++, Java,[4] Python, etc.) are multi-paradigm and they support object-oriented programming to a greater or lesser degree, typically in combination with imperative programming, procedural programming and functional programming.


Significant object-oriented languages include Ada, ActionScript, C++, Common Lisp, C#, Dart, Eiffel, Fortran 2003, Haxe, Java,[4] JavaScript, Kotlin, Logo, MATLAB, Objective-C, Object Pascal, Perl, PHP, Python, R, Raku, Ruby, Scala, SIMSCRIPT, Simula, Smalltalk, Swift, Vala and Visual Basic.NET.

that can store information formatted in a small number of built-in data types like integers and alphanumeric characters. This may include data structures like strings, lists, and hash tables that are either built-in or result from combining variables using memory pointers.

Variables

Procedures – also known as functions, methods, routines, or – that take input, generate output, and manipulate data. Modern languages include structured programming constructs like loops and conditionals.

subroutines

Languages called "pure" OO languages, because everything in them is treated consistently as an object, from primitives such as characters and punctuation, all the way up to whole classes, prototypes, blocks, modules, etc. They were designed specifically to facilitate, even enforce, OO methods. Examples: , Scala, Smalltalk, Eiffel, Emerald,[49] JADE, Self, Raku.

Ruby

Languages designed mainly for OO programming, but with some procedural elements. Examples: , Python, C++, C#, Delphi/Object Pascal, VB.NET.

Java

Languages that are historically , but have been extended with some OO features. Examples: PHP, JavaScript, Perl, Visual Basic (derived from BASIC), MATLAB, COBOL 2002, Fortran 2003, ABAP, Ada 95, Pascal.

procedural languages

Languages with most of the features of objects (classes, methods, inheritance), but in a distinctly original form. Examples: (Oberon-1 or Oberon-2).

Oberon

Languages with support which may be used to resemble OO programming, but without all features of object-orientation. This includes object-based and prototype-based languages. Examples: JavaScript, Lua, Modula-2, CLU.

abstract data type

Chameleon languages that support multiple paradigms, including OO. stands out among these for TclOO, a hybrid object system that supports both prototype-based programming and class-based OO.

Tcl

[67]

co algebraic data types

recursive types

encapsulated state

inheritance

are the basis for understanding objects if function literals can be stored in fields (like in functional-programming languages), but the actual calculi need be considerably more complex to incorporate essential features of OOP. Several extensions of System F<: that deal with mutable objects have been studied;[68] these allow both subtype polymorphism and parametric polymorphism (generics)

records

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.


There have been several attempts at formalizing the concepts used in object-oriented programming. The following concepts and constructs have been used as interpretations of OOP concepts:


Attempts to find a consensus definition or theory behind objects have not proven very successful (however, see Abadi & Cardelli, A Theory of Objects[68] for formal definitions of many OOP concepts and constructs), and often diverge widely. For example, some definitions focus on mental activities, and some on program structuring. One of the simpler definitions is that OOP is the act of using "map" data structures or arrays that can contain functions and pointers to other maps, all with some syntactic and scoping sugar on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping").

Comparison of programming languages (object-oriented programming)

Comparison of programming paradigms

Component-based software engineering

Design by contract

Object association

Object database

Object model reference

Object modeling language

Object-oriented analysis and design

Object-oriented ontology

(and The Third Manifesto)

Object-relational impedance mismatch

Object-relational mapping

; Luca Cardelli (1998). A Theory of Objects. Springer Verlag. ISBN 978-0-387-94775-4.

Abadi, Martin

; Gerald Jay Sussman (1997). Structure and Interpretation of Computer Programs. MIT Press. ISBN 978-0-262-01153-2. Archived from the original on 26 December 2017. Retrieved 22 January 2006.

Abelson, Harold

Armstrong, Deborah J. (February 2006). "The Quarks of Object-Oriented Development". Communications of the ACM. 49 (2): 123–128. :10.1145/1113034.1113040. ISSN 0001-0782. S2CID 11485502.

doi

Bloch, Joshua (2018). "Effective Java: Programming Language Guide" (third ed.). Addison-Wesley.  978-0134685991.

ISBN

Eeles, Peter; (1998). Building Business Objects. John Wiley & Sons. ISBN 978-0-471-19176-6.

Oliver Sims

. The Early History of Smalltalk. Archived from the original on 4 April 2005. Retrieved 18 April 2005.

Kay, Alan

Pecinovsky, Rudolf (2013). . Bruckner Publishing. ISBN 978-80-904661-8-0.

OOP – Learn Object Oriented Thinking & Programming

; Michael Blaha; William Premerlani; Frederick Eddy; William Lorensen (1991). Object-Oriented Modeling and Design. Prentice Hall. ISBN 978-0-13-629841-0.

Rumbaugh, James

Schach, Stephen (2006). Object-Oriented and Classical Software Engineering, Seventh Edition. . ISBN 978-0-07-319126-3.

McGraw-Hill

Schreiner, Axel-Tobias (1993). Object oriented programming with ANSI-C. Hanser. :1850/8544. ISBN 978-3-446-17426-9.

hdl

Taylor, David A. (1992). . John Wiley & Sons. ISBN 978-0-471-54364-0.

Object-Oriented Information Systems – Planning and Implementation

Weisfeld, Matt (2009). The Object-Oriented Thought Process, Third Edition. . ISBN 978-0-672-33016-2.

Addison-Wesley

West, David (2004). Object Thinking (Developer Reference). . ISBN 978-0-7356-1965-4.

Microsoft Press

by L.W.C. Nirosh

Introduction to Object Oriented Programming Concepts (OOP) and More

Discussion on Cons of OOP

OOP Concepts (Java Tutorials)