CINXE.COM
Object-oriented programming - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Object-oriented programming - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"04a32d31-5000-460b-82fe-97f06e232daf","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Object-oriented_programming","wgTitle":"Object-oriented programming","wgCurRevisionId":1258500683,"wgRevisionId":1258500683,"wgArticleId":27471338,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Webarchive template wayback links","CS1 maint: date and year","Articles with short description","Short description matches Wikidata","Use dmy dates from January 2020","All articles with unsourced statements","Articles with unsourced statements from February 2010","Articles needing additional references from August 2009","All articles needing additional references","Articles containing potentially dated statements from 2006", "All articles containing potentially dated statements","Object-oriented programming","Programming paradigms"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Object-oriented_programming","wgRelevantArticleId":27471338,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgRedirectedFrom":"Object-oriented_programming_language","wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":70000,"wgInternalRedirectTargetUrl":"/wiki/Object-oriented_programming", "wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q79872","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready", "ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["mediawiki.action.view.redirect","ext.cite.ux-enhancements","ext.pygments.view","mediawiki.page.media","ext.scribunto.logs","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/1/18/Oop-uml-class-example.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1535"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/1/18/Oop-uml-class-example.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="1024"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="819"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Object-oriented programming - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Object-oriented_programming"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Object-oriented_programming&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Object-oriented_programming"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Object-oriented_programming rootpage-Object-oriented_programming skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Object-oriented+programming" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Object-oriented+programming" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Object-oriented+programming" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Object-oriented+programming" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>History</span> </div> </a> <ul id="toc-History-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Features" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Features"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Features</span> </div> </a> <button aria-controls="toc-Features-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Features subsection</span> </button> <ul id="toc-Features-sublist" class="vector-toc-list"> <li id="toc-Shared_with_non-OOP_languages" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Shared_with_non-OOP_languages"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Shared with non-OOP languages</span> </div> </a> <ul id="toc-Shared_with_non-OOP_languages-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Objects" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Objects"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Objects</span> </div> </a> <ul id="toc-Objects-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Inheritance" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Inheritance"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Inheritance</span> </div> </a> <ul id="toc-Inheritance-sublist" class="vector-toc-list"> <li id="toc-Class-based" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Class-based"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3.1</span> <span>Class-based</span> </div> </a> <ul id="toc-Class-based-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Prototype-based" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Prototype-based"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3.2</span> <span>Prototype-based</span> </div> </a> <ul id="toc-Prototype-based-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Absence" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Absence"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3.3</span> <span>Absence</span> </div> </a> <ul id="toc-Absence-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Dynamic_dispatch/message_passing" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Dynamic_dispatch/message_passing"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.4</span> <span>Dynamic dispatch/message passing</span> </div> </a> <ul id="toc-Dynamic_dispatch/message_passing-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Data_abstraction_and_encapsulation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Data_abstraction_and_encapsulation"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.5</span> <span>Data abstraction and encapsulation</span> </div> </a> <ul id="toc-Data_abstraction_and_encapsulation-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Polymorphism" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Polymorphism"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.6</span> <span>Polymorphism</span> </div> </a> <ul id="toc-Polymorphism-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Open_recursion" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Open_recursion"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.7</span> <span>Open recursion</span> </div> </a> <ul id="toc-Open_recursion-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-OOP_languages" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#OOP_languages"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>OOP languages</span> </div> </a> <button aria-controls="toc-OOP_languages-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle OOP languages subsection</span> </button> <ul id="toc-OOP_languages-sublist" class="vector-toc-list"> <li id="toc-Popularity_and_reception" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Popularity_and_reception"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Popularity and reception</span> </div> </a> <ul id="toc-Popularity_and_reception-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-OOP_in_dynamic_languages" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#OOP_in_dynamic_languages"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>OOP in dynamic languages</span> </div> </a> <ul id="toc-OOP_in_dynamic_languages-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-OOP_in_a_network_protocol" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#OOP_in_a_network_protocol"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3</span> <span>OOP in a network protocol</span> </div> </a> <ul id="toc-OOP_in_a_network_protocol-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Design_patterns" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Design_patterns"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Design patterns</span> </div> </a> <button aria-controls="toc-Design_patterns-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Design patterns subsection</span> </button> <ul id="toc-Design_patterns-sublist" class="vector-toc-list"> <li id="toc-Object_patterns" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Object_patterns"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Object patterns</span> </div> </a> <ul id="toc-Object_patterns-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Inheritance_and_behavioral_subtyping" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Inheritance_and_behavioral_subtyping"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Inheritance and behavioral subtyping</span> </div> </a> <ul id="toc-Inheritance_and_behavioral_subtyping-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Gang_of_Four_design_patterns" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Gang_of_Four_design_patterns"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Gang of Four design patterns</span> </div> </a> <ul id="toc-Gang_of_Four_design_patterns-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Object-orientation_and_databases" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Object-orientation_and_databases"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.4</span> <span>Object-orientation and databases</span> </div> </a> <ul id="toc-Object-orientation_and_databases-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Real-world_modeling_and_relationships" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Real-world_modeling_and_relationships"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.5</span> <span>Real-world modeling and relationships</span> </div> </a> <ul id="toc-Real-world_modeling_and_relationships-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-OOP_and_control_flow" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#OOP_and_control_flow"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.6</span> <span>OOP and control flow</span> </div> </a> <ul id="toc-OOP_and_control_flow-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Responsibility-_vs._data-driven_design" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Responsibility-_vs._data-driven_design"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.7</span> <span>Responsibility- vs. data-driven design</span> </div> </a> <ul id="toc-Responsibility-_vs._data-driven_design-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-SOLID_and_GRASP_guidelines" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#SOLID_and_GRASP_guidelines"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.8</span> <span>SOLID and GRASP guidelines</span> </div> </a> <ul id="toc-SOLID_and_GRASP_guidelines-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Formal_semantics" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Formal_semantics"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Formal semantics</span> </div> </a> <button aria-controls="toc-Formal_semantics-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Formal semantics subsection</span> </button> <ul id="toc-Formal_semantics-sublist" class="vector-toc-list"> <li id="toc-Systems" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Systems"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>Systems</span> </div> </a> <ul id="toc-Systems-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Modeling_languages" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Modeling_languages"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2</span> <span>Modeling languages</span> </div> </a> <ul id="toc-Modeling_languages-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Further_reading" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Further_reading"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Further reading</span> </div> </a> <ul id="toc-Further_reading-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Object-oriented programming</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 78 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-78" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">78 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-af mw-list-item"><a href="https://af.wikipedia.org/wiki/Objekgeori%C3%ABnteerde_programmering" title="Objekgeoriënteerde programmering – Afrikaans" lang="af" hreflang="af" data-title="Objekgeoriënteerde programmering" data-language-autonym="Afrikaans" data-language-local-name="Afrikaans" class="interlanguage-link-target"><span>Afrikaans</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9_%D9%83%D8%A7%D8%A6%D9%86%D9%8A%D8%A9_%D8%A7%D9%84%D8%AA%D9%88%D8%AC%D9%87" title="برمجة كائنية التوجه – Arabic" lang="ar" hreflang="ar" data-title="برمجة كائنية التوجه" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-ast mw-list-item"><a href="https://ast.wikipedia.org/wiki/Programaci%C3%B3n_empobinada_a_oxetos" title="Programación empobinada a oxetos – Asturian" lang="ast" hreflang="ast" data-title="Programación empobinada a oxetos" data-language-autonym="Asturianu" data-language-local-name="Asturian" class="interlanguage-link-target"><span>Asturianu</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/Obyekt_y%C3%B6n%C3%BCml%C3%BC_proqramla%C5%9Fd%C4%B1rma" title="Obyekt yönümlü proqramlaşdırma – Azerbaijani" lang="az" hreflang="az" data-title="Obyekt yönümlü proqramlaşdırma" data-language-autonym="Azərbaycanca" data-language-local-name="Azerbaijani" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%85%E0%A6%AC%E0%A6%9C%E0%A7%87%E0%A6%95%E0%A7%8D%E0%A6%9F_%E0%A6%93%E0%A6%B0%E0%A6%BF%E0%A6%AF%E0%A6%BC%E0%A7%87%E0%A6%A8%E0%A7%8D%E0%A6%9F%E0%A7%87%E0%A6%A1_%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A7%8B%E0%A6%97%E0%A7%8D%E0%A6%B0%E0%A6%BE%E0%A6%AE%E0%A6%BF%E0%A6%82" title="অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং – Bangla" lang="bn" hreflang="bn" data-title="অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং" data-language-autonym="বাংলা" data-language-local-name="Bangla" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-zh-min-nan mw-list-item"><a href="https://zh-min-nan.wikipedia.org/wiki/Bu%CC%8Dt-ki%C4%81%E2%81%BF_t%C5%8D-hi%C3%B2ng_th%C3%AAng-sek_s%C3%A8-k%C3%A8" title="Bu̍t-kiāⁿ tō-hiòng thêng-sek sè-kè – Minnan" lang="nan" hreflang="nan" data-title="Bu̍t-kiāⁿ tō-hiòng thêng-sek sè-kè" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="Minnan" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</span></a></li><li class="interlanguage-link interwiki-be mw-list-item"><a href="https://be.wikipedia.org/wiki/%D0%90%D0%B1%E2%80%99%D0%B5%D0%BA%D1%82%D0%BD%D0%B0-%D0%B0%D1%80%D1%8B%D0%B5%D0%BD%D1%82%D0%B0%D0%B2%D0%B0%D0%BD%D0%B0%D0%B5_%D0%BF%D1%80%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%B0%D0%B2%D0%B0%D0%BD%D0%BD%D0%B5" title="Аб’ектна-арыентаванае праграмаванне – Belarusian" lang="be" hreflang="be" data-title="Аб’ектна-арыентаванае праграмаванне" data-language-autonym="Беларуская" data-language-local-name="Belarusian" class="interlanguage-link-target"><span>Беларуская</span></a></li><li class="interlanguage-link interwiki-be-x-old mw-list-item"><a href="https://be-tarask.wikipedia.org/wiki/%D0%90%D0%B1%E2%80%99%D0%B5%D0%BA%D1%82%D0%BD%D0%B0-%D0%B0%D1%80%D1%8B%D0%B5%D0%BD%D1%82%D0%B0%D0%B2%D0%B0%D0%BD%D0%B0%D0%B5_%D0%BF%D1%80%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%B0%D0%B2%D0%B0%D0%BD%D1%8C%D0%BD%D0%B5" title="Аб’ектна-арыентаванае праграмаваньне – Belarusian (Taraškievica orthography)" lang="be-tarask" hreflang="be-tarask" data-title="Аб’ектна-арыентаванае праграмаваньне" data-language-autonym="Беларуская (тарашкевіца)" data-language-local-name="Belarusian (Taraškievica orthography)" class="interlanguage-link-target"><span>Беларуская (тарашкевіца)</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/%D0%9E%D0%B1%D0%B5%D0%BA%D1%82%D0%BD%D0%BE_%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%B0%D0%BD%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B8%D1%80%D0%B0%D0%BD%D0%B5" title="Обектно ориентирано програмиране – Bulgarian" lang="bg" hreflang="bg" data-title="Обектно ориентирано програмиране" data-language-autonym="Български" data-language-local-name="Bulgarian" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/Objektno_orijentirano_programiranje" title="Objektno orijentirano programiranje – Bosnian" lang="bs" hreflang="bs" data-title="Objektno orijentirano programiranje" data-language-autonym="Bosanski" data-language-local-name="Bosnian" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Programaci%C3%B3_orientada_a_objectes" title="Programació orientada a objectes – Catalan" lang="ca" hreflang="ca" data-title="Programació orientada a objectes" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Objektov%C4%9B_orientovan%C3%A9_programov%C3%A1n%C3%AD" title="Objektově orientované programování – Czech" lang="cs" hreflang="cs" data-title="Objektově orientované programování" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/Objektorienteret_programmering" title="Objektorienteret programmering – Danish" lang="da" hreflang="da" data-title="Objektorienteret programmering" data-language-autonym="Dansk" data-language-local-name="Danish" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-ary mw-list-item"><a href="https://ary.wikipedia.org/wiki/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9_%D8%B3%D8%AA%D9%88%D9%86%D9%8A%D8%A9" title="برمجة ستونية – Moroccan Arabic" lang="ary" hreflang="ary" data-title="برمجة ستونية" data-language-autonym="الدارجة" data-language-local-name="Moroccan Arabic" class="interlanguage-link-target"><span>الدارجة</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Objektorientierte_Programmierung" title="Objektorientierte Programmierung – German" lang="de" hreflang="de" data-title="Objektorientierte Programmierung" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/Objektorienteeritud_programmeerimine" title="Objektorienteeritud programmeerimine – Estonian" lang="et" hreflang="et" data-title="Objektorienteeritud programmeerimine" data-language-autonym="Eesti" data-language-local-name="Estonian" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/%CE%91%CE%BD%CF%84%CE%B9%CE%BA%CE%B5%CE%B9%CE%BC%CE%B5%CE%BD%CE%BF%CF%83%CF%84%CF%81%CE%B5%CF%86%CE%AE%CF%82_%CF%80%CF%81%CE%BF%CE%B3%CF%81%CE%B1%CE%BC%CE%BC%CE%B1%CF%84%CE%B9%CF%83%CE%BC%CF%8C%CF%82" title="Αντικειμενοστρεφής προγραμματισμός – Greek" lang="el" hreflang="el" data-title="Αντικειμενοστρεφής προγραμματισμός" data-language-autonym="Ελληνικά" data-language-local-name="Greek" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos" title="Programación orientada a objetos – Spanish" lang="es" hreflang="es" data-title="Programación orientada a objetos" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/Objektema_programado" title="Objektema programado – Esperanto" lang="eo" hreflang="eo" data-title="Objektema programado" data-language-autonym="Esperanto" data-language-local-name="Esperanto" class="interlanguage-link-target"><span>Esperanto</span></a></li><li class="interlanguage-link interwiki-eu mw-list-item"><a href="https://eu.wikipedia.org/wiki/Objektuetara_bideratutako_programazioa" title="Objektuetara bideratutako programazioa – Basque" lang="eu" hreflang="eu" data-title="Objektuetara bideratutako programazioa" data-language-autonym="Euskara" data-language-local-name="Basque" class="interlanguage-link-target"><span>Euskara</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C%D8%A1%DA%AF%D8%B1%D8%A7" title="برنامهنویسی شیءگرا – Persian" lang="fa" hreflang="fa" data-title="برنامهنویسی شیءگرا" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_objet" title="Programmation orientée objet – French" lang="fr" hreflang="fr" data-title="Programmation orientée objet" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_obxectos" title="Programación orientada a obxectos – Galician" lang="gl" hreflang="gl" data-title="Programación orientada a obxectos" data-language-autonym="Galego" data-language-local-name="Galician" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D" title="객체 지향 프로그래밍 – Korean" lang="ko" hreflang="ko" data-title="객체 지향 프로그래밍" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/%D5%95%D5%A2%D5%B5%D5%A5%D5%AF%D5%BF_%D5%AF%D5%B8%D5%B2%D5%B4%D5%B6%D5%B8%D6%80%D5%B8%D5%B7%D5%BE%D5%A1%D5%AE_%D5%AE%D6%80%D5%A1%D5%A3%D6%80%D5%A1%D5%BE%D5%B8%D6%80%D5%B8%D6%82%D5%B4" title="Օբյեկտ կողմնորոշված ծրագրավորում – Armenian" lang="hy" hreflang="hy" data-title="Օբյեկտ կողմնորոշված ծրագրավորում" data-language-autonym="Հայերեն" data-language-local-name="Armenian" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%91%E0%A4%AC%E0%A5%8D%E0%A4%9C%E0%A5%87%E0%A4%95%E0%A5%8D%E0%A4%9F_%E0%A4%93%E0%A4%B0%E0%A4%BF%E0%A4%8F%E0%A4%82%E0%A4%9F%E0%A5%87%E0%A4%A1_%E0%A4%AA%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A4%BE%E0%A4%AE%E0%A4%BF%E0%A4%82%E0%A4%97" title="ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग – Hindi" lang="hi" hreflang="hi" data-title="ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग" data-language-autonym="हिन्दी" data-language-local-name="Hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/Objektno_orijentirano_programiranje" title="Objektno orijentirano programiranje – Croatian" lang="hr" hreflang="hr" data-title="Objektno orijentirano programiranje" data-language-autonym="Hrvatski" data-language-local-name="Croatian" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-io mw-list-item"><a href="https://io.wikipedia.org/wiki/Objekt-orientizita_programifo" title="Objekt-orientizita programifo – Ido" lang="io" hreflang="io" data-title="Objekt-orientizita programifo" data-language-autonym="Ido" data-language-local-name="Ido" class="interlanguage-link-target"><span>Ido</span></a></li><li class="interlanguage-link interwiki-ilo mw-list-item"><a href="https://ilo.wikipedia.org/wiki/Panangprograma_a_naitaratar_iti_bambanag" title="Panangprograma a naitaratar iti bambanag – Iloko" lang="ilo" hreflang="ilo" data-title="Panangprograma a naitaratar iti bambanag" data-language-autonym="Ilokano" data-language-local-name="Iloko" class="interlanguage-link-target"><span>Ilokano</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek" title="Pemrograman berorientasi objek – Indonesian" lang="id" hreflang="id" data-title="Pemrograman berorientasi objek" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indonesian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikipedia.org/wiki/Hlutbundin_forritun" title="Hlutbundin forritun – Icelandic" lang="is" hreflang="is" data-title="Hlutbundin forritun" data-language-autonym="Íslenska" data-language-local-name="Icelandic" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Programmazione_orientata_agli_oggetti" title="Programmazione orientata agli oggetti – Italian" lang="it" hreflang="it" data-title="Programmazione orientata agli oggetti" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/%D7%AA%D7%9B%D7%A0%D7%95%D7%AA_%D7%9E%D7%95%D7%A0%D7%97%D7%94-%D7%A2%D7%A6%D7%9E%D7%99%D7%9D" title="תכנות מונחה-עצמים – Hebrew" lang="he" hreflang="he" data-title="תכנות מונחה-עצמים" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-ka mw-list-item"><a href="https://ka.wikipedia.org/wiki/%E1%83%9D%E1%83%91%E1%83%98%E1%83%94%E1%83%A5%E1%83%A2%E1%83%96%E1%83%94_%E1%83%9D%E1%83%A0%E1%83%98%E1%83%94%E1%83%9C%E1%83%A2%E1%83%98%E1%83%A0%E1%83%94%E1%83%91%E1%83%A3%E1%83%9A%E1%83%98_%E1%83%9E%E1%83%A0%E1%83%9D%E1%83%92%E1%83%A0%E1%83%90%E1%83%9B%E1%83%98%E1%83%A0%E1%83%94%E1%83%91%E1%83%90" title="ობიექტზე ორიენტირებული პროგრამირება – Georgian" lang="ka" hreflang="ka" data-title="ობიექტზე ორიენტირებული პროგრამირება" data-language-autonym="ქართული" data-language-local-name="Georgian" class="interlanguage-link-target"><span>ქართული</span></a></li><li class="interlanguage-link interwiki-kk mw-list-item"><a href="https://kk.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%96%D0%B3%D0%B5-%D0%B1%D0%B0%D2%93%D1%8B%D1%82%D1%82%D0%B0%D0%BB%D2%93%D0%B0%D0%BD_%D0%B1%D0%B0%D2%93%D0%B4%D0%B0%D1%80%D0%BB%D0%B0%D0%BC%D0%B0%D0%BB%D0%B0%D1%83" title="Объектіге-бағытталған бағдарламалау – Kazakh" lang="kk" hreflang="kk" data-title="Объектіге-бағытталған бағдарламалау" data-language-autonym="Қазақша" data-language-local-name="Kazakh" class="interlanguage-link-target"><span>Қазақша</span></a></li><li class="interlanguage-link interwiki-sw mw-list-item"><a href="https://sw.wikipedia.org/wiki/Uprogramishaji_kiviumbile" title="Uprogramishaji kiviumbile – Swahili" lang="sw" hreflang="sw" data-title="Uprogramishaji kiviumbile" data-language-autonym="Kiswahili" data-language-local-name="Swahili" class="interlanguage-link-target"><span>Kiswahili</span></a></li><li class="interlanguage-link interwiki-ky mw-list-item"><a href="https://ky.wikipedia.org/wiki/%D0%9E%D0%B1%D0%B6%D0%B5%D0%BA%D1%82%D0%BA%D0%B5_%D0%B1%D0%B0%D0%B3%D1%8B%D1%82%D1%82%D0%B0%D0%BB%D0%B3%D0%B0%D0%BD_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D0%BB%D0%BE%D0%BE" title="Обжектке багытталган программалоо – Kyrgyz" lang="ky" hreflang="ky" data-title="Обжектке багытталган программалоо" data-language-autonym="Кыргызча" data-language-local-name="Kyrgyz" class="interlanguage-link-target"><span>Кыргызча</span></a></li><li class="interlanguage-link interwiki-la mw-list-item"><a href="https://la.wikipedia.org/wiki/Programmatura_ad_res_directa" title="Programmatura ad res directa – Latin" lang="la" hreflang="la" data-title="Programmatura ad res directa" data-language-autonym="Latina" data-language-local-name="Latin" class="interlanguage-link-target"><span>Latina</span></a></li><li class="interlanguage-link interwiki-lv mw-list-item"><a href="https://lv.wikipedia.org/wiki/Objektorient%C4%93t%C4%81_programm%C4%93%C5%A1ana" title="Objektorientētā programmēšana – Latvian" lang="lv" hreflang="lv" data-title="Objektorientētā programmēšana" data-language-autonym="Latviešu" data-language-local-name="Latvian" class="interlanguage-link-target"><span>Latviešu</span></a></li><li class="interlanguage-link interwiki-lt mw-list-item"><a href="https://lt.wikipedia.org/wiki/Objektinis_programavimas" title="Objektinis programavimas – Lithuanian" lang="lt" hreflang="lt" data-title="Objektinis programavimas" data-language-autonym="Lietuvių" data-language-local-name="Lithuanian" class="interlanguage-link-target"><span>Lietuvių</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Objektumorient%C3%A1lt_programoz%C3%A1s" title="Objektumorientált programozás – Hungarian" lang="hu" hreflang="hu" data-title="Objektumorientált programozás" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wikipedia.org/wiki/%D0%9E%D0%B1%D1%98%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%B0%D0%BD%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B8%D1%80%D0%B0%D1%9A%D0%B5" title="Објектно-ориентирано програмирање – Macedonian" lang="mk" hreflang="mk" data-title="Објектно-ориентирано програмирање" data-language-autonym="Македонски" data-language-local-name="Macedonian" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%92%E0%B4%AC%E0%B5%8D%E0%B4%9C%E0%B4%95%E0%B5%8D%E0%B4%B1%E0%B5%8D%E0%B4%B1%E0%B5%8D_%E0%B4%93%E0%B4%B1%E0%B4%BF%E0%B4%AF%E0%B4%A8%E0%B5%8D%E0%B4%B1%E0%B4%A1%E0%B5%8D_%E0%B4%AA%E0%B5%8D%E0%B4%B0%E0%B5%8B%E0%B4%97%E0%B5%8D%E0%B4%B0%E0%B4%BE%E0%B4%AE%E0%B4%BF%E0%B4%99%E0%B5%8D_%E0%B4%AD%E0%B4%BE%E0%B4%B7" title="ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷ – Malayalam" lang="ml" hreflang="ml" data-title="ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷ" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-mr mw-list-item"><a href="https://mr.wikipedia.org/wiki/%E0%A4%B5%E0%A4%B8%E0%A5%8D%E0%A4%A4%E0%A5%81%E0%A4%AD%E0%A4%BF%E0%A4%AE%E0%A5%81%E0%A4%96_%E0%A4%86%E0%A4%9C%E0%A5%8D%E0%A4%9E%E0%A4%BE%E0%A4%B5%E0%A4%B2%E0%A5%80" title="वस्तुभिमुख आज्ञावली – Marathi" lang="mr" hreflang="mr" data-title="वस्तुभिमुख आज्ञावली" data-language-autonym="मराठी" data-language-local-name="Marathi" class="interlanguage-link-target"><span>मराठी</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Pengaturcaraan_berorientasi_objek" title="Pengaturcaraan berorientasi objek – Malay" lang="ms" hreflang="ms" data-title="Pengaturcaraan berorientasi objek" data-language-autonym="Bahasa Melayu" data-language-local-name="Malay" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_%D1%85%D0%B0%D0%BD%D0%B4%D0%B0%D0%BB%D1%82%D0%B0%D1%82_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%87%D0%BB%D0%B0%D0%BB" title="Объект хандалтат программчлал – Mongolian" lang="mn" hreflang="mn" data-title="Объект хандалтат программчлал" data-language-autonym="Монгол" data-language-local-name="Mongolian" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-my mw-list-item"><a href="https://my.wikipedia.org/wiki/%E1%80%A1%E1%80%B1%E1%80%AC%E1%80%B7%E1%80%97%E1%80%BA%E1%80%82%E1%80%BB%E1%80%80%E1%80%BA_%E1%80%A1%E1%80%AD%E1%80%AF%E1%80%9B%E1%80%AE%E1%80%9A%E1%80%84%E1%80%B7%E1%80%BA%E1%80%90%E1%80%80%E1%80%BA_%E1%80%95%E1%80%9B%E1%80%AD%E1%80%AF%E1%80%82%E1%80%9B%E1%80%99%E1%80%BA%E1%80%B8%E1%80%99%E1%80%84%E1%80%BA%E1%80%B8" title="အော့ဗ်ဂျက် အိုရီယင့်တက် ပရိုဂရမ်းမင်း – Burmese" lang="my" hreflang="my" data-title="အော့ဗ်ဂျက် အိုရီယင့်တက် ပရိုဂရမ်းမင်း" data-language-autonym="မြန်မာဘာသာ" data-language-local-name="Burmese" class="interlanguage-link-target"><span>မြန်မာဘာသာ</span></a></li><li class="interlanguage-link interwiki-nl badge-Q70894304 mw-list-item" title=""><a href="https://nl.wikipedia.org/wiki/Objectgeori%C3%ABnteerd_programmeren" title="Objectgeoriënteerd programmeren – Dutch" lang="nl" hreflang="nl" data-title="Objectgeoriënteerd programmeren" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" title="オブジェクト指向プログラミング – Japanese" lang="ja" hreflang="ja" data-title="オブジェクト指向プログラミング" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Objektorientert_programmering" title="Objektorientert programmering – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Objektorientert programmering" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-nn mw-list-item"><a href="https://nn.wikipedia.org/wiki/Objektorientert_programmering" title="Objektorientert programmering – Norwegian Nynorsk" lang="nn" hreflang="nn" data-title="Objektorientert programmering" data-language-autonym="Norsk nynorsk" data-language-local-name="Norwegian Nynorsk" class="interlanguage-link-target"><span>Norsk nynorsk</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wikipedia.org/wiki/Obyektga_yo%CA%BBnaltirilgan_dasturlash" title="Obyektga yoʻnaltirilgan dasturlash – Uzbek" lang="uz" hreflang="uz" data-title="Obyektga yoʻnaltirilgan dasturlash" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="Uzbek" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Programowanie_obiektowe" title="Programowanie obiektowe – Polish" lang="pl" hreflang="pl" data-title="Programowanie obiektowe" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_orientada_a_objetos" title="Programação orientada a objetos – Portuguese" lang="pt" hreflang="pt" data-title="Programação orientada a objetos" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-kaa mw-list-item"><a href="https://kaa.wikipedia.org/wiki/Obyektke_ba%C7%B5darlan%C7%B5an_programmalast%C4%B1r%C4%B1w" title="Obyektke baǵdarlanǵan programmalastırıw – Kara-Kalpak" lang="kaa" hreflang="kaa" data-title="Obyektke baǵdarlanǵan programmalastırıw" data-language-autonym="Qaraqalpaqsha" data-language-local-name="Kara-Kalpak" class="interlanguage-link-target"><span>Qaraqalpaqsha</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/Programare_orientat%C4%83_pe_obiecte" title="Programare orientată pe obiecte – Romanian" lang="ro" hreflang="ro" data-title="Programare orientată pe obiecte" data-language-autonym="Română" data-language-local-name="Romanian" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-rue mw-list-item"><a href="https://rue.wikipedia.org/wiki/%D0%9E%D0%B1%D1%94%D0%BA%D1%82%D0%BE%D0%B2%D0%BE_%D0%BE%D1%80%D1%8C%D1%94%D0%BD%D1%82%D0%BE%D0%B2%D0%B0%D0%BD%D0%B5_%D0%BF%D1%80%D0%BE%D2%91%D1%80%D0%B0%D0%BC%D0%BE%D0%B2%D0%B0%D0%BD%D1%8F" title="Обєктово орьєнтоване проґрамованя – Rusyn" lang="rue" hreflang="rue" data-title="Обєктово орьєнтоване проґрамованя" data-language-autonym="Русиньскый" data-language-local-name="Rusyn" class="interlanguage-link-target"><span>Русиньскый</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Объектно-ориентированное программирование – Russian" lang="ru" hreflang="ru" data-title="Объектно-ориентированное программирование" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/Programimi_i_orientuar_n%C3%AB_objekte" title="Programimi i orientuar në objekte – Albanian" lang="sq" hreflang="sq" data-title="Programimi i orientuar në objekte" data-language-autonym="Shqip" data-language-local-name="Albanian" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-scn mw-list-item"><a href="https://scn.wikipedia.org/wiki/Prugrammazzioni_urintata_a_l%27uggetti" title="Prugrammazzioni urintata a l'uggetti – Sicilian" lang="scn" hreflang="scn" data-title="Prugrammazzioni urintata a l'uggetti" data-language-autonym="Sicilianu" data-language-local-name="Sicilian" class="interlanguage-link-target"><span>Sicilianu</span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wikipedia.org/wiki/%E0%B7%80%E0%B7%83%E0%B7%8A%E0%B6%AD%E0%B7%94_%E0%B6%B1%E0%B7%90%E0%B6%B9%E0%B7%94%E0%B6%BB%E0%B7%94_%E0%B6%9A%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B6%B8%E0%B6%BD%E0%B7%9A%E0%B6%9B%E0%B6%B1%E0%B6%BA" title="වස්තු නැඹුරු ක්රමලේඛනය – Sinhala" lang="si" hreflang="si" data-title="වස්තු නැඹුරු ක්රමලේඛනය" data-language-autonym="සිංහල" data-language-local-name="Sinhala" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Object-oriented_programming" title="Object-oriented programming – Simple English" lang="en-simple" hreflang="en-simple" data-title="Object-oriented programming" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/Objektovo_orientovan%C3%A9_programovanie" title="Objektovo orientované programovanie – Slovak" lang="sk" hreflang="sk" data-title="Objektovo orientované programovanie" data-language-autonym="Slovenčina" data-language-local-name="Slovak" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%D9%BE%D8%B1%DB%86%DA%AF%D8%B1%D8%A7%D9%85%D8%B3%D8%A7%D8%B2%DB%8C%DB%8C_%D8%AA%DB%95%D9%86%D8%AE%D9%88%D8%A7%D8%B2" title="پرۆگرامسازیی تەنخواز – Central Kurdish" lang="ckb" hreflang="ckb" data-title="پرۆگرامسازیی تەنخواز" data-language-autonym="کوردی" data-language-local-name="Central Kurdish" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%9E%D0%B1%D1%98%D0%B5%D0%BA%D1%82%D0%BD%D0%BE_%D0%BE%D1%80%D0%B8%D1%98%D0%B5%D0%BD%D1%82%D0%B8%D1%81%D0%B0%D0%BD%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B8%D1%80%D0%B0%D1%9A%D0%B5" title="Објектно оријентисано програмирање – Serbian" lang="sr" hreflang="sr" data-title="Објектно оријентисано програмирање" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/Objektno-orijentisano_programiranje" title="Objektno-orijentisano programiranje – Serbo-Croatian" lang="sh" hreflang="sh" data-title="Objektno-orijentisano programiranje" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="Serbo-Croatian" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Olio-ohjelmointi" title="Olio-ohjelmointi – Finnish" lang="fi" hreflang="fi" data-title="Olio-ohjelmointi" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Objektorienterad_programmering" title="Objektorienterad programmering – Swedish" lang="sv" hreflang="sv" data-title="Objektorienterad programmering" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/%E0%AE%AA%E0%AF%8A%E0%AE%B0%E0%AF%81%E0%AE%B3%E0%AF%8D_%E0%AE%A8%E0%AF%8B%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AF%81_%E0%AE%A8%E0%AE%BF%E0%AE%B0%E0%AE%B2%E0%AE%BE%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%AE%E0%AF%8D" title="பொருள் நோக்கு நிரலாக்கம் – Tamil" lang="ta" hreflang="ta" data-title="பொருள் நோக்கு நிரலாக்கம்" data-language-autonym="தமிழ்" data-language-local-name="Tamil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%82%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%81%E0%B8%81%E0%B8%A3%E0%B8%A1%E0%B9%80%E0%B8%8A%E0%B8%B4%E0%B8%87%E0%B8%A7%E0%B8%B1%E0%B8%95%E0%B8%96%E0%B8%B8" title="การเขียนโปรแกรมเชิงวัตถุ – Thai" lang="th" hreflang="th" data-title="การเขียนโปรแกรมเชิงวัตถุ" data-language-autonym="ไทย" data-language-local-name="Thai" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-tg mw-list-item"><a href="https://tg.wikipedia.org/wiki/%D0%91%D0%B0%D1%80%D0%BD%D0%BE%D0%BC%D0%B0%D0%BD%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%B8_%D1%88%D0%B0%D0%B9%D1%8A%D0%B3%D0%B0%D1%80%D0%BE" title="Барноманависии шайъгаро – Tajik" lang="tg" hreflang="tg" data-title="Барноманависии шайъгаро" data-language-autonym="Тоҷикӣ" data-language-local-name="Tajik" class="interlanguage-link-target"><span>Тоҷикӣ</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Nesne_y%C3%B6nelimli_programlama" title="Nesne yönelimli programlama – Turkish" lang="tr" hreflang="tr" data-title="Nesne yönelimli programlama" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9E%D0%B1%27%D1%94%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D1%96%D1%94%D0%BD%D1%82%D0%BE%D0%B2%D0%B0%D0%BD%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F" title="Об'єктно-орієнтоване програмування – Ukrainian" lang="uk" hreflang="uk" data-title="Об'єктно-орієнтоване програмування" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-ur mw-list-item"><a href="https://ur.wikipedia.org/wiki/%D8%A7%D9%88%D8%A8%D8%AC%DB%8C%DA%A9%D9%B9_%D8%A7%D9%88%D8%B1%DB%8C%D8%A6%D9%86%D9%B9%DA%88_%D9%BE%D8%B1%D9%88%DA%AF%D8%B1%D8%A7%D9%85%D9%86%DA%AF" title="اوبجیکٹ اوریئنٹڈ پروگرامنگ – Urdu" lang="ur" hreflang="ur" data-title="اوبجیکٹ اوریئنٹڈ پروگرامنگ" data-language-autonym="اردو" data-language-local-name="Urdu" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/L%E1%BA%ADp_tr%C3%ACnh_h%C6%B0%E1%BB%9Bng_%C4%91%E1%BB%91i_t%C6%B0%E1%BB%A3ng" title="Lập trình hướng đối tượng – Vietnamese" lang="vi" hreflang="vi" data-title="Lập trình hướng đối tượng" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-wuu mw-list-item"><a href="https://wuu.wikipedia.org/wiki/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%A8%8B%E5%BC%8F%E7%BC%96%E5%88%B6" title="面向对象程式编制 – Wu" lang="wuu" hreflang="wuu" data-title="面向对象程式编制" data-language-autonym="吴语" data-language-local-name="Wu" class="interlanguage-link-target"><span>吴语</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E7%B7%A8%E7%A8%8B" title="物件導向編程 – Cantonese" lang="yue" hreflang="yue" data-title="物件導向編程" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1" title="面向对象程序设计 – Chinese" lang="zh" hreflang="zh" data-title="面向对象程序设计" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q79872#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Object-oriented_programming" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Object-oriented_programming" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Object-oriented_programming"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Object-oriented_programming&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Object-oriented_programming&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Object-oriented_programming"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Object-oriented_programming&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Object-oriented_programming&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Object-oriented_programming" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Object-oriented_programming" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Object-oriented_programming&oldid=1258500683" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Object-oriented_programming&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Object-oriented_programming&id=1258500683&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FObject-oriented_programming"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FObject-oriented_programming"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Object-oriented_programming&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Object-oriented_programming&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:Object-oriented_programming" hreflang="en"><span>Wikimedia Commons</span></a></li><li class="wb-otherproject-link wb-otherproject-wikibooks mw-list-item"><a href="https://en.wikibooks.org/wiki/Object_Oriented_Programming" hreflang="en"><span>Wikibooks</span></a></li><li class="wb-otherproject-link wb-otherproject-wikiversity mw-list-item"><a href="https://en.wikiversity.org/wiki/Theory_of_Programming_Languages/Object_Oriented_Programming" hreflang="en"><span>Wikiversity</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q79872" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"><span class="mw-redirectedfrom">(Redirected from <a href="/w/index.php?title=Object-oriented_programming_language&redirect=no" class="mw-redirect" title="Object-oriented programming language">Object-oriented programming language</a>)</span></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Programming paradigm based on the concept of objects</div> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">"Object-oriented" redirects here. For other meanings of object-oriented, see <a href="/wiki/Object-orientation_(disambiguation)" class="mw-redirect mw-disambig" title="Object-orientation (disambiguation)">Object-orientation</a>.</div> <p class="mw-empty-elt"> </p> <figure class="mw-halign-right" typeof="mw:File/Frame"><a href="/wiki/File:Oop-uml-class-example.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/1/18/Oop-uml-class-example.png" decoding="async" width="161" height="206" class="mw-file-element" data-file-width="161" data-file-height="206" /></a><figcaption><a href="/wiki/UML" class="mw-redirect" title="UML">UML</a> notation for a class. This Button class has <a href="/wiki/Variable_(computer_science)" title="Variable (computer science)">variables</a> for data, and <a href="/wiki/Method_(computer_programming)" title="Method (computer programming)">functions</a>. Through inheritance, a subclass can be created as a subset of the Button class. Objects are instances of a class.</figcaption></figure> <p><b>Object-oriented programming</b> (<b>OOP</b>) is a <a href="/wiki/Programming_paradigm" title="Programming paradigm">programming paradigm</a> based on the concept of <i><a href="/wiki/Object_(computer_science)" title="Object (computer science)">objects</a></i>,<sup id="cite_ref-alanKayOnOO_1-0" class="reference"><a href="#cite_note-alanKayOnOO-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> which can contain <a href="/wiki/Data" title="Data">data</a> and <a href="/wiki/Source-code" class="mw-redirect" title="Source-code">code</a>: data in the form of <a href="/wiki/Field_(computer_science)" title="Field (computer science)">fields</a> (often known as <a href="/wiki/Attribute_(computing)" title="Attribute (computing)">attributes</a> or <a href="/wiki/Property_(programming)" title="Property (programming)">properties</a>), and code in the form of <a href="/wiki/Procedure_(computer_science)" class="mw-redirect" title="Procedure (computer science)">procedures</a> (often known as <a href="/wiki/Method_(computing)" class="mw-redirect" title="Method (computing)">methods</a>). In OOP, <a href="/wiki/Computer_program" title="Computer program">computer programs</a> are designed by making them out of objects that interact with one another.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> </p><p>Many of the most widely used programming languages (such as <a href="/wiki/C%2B%2B" title="C++">C++</a>, <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>,<sup id="cite_ref-FOOTNOTEBloch2018xi–xiiForeword_4-0" class="reference"><a href="#cite_note-FOOTNOTEBloch2018xi–xiiForeword-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> and <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a>) are <a href="/wiki/Multi-paradigm" class="mw-redirect" title="Multi-paradigm">multi-paradigm</a> and support object-oriented programming to a greater or lesser degree, typically in combination with <a href="/wiki/Imperative_programming" title="Imperative programming">imperative programming</a>, <a href="/wiki/Procedural_programming" title="Procedural programming">procedural programming</a> and <a href="/wiki/Functional_programming" title="Functional programming">functional programming</a>. </p><p>Significant object-oriented languages include <a href="/wiki/Ada_(programming_language)" title="Ada (programming language)">Ada</a>, <a href="/wiki/ActionScript" title="ActionScript">ActionScript</a>, <a href="/wiki/C%2B%2B" title="C++">C++</a>, <a href="/wiki/Common_Lisp" title="Common Lisp">Common Lisp</a>, <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="/wiki/Dart_(programming_language)" title="Dart (programming language)">Dart</a>, <a href="/wiki/Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel</a>, <a href="/wiki/Fortran" title="Fortran">Fortran 2003</a>, <a href="/wiki/Haxe" title="Haxe">Haxe</a>, <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>,<sup id="cite_ref-FOOTNOTEBloch2018xi–xiiForeword_4-1" class="reference"><a href="#cite_note-FOOTNOTEBloch2018xi–xiiForeword-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> <a href="/wiki/JavaScript" title="JavaScript">JavaScript</a>, <a href="/wiki/Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a>, <a href="/wiki/Logo_(programming_language)" title="Logo (programming language)">Logo</a>, <a href="/wiki/MATLAB" title="MATLAB">MATLAB</a>, <a href="/wiki/Objective-C" title="Objective-C">Objective-C</a>, <a href="/wiki/Object_Pascal" title="Object Pascal">Object Pascal</a>, <a href="/wiki/Perl" title="Perl">Perl</a>, <a href="/wiki/PHP" title="PHP">PHP</a>, <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="/wiki/R_(programming_language)" title="R (programming language)">R</a>, <a href="/wiki/Raku_(programming_language)" title="Raku (programming language)">Raku</a>, <a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href="/wiki/Scala_(programming_language)" title="Scala (programming language)">Scala</a>, <a href="/wiki/SIMSCRIPT" title="SIMSCRIPT">SIMSCRIPT</a>, <a href="/wiki/Simula" title="Simula">Simula</a>, <a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a>, <a href="/wiki/Swift_(programming_language)" title="Swift (programming language)">Swift</a>, <a href="/wiki/Vala_(programming_language)" title="Vala (programming language)">Vala</a> and <a href="/wiki/Visual_Basic.NET" class="mw-redirect" title="Visual Basic.NET">Visual Basic.NET</a>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="History">History</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=1" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Terminology invoking "objects" in the modern sense of object-oriented programming made its first appearance at the <a href="/wiki/Artificial_intelligence" title="Artificial intelligence">artificial intelligence</a> group at <a href="/wiki/MIT" class="mw-redirect" title="MIT">MIT</a> in the late 1950s and early 1960s. "Object" referred to <a href="/wiki/LISP" class="mw-redirect" title="LISP">LISP</a> atoms with identified properties (attributes).<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> Another early MIT example was <a href="/wiki/Sketchpad" title="Sketchpad">Sketchpad</a> created by <a href="/wiki/Ivan_Sutherland" title="Ivan Sutherland">Ivan Sutherland</a> in 1960–1961; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> Also, in 1968, an MIT <a href="/wiki/ALGOL" title="ALGOL">ALGOL</a> version, AED-0, established a direct link between data structures ("plexes", in that dialect) and procedures, prefiguring what were later termed "messages", "methods", and "member functions".<sup id="cite_ref-simuladev_8-0" class="reference"><a href="#cite_note-simuladev-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> Topics such as <a href="/wiki/Data_abstraction" class="mw-redirect" title="Data abstraction">data abstraction</a> and <a href="/wiki/Modular_programming" title="Modular programming">modular programming</a> were common points of discussion at this time. </p><p>Independently of later MIT work such as AED, <a href="/wiki/Simula" title="Simula">Simula</a> was developed during the years 1961–1967.<sup id="cite_ref-simuladev_8-1" class="reference"><a href="#cite_note-simuladev-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> Simula introduced important concepts that are today an essential part of object-oriented programming, such as <a href="/wiki/Class_(computer_programming)" title="Class (computer programming)">class</a> and <a href="/wiki/Object_(computer_science)" title="Object (computer science)">object</a>, inheritance, and <a href="/wiki/Dynamic_binding_(computing)" class="mw-redirect" title="Dynamic binding (computing)">dynamic binding</a>.<sup id="cite_ref-auto_10-0" class="reference"><a href="#cite_note-auto-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> The object-oriented Simula programming language was used mainly by researchers involved with <a href="/wiki/Physical_modelling" class="mw-redirect" title="Physical modelling">physical modelling</a>, such as models to study and improve the movement of ships and their content through cargo ports.<sup id="cite_ref-auto_10-1" class="reference"><a href="#cite_note-auto-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> </p> <style data-mw-deduplicate="TemplateStyles:r1224211176">.mw-parser-output .quotebox{background-color:#F9F9F9;border:1px solid #aaa;box-sizing:border-box;padding:10px;font-size:88%;max-width:100%}.mw-parser-output .quotebox.floatleft{margin:.5em 1.4em .8em 0}.mw-parser-output .quotebox.floatright{margin:.5em 0 .8em 1.4em}.mw-parser-output .quotebox.centered{overflow:hidden;position:relative;margin:.5em auto .8em auto}.mw-parser-output .quotebox.floatleft span,.mw-parser-output .quotebox.floatright span{font-style:inherit}.mw-parser-output .quotebox>blockquote{margin:0;padding:0;border-left:0;font-family:inherit;font-size:inherit}.mw-parser-output .quotebox-title{text-align:center;font-size:110%;font-weight:bold}.mw-parser-output .quotebox-quote>:first-child{margin-top:0}.mw-parser-output .quotebox-quote:last-child>:last-child{margin-bottom:0}.mw-parser-output .quotebox-quote.quoted:before{font-family:"Times New Roman",serif;font-weight:bold;font-size:large;color:gray;content:" “ ";vertical-align:-45%;line-height:0}.mw-parser-output .quotebox-quote.quoted:after{font-family:"Times New Roman",serif;font-weight:bold;font-size:large;color:gray;content:" ” ";line-height:0}.mw-parser-output .quotebox .left-aligned{text-align:left}.mw-parser-output .quotebox .right-aligned{text-align:right}.mw-parser-output .quotebox .center-aligned{text-align:center}.mw-parser-output .quotebox .quote-title,.mw-parser-output .quotebox .quotebox-quote{display:block}.mw-parser-output .quotebox cite{display:block;font-style:normal}@media screen and (max-width:640px){.mw-parser-output .quotebox{width:100%!important;margin:0 0 .8em!important;float:none!important}}</style><div class="quotebox pullquote floatright" style="width:50%; ;"> <blockquote class="quotebox-quote left-aligned" style=""> <p>I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages (so messaging came at the very beginning – it took a while to see how to do messaging in a programming language efficiently enough to be useful). </p> </blockquote> <p style="padding-bottom: 0;"><cite class="left-aligned" style="">Alan Kay, <sup id="cite_ref-alanKayOnOO_1-1" class="reference"><a href="#cite_note-alanKayOnOO-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></cite></p> </div> <p>Influenced by the work at MIT and the Simula language, in November 1966 <a href="/wiki/Alan_Kay" title="Alan Kay">Alan Kay</a> began working on ideas that would eventually be incorporated into the <a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a> programming language. Kay used the term "object-oriented programming" in conversation as early as 1967.<sup id="cite_ref-alanKayOnOO_1-2" class="reference"><a href="#cite_note-alanKayOnOO-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Although sometimes called "the father of object-oriented programming",<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> Alan Kay has differentiated his notion of OO from the more conventional <a href="/wiki/Abstract_data_type" title="Abstract data type">abstract data type</a> notion of object, and has implied that the computer science establishment did not adopt his notion.<sup id="cite_ref-alanKayOnOO_1-3" class="reference"><a href="#cite_note-alanKayOnOO-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> A 1976 MIT memo co-authored by <a href="/wiki/Barbara_Liskov" title="Barbara Liskov">Barbara Liskov</a> lists <a href="/wiki/Simula_67" class="mw-redirect" title="Simula 67">Simula 67</a>, <a href="/wiki/CLU_(programming_language)" title="CLU (programming language)">CLU</a>, and <a href="/wiki/Alphard_(programming_language)" title="Alphard (programming language)">Alphard</a> as object-oriented languages, but does not mention Smalltalk.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> </p><p>In the 1970s, the first version of the <a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a> programming language was developed at <a href="/wiki/Xerox_PARC" class="mw-redirect" title="Xerox PARC">Xerox PARC</a> by <a href="/wiki/Alan_Kay" title="Alan Kay">Alan Kay</a>, <a href="/wiki/Dan_Ingalls" title="Dan Ingalls">Dan Ingalls</a> and <a href="/wiki/Adele_Goldberg_(computer_scientist)" title="Adele Goldberg (computer scientist)">Adele Goldberg</a>. Smalltalk-72 included a programming environment and was <a href="/wiki/Dynamically_typed" class="mw-redirect" title="Dynamically typed">dynamically typed</a>, and at first was <a href="/wiki/Interpreter_(computing)" title="Interpreter (computing)">interpreted</a>, not <a href="/wiki/Compiled" class="mw-redirect" title="Compiled">compiled</a>. Smalltalk became noted for its application of object orientation at the language-level and its graphical development environment. Smalltalk went through various versions and interest in the language grew.<sup id="cite_ref-Bertrand_Meyer_2009_329_13-0" class="reference"><a href="#cite_note-Bertrand_Meyer_2009_329-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> While <a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a> was influenced by the ideas introduced in Simula 67 it was designed to be a fully dynamic system in which classes could be created and modified dynamically.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> </p><p>During the late 1970s and 1980s, object-oriented programming rose to prominence. The <a href="/wiki/Flavors_(programming_language)" title="Flavors (programming language)">Flavors</a> object-oriented Lisp was developed starting 1979, introducing <a href="/wiki/Multiple_inheritance" title="Multiple inheritance">multiple inheritance</a> and <a href="/wiki/Mixins" class="mw-redirect" title="Mixins">mixins</a>.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> In 1981, Goldberg edited the August issue of <a href="/wiki/Byte_Magazine" class="mw-redirect" title="Byte Magazine">Byte Magazine</a>, introducing Smalltalk and object-oriented programming to a wide audience.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> LOOPS, the object system for <a href="/wiki/Interlisp" title="Interlisp">Interlisp</a>-D, was influenced by Smalltalk and Flavors, and a paper about it was published in 1982.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> In 1986, the <a href="/wiki/Association_for_Computing_Machinery" title="Association for Computing Machinery">Association for Computing Machinery</a> organized the first <i>Conference on Object-Oriented Programming, Systems, Languages, and Applications</i> (OOPSLA), which was attended by 1,000 people. Among other developments was the <a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">Common Lisp Object System</a>, which integrates functional programming and object-oriented programming and allows extension via a <a href="/wiki/Meta-object_protocol" class="mw-redirect" title="Meta-object protocol">Meta-object protocol</a>. In the 1980s, there were a few attempts to design processor architectures that included hardware support for objects in memory but these were not successful. Examples include the <a href="/wiki/Intel_iAPX_432" title="Intel iAPX 432">Intel iAPX 432</a> and the <a href="/wiki/Linn_Products" title="Linn Products">Linn Smart</a> <a href="/wiki/Rekursiv" title="Rekursiv">Rekursiv</a>. </p><p>In the mid-1980s <a href="/wiki/Objective-C" title="Objective-C">Objective-C</a> was developed by <a href="/wiki/Brad_Cox" title="Brad Cox">Brad Cox</a>, who had used Smalltalk at <a href="/wiki/ITT_Inc." title="ITT Inc.">ITT Inc.</a>. <a href="/wiki/Bjarne_Stroustrup" title="Bjarne Stroustrup">Bjarne Stroustrup</a>, who had used Simula for his PhD thesis, created the object-oriented <a href="/wiki/C%2B%2B" title="C++">C++</a>.<sup id="cite_ref-Bertrand_Meyer_2009_329_13-1" class="reference"><a href="#cite_note-Bertrand_Meyer_2009_329-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> In 1985, <a href="/wiki/Bertrand_Meyer" title="Bertrand Meyer">Bertrand Meyer</a> also produced the first design of the <a href="/wiki/Eiffel_language" class="mw-redirect" title="Eiffel language">Eiffel language</a>. Focused on software quality, Eiffel is a purely object-oriented programming language and a notation supporting the entire software lifecycle. Meyer described the Eiffel software development method, based on a small number of key ideas from software engineering and computer science, in <a href="/wiki/Object-Oriented_Software_Construction" title="Object-Oriented Software Construction">Object-Oriented Software Construction</a>.<sup id="cite_ref-FOOTNOTEMeyer1997_18-0" class="reference"><a href="#cite_note-FOOTNOTEMeyer1997-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> Essential to the quality focus of Eiffel is Meyer's reliability mechanism, <a href="/wiki/Design_by_contract" title="Design by contract">design by contract</a>, which is an integral part of both the method and language. </p><p>In the early and mid-1990s object-oriented programming developed as the dominant programming <a href="/wiki/Paradigm" title="Paradigm">paradigm</a> when programming languages supporting the techniques became widely available. These included <a href="/wiki/Visual_FoxPro" title="Visual FoxPro">Visual FoxPro</a> 3.0,<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> <a href="/wiki/C%2B%2B" title="C++">C++</a>,<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> and <a href="/wiki/Delphi_(programming_language)" class="mw-redirect" title="Delphi (programming language)">Delphi</a><sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (February 2010)">citation needed</span></a></i>]</sup>. Its dominance was further enhanced by the rising popularity of <a href="/wiki/Graphical_user_interface" title="Graphical user interface">graphical user interfaces</a>, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the <a href="/wiki/Cocoa_(software)" class="mw-redirect" title="Cocoa (software)">Cocoa</a> frameworks on <a href="/wiki/Mac_OS_X" class="mw-redirect" title="Mac OS X">Mac OS X</a>, written in <a href="/wiki/Objective-C" title="Objective-C">Objective-C</a>, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of <a href="/wiki/Event-driven_programming" title="Event-driven programming">event-driven programming</a> (although this concept is not limited to OOP). </p><p>At <a href="/wiki/ETH_Z%C3%BCrich" class="mw-redirect" title="ETH Zürich">ETH Zürich</a>, <a href="/wiki/Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a> and his colleagues investigated the concept of type checking across module boundaries. <a href="/wiki/Modula-2" title="Modula-2">Modula-2</a> (1978) included this concept, and their succeeding design, <a href="/wiki/Oberon_(programming_language)" title="Oberon (programming language)">Oberon</a> (1987), included a distinctive approach to object orientation, classes, and such. Inheritance is not obvious in Wirth's design since his nomenclature looks in the opposite direction: It is called type extension and the viewpoint is from the parent down to the inheritor. </p><p>Object-oriented features have been added to many previously existing languages, including <a href="/wiki/Ada_(programming_language)" title="Ada (programming language)">Ada</a>, <a href="/wiki/BASIC" title="BASIC">BASIC</a>, <a href="/wiki/Fortran" title="Fortran">Fortran</a>, <a href="/wiki/Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>, and <a href="/wiki/COBOL" title="COBOL">COBOL</a>. Adding these features to languages that were not initially designed for them often led to problems with compatibility and maintainability of code. </p><p>More recently, some languages have emerged that are primarily object-oriented, but that are also compatible with procedural methodology. Two such languages are <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a> and <a href="/wiki/Ruby_programming_language" class="mw-redirect" title="Ruby programming language">Ruby</a>. Probably the most commercially important recent object-oriented languages are <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>, developed by <a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>, as well as <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a> and <a href="/wiki/Visual_Basic.NET" class="mw-redirect" title="Visual Basic.NET">Visual Basic.NET</a> (VB.NET), both designed for Microsoft's <a href="/wiki/.NET_Framework" title=".NET Framework">.NET</a> platform. Each of these two frameworks shows, in its way, the benefit of using OOP by creating an abstraction from implementation. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. </p> <div class="mw-heading mw-heading2"><h2 id="Features">Features</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=2" title="Edit section: Features"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/Comparison_of_programming_languages_(object-oriented_programming)" title="Comparison of programming languages (object-oriented programming)">Comparison of programming languages (object-oriented programming)</a> and <a href="/wiki/List_of_object-oriented_programming_terms" class="mw-redirect" title="List of object-oriented programming terms">List of object-oriented programming terms</a></div> <p>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 <a href="/wiki/Multi-paradigm" class="mw-redirect" title="Multi-paradigm">multi-paradigm</a> with OOP support), with notable exceptions mentioned.<sup id="cite_ref-ArmstrongQuarks_22-0" class="reference"><a href="#cite_note-ArmstrongQuarks-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-pierce_25-0" class="reference"><a href="#cite_note-pierce-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup> <a href="/wiki/Christopher_J._Date" title="Christopher J. Date">Christopher J. Date</a> stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP.<sup id="cite_ref-DatePage650_26-0" class="reference"><a href="#cite_note-DatePage650-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Shared_with_non-OOP_languages">Shared with non-OOP languages</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=3" title="Edit section: Shared with non-OOP languages"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Variable_(computer_science)" title="Variable (computer science)">Variables</a> that can store information formatted in a small number of built-in <a href="/wiki/Data_type" title="Data type">data types</a> like <a href="/wiki/Integer_(computer_science)" title="Integer (computer science)">integers</a> and alphanumeric <a href="/wiki/Character_(computing)" title="Character (computing)">characters</a>. This may include <a href="/wiki/Data_structures" class="mw-redirect" title="Data structures">data structures</a> like <a href="/wiki/String_(computer_science)" title="String (computer science)">strings</a>, <a href="/wiki/List_(abstract_data_type)" title="List (abstract data type)">lists</a>, and <a href="/wiki/Hash_table" title="Hash table">hash tables</a> that are either built-in or result from combining variables using <a href="/wiki/Pointer_(computer_programming)" title="Pointer (computer programming)">memory pointers</a>.</li> <li>Procedures – also known as functions, methods, routines, or <a href="/wiki/Subroutine" class="mw-redirect" title="Subroutine">subroutines</a> – that take input, generate output, and manipulate data. Modern languages include <a href="/wiki/Structured_programming" title="Structured programming">structured programming</a> constructs like <a href="/wiki/Loop_(computing)" class="mw-redirect" title="Loop (computing)">loops</a> and <a href="/wiki/Conditional_(computer_programming)" title="Conditional (computer programming)">conditionals</a>.</li></ul> <p><a href="/wiki/Modular_programming" title="Modular programming">Modular programming</a> support provides the ability to group procedures into files and modules for organizational purposes. Modules are <a href="/wiki/Namespace" title="Namespace">namespaced</a> so identifiers in one module will not conflict with a procedure or variable sharing the same name in another file or module. </p> <div class="mw-heading mw-heading3"><h3 id="Objects">Objects</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=4" title="Edit section: Objects"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Object_(computer_science)" title="Object (computer science)">Object (computer science)</a></div> <p>An object is a <a href="/wiki/Data_structure" title="Data structure">data structure</a> or <a href="/wiki/Abstract_data_type" title="Abstract data type">abstract data type</a> containing <a href="/wiki/Field_(computer_science)" title="Field (computer science)">fields</a> (state <a href="/wiki/Variable_(computer_science)" title="Variable (computer science)">variables</a> containing data) and <a href="/wiki/Method_(computer_programming)" title="Method (computer programming)">methods</a> (<a href="/wiki/Subroutine" class="mw-redirect" title="Subroutine">subroutines</a> or procedures defining the object's behavior in code). Fields may also be known as members, attributes, or properties. Objects are typically stored as contiguous regions of <a href="/wiki/Memory_address" title="Memory address">memory</a>. Objects are accessed somewhat like variables with complex internal structures, and in many languages are effectively <a href="/wiki/Pointer_(computer_programming)" title="Pointer (computer programming)">pointers</a>, serving as actual references to a single instance of said object in memory within a heap or stack. </p><p>Objects sometimes correspond to things found in the real world.<sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup> For example, a graphics program may have objects such as "circle", "square", and "menu". An online shopping system might have objects such as "shopping cart", "customer", and "product". Sometimes objects represent more abstract entities, like an object that represents an open file, or an object that provides the service of translating measurements from U.S. customary to metric. </p><p>Objects can contain other objects in their instance variables; this is known as <a href="/wiki/Object_composition" title="Object composition">object composition</a>. For example, an object in the Employee class might contain (either directly or through a pointer) an object in the Address class, in addition to its own instance variables like "first_name" and "position". Object composition is used to represent "has-a" relationships: every employee has an address, so every Employee object has access to a place to store an Address object (either directly embedded within itself or at a separate location addressed via a pointer). Date and Darwen have proposed a theoretical foundation that uses OOP as a kind of customizable <a href="/wiki/Data_type" title="Data type">type system</a> to support <a href="/wiki/RDBMS" class="mw-redirect" title="RDBMS">RDBMS</a>, but it forbids object pointers.<sup id="cite_ref-ThirdManifesto_28-0" class="reference"><a href="#cite_note-ThirdManifesto-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup> </p><p>The OOP paradigm has been criticized for overemphasizing the use of objects for software design and modeling at the expense of other important aspects (computation/algorithms).<sup id="cite_ref-stepanov_29-0" class="reference"><a href="#cite_note-stepanov-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-hickey_30-0" class="reference"><a href="#cite_note-hickey-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup> For example, <a href="/wiki/Rob_Pike" title="Rob Pike">Rob Pike</a> has said that OOP languages frequently shift the focus from <a href="/wiki/Data_structure" title="Data structure">data structures</a> and <a href="/wiki/Algorithm" title="Algorithm">algorithms</a> to <a href="/wiki/Data_type" title="Data type">types</a>.<sup id="cite_ref-RobPike_31-0" class="reference"><a href="#cite_note-RobPike-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup> <a href="/wiki/Steve_Yegge" title="Steve Yegge">Steve Yegge</a> noted that, as opposed to <a href="/wiki/Functional_programming" title="Functional programming">functional programming</a>:<sup id="cite_ref-yegge_32-0" class="reference"><a href="#cite_note-yegge-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup> </p> <style data-mw-deduplicate="TemplateStyles:r1244412712">.mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 32px}.mw-parser-output .templatequotecite{line-height:1.5em;text-align:left;margin-top:0}@media(min-width:500px){.mw-parser-output .templatequotecite{padding-left:1.6em}}</style><blockquote class="templatequote"><p>Object Oriented Programming puts the nouns first and foremost. Why would you go to such lengths to put one part of speech on a pedestal? Why should one kind of concept take precedence over another? It's not as if OOP has suddenly made verbs less important in the way we actually think. It's a strangely skewed perspective.</p></blockquote> <p><a href="/wiki/Rich_Hickey" title="Rich Hickey">Rich Hickey</a>, creator of <a href="/wiki/Clojure" title="Clojure">Clojure</a>, described object systems as overly simplistic models of the real world. He emphasized the inability of OOP to model time properly, which is getting increasingly problematic as software systems become more concurrent.<sup id="cite_ref-hickey_30-1" class="reference"><a href="#cite_note-hickey-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup> </p><p><a href="/wiki/Alexander_Stepanov" title="Alexander Stepanov">Alexander Stepanov</a> compares object orientation unfavourably to <a href="/wiki/Generic_programming" title="Generic programming">generic programming</a>:<sup id="cite_ref-stepanov_29-1" class="reference"><a href="#cite_note-stepanov-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup> </p> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1244412712"><blockquote class="templatequote"><p>I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras — families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting — saying that everything is an object is saying nothing at all.</p></blockquote> <div class="mw-heading mw-heading3"><h3 id="Inheritance">Inheritance</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=5" title="Edit section: Inheritance"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>OOP languages are diverse, but typically OOP languages allow <a href="/wiki/Inheritance_(object-oriented_programming)" title="Inheritance (object-oriented programming)">inheritance</a> for code reuse and extensibility in the form of either <a href="/wiki/Class_(computer_science)" class="mw-redirect" title="Class (computer science)">classes</a> or <a href="/wiki/Prototype-based_programming" title="Prototype-based programming">prototypes</a>. These forms of inheritance are significantly different, but analogous terminology is used to define the concepts of <i>object</i> and <i>instance</i>. </p> <div class="mw-heading mw-heading4"><h4 id="Class-based">Class-based</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=6" title="Edit section: Class-based"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In <a href="/wiki/Class-based_programming" title="Class-based programming">class-based programming</a>, the most popular style, each object is required to be an <a href="/wiki/Instance_(computer_science)" title="Instance (computer science)">instance</a> of a particular <i>class</i>. The class defines the data format or <a href="/wiki/Data_type" title="Data type">type</a> (including member variables and their types) and available procedures (class methods or member functions) for a given type or class of object. Objects are created by calling a special type of method in the class known as a <a href="/wiki/Constructor_(object-oriented_programming)" title="Constructor (object-oriented programming)">constructor</a>. Classes may inherit from other classes, so they are arranged in a hierarchy that represents "is-a-type-of" relationships. For example, class Employee might inherit from class Person. All the data and methods available to the parent class also appear in the child class with the same names. For example, class Person might define variables "first_name" and "last_name" with method "make_full_name()". These will also be available in class Employee, which might add the variables "position" and "salary". It is guaranteed that all instances of class Employee will have the same variables, such as the name, position, and salary. Procedures and variables can be specific to either the class or the instance; this leads to the following terms: </p> <ul><li><a href="/wiki/Class_variable" title="Class variable">Class variables</a> – belong to the <i>class as a whole</i>; there is only one copy of each variable, shared across all instances of the class</li> <li><a href="/wiki/Instance_variable" title="Instance variable">Instance variables</a> or attributes – data that belongs to individual <i>objects</i>; every object has its own copy of each one. All 4 variables mentioned above (first_name, position etc) are instance variables.</li> <li><a href="/wiki/Member_variable" title="Member variable">Member variables</a> – refers to both the class and instance variables that are defined by a particular class.</li> <li>Class methods – belong to the <i>class as a whole</i> and have access to only class variables and inputs from the procedure call</li> <li>Instance methods – belong to <i>individual objects</i>, and have access to instance variables for the specific object they are called on, inputs, and class variables</li></ul> <p>Depending on the definition of the language, subclasses may or may not be able to override the methods defined by superclasses. <a href="/wiki/Multiple_inheritance" title="Multiple inheritance">Multiple inheritance</a> is allowed in some languages, though this can make resolving overrides complicated. Some languages have special support for other concepts like <a href="/wiki/Trait_(computer_programming)" title="Trait (computer programming)">traits</a> and <a href="/wiki/Mixin" title="Mixin">mixins</a>, though, in any language with multiple inheritance, a mixin is simply a class that does not represent an is-a-type-of relationship. Mixins are typically used to add the same methods to multiple classes. For example, class UnicodeConversionMixin might provide a method unicode_to_ascii() when included in class FileReader and class WebPageScraper, which do not share a common parent. </p><p><a href="/wiki/Abstract_class" class="mw-redirect" title="Abstract class">Abstract classes</a> cannot be instantiated into objects; they exist only for inheritance into other "concrete" classes that can be instantiated. In Java, the <code><a href="/wiki/Final_(Java)" title="Final (Java)">final</a></code> keyword can be used to prevent a class from being subclassed.<sup id="cite_ref-FOOTNOTEBloch201819Chapter_§2_Item_4_Enforce_noninstantiability_with_a_private_constructor_33-0" class="reference"><a href="#cite_note-FOOTNOTEBloch201819Chapter_§2_Item_4_Enforce_noninstantiability_with_a_private_constructor-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading4"><h4 id="Prototype-based">Prototype-based</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=7" title="Edit section: Prototype-based"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In contrast, in <a href="/wiki/Prototype-based_programming" title="Prototype-based programming">prototype-based programming</a>, <i>objects</i> are the primary entities. Generally, the concept of a "class" does not even exist. Rather, the <i>prototype</i> or <i>parent</i> of an object is just another object to which the object is linked. In Self, an object may have multiple or no parents,<sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup> but in the most popular prototype-based language, Javascript, every object has one <i>prototype</i> link (and only one). New objects can be created based on already existing objects chosen as their prototype. You may call two different objects <i>apple</i> and <i>orange</i> a fruit if the object <i>fruit</i> exists, and both <i>apple</i> and <i>orange</i> have <i>fruit</i> as their prototype. The idea of the <i>fruit</i> class does not exist explicitly, but can be modeled as the <a href="/wiki/Equivalence_class" title="Equivalence class">equivalence class</a> of the objects sharing the same prototype, or as the set of objects satisfying a certain interface (<a href="/wiki/Duck_typing" title="Duck typing">duck typing</a>). Unlike class-based programming, it is typically possible in prototype-based languages to define attributes and methods not shared with other objects; for example, the attribute <i>sugar_content</i> may be defined in <i>apple</i> but not <i>orange</i>. </p> <div class="mw-heading mw-heading4"><h4 id="Absence">Absence</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=8" title="Edit section: Absence"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Some languages like <a href="/wiki/Go_(programming_language)" title="Go (programming language)">Go</a> do not support inheritance at all. Go states that it is object-oriented,<sup id="cite_ref-35" class="reference"><a href="#cite_note-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup> and Bjarne Stroustrup, author of C++, has stated that it is possible to do OOP without inheritance.<sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup> The doctrine of <a href="/wiki/Composition_over_inheritance" title="Composition over inheritance">composition over inheritance</a> advocates implementing has-a relationships using composition instead of inheritance. For example, instead of inheriting from class Person, class Employee could give each Employee object an internal Person object, which it then has the opportunity to hide from external code even if class Person has many public attributes or methods. <a href="/wiki/Delegation_(object-oriented_programming)" title="Delegation (object-oriented programming)">Delegation</a> is another language feature that can be used as an alternative to inheritance. </p><p><a href="/wiki/Rob_Pike" title="Rob Pike">Rob Pike</a> has criticized the OO mindset for preferring a multilevel type hierarchy with layered abstractions to a three-line <a href="/wiki/Lookup_table" title="Lookup table">lookup table</a>.<sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup> He has called object-oriented programming "the <a href="/wiki/Roman_numerals" title="Roman numerals">Roman numerals</a> of computing".<sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span class="cite-bracket">[</span>38<span class="cite-bracket">]</span></a></sup> </p><p><a href="/wiki/Robert_C._Martin" title="Robert C. Martin">Bob Martin</a> states that because they are software, related classes do not necessarily share the relationships of the things they represent.<sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span class="cite-bracket">[</span>39<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Dynamic_dispatch/message_passing"><span id="Dynamic_dispatch.2Fmessage_passing"></span>Dynamic dispatch/message passing</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=9" title="Edit section: Dynamic dispatch/message passing"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>It is the responsibility of the object, not any external code, to select the procedural code to execute in response to a method call, typically by looking up the method at run time in a table associated with the object. This feature is known as <a href="/wiki/Dynamic_dispatch" title="Dynamic dispatch">dynamic dispatch</a>. If the call variability relies on more than the single type of the object on which it is called (i.e. at least one other parameter object is involved in the method choice), one speaks of <a href="/wiki/Multiple_dispatch" title="Multiple dispatch">multiple dispatch</a>. A method call is also known as <i><a href="/wiki/Message_passing" title="Message passing">message passing</a></i>. It is conceptualized as a message (the name of the method and its input parameters) being passed to the object for dispatch. </p><p>Dispatch interacts with inheritance; if a method is not present in a given object or class, the dispatch is <a href="/wiki/Delegation_(object-oriented_programming)" title="Delegation (object-oriented programming)">delegated</a> to its parent object or class, and so on, going up the chain of inheritance. </p> <div class="mw-heading mw-heading3"><h3 id="Data_abstraction_and_encapsulation">Data abstraction and encapsulation</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=10" title="Edit section: Data abstraction and encapsulation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Data <a href="/wiki/Abstraction_(computer_science)" title="Abstraction (computer science)">abstraction</a> is a design pattern in which data are visible only to semantically related functions, to prevent misuse. The success of data abstraction leads to frequent incorporation of <a href="/wiki/Data_hiding" class="mw-redirect" title="Data hiding">data hiding</a> as a design principle in object-oriented and pure functional programming. Similarly, <a href="/wiki/Encapsulation_(computer_programming)" title="Encapsulation (computer programming)">encapsulation</a> prevents external code from being concerned with the internal workings of an object. This facilitates <a href="/wiki/Code_refactoring" title="Code refactoring">code refactoring</a>, for example allowing the author of the class to change how objects of that class represent their data internally without changing any external code (as long as "public" method calls work the same way). It also encourages programmers to put all the code that is concerned with a certain set of data in the same class, which organizes it for easy comprehension by other programmers. Encapsulation is a technique that encourages <a href="/wiki/Coupling_(computer_programming)" title="Coupling (computer programming)">decoupling</a>. </p><p>In object oriented programming, objects provide a layer which can be used to separate internal from external code and implement abstraction and encapsulation. External code can only use an object by calling a specific instance method with a certain set of input parameters, reading an instance variable, or writing to an instance variable. A program may create many instances of objects as it runs, which operate independently. This technique, it is claimed, allows easy re-use of the same procedures and data definitions for different sets of data, in addition to potentially mirroring real-world relationships intuitively. Rather than utilizing database tables and programming subroutines, the developer utilizes objects the user may be more familiar with: objects from their application domain.<sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span class="cite-bracket">[</span>40<span class="cite-bracket">]</span></a></sup> These claims that the OOP paradigm enhances reusability and modularity have been criticized.<sup id="cite_ref-badprop_41-0" class="reference"><a href="#cite_note-badprop-41"><span class="cite-bracket">[</span>41<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-armstrongjoe_42-0" class="reference"><a href="#cite_note-armstrongjoe-42"><span class="cite-bracket">[</span>42<span class="cite-bracket">]</span></a></sup> </p><p>The initial design is encouraged to use the most restrictive visibility possible, in order of local (or method) variables, private variables (in object oriented programming), and global (or public) variables, and only be expanded when and as much as necessary. This prevents changes to visibility from invalidating existing code.<sup id="cite_ref-43" class="reference"><a href="#cite_note-43"><span class="cite-bracket">[</span>43<span class="cite-bracket">]</span></a></sup> </p><p>If a class does not allow calling code to access internal object data and permits access through methods only, this is also a form of information hiding. Some languages (Java, for example) let classes enforce access restrictions explicitly, for example, denoting internal data with the <code>private</code> keyword and designating methods intended for use by code outside the class with the <code>public</code> keyword.<sup id="cite_ref-FOOTNOTEBloch201873–77Chapter_§4_Item15_Minimize_the_accessibility_of_classes_and_members_44-0" class="reference"><a href="#cite_note-FOOTNOTEBloch201873–77Chapter_§4_Item15_Minimize_the_accessibility_of_classes_and_members-44"><span class="cite-bracket">[</span>44<span class="cite-bracket">]</span></a></sup> Methods may also be designed public, private, or intermediate levels such as <code>protected</code> (which allows access from the same class and its subclasses, but not objects of a different class).<sup id="cite_ref-FOOTNOTEBloch201873–77Chapter_§4_Item15_Minimize_the_accessibility_of_classes_and_members_44-1" class="reference"><a href="#cite_note-FOOTNOTEBloch201873–77Chapter_§4_Item15_Minimize_the_accessibility_of_classes_and_members-44"><span class="cite-bracket">[</span>44<span class="cite-bracket">]</span></a></sup> In other languages (like Python) this is enforced only by convention (for example, <code>private</code> methods may have names that start with an <a href="/wiki/Underscore" title="Underscore">underscore</a>). In C#, Swift & Kotlin languages, <code>internal</code> keyword permits access only to files present in the same assembly, package, or module as that of the class.<sup id="cite_ref-45" class="reference"><a href="#cite_note-45"><span class="cite-bracket">[</span>45<span class="cite-bracket">]</span></a></sup> </p><p>In programming languages, particularly object-oriented ones, the emphasis on abstraction is vital. Object-oriented languages extend the notion of type to incorporate data abstraction, highlighting the significance of restricting access to internal data through methods.<sup id="cite_ref-46" class="reference"><a href="#cite_note-46"><span class="cite-bracket">[</span>46<span class="cite-bracket">]</span></a></sup> <a href="/wiki/Eric_S._Raymond" title="Eric S. Raymond">Eric S. Raymond</a> has written that object-oriented programming languages tend to encourage thickly layered programs that destroy transparency.<sup id="cite_ref-Eric_S._Raymond_2003_47-0" class="reference"><a href="#cite_note-Eric_S._Raymond_2003-47"><span class="cite-bracket">[</span>47<span class="cite-bracket">]</span></a></sup> Raymond compares this unfavourably to the approach taken with Unix and the <a href="/wiki/C_programming_language" class="mw-redirect" title="C programming language">C programming language</a>.<sup id="cite_ref-Eric_S._Raymond_2003_47-1" class="reference"><a href="#cite_note-Eric_S._Raymond_2003-47"><span class="cite-bracket">[</span>47<span class="cite-bracket">]</span></a></sup> </p><p>The "<a href="/wiki/Open/closed_principle" class="mw-redirect" title="Open/closed principle">open/closed principle</a>" advocates that classes and functions "should be open for extension, but closed for modification". <a href="/wiki/Luca_Cardelli" title="Luca Cardelli">Luca Cardelli</a> has claimed that OOP languages have "extremely poor modularity properties with respect to class extension and modification", and tend to be extremely complex.<sup id="cite_ref-badprop_41-1" class="reference"><a href="#cite_note-badprop-41"><span class="cite-bracket">[</span>41<span class="cite-bracket">]</span></a></sup> The latter point is reiterated by <a href="/wiki/Joe_Armstrong_(programming)" class="mw-redirect" title="Joe Armstrong (programming)">Joe Armstrong</a>, the principal inventor of <a href="/wiki/Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a>, who is quoted as saying:<sup id="cite_ref-armstrongjoe_42-1" class="reference"><a href="#cite_note-armstrongjoe-42"><span class="cite-bracket">[</span>42<span class="cite-bracket">]</span></a></sup> </p> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1244412712"><blockquote class="templatequote"><p>The problem with object-oriented languages is they've got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.</p></blockquote> <p>Leo Brodie has suggested a connection between the standalone nature of objects and a tendency to <a href="/wiki/Duplicate_code" title="Duplicate code">duplicate code</a><sup id="cite_ref-48" class="reference"><a href="#cite_note-48"><span class="cite-bracket">[</span>48<span class="cite-bracket">]</span></a></sup> in violation of the <a href="/wiki/Don%27t_repeat_yourself" title="Don't repeat yourself">don't repeat yourself</a> principle<sup id="cite_ref-49" class="reference"><a href="#cite_note-49"><span class="cite-bracket">[</span>49<span class="cite-bracket">]</span></a></sup> of software development. </p> <div class="mw-heading mw-heading3"><h3 id="Polymorphism">Polymorphism</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=11" title="Edit section: Polymorphism"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Subtyping" title="Subtyping">Subtyping</a> – a form of <a href="/wiki/Polymorphism_(computer_science)" title="Polymorphism (computer science)">polymorphism</a> – is when calling code can be independent of which class in the supported hierarchy it is operating on – the parent class or one of its descendants. Meanwhile, the same operation name among objects in an inheritance hierarchy may behave differently. </p><p>For example, objects of the type Circle and Square are derived from a common class called Shape. The Draw function for each type of Shape implements what is necessary to draw itself while calling code can remain indifferent to the particular type of Shape being drawn. </p><p>This is another type of abstraction that simplifies code external to the class hierarchy and enables strong <a href="/wiki/Separation_of_concerns" title="Separation of concerns">separation of concerns</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Open_recursion">Open recursion</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=12" title="Edit section: Open recursion"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A common feature of objects is that methods are attached to them and can access and modify the object's data fields. In this brand of OOP, there is usually a special name such as <a href="/wiki/This_(computer_programming)" title="This (computer programming)"><code class="mw-highlight mw-highlight-lang-c++ mw-content-ltr" style="" dir="ltr"><span class="k">this</span></code></a> or <code class="mw-highlight mw-highlight-lang-swift mw-content-ltr" style="" dir="ltr"><span class="kc">self</span></code> used to refer to the current object. In languages that support <a href="/wiki/Open_recursion" class="mw-redirect" title="Open recursion">open recursion</a>, object methods can call other methods on the same object (including themselves) using this name. This variable is <i><a href="/wiki/Late-bound" class="mw-redirect" title="Late-bound">late-bound</a></i>; it allows a method defined in one class to invoke another method that is defined later, in some subclass thereof. </p> <div class="mw-heading mw-heading2"><h2 id="OOP_languages"><span class="anchor" id="Object-oriented_source_code"></span>OOP languages</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=13" title="Edit section: OOP languages"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-Unreferenced_section plainlinks metadata ambox ambox-content ambox-Unreferenced" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Question_book-new.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" data-file-width="512" data-file-height="399" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This section <b>does not <a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources">cite</a> any <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">sources</a></b>.<span class="hide-when-compact"> Please help <a href="/wiki/Special:EditPage/Object-oriented_programming" title="Special:EditPage/Object-oriented programming">improve this section</a> by <a href="/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">adding citations to reliable sources</a>. Unsourced material may be challenged and <a href="/wiki/Wikipedia:Verifiability#Burden_of_evidence" title="Wikipedia:Verifiability">removed</a>.</span> <span class="date-container"><i>(<span class="date">August 2009</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/List_of_object-oriented_programming_languages" title="List of object-oriented programming languages">List of object-oriented programming languages</a></div> <p><a href="/wiki/Simula" title="Simula">Simula</a> (1967) is generally accepted as being the first language with the primary features of an object-oriented language. It was created for making <a href="/wiki/Computer_simulation" title="Computer simulation">simulation programs</a>, in which what came to be called objects were the most important information representation. <a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a> (1972 to 1980) is another early example and the one with which much of the theory of OOP was developed. Concerning the degree of object orientation, the following distinctions can be made: </p> <ul><li>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: <a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href="/wiki/Scala_(programming_language)" title="Scala (programming language)">Scala</a>, <a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a>, <a href="/wiki/Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel</a>, <a href="/wiki/Emerald_(programming_language)" title="Emerald (programming language)">Emerald</a>,<sup id="cite_ref-50" class="reference"><a href="#cite_note-50"><span class="cite-bracket">[</span>50<span class="cite-bracket">]</span></a></sup> <a href="/wiki/JADE_(programming_language)" title="JADE (programming language)">JADE</a>, <a href="/wiki/Self_(programming_language)" title="Self (programming language)">Self</a>, <a href="/wiki/Raku_(programming_language)" title="Raku (programming language)">Raku</a>.</li> <li>Languages designed mainly for OO programming, but with some procedural elements. Examples: <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>, <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="/wiki/C%2B%2B" title="C++">C++</a>, <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="/wiki/Delphi_(programming_language)" class="mw-redirect" title="Delphi (programming language)">Delphi</a>/<a href="/wiki/Object_Pascal" title="Object Pascal">Object Pascal</a>, <a href="/wiki/VB.NET" class="mw-redirect" title="VB.NET">VB.NET</a>.</li> <li>Languages that are historically <a href="/wiki/Procedural_programming" title="Procedural programming">procedural languages</a>, but have been extended with some OO features. Examples: <a href="/wiki/PHP" title="PHP">PHP</a>, <a href="/wiki/JavaScript" title="JavaScript">JavaScript</a>, <a href="/wiki/Perl" title="Perl">Perl</a>, <a href="/wiki/Visual_Basic" title="Visual Basic">Visual Basic</a> (derived from BASIC), <a href="/wiki/MATLAB" title="MATLAB">MATLAB</a>, <a href="/wiki/COBOL_2002" class="mw-redirect" title="COBOL 2002">COBOL 2002</a>, <a href="/wiki/Fortran_2003" class="mw-redirect" title="Fortran 2003">Fortran 2003</a>, <a href="/wiki/ABAP" title="ABAP">ABAP</a>, <a href="/wiki/Ada_95" class="mw-redirect" title="Ada 95">Ada 95</a>, <a href="/wiki/Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>.</li> <li>Languages with most of the features of objects (classes, methods, inheritance), but in a distinctly original form. Examples: <a href="/wiki/Oberon_(programming_language)" title="Oberon (programming language)">Oberon</a> (Oberon-1 or Oberon-2).</li> <li>Languages with <a href="/wiki/Abstract_data_type" title="Abstract data type">abstract data type</a> support which may be used to resemble OO programming, but without all features of object-orientation. This includes <a href="/wiki/Object-based" class="mw-redirect" title="Object-based">object-<i>based</i></a> and <a href="/wiki/Prototype-based" class="mw-redirect" title="Prototype-based">prototype-based</a> languages. Examples: <a href="/wiki/JavaScript" title="JavaScript">JavaScript</a>, <a href="/wiki/Lua_(programming_language)" title="Lua (programming language)">Lua</a>, <a href="/wiki/Modula-2" title="Modula-2">Modula-2</a>, <a href="/wiki/CLU_(programming_language)" title="CLU (programming language)">CLU</a>.</li> <li>Chameleon languages that support multiple paradigms, including OO. <a href="/wiki/Tcl" title="Tcl">Tcl</a> stands out among these for TclOO, a hybrid object system that supports both <a href="/wiki/Prototype-based_programming" title="Prototype-based programming">prototype-based programming</a> and class-based OO.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Popularity_and_reception"><span class="anchor" id="Criticism"></span>Popularity and reception</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=14" title="Edit section: Popularity and reception"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure typeof="mw:File/Thumb"><a href="/wiki/File:Tiobeindex.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Tiobeindex.png/350px-Tiobeindex.png" decoding="async" width="350" height="115" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Tiobeindex.png/525px-Tiobeindex.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Tiobeindex.png/700px-Tiobeindex.png 2x" data-file-width="1368" data-file-height="450" /></a><figcaption>The <a href="/wiki/TIOBE_index" title="TIOBE index">TIOBE</a> programming language popularity index graph from 2002 to 2023. In the 2000s the object-oriented <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a> (orange) and the <a href="/wiki/Procedural_programming" title="Procedural programming">procedural</a> <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a> (dark blue) competed for the top position.</figcaption></figure> <p>Many widely used languages, such as C++, Java, and Python, provide object-oriented features. Although in the past object-oriented programming was widely accepted,<sup id="cite_ref-51" class="reference"><a href="#cite_note-51"><span class="cite-bracket">[</span>51<span class="cite-bracket">]</span></a></sup> more recently essays criticizing object-oriented programming and recommending the avoidance of these features (generally in favor of <a href="/wiki/Functional_programming" title="Functional programming">functional programming</a>) have been very popular in the developer community.<sup id="cite_ref-52" class="reference"><a href="#cite_note-52"><span class="cite-bracket">[</span>52<span class="cite-bracket">]</span></a></sup> <a href="/wiki/Paul_Graham_(computer_programmer)" class="mw-redirect" title="Paul Graham (computer programmer)">Paul Graham</a> has suggested that OOP's popularity within large companies is due to "large (and frequently changing) groups of mediocre programmers". According to Graham, the discipline imposed by OOP prevents any one programmer from "doing too much damage".<sup id="cite_ref-graham_53-0" class="reference"><a href="#cite_note-graham-53"><span class="cite-bracket">[</span>53<span class="cite-bracket">]</span></a></sup> <a href="/wiki/Eric_S._Raymond" title="Eric S. Raymond">Eric S. Raymond</a>, a <a href="/wiki/Unix" title="Unix">Unix</a> programmer and <a href="/wiki/Open-source_software" title="Open-source software">open-source software</a> advocate, has been critical of claims that present object-oriented programming as the "One True Solution".<sup id="cite_ref-Eric_S._Raymond_2003_47-2" class="reference"><a href="#cite_note-Eric_S._Raymond_2003-47"><span class="cite-bracket">[</span>47<span class="cite-bracket">]</span></a></sup> </p><p>Richard Feldman argues that these languages may have improved their modularity by adding OO features, but they became popular for reasons other than being object-oriented.<sup id="cite_ref-54" class="reference"><a href="#cite_note-54"><span class="cite-bracket">[</span>54<span class="cite-bracket">]</span></a></sup> In an article, Lawrence Krubner claimed that compared to other languages (LISP dialects, functional languages, etc.) OOP languages have no unique strengths, and inflict a heavy burden of unneeded complexity.<sup id="cite_ref-lawrence_55-0" class="reference"><a href="#cite_note-lawrence-55"><span class="cite-bracket">[</span>55<span class="cite-bracket">]</span></a></sup> A study by Potok et al. has shown no significant difference in productivity between OOP and procedural approaches.<sup id="cite_ref-56" class="reference"><a href="#cite_note-56"><span class="cite-bracket">[</span>56<span class="cite-bracket">]</span></a></sup> <a href="/wiki/Luca_Cardelli" title="Luca Cardelli">Luca Cardelli</a> has claimed that OOP code is "intrinsically less efficient" than procedural code and that OOP can take longer to compile.<sup id="cite_ref-badprop_41-2" class="reference"><a href="#cite_note-badprop-41"><span class="cite-bracket">[</span>41<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="OOP_in_dynamic_languages">OOP in dynamic languages</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=15" title="Edit section: OOP in dynamic languages"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In recent years, object-oriented programming has become especially popular in <a href="/wiki/Dynamic_programming_language" title="Dynamic programming language">dynamic programming languages</a>. <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="/wiki/PowerShell" title="PowerShell">PowerShell</a>, <a href="/wiki/Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a> and <a href="/wiki/Groovy_(programming_language)" class="mw-redirect" title="Groovy (programming language)">Groovy</a> are dynamic languages built on OOP principles, while <a href="/wiki/Perl" title="Perl">Perl</a> and <a href="/wiki/PHP" title="PHP">PHP</a> have been adding object-oriented features since Perl 5 and PHP 4, and <a href="/wiki/ColdFusion" class="mw-redirect" title="ColdFusion">ColdFusion</a> since version 6. </p><p>The <a href="/wiki/Document_Object_Model" title="Document Object Model">Document Object Model</a> of <a href="/wiki/HTML" title="HTML">HTML</a>, <a href="/wiki/XHTML" title="XHTML">XHTML</a>, and <a href="/wiki/XML" title="XML">XML</a> documents on the Internet has bindings to the popular <a href="/wiki/JavaScript" title="JavaScript">JavaScript</a>/<a href="/wiki/ECMAScript" title="ECMAScript">ECMAScript</a> language. JavaScript is perhaps the best known <a href="/wiki/Prototype-based_programming" title="Prototype-based programming">prototype-based programming</a> language, which employs cloning from prototypes rather than inheriting from a class (contrast to <a href="/wiki/Class-based_programming" title="Class-based programming">class-based programming</a>). Another scripting language that takes this approach is <a href="/wiki/Lua_(programming_language)" title="Lua (programming language)">Lua</a>. </p> <div class="mw-heading mw-heading3"><h3 id="OOP_in_a_network_protocol">OOP in a network protocol</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=16" title="Edit section: OOP in a network protocol"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The messages that flow between computers to request services in a client-server environment can be designed as the linearizations of objects defined by class objects known to both the client and the server. For example, a simple linearized object would consist of a length field, a code point identifying the class, and a data value. A more complex example would be a command consisting of the length and code point of the command and values consisting of linearized objects representing the command's parameters. Each such command must be directed by the server to an object whose class (or superclass) recognizes the command and can provide the requested service. Clients and servers are best modeled as complex object-oriented structures. <a href="/wiki/Distributed_Data_Management_Architecture" title="Distributed Data Management Architecture">Distributed Data Management Architecture</a> (DDM) took this approach and used class objects to define objects at four levels of a formal hierarchy: </p> <ul><li>Fields defining the data values that form messages, such as their length, code point and data values.</li> <li>Objects and collections of objects similar to what would be found in a <a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a> program for messages and parameters.</li> <li>Managers similar to <a href="/wiki/IBM_i" title="IBM i">IBM i</a> <a href="/wiki/Object_(IBM_i)" title="Object (IBM i)">Objects</a>, such as a directory to files and files consisting of metadata and records. Managers conceptually provide memory and processing resources for their contained objects.</li> <li>A client or server consisting of all the managers necessary to implement a full processing environment, supporting such aspects as directory services, security, and concurrency control.</li></ul> <p>The initial version of DDM defined distributed file services. It was later extended to be the foundation of <a href="/wiki/DRDA" title="DRDA">Distributed Relational Database Architecture</a> (DRDA). </p> <div class="mw-heading mw-heading2"><h2 id="Design_patterns">Design patterns</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=17" title="Edit section: Design patterns"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>One way to address challenges of object-oriented design is via <a href="/wiki/Design_pattern_(computer_science)" class="mw-redirect" title="Design pattern (computer science)">design patterns</a> which are solution patterns to commonly occurring problems in software design. Some of these commonly occurring problems have implications and solutions particular to object-oriented development. </p> <div class="mw-heading mw-heading3"><h3 id="Object_patterns">Object patterns</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=18" title="Edit section: Object patterns"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The following are notable <a href="/wiki/Software_design_pattern" title="Software design pattern">software design patterns</a> for OOP objects.<sup id="cite_ref-R.C.Martin_57-0" class="reference"><a href="#cite_note-R.C.Martin-57"><span class="cite-bracket">[</span>57<span class="cite-bracket">]</span></a></sup> </p> <ul><li><a href="/wiki/Function_object" title="Function object">Function object</a>: with a single method (in C++, the function operator, <code>operator()</code>) it acts much like a function</li></ul> <ul><li><a href="/wiki/Immutable_object" title="Immutable object">Immutable object</a>: does not change state after creation</li></ul> <ul><li><a href="/wiki/First-class_object" class="mw-redirect" title="First-class object">First-class object</a>: can be used without restriction</li></ul> <ul><li><a href="/wiki/Container_object" class="mw-redirect" title="Container object">Container object</a>: contains other objects</li></ul> <ul><li><a href="/wiki/Factory_object" class="mw-redirect" title="Factory object">Factory object</a>: creates other objects</li></ul> <ul><li><a href="/wiki/Metaobject" title="Metaobject">Metaobject</a>: from which other objects can be created (compare with a <a href="/wiki/Class_(computer_science)" class="mw-redirect" title="Class (computer science)">class</a>, which is not necessarily an object)</li></ul> <ul><li><a href="/wiki/Prototype_pattern" title="Prototype pattern">Prototype object</a>: a specialized metaobject from which other objects can be created by copying</li></ul> <ul><li><a href="/wiki/Singleton_pattern" title="Singleton pattern">Singleton object</a>: only instance of its class for the lifetime of the program</li></ul> <ul><li><a href="/wiki/Filter_object" class="mw-redirect" title="Filter object">Filter object</a>: receives a stream of data as its input and transforms it into the object's output</li></ul> <p>As an example of an object <a href="/wiki/Anti-pattern" title="Anti-pattern">anti-pattern</a>, the <a href="/wiki/God_object" title="God object">God object</a> knows or does too much. </p> <div class="mw-heading mw-heading3"><h3 id="Inheritance_and_behavioral_subtyping">Inheritance and behavioral subtyping</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=19" title="Edit section: Inheritance and behavioral subtyping"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/Object-oriented_design" class="mw-redirect" title="Object-oriented design">Object-oriented design</a></div> <p>It is intuitive to assume that inheritance creates a <a href="/wiki/Program_semantics" class="mw-redirect" title="Program semantics">semantic</a> "<a href="/wiki/Is_a" class="mw-redirect" title="Is a">is a</a>" relationship, and thus to infer that objects instantiated from subclasses can always be <i>safely</i> used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow <a href="/wiki/Mutable" class="mw-redirect" title="Mutable">mutable</a> objects. <a href="/wiki/Subtype_polymorphism" class="mw-redirect" title="Subtype polymorphism">Subtype polymorphism</a> as enforced by the <a href="/wiki/Type_checker" class="mw-redirect" title="Type checker">type checker</a> in OOP languages (with mutable objects) cannot guarantee <a href="/wiki/Behavioral_subtyping" title="Behavioral subtyping">behavioral subtyping</a> in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies must be carefully designed, considering possible incorrect uses that cannot be detected syntactically. This issue is known as the <a href="/wiki/Liskov_substitution_principle" title="Liskov substitution principle">Liskov substitution principle</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Gang_of_Four_design_patterns">Gang of Four design patterns</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=20" title="Edit section: Gang of Four design patterns"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Design_pattern_(computer_science)" class="mw-redirect" title="Design pattern (computer science)">Design pattern (computer science)</a></div> <p><i><a href="/wiki/Design_Patterns:_Elements_of_Reusable_Object-Oriented_Software" class="mw-redirect" title="Design Patterns: Elements of Reusable Object-Oriented Software">Design Patterns: Elements of Reusable Object-Oriented Software</a></i> is an influential book published in 1994 by <a href="/wiki/Erich_Gamma" title="Erich Gamma">Erich Gamma</a>, <a href="/wiki/Richard_Helm" title="Richard Helm">Richard Helm</a>, <a href="/wiki/Ralph_Johnson_(computer_scientist)" title="Ralph Johnson (computer scientist)">Ralph Johnson</a>, and <a href="/wiki/John_Vlissides" title="John Vlissides">John Vlissides</a>, often referred to humorously as the "Gang of Four". Along with exploring the capabilities and pitfalls of object-oriented programming, it describes 23 common programming problems and patterns for solving them. </p><p>The book describes the following patterns: </p> <ul><li><i><a href="/wiki/Creational_pattern" title="Creational pattern">Creational patterns</a></i> (5): <a href="/wiki/Factory_method_pattern" title="Factory method pattern">Factory method pattern</a>, <a href="/wiki/Abstract_factory_pattern" title="Abstract factory pattern">Abstract factory pattern</a>, <a href="/wiki/Singleton_pattern" title="Singleton pattern">Singleton pattern</a>, <a href="/wiki/Builder_pattern" title="Builder pattern">Builder pattern</a>, <a href="/wiki/Prototype_pattern" title="Prototype pattern">Prototype pattern</a></li> <li><i><a href="/wiki/Structural_pattern" title="Structural pattern">Structural patterns</a></i> (7): <a href="/wiki/Adapter_pattern" title="Adapter pattern">Adapter pattern</a>, <a href="/wiki/Bridge_pattern" title="Bridge pattern">Bridge pattern</a>, <a href="/wiki/Composite_pattern" title="Composite pattern">Composite pattern</a>, <a href="/wiki/Decorator_pattern" title="Decorator pattern">Decorator pattern</a>, <a href="/wiki/Facade_pattern" title="Facade pattern">Facade pattern</a>, <a href="/wiki/Flyweight_pattern" title="Flyweight pattern">Flyweight pattern</a>, <a href="/wiki/Proxy_pattern" title="Proxy pattern">Proxy pattern</a></li> <li><i><a href="/wiki/Behavioral_pattern" title="Behavioral pattern">Behavioral patterns</a></i> (11): <a href="/wiki/Chain-of-responsibility_pattern" title="Chain-of-responsibility pattern">Chain-of-responsibility pattern</a>, <a href="/wiki/Command_pattern" title="Command pattern">Command pattern</a>, <a href="/wiki/Interpreter_pattern" title="Interpreter pattern">Interpreter pattern</a>, <a href="/wiki/Iterator_pattern" title="Iterator pattern">Iterator pattern</a>, <a href="/wiki/Mediator_pattern" title="Mediator pattern">Mediator pattern</a>, <a href="/wiki/Memento_pattern" title="Memento pattern">Memento pattern</a>, <a href="/wiki/Observer_pattern" title="Observer pattern">Observer pattern</a>, <a href="/wiki/State_pattern" title="State pattern">State pattern</a>, <a href="/wiki/Strategy_pattern" title="Strategy pattern">Strategy pattern</a>, <a href="/wiki/Template_method_pattern" title="Template method pattern">Template method pattern</a>, <a href="/wiki/Visitor_pattern" title="Visitor pattern">Visitor pattern</a></li></ul> <div class="mw-heading mw-heading3"><h3 id="Object-orientation_and_databases">Object-orientation and databases</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=21" title="Edit section: Object-orientation and databases"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main articles: <a href="/wiki/Object-relational_impedance_mismatch" class="mw-redirect" title="Object-relational impedance mismatch">Object-relational impedance mismatch</a>, <a href="/wiki/Object-relational_mapping" class="mw-redirect" title="Object-relational mapping">Object-relational mapping</a>, and <a href="/wiki/Object_database" title="Object database">Object database</a></div> <p>Both object-oriented programming and <a href="/wiki/Relational_database_management_systems" class="mw-redirect" title="Relational database management systems">relational database management systems</a> (RDBMSs) are extremely common in software today<sup class="plainlinks noexcerpt noprint asof-tag update" style="display:none;"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Object-oriented_programming&action=edit">[update]</a></sup>. Since <a href="/wiki/Relational_database" title="Relational database">relational databases</a> do not store objects directly (though some RDBMSs have object-oriented features to approximate this), there is a general need to bridge the two worlds. The problem of bridging object-oriented programming accesses and data patterns with relational databases is known as <a href="/wiki/Object-relational_impedance_mismatch" class="mw-redirect" title="Object-relational impedance mismatch">object-relational impedance mismatch</a>. There are some approaches to cope with this problem, but no general solution without downsides.<sup id="cite_ref-RDMDBobjectmis_58-0" class="reference"><a href="#cite_note-RDMDBobjectmis-58"><span class="cite-bracket">[</span>58<span class="cite-bracket">]</span></a></sup> One of the most common approaches is <a href="/wiki/Object-relational_mapping" class="mw-redirect" title="Object-relational mapping">object-relational mapping</a>, as found in <a href="/wiki/Integrated_development_environment" title="Integrated development environment">IDE</a> languages such as <a href="/wiki/Visual_FoxPro" title="Visual FoxPro">Visual FoxPro</a> and libraries such as <a href="/wiki/Java_Data_Objects" title="Java Data Objects">Java Data Objects</a> and <a href="/wiki/Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a>' ActiveRecord. </p><p>There are also <a href="/wiki/Object_database" title="Object database">object databases</a> that can be used to replace RDBMSs, but these have not been as technically and commercially successful as RDBMSs. </p> <div class="mw-heading mw-heading3"><h3 id="Real-world_modeling_and_relationships">Real-world modeling and relationships</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=22" title="Edit section: Real-world modeling and relationships"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>OOP can be used to associate real-world objects and processes with digital counterparts. However, not everyone agrees that OOP facilitates direct real-world mapping or that real-world mapping is even a worthy goal; <a href="/wiki/Bertrand_Meyer" title="Bertrand Meyer">Bertrand Meyer</a> argues in <i><a href="/wiki/Object-Oriented_Software_Construction" title="Object-Oriented Software Construction">Object-Oriented Software Construction</a></i> that a program is not a model of the world but a model of some part of the world; "Reality is a cousin twice removed".<sup id="cite_ref-FOOTNOTEMeyer1997230_59-0" class="reference"><a href="#cite_note-FOOTNOTEMeyer1997230-59"><span class="cite-bracket">[</span>59<span class="cite-bracket">]</span></a></sup> At the same time, some principal limitations of OOP have been noted.<sup id="cite_ref-60" class="reference"><a href="#cite_note-60"><span class="cite-bracket">[</span>60<span class="cite-bracket">]</span></a></sup> For example, the <a href="/wiki/Circle-ellipse_problem" class="mw-redirect" title="Circle-ellipse problem">circle-ellipse problem</a> is difficult to handle using OOP's concept of <a href="/wiki/Inheritance_(object-oriented_programming)" title="Inheritance (object-oriented programming)">inheritance</a>. </p><p>However, <a href="/wiki/Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a> (who popularized the adage now known as <a href="/wiki/Wirth%27s_law" title="Wirth's law">Wirth's law</a>: "Software is getting slower more rapidly than hardware becomes faster") said of OOP in his paper, "Good Ideas through the Looking Glass", "This paradigm closely reflects the structure of systems in the real world and is therefore well suited to model complex systems with complex behavior"<sup id="cite_ref-61" class="reference"><a href="#cite_note-61"><span class="cite-bracket">[</span>61<span class="cite-bracket">]</span></a></sup> (contrast <a href="/wiki/KISS_principle" title="KISS principle">KISS principle</a>). </p><p><a href="/wiki/Steve_Yegge" title="Steve Yegge">Steve Yegge</a> and others noted that natural languages lack the OOP approach of strictly prioritizing <i>things</i> (objects/<a href="/wiki/Noun" title="Noun">nouns</a>) before <i>actions</i> (methods/<a href="/wiki/Verb" title="Verb">verbs</a>).<sup id="cite_ref-executioniKoN_62-0" class="reference"><a href="#cite_note-executioniKoN-62"><span class="cite-bracket">[</span>62<span class="cite-bracket">]</span></a></sup> This problem may cause OOP to suffer more convoluted solutions than procedural programming.<sup id="cite_ref-executioniKoN2_63-0" class="reference"><a href="#cite_note-executioniKoN2-63"><span class="cite-bracket">[</span>63<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="OOP_and_control_flow">OOP and control flow</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=23" title="Edit section: OOP and control flow"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>OOP was developed to increase the <a href="/wiki/Code_reuse" title="Code reuse">reusability</a> and <a href="/wiki/Software_maintenance" title="Software maintenance">maintainability</a> of source code.<sup id="cite_ref-realisticcodereuse_64-0" class="reference"><a href="#cite_note-realisticcodereuse-64"><span class="cite-bracket">[</span>64<span class="cite-bracket">]</span></a></sup> Transparent representation of the <a href="/wiki/Control_flow" title="Control flow">control flow</a> had no priority and was meant to be handled by a compiler. With the increasing relevance of parallel hardware and <a href="/wiki/Thread_(computer_science)" class="mw-redirect" title="Thread (computer science)">multithreaded coding</a>, developing transparent control flow becomes more important, something hard to achieve with OOP.<sup id="cite_ref-flaws_65-0" class="reference"><a href="#cite_note-flaws-65"><span class="cite-bracket">[</span>65<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-multithreadingisaverb_66-0" class="reference"><a href="#cite_note-multithreadingisaverb-66"><span class="cite-bracket">[</span>66<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-multicore_67-0" class="reference"><a href="#cite_note-multicore-67"><span class="cite-bracket">[</span>67<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-68" class="reference"><a href="#cite_note-68"><span class="cite-bracket">[</span>68<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Responsibility-_vs._data-driven_design">Responsibility- vs. data-driven design</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=24" title="Edit section: Responsibility- vs. data-driven design"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Responsibility-driven_design" title="Responsibility-driven design">Responsibility-driven design</a> defines classes in terms of a contract, that is, a class should be defined around a responsibility and the information that it shares. This is contrasted by Wirfs-Brock and Wilkerson with <a href="/wiki/Data-driven_programming" title="Data-driven programming">data-driven design</a>, where classes are defined around the data-structures that must be held. The authors hold that responsibility-driven design is preferable. </p> <div class="mw-heading mw-heading3"><h3 id="SOLID_and_GRASP_guidelines">SOLID and GRASP guidelines</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=25" title="Edit section: SOLID and GRASP guidelines"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/SOLID" title="SOLID">SOLID</a> is a mnemonic invented by Michael Feathers which spells out five software engineering design principles: </p> <ul><li><a href="/wiki/Single_responsibility_principle" class="mw-redirect" title="Single responsibility principle">Single responsibility principle</a></li> <li><a href="/wiki/Open/closed_principle" class="mw-redirect" title="Open/closed principle">Open/closed principle</a></li> <li><a href="/wiki/Liskov_substitution_principle" title="Liskov substitution principle">Liskov substitution principle</a></li> <li><a href="/wiki/Interface_segregation_principle" title="Interface segregation principle">Interface segregation principle</a></li> <li><a href="/wiki/Dependency_inversion_principle" title="Dependency inversion principle">Dependency inversion principle</a></li></ul> <p><a href="/wiki/GRASP_(object-oriented_design)" title="GRASP (object-oriented design)">GRASP</a> (General Responsibility Assignment Software Patterns) is another set of guidelines advocated by <a href="/wiki/Craig_Larman" title="Craig Larman">Craig Larman</a>. </p> <div class="mw-heading mw-heading2"><h2 id="Formal_semantics">Formal semantics</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=26" title="Edit section: Formal semantics"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/Formal_semantics_of_programming_languages" class="mw-redirect" title="Formal semantics of programming languages">Formal semantics of programming languages</a></div> <p>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. </p><p>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: </p> <ul><li><a href="/wiki/F-Coalgebra" class="mw-redirect" title="F-Coalgebra">co algebraic data types</a><sup id="cite_ref-poll97_69-0" class="reference"><a href="#cite_note-poll97-69"><span class="cite-bracket">[</span>69<span class="cite-bracket">]</span></a></sup></li> <li><a href="/wiki/Recursive_type" class="mw-redirect" title="Recursive type">recursive types</a></li> <li>encapsulated state</li> <li><a href="/wiki/Inheritance_(object-oriented_programming)" title="Inheritance (object-oriented programming)">inheritance</a></li> <li><a href="/wiki/Record_(computer_science)" title="Record (computer science)">records</a> are the basis for understanding objects if <a href="/wiki/Function_literal" class="mw-redirect" title="Function literal">function literals</a> 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 <a href="/wiki/System_F-sub" class="mw-redirect" title="System F-sub">System F<sub><:</sub></a> that deal with mutable objects have been studied;<sup id="cite_ref-AbadiCardelli_70-0" class="reference"><a href="#cite_note-AbadiCardelli-70"><span class="cite-bracket">[</span>70<span class="cite-bracket">]</span></a></sup> these allow both <a href="/wiki/Subtype_polymorphism" class="mw-redirect" title="Subtype polymorphism">subtype polymorphism</a> and <a href="/wiki/Parametric_polymorphism" title="Parametric polymorphism">parametric polymorphism</a> (generics)</li></ul> <p>Attempts to find a consensus definition or theory behind objects have not proven very successful (however, see Abadi & Cardelli, <a rel="nofollow" class="external text" href="http://portal.acm.org/citation.cfm?id=547964&dl=ACM&coll=portal"><i>A Theory of Objects</i></a><sup id="cite_ref-AbadiCardelli_70-1" class="reference"><a href="#cite_note-AbadiCardelli-70"><span class="cite-bracket">[</span>70<span class="cite-bracket">]</span></a></sup> 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 <a href="/wiki/Syntactic_sugar" title="Syntactic sugar">syntactic and scoping sugar</a> on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping"). </p> <div class="mw-heading mw-heading3"><h3 id="Systems">Systems</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=27" title="Edit section: Systems"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/CADES" title="CADES">CADES</a></li> <li><a href="/wiki/Common_Object_Request_Broker_Architecture" title="Common Object Request Broker Architecture">Common Object Request Broker Architecture</a> (CORBA)</li> <li><a href="/wiki/Distributed_Component_Object_Model" title="Distributed Component Object Model">Distributed Component Object Model</a></li> <li><a href="/wiki/Distributed_Data_Management_Architecture" title="Distributed Data Management Architecture">Distributed Data Management Architecture</a></li> <li><a href="/wiki/Jeroo" title="Jeroo">Jeroo</a></li></ul> <div class="mw-heading mw-heading3"><h3 id="Modeling_languages">Modeling languages</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=28" title="Edit section: Modeling languages"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/IDEF4" title="IDEF4">IDEF4</a></li> <li><a href="/wiki/Interface_description_language" title="Interface description language">Interface description language</a></li> <li><a href="/wiki/UML" class="mw-redirect" title="UML">UML</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=29" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239009302">.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{clear:left;float:left;margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}</style><ul role="navigation" aria-label="Portals" class="noprint portalbox portalborder portalright"> <li class="portalbox-entry"><span class="portalbox-image"><span class="noviewer" typeof="mw:File"><a href="/wiki/File:Octicons-terminal.svg" class="mw-file-description"><img alt="icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/24px-Octicons-terminal.svg.png" decoding="async" width="24" height="28" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/37px-Octicons-terminal.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/49px-Octicons-terminal.svg.png 2x" data-file-width="896" data-file-height="1024" /></a></span></span><span class="portalbox-link"><a href="/wiki/Portal:Computer_programming" title="Portal:Computer programming">Computer programming portal</a></span></li></ul> <ul><li><a href="/wiki/Comparison_of_programming_languages_(object-oriented_programming)" title="Comparison of programming languages (object-oriented programming)">Comparison of programming languages (object-oriented programming)</a></li> <li><a href="/wiki/Component-based_software_engineering" title="Component-based software engineering">Component-based software engineering</a></li> <li><a href="/wiki/Object_association" class="mw-redirect" title="Object association">Object association</a></li> <li><a href="/wiki/Object_modeling_language" class="mw-redirect" title="Object modeling language">Object modeling language</a></li> <li><a href="/wiki/Object-oriented_analysis_and_design" title="Object-oriented analysis and design">Object-oriented analysis and design</a></li> <li><a href="/wiki/Object-oriented_ontology" title="Object-oriented ontology">Object-oriented ontology</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=30" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap mw-references-columns"><ol class="references"> <li id="cite_note-alanKayOnOO-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-alanKayOnOO_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-alanKayOnOO_1-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-alanKayOnOO_1-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-alanKayOnOO_1-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.purl.org/stefan_ram/pub/doc_kay_oop_en">"Dr. Alan Kay on the Meaning of "Object-Oriented Programming"<span class="cs1-kern-right"></span>"</a>. 2003<span class="reference-accessdate">. Retrieved <span class="nowrap">11 February</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Dr.+Alan+Kay+on+the+Meaning+of+%22Object-Oriented+Programming%22&rft.date=2003&rft_id=http%3A%2F%2Fwww.purl.org%2Fstefan_ram%2Fpub%2Fdoc_kay_oop_en&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKindlerKrivy2011" class="citation journal cs1">Kindler, E.; Krivy, I. (2011). "Object-Oriented Simulation of systems with sophisticated control". <i>International Journal of General Systems</i>. <b>40</b> (3): 313–343. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1080%2F03081079.2010.539975">10.1080/03081079.2010.539975</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=International+Journal+of+General+Systems&rft.atitle=Object-Oriented+Simulation+of+systems+with+sophisticated+control&rft.volume=40&rft.issue=3&rft.pages=313-343&rft.date=2011&rft_id=info%3Adoi%2F10.1080%2F03081079.2010.539975&rft.aulast=Kindler&rft.aufirst=E.&rft.au=Krivy%2C+I.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLewisLoftus2008" class="citation book cs1">Lewis, John; Loftus, William (2008). <i>Java Software Solutions Foundations of Programming Design 6th ed</i>. Pearson Education Inc. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-321-53205-3" title="Special:BookSources/978-0-321-53205-3"><bdi>978-0-321-53205-3</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Java+Software+Solutions+Foundations+of+Programming+Design+6th+ed&rft.pub=Pearson+Education+Inc.&rft.date=2008&rft.isbn=978-0-321-53205-3&rft.aulast=Lewis&rft.aufirst=John&rft.au=Loftus%2C+William&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span>, section 1.6 "Object-Oriented Programming"</span> </li> <li id="cite_note-FOOTNOTEBloch2018xi–xiiForeword-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEBloch2018xi–xiiForeword_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEBloch2018xi–xiiForeword_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFBloch2018">Bloch 2018</a>, pp. xi–xii, Foreword.</span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMcCarthyBraytonEdwardsFox1969" class="citation journal cs1">McCarthy, J.; <a href="/w/index.php?title=Robert_Brayton_(computer_scientist)&action=edit&redlink=1" class="new" title="Robert Brayton (computer scientist) (page does not exist)">Brayton, R.</a>; <a href="/w/index.php?title=Daniel_Edwards_(programmer)&action=edit&redlink=1" class="new" title="Daniel Edwards (programmer) (page does not exist)">Edwards, D.</a>; <a href="/wiki/Phyllis_Fox" title="Phyllis Fox">Fox, P.</a>; <a href="/wiki/Louis_Hodes" title="Louis Hodes">Hodes, L.</a>; <a href="/wiki/David_Luckham" title="David Luckham">Luckham, D.</a>; <a href="/w/index.php?title=Klim_Maling_(programmer)&action=edit&redlink=1" class="new" title="Klim Maling (programmer) (page does not exist)">Maling, K.</a>; <a href="/wiki/David_Park_(computer_scientist)" title="David Park (computer scientist)">Park, D.</a>; <a href="/wiki/Steve_Russell_(computer_scientist)" title="Steve Russell (computer scientist)">Russell, S.</a> (March 1969). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20100717111134/http://history.siam.org/sup/Fox_1960_LISP.pdf">"LISP I Programmers Manual"</a> <span class="cs1-format">(PDF)</span>. <i>Computation Center and Research Laboratory of Electronics</i>. <a href="/wiki/Boston" title="Boston">Boston</a>, <a href="/wiki/Massachusetts" title="Massachusetts">Massachusetts</a>: Artificial Intelligence Group, <a href="/wiki/M.I.T._Computation_Center" class="mw-redirect" title="M.I.T. Computation Center">M.I.T. Computation Center</a> and Research Laboratory: 88f. Archived from <a rel="nofollow" class="external text" href="http://history.siam.org/sup/Fox_1960_LISP.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 17 July 2010. <q>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".</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Computation+Center+and+Research+Laboratory+of+Electronics&rft.atitle=LISP+I+Programmers+Manual&rft.pages=88f&rft.date=1969-03&rft.aulast=McCarthy&rft.aufirst=J.&rft.au=Brayton%2C+R.&rft.au=Edwards%2C+D.&rft.au=Fox%2C+P.&rft.au=Hodes%2C+L.&rft.au=Luckham%2C+D.&rft.au=Maling%2C+K.&rft.au=Park%2C+D.&rft.au=Russell%2C+S.&rft_id=http%3A%2F%2Fhistory.siam.org%2Fsup%2FFox_1960_LISP.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMcCarthyAbrahamsEdwardsHart1962" class="citation book cs1"><a href="/wiki/John_McCarthy_(computer_scientist)" title="John McCarthy (computer scientist)">McCarthy, John</a>; Abrahams, Paul W.; <a href="/w/index.php?title=Daniel_Edwards_(programmer)&action=edit&redlink=1" class="new" title="Daniel Edwards (programmer) (page does not exist)">Edwards, Daniel J.</a>; Hart, swapnil d.; Levin, Michael I. (1962). <a rel="nofollow" class="external text" href="https://archive.org/details/lisp15programmer00john/page/105"><i>LISP 1.5 Programmer's Manual</i></a>. <a href="/wiki/MIT_Press" title="MIT Press">MIT Press</a>. p. <a rel="nofollow" class="external text" href="https://archive.org/details/lisp15programmer00john/page/105">105</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-262-13011-0" title="Special:BookSources/978-0-262-13011-0"><bdi>978-0-262-13011-0</bdi></a>. <q>Object — a synonym for atomic symbol</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=LISP+1.5+Programmer%27s+Manual&rft.pages=105&rft.pub=MIT+Press&rft.date=1962&rft.isbn=978-0-262-13011-0&rft.aulast=McCarthy&rft.aufirst=John&rft.au=Abrahams%2C+Paul+W.&rft.au=Edwards%2C+Daniel+J.&rft.au=Hart%2C+swapnil+d.&rft.au=Levin%2C+Michael+I.&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Flisp15programmer00john%2Fpage%2F105&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFIvan_E._Sutherland1963" class="citation conference cs1"><a href="/wiki/Ivan_E._Sutherland" class="mw-redirect" title="Ivan E. Sutherland">Ivan E. Sutherland</a> (May 1963). <i>Sketchpad: a man-machine graphical communication system</i>. AFIPS '63 (Spring): Proceedings of the May 21–23, 1963 Spring Joint Computer Conference. AFIPS Press. pp. 329–346. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1461551.1461591">10.1145/1461551.1461591</a></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=conference&rft.btitle=Sketchpad%3A+a+man-machine+graphical+communication+system&rft.pages=329-346&rft.pub=AFIPS+Press&rft.date=1963-05&rft_id=info%3Adoi%2F10.1145%2F1461551.1461591&rft.au=Ivan+E.+Sutherland&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-simuladev-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-simuladev_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-simuladev_8-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKristen_NygaardOle-Johan_Dahl1978" class="citation journal cs1"><a href="/wiki/Kristen_Nygaard" title="Kristen Nygaard">Kristen Nygaard</a>; <a href="/wiki/Ole-Johan_Dahl" title="Ole-Johan Dahl">Ole-Johan Dahl</a> (1 August 1978). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F960118.808391">"The development of the SIMULA languages"</a>. <i><a href="/wiki/ACM_SIGPLAN_Notices" class="mw-redirect" title="ACM SIGPLAN Notices">ACM SIGPLAN Notices</a></i>. <b>13</b> (8): 245–272. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F960118.808391">10.1145/960118.808391</a></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=ACM+SIGPLAN+Notices&rft.atitle=The+development+of+the+SIMULA+languages&rft.volume=13&rft.issue=8&rft.pages=245-272&rft.date=1978-08-01&rft_id=info%3Adoi%2F10.1145%2F960118.808391&rft.au=Kristen+Nygaard&rft.au=Ole-Johan+Dahl&rft_id=https%3A%2F%2Fdoi.org%2F10.1145%252F960118.808391&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFRoss" class="citation web cs1">Ross, Doug. <a rel="nofollow" class="external text" href="http://www.csail.mit.edu/timeline/timeline.php?query=event&id=19">"The first software engineering language"</a>. <i>LCS/AI Lab Timeline</i>. MIT Computer Science and Artificial Intelligence Laboratory<span class="reference-accessdate">. Retrieved <span class="nowrap">13 May</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=LCS%2FAI+Lab+Timeline&rft.atitle=The+first+software+engineering+language&rft.aulast=Ross&rft.aufirst=Doug&rft_id=http%3A%2F%2Fwww.csail.mit.edu%2Ftimeline%2Ftimeline.php%3Fquery%3Devent%26id%3D19&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-auto-10"><span class="mw-cite-backlink">^ <a href="#cite_ref-auto_10-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-auto_10-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFHolmevik1994" class="citation journal cs1">Holmevik, Jan Rune (Winter 1994). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170830065454/http://www.idi.ntnu.no/grupper/su/publ/simula/holmevik-simula-ieeeannals94.pdf">"Compiling Simula: A historical study of technological genesis"</a> <span class="cs1-format">(PDF)</span>. <i><a href="/wiki/IEEE_Annals_of_the_History_of_Computing" title="IEEE Annals of the History of Computing">IEEE Annals of the History of Computing</a></i>. <b>16</b> (4): 25–37. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F85.329756">10.1109/85.329756</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:18148999">18148999</a>. Archived from <a rel="nofollow" class="external text" href="http://www.idi.ntnu.no/grupper/su/publ/simula/holmevik-simula-ieeeannals94.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 30 August 2017<span class="reference-accessdate">. Retrieved <span class="nowrap">3 March</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Annals+of+the+History+of+Computing&rft.atitle=Compiling+Simula%3A+A+historical+study+of+technological+genesis&rft.ssn=winter&rft.volume=16&rft.issue=4&rft.pages=25-37&rft.date=1994&rft_id=info%3Adoi%2F10.1109%2F85.329756&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A18148999%23id-name%3DS2CID&rft.aulast=Holmevik&rft.aufirst=Jan+Rune&rft_id=http%3A%2F%2Fwww.idi.ntnu.no%2Fgrupper%2Fsu%2Fpubl%2Fsimula%2Fholmevik-simula-ieeeannals94.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFButcher2014" class="citation book cs1">Butcher, Paul (30 June 2014). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=Xg9QDwAAQBAJ&pg=PT204"><i>Seven Concurrency Models in Seven Weeks: When Threads Unravel</i></a>. Pragmatic Bookshelf. p. 204. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-68050-466-8" title="Special:BookSources/978-1-68050-466-8"><bdi>978-1-68050-466-8</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Seven+Concurrency+Models+in+Seven+Weeks%3A+When+Threads+Unravel&rft.pages=204&rft.pub=Pragmatic+Bookshelf&rft.date=2014-06-30&rft.isbn=978-1-68050-466-8&rft.aulast=Butcher&rft.aufirst=Paul&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DXg9QDwAAQBAJ%26pg%3DPT204&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFJonesLiskov1976" class="citation techreport cs1">Jones, Anita K.; Liskov, Barbara H. (April 1976). <a rel="nofollow" class="external text" href="http://csg.csail.mit.edu/CSGArchives/memos/Memo-137.pdf"><i>An Access Control Facility for Programming Languages</i></a> <span class="cs1-format">(PDF)</span> (Technical report). MIT. CSG Memo 137.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=report&rft.btitle=An+Access+Control+Facility+for+Programming+Languages&rft.pub=MIT&rft.date=1976-04&rft.aulast=Jones&rft.aufirst=Anita+K.&rft.au=Liskov%2C+Barbara+H.&rft_id=http%3A%2F%2Fcsg.csail.mit.edu%2FCSGArchives%2Fmemos%2FMemo-137.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-Bertrand_Meyer_2009_329-13"><span class="mw-cite-backlink">^ <a href="#cite_ref-Bertrand_Meyer_2009_329_13-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Bertrand_Meyer_2009_329_13-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBertrand_Meyer2009" class="citation book cs1">Bertrand Meyer (2009). <i>Touch of Class: Learning to Program Well with Objects and Contracts</i>. Springer Science & Business Media. p. 329. <a href="/wiki/Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2009tclp.book.....M">2009tclp.book.....M</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-3-540-92144-8" title="Special:BookSources/978-3-540-92144-8"><bdi>978-3-540-92144-8</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Touch+of+Class%3A+Learning+to+Program+Well+with+Objects+and+Contracts&rft.pages=329&rft.pub=Springer+Science+%26+Business+Media&rft.date=2009&rft_id=info%3Abibcode%2F2009tclp.book.....M&rft.isbn=978-3-540-92144-8&rft.au=Bertrand+Meyer&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFAlan_C._Kay1993" class="citation journal cs1"><a href="/wiki/Alan_C._Kay" class="mw-redirect" title="Alan C. Kay">Alan C. Kay</a> (March 1993). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F155360.155364">"The early history of Smalltalk"</a>. <i><a href="/wiki/ACM_SIGPLAN_Notices" class="mw-redirect" title="ACM SIGPLAN Notices">ACM SIGPLAN Notices</a></i>. <b>28</b> (3): 69–95. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F155360.155364">10.1145/155360.155364</a></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=ACM+SIGPLAN+Notices&rft.atitle=The+early+history+of+Smalltalk&rft.volume=28&rft.issue=3&rft.pages=69-95&rft.date=1993-03&rft_id=info%3Adoi%2F10.1145%2F155360.155364&rft.au=Alan+C.+Kay&rft_id=https%3A%2F%2Fdoi.org%2F10.1145%252F155360.155364&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMoon1986" class="citation conference cs1"><a href="/wiki/David_A._Moon" title="David A. Moon">Moon, David A.</a> (June 1986). <a rel="nofollow" class="external text" href="https://www.cs.tufts.edu/comp/150FP/archive/david-moon/flavors.pdf">"Object-Oriented Programming with Flavors"</a> <span class="cs1-format">(PDF)</span>. <i>Conference proceedings on Object-oriented Programming Systems Languages and Applications</i>. <a href="/wiki/OOPSLA" title="OOPSLA">OOPSLA</a> '86. pp. 1–8. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F28697.28698">10.1145/28697.28698</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-89791-204-4" title="Special:BookSources/978-0-89791-204-4"><bdi>978-0-89791-204-4</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:17150741">17150741</a><span class="reference-accessdate">. Retrieved <span class="nowrap">17 March</span> 2022</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=conference&rft.atitle=Object-Oriented+Programming+with+Flavors&rft.btitle=Conference+proceedings+on+Object-oriented+Programming+Systems+Languages+and+Applications&rft.pages=1-8&rft.date=1986-06&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A17150741%23id-name%3DS2CID&rft_id=info%3Adoi%2F10.1145%2F28697.28698&rft.isbn=978-0-89791-204-4&rft.aulast=Moon&rft.aufirst=David+A.&rft_id=https%3A%2F%2Fwww.cs.tufts.edu%2Fcomp%2F150FP%2Farchive%2Fdavid-moon%2Fflavors.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation news cs1"><a rel="nofollow" class="external text" href="https://computerhistory.org/blog/introducing-the-smalltalk-zoo-48-years-of-smalltalk-history-at-chm/">"Introducing the Smalltalk Zoo"</a>. <i>CHM</i>. 17 December 2020.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=CHM&rft.atitle=Introducing+the+Smalltalk+Zoo&rft.date=2020-12-17&rft_id=https%3A%2F%2Fcomputerhistory.org%2Fblog%2Fintroducing-the-smalltalk-zoo-48-years-of-smalltalk-history-at-chm%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBobrowStefik1982" class="citation conference cs1">Bobrow, D. G.; Stefik, M. J (1982). <a rel="nofollow" class="external text" href="https://www.markstefik.com/wp-content/uploads/2011/04/1982-Bobrow-Stefik-Data-Object-Pgming.pdf"><i>LOOPS: data and object oriented Programming for Interlisp</i></a> <span class="cs1-format">(PDF)</span>. European AI Conference.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=conference&rft.btitle=LOOPS%3A+data+and+object+oriented+Programming+for+Interlisp&rft.date=1982&rft.aulast=Bobrow&rft.aufirst=D.+G.&rft.au=Stefik%2C+M.+J&rft_id=https%3A%2F%2Fwww.markstefik.com%2Fwp-content%2Fuploads%2F2011%2F04%2F1982-Bobrow-Stefik-Data-Object-Pgming.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEMeyer1997-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEMeyer1997_18-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFMeyer1997">Meyer 1997</a>.</span> </li> <li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text">1995 (June) <a href="/wiki/Visual_FoxPro" title="Visual FoxPro">Visual FoxPro</a> 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. <a rel="nofollow" class="external text" href="http://www.foxprohistory.org/foxprotimeline.htm#summary_of_fox_releases">Summary of Fox releases</a></span> </li> <li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text">1995 Reviewers Guide to Visual FoxPro 3.0: <a rel="nofollow" class="external text" href="http://www.dfpug.de/loseblattsammlung/migration/whitepapers/vfp_rg.htm">DFpug.de</a></span> </li> <li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKhurana2009" class="citation book cs1">Khurana, Rohit (1 November 2009). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=MHmqfSBTXsAC&pg=PA16"><i>Object Oriented Programming with C++, 1E</i></a>. Vikas Publishing House Pvt Limited. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-81-259-2532-3" title="Special:BookSources/978-81-259-2532-3"><bdi>978-81-259-2532-3</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object+Oriented+Programming+with+C%2B%2B%2C+1E&rft.pub=Vikas+Publishing+House+Pvt+Limited&rft.date=2009-11-01&rft.isbn=978-81-259-2532-3&rft.aulast=Khurana&rft.aufirst=Rohit&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DMHmqfSBTXsAC%26pg%3DPA16&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-ArmstrongQuarks-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-ArmstrongQuarks_22-0">^</a></b></span> <span class="reference-text">Deborah J. Armstrong. <i>The Quarks of Object-Oriented Development</i>. A survey of nearly 40 years of computing literature identified several 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.</span> </li> <li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><a href="/wiki/John_C._Mitchell" title="John C. Mitchell">John C. Mitchell</a>, <i>Concepts in programming languages</i>, Cambridge University Press, 2003, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-521-78098-5" title="Special:BookSources/0-521-78098-5">0-521-78098-5</a>, p.278. Lists: Dynamic dispatch, abstraction, subtype polymorphism, and inheritance.</span> </li> <li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text">Michael Lee Scott, <i>Programming language pragmatics</i>, Edition 2, Morgan Kaufmann, 2006, <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-12-633951-1" title="Special:BookSources/0-12-633951-1">0-12-633951-1</a>, p. 470. Lists encapsulation, inheritance, and dynamic dispatch.</span> </li> <li id="cite_note-pierce-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-pierce_25-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPierce2002" class="citation book cs1">Pierce, Benjamin (2002). <a href="/wiki/Types_and_Programming_Languages" title="Types and Programming Languages"><i>Types and Programming Languages</i></a>. MIT Press. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-262-16209-8" title="Special:BookSources/978-0-262-16209-8"><bdi>978-0-262-16209-8</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Types+and+Programming+Languages&rft.pub=MIT+Press&rft.date=2002&rft.isbn=978-0-262-16209-8&rft.aulast=Pierce&rft.aufirst=Benjamin&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span>, 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")</span> </li> <li id="cite_note-DatePage650-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-DatePage650_26-0">^</a></b></span> <span class="reference-text">C. J. Date, Introduction to Database Systems, 6th-ed., Page 650</span> </li> <li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBooch1986" class="citation book cs1">Booch, Grady (1986). <a class="external text" href="https://en.wikiquote.org/wiki/Grady_Booch"><i>Software Engineering with Ada</i></a>. Addison Wesley. p. 220. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-8053-0608-8" title="Special:BookSources/978-0-8053-0608-8"><bdi>978-0-8053-0608-8</bdi></a>. <q>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.</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Software+Engineering+with+Ada&rft.pages=220&rft.pub=Addison+Wesley&rft.date=1986&rft.isbn=978-0-8053-0608-8&rft.aulast=Booch&rft.aufirst=Grady&rft_id=https%3A%2F%2Fen.wikiquote.org%2Fwiki%2FGrady_Booch&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-ThirdManifesto-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-ThirdManifesto_28-0">^</a></b></span> <span class="reference-text">C. J. Date, Hugh Darwen. <i>Foundation for Future Database Systems: The Third Manifesto</i> (2nd Edition)</span> </li> <li id="cite_note-stepanov-29"><span class="mw-cite-backlink">^ <a href="#cite_ref-stepanov_29-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-stepanov_29-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFStepanov" class="citation web cs1"><a href="/wiki/Alexander_Stepanov" title="Alexander Stepanov">Stepanov, Alexander</a>. <a rel="nofollow" class="external text" href="http://www.stlport.org/resources/StepanovUSA.html">"STLport: An Interview with A. Stepanov"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">21 April</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=STLport%3A+An+Interview+with+A.+Stepanov&rft.aulast=Stepanov&rft.aufirst=Alexander&rft_id=http%3A%2F%2Fwww.stlport.org%2Fresources%2FStepanovUSA.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-hickey-30"><span class="mw-cite-backlink">^ <a href="#cite_ref-hickey_30-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-hickey_30-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text">Rich Hickey, JVM Languages Summit 2009 keynote, <a rel="nofollow" class="external text" href="http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey">Are We There Yet?</a> November 2009.</span> </li> <li id="cite_note-RobPike-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-RobPike_31-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPike2012" class="citation web cs1">Pike, Rob (25 June 2012). <a rel="nofollow" class="external text" href="https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html">"Less is exponentially more"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">1 October</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Less+is+exponentially+more&rft.date=2012-06-25&rft.aulast=Pike&rft.aufirst=Rob&rft_id=https%3A%2F%2Fcommandcenter.blogspot.com%2F2012%2F06%2Fless-is-exponentially-more.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-yegge-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-yegge_32-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html">"Stevey's Blog Rants: Execution in the Kingdom of Nouns"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">20 May</span> 2020</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Stevey%27s+Blog+Rants%3A+Execution+in+the+Kingdom+of+Nouns&rft_id=http%3A%2F%2Fsteve-yegge.blogspot.com%2F2006%2F03%2Fexecution-in-kingdom-of-nouns.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEBloch201819Chapter_§2_Item_4_Enforce_noninstantiability_with_a_private_constructor-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEBloch201819Chapter_§2_Item_4_Enforce_noninstantiability_with_a_private_constructor_33-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFBloch2018">Bloch 2018</a>, p. 19, Chapter §2 Item 4 Enforce noninstantiability with a private constructor.</span> </li> <li id="cite_note-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-34">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFDonyMalenfantBardon1999" class="citation book cs1">Dony, C; Malenfant, J; Bardon, D (1999). <a rel="nofollow" class="external text" href="https://www.lirmm.fr/~dony/postscript/proto-book.pdf">"Classifying prototype-based programming languages"</a> <span class="cs1-format">(PDF)</span>. <i>Prototype-based programming: concepts, languages and applications</i>. Singapore Berlin Heidelberg: Springer. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/9789814021258" title="Special:BookSources/9789814021258"><bdi>9789814021258</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Classifying+prototype-based+programming+languages&rft.btitle=Prototype-based+programming%3A+concepts%2C+languages+and+applications&rft.place=Singapore+Berlin+Heidelberg&rft.pub=Springer&rft.date=1999&rft.isbn=9789814021258&rft.aulast=Dony&rft.aufirst=C&rft.au=Malenfant%2C+J&rft.au=Bardon%2C+D&rft_id=https%3A%2F%2Fwww.lirmm.fr%2F~dony%2Fpostscript%2Fproto-book.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-35">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://golang.org/doc/faq#Is_Go_an_object-oriented_language">"Is Go an object-oriented language?"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">13 April</span> 2019</span>. <q>Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy.</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Is+Go+an+object-oriented+language%3F&rft_id=https%3A%2F%2Fgolang.org%2Fdoc%2Ffaq%23Is_Go_an_object-oriented_language&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-36"><span class="mw-cite-backlink"><b><a href="#cite_ref-36">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFStroustrup2015" class="citation conference cs1">Stroustrup, Bjarne (2015). <a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=xcpSLRpOMJM"><i>Object-Oriented Programming without Inheritance (Invited Talk)</i></a>. 29th European Conference on Object-Oriented Programming (ECOOP 2015). 1:34. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.4230%2FLIPIcs.ECOOP.2015.1">10.4230/LIPIcs.ECOOP.2015.1</a></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=conference&rft.btitle=Object-Oriented+Programming+without+Inheritance+%28Invited+Talk%29&rft.pages=1%3A34&rft.date=2015&rft_id=info%3Adoi%2F10.4230%2FLIPIcs.ECOOP.2015.1&rft.aulast=Stroustrup&rft.aufirst=Bjarne&rft_id=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DxcpSLRpOMJM&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-37">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPike2012" class="citation web cs1">Pike, Rob (14 November 2012). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180814173134/http://plus.google.com/+RobPikeTheHuman/posts/hoJdanihKwb">"A few years ago I saw this page"</a>. Archived from <a rel="nofollow" class="external text" href="https://plus.google.com/+RobPikeTheHuman/posts/hoJdanihKwb">the original</a> on 14 August 2018<span class="reference-accessdate">. Retrieved <span class="nowrap">1 October</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=A+few+years+ago+I+saw+this+page&rft.date=2012-11-14&rft.aulast=Pike&rft.aufirst=Rob&rft_id=http%3A%2F%2Fplus.google.com%2F%2BRobPikeTheHuman%2Fposts%2FhoJdanihKwb&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-38">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPike2004" class="citation mailinglist cs1"><a href="/wiki/Rob_Pike" title="Rob Pike">Pike, Rob</a> (2 March 2004). <a rel="nofollow" class="external text" href="https://groups.google.com/group/comp.os.plan9/msg/006fec195aeeff15">"[9fans] Re: Threads: Sewing badges of honor onto a Kernel"</a>. <i>comp.os.plan9</i> (Mailing list)<span class="reference-accessdate">. Retrieved <span class="nowrap">17 November</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=%5B9fans%5D+Re%3A+Threads%3A+Sewing+badges+of+honor+onto+a+Kernel&rft.date=2004-03-02&rft.aulast=Pike&rft.aufirst=Rob&rft_id=http%3A%2F%2Fgroups.google.com%2Fgroup%2Fcomp.os.plan9%2Fmsg%2F006fec195aeeff15&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-39">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=zHiWqnTWsn4">"Uncle Bob SOLID principles"</a>. <i><a href="/wiki/YouTube" title="YouTube">YouTube</a></i>. 2 August 2018.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=YouTube&rft.atitle=Uncle+Bob+SOLID+principles&rft.date=2018-08-02&rft_id=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DzHiWqnTWsn4&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-40"><span class="mw-cite-backlink"><b><a href="#cite_ref-40">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFJacobsenMagnus_ChristersonPatrik_JonssonGunnar_Overgaard1992" class="citation book cs1">Jacobsen, Ivar; Magnus Christerson; Patrik Jonsson; Gunnar Overgaard (1992). <a rel="nofollow" class="external text" href="https://archive.org/details/objectorientedso00jaco/page/43"><i>Object Oriented Software Engineering</i></a>. Addison-Wesley ACM Press. pp. <a rel="nofollow" class="external text" href="https://archive.org/details/objectorientedso00jaco/page/43">43–69</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-201-54435-0" title="Special:BookSources/978-0-201-54435-0"><bdi>978-0-201-54435-0</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object+Oriented+Software+Engineering&rft.pages=43-69&rft.pub=Addison-Wesley+ACM+Press&rft.date=1992&rft.isbn=978-0-201-54435-0&rft.aulast=Jacobsen&rft.aufirst=Ivar&rft.au=Magnus+Christerson&rft.au=Patrik+Jonsson&rft.au=Gunnar+Overgaard&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fobjectorientedso00jaco%2Fpage%2F43&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-badprop-41"><span class="mw-cite-backlink">^ <a href="#cite_ref-badprop_41-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-badprop_41-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-badprop_41-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFCardelli1996" class="citation journal cs1"><a href="/wiki/Luca_Cardelli" title="Luca Cardelli">Cardelli, Luca</a> (1996). <a rel="nofollow" class="external text" href="http://lucacardelli.name/Papers/BadPropertiesOfOO.html">"Bad Engineering Properties of Object-Oriented Languages"</a>. <i>ACM Comput. Surv</i>. <b>28</b> (4es): 150–es. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F242224.242415">10.1145/242224.242415</a>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0360-0300">0360-0300</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:12105785">12105785</a><span class="reference-accessdate">. Retrieved <span class="nowrap">21 April</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=ACM+Comput.+Surv.&rft.atitle=Bad+Engineering+Properties+of+Object-Oriented+Languages&rft.volume=28&rft.issue=4es&rft.pages=150-es&rft.date=1996&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A12105785%23id-name%3DS2CID&rft.issn=0360-0300&rft_id=info%3Adoi%2F10.1145%2F242224.242415&rft.aulast=Cardelli&rft.aufirst=Luca&rft_id=http%3A%2F%2Flucacardelli.name%2FPapers%2FBadPropertiesOfOO.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-armstrongjoe-42"><span class="mw-cite-backlink">^ <a href="#cite_ref-armstrongjoe_42-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-armstrongjoe_42-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text">Armstrong, Joe. In <i>Coders at Work: Reflections on the Craft of Programming.</i> Peter Seibel, ed. <a rel="nofollow" class="external text" href="http://www.codersatwork.com/">Codersatwork.com</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20100305165150/http://www.codersatwork.com/">Archived</a> 5 March 2010 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a>, Accessed 13 November 2009.</span> </li> <li id="cite_note-43"><span class="mw-cite-backlink"><b><a href="#cite_ref-43">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMcDonough2017" class="citation book cs1">McDonough, James E. (2017). "Encapsulation". <i>Object-Oriented Design with ABAP: A Practical Approach</i>. <a href="/wiki/Apress" class="mw-redirect" title="Apress">Apress</a>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-1-4842-2838-8">10.1007/978-1-4842-2838-8</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-4842-2837-1" title="Special:BookSources/978-1-4842-2837-1"><bdi>978-1-4842-2837-1</bdi></a> – via <a href="/wiki/O%27Reilly_Media" title="O'Reilly Media">O'Reilly</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Encapsulation&rft.btitle=Object-Oriented+Design+with+ABAP%3A+A+Practical+Approach&rft.pub=Apress&rft.date=2017&rft_id=info%3Adoi%2F10.1007%2F978-1-4842-2838-8&rft.isbn=978-1-4842-2837-1&rft.aulast=McDonough&rft.aufirst=James+E.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span><span class="cs1-maint citation-comment"><code class="cs1-code">{{<a href="/wiki/Template:Cite_book" title="Template:Cite book">cite book</a>}}</code>: CS1 maint: date and year (<a href="/wiki/Category:CS1_maint:_date_and_year" title="Category:CS1 maint: date and year">link</a>)</span></span> </li> <li id="cite_note-FOOTNOTEBloch201873–77Chapter_§4_Item15_Minimize_the_accessibility_of_classes_and_members-44"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEBloch201873–77Chapter_§4_Item15_Minimize_the_accessibility_of_classes_and_members_44-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEBloch201873–77Chapter_§4_Item15_Minimize_the_accessibility_of_classes_and_members_44-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFBloch2018">Bloch 2018</a>, pp. 73–77, Chapter §4 Item15 Minimize the accessibility of classes and members.</span> </li> <li id="cite_note-45"><span class="mw-cite-backlink"><b><a href="#cite_ref-45">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://softwaregeekbytes.com/object-oriented-programming-simple-words/">"What is Object Oriented Programming (OOP) In Simple Words? – Software Geek Bytes"</a>. 5 January 2023<span class="reference-accessdate">. Retrieved <span class="nowrap">17 January</span> 2023</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=What+is+Object+Oriented+Programming+%28OOP%29+In+Simple+Words%3F+%E2%80%93+Software+Geek+Bytes&rft.date=2023-01-05&rft_id=https%3A%2F%2Fsoftwaregeekbytes.com%2Fobject-oriented-programming-simple-words%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-46"><span class="mw-cite-backlink"><b><a href="#cite_ref-46">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFCardelliWegner1985" class="citation journal cs1">Cardelli, Luca; Wegner, Peter (10 December 1985). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F6041.6042">"On understanding types, data abstraction, and polymorphism"</a>. <i>ACM Computing Surveys</i>. <b>17</b> (4): 471–523. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F6041.6042">10.1145/6041.6042</a></span>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0360-0300">0360-0300</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=ACM+Computing+Surveys&rft.atitle=On+understanding+types%2C+data+abstraction%2C+and+polymorphism&rft.volume=17&rft.issue=4&rft.pages=471-523&rft.date=1985-12-10&rft_id=info%3Adoi%2F10.1145%2F6041.6042&rft.issn=0360-0300&rft.aulast=Cardelli&rft.aufirst=Luca&rft.au=Wegner%2C+Peter&rft_id=https%3A%2F%2Fdoi.org%2F10.1145%252F6041.6042&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-Eric_S._Raymond_2003-47"><span class="mw-cite-backlink">^ <a href="#cite_ref-Eric_S._Raymond_2003_47-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Eric_S._Raymond_2003_47-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Eric_S._Raymond_2003_47-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFEric_S._Raymond2003" class="citation web cs1">Eric S. Raymond (2003). <a rel="nofollow" class="external text" href="http://www.catb.org/esr/writings/taoup/html/unix_and_oo.html">"The Art of Unix Programming: Unix and Object-Oriented Languages"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">6 August</span> 2014</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=The+Art+of+Unix+Programming%3A+Unix+and+Object-Oriented+Languages&rft.date=2003&rft.au=Eric+S.+Raymond&rft_id=http%3A%2F%2Fwww.catb.org%2Fesr%2Fwritings%2Ftaoup%2Fhtml%2Funix_and_oo.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-48"><span class="mw-cite-backlink"><b><a href="#cite_ref-48">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBrodie1984" class="citation book cs1">Brodie, Leo (1984). <a rel="nofollow" class="external text" href="http://thinking-forth.sourceforge.net/thinking-forth-ans.pdf"><i>Thinking Forth</i></a> <span class="cs1-format">(PDF)</span>. pp. 92–93<span class="reference-accessdate">. Retrieved <span class="nowrap">4 May</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Thinking+Forth&rft.pages=92-93&rft.date=1984&rft.aulast=Brodie&rft.aufirst=Leo&rft_id=http%3A%2F%2Fthinking-forth.sourceforge.net%2Fthinking-forth-ans.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-49"><span class="mw-cite-backlink"><b><a href="#cite_ref-49">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFHunt" class="citation web cs1">Hunt, Andrew. <a rel="nofollow" class="external text" href="http://wiki.c2.com/?DontRepeatYourself">"Don't Repeat Yourself"</a>. <i>Category Extreme Programming</i><span class="reference-accessdate">. Retrieved <span class="nowrap">4 May</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Category+Extreme+Programming&rft.atitle=Don%27t+Repeat+Yourself&rft.aulast=Hunt&rft.aufirst=Andrew&rft_id=http%3A%2F%2Fwiki.c2.com%2F%3FDontRepeatYourself&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-50"><span class="mw-cite-backlink"><b><a href="#cite_ref-50">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.emeraldprogramminglanguage.org/">"The Emerald Programming Language"</a>. 26 February 2011.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=The+Emerald+Programming+Language&rft.date=2011-02-26&rft_id=http%3A%2F%2Fwww.emeraldprogramminglanguage.org%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-51"><span class="mw-cite-backlink"><b><a href="#cite_ref-51">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBruckerWolff2008" class="citation book cs1">Brucker, Achim D.; Wolff, Burkhart (2008). "Extensible Universes for Object-Oriented Data Models". <i>ECOOP 2008 – Object-Oriented Programming</i>. Lecture Notes in Computer Science. Vol. 5142. pp. 438–462. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-3-540-70592-5_19">10.1007/978-3-540-70592-5_19</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-3-540-70591-8" title="Special:BookSources/978-3-540-70591-8"><bdi>978-3-540-70591-8</bdi></a>. <q>object-oriented programming is a widely accepted programming paradigm</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Extensible+Universes+for+Object-Oriented+Data+Models&rft.btitle=ECOOP+2008+%E2%80%93+Object-Oriented+Programming&rft.series=Lecture+Notes+in+Computer+Science&rft.pages=438-462&rft.date=2008&rft_id=info%3Adoi%2F10.1007%2F978-3-540-70592-5_19&rft.isbn=978-3-540-70591-8&rft.aulast=Brucker&rft.aufirst=Achim+D.&rft.au=Wolff%2C+Burkhart&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-52"><span class="mw-cite-backlink"><b><a href="#cite_ref-52">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFCassel2019" class="citation news cs1">Cassel, David (21 August 2019). <a rel="nofollow" class="external text" href="https://thenewstack.io/why-are-so-many-developers-hating-on-object-oriented-programming/">"Why Are So Many Developers Hating on Object-Oriented Programming?"</a>. <i>The New Stack</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=The+New+Stack&rft.atitle=Why+Are+So+Many+Developers+Hating+on+Object-Oriented+Programming%3F&rft.date=2019-08-21&rft.aulast=Cassel&rft.aufirst=David&rft_id=https%3A%2F%2Fthenewstack.io%2Fwhy-are-so-many-developers-hating-on-object-oriented-programming%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-graham-53"><span class="mw-cite-backlink"><b><a href="#cite_ref-graham_53-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFGraham" class="citation web cs1"><a href="/wiki/Paul_Graham_(computer_programmer)" class="mw-redirect" title="Paul Graham (computer programmer)">Graham, Paul</a>. <a rel="nofollow" class="external text" href="http://www.paulgraham.com/noop.html">"Why ARC isn't especially Object-Oriented"</a>. PaulGraham.com<span class="reference-accessdate">. Retrieved <span class="nowrap">13 November</span> 2009</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Why+ARC+isn%27t+especially+Object-Oriented.&rft.pub=PaulGraham.com&rft.aulast=Graham&rft.aufirst=Paul&rft_id=http%3A%2F%2Fwww.paulgraham.com%2Fnoop.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-54"><span class="mw-cite-backlink"><b><a href="#cite_ref-54">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFFeldman2019" class="citation web cs1">Feldman, Richard (30 September 2019). <a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=QyJZzq0v7Z4&t=2069s">"Why Isn't Functional Programming the Norm?"</a>. <i><a href="/wiki/YouTube" title="YouTube">YouTube</a></i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=YouTube&rft.atitle=Why+Isn%27t+Functional+Programming+the+Norm%3F&rft.date=2019-09-30&rft.aulast=Feldman&rft.aufirst=Richard&rft_id=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DQyJZzq0v7Z4%26t%3D2069s&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-lawrence-55"><span class="mw-cite-backlink"><b><a href="#cite_ref-lawrence_55-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKrubner" class="citation web cs1">Krubner, Lawrence. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20141014233854/http://www.smashcompany.com/technology/object-oriented-programming-is-an-expensive-disaster-which-must-end">"Object Oriented Programming is an expensive disaster which must end"</a>. smashcompany.com. Archived from <a rel="nofollow" class="external text" href="http://www.smashcompany.com/technology/object-oriented-programming-is-an-expensive-disaster-which-must-end">the original</a> on 14 October 2014<span class="reference-accessdate">. Retrieved <span class="nowrap">14 October</span> 2014</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Object+Oriented+Programming+is+an+expensive+disaster+which+must+end&rft.pub=smashcompany.com&rft.aulast=Krubner&rft.aufirst=Lawrence&rft_id=http%3A%2F%2Fwww.smashcompany.com%2Ftechnology%2Fobject-oriented-programming-is-an-expensive-disaster-which-must-end&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-56"><span class="mw-cite-backlink"><b><a href="#cite_ref-56">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPotokMladen_VoukAndy_Rindos1999" class="citation journal cs1">Potok, Thomas; Mladen Vouk; Andy Rindos (1999). <a rel="nofollow" class="external text" href="http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf">"Productivity Analysis of Object-Oriented Software Developed in a Commercial Environment"</a> <span class="cs1-format">(PDF)</span>. <i>Software: Practice and Experience</i>. <b>29</b> (10): 833–847. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1002%2F%28SICI%291097-024X%28199908%2929%3A10%3C833%3A%3AAID-SPE258%3E3.0.CO%3B2-P">10.1002/(SICI)1097-024X(199908)29:10<833::AID-SPE258>3.0.CO;2-P</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:57865731">57865731</a><span class="reference-accessdate">. Retrieved <span class="nowrap">21 April</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Software%3A+Practice+and+Experience&rft.atitle=Productivity+Analysis+of+Object-Oriented+Software+Developed+in+a+Commercial+Environment&rft.volume=29&rft.issue=10&rft.pages=833-847&rft.date=1999&rft_id=info%3Adoi%2F10.1002%2F%28SICI%291097-024X%28199908%2929%3A10%3C833%3A%3AAID-SPE258%3E3.0.CO%3B2-P&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A57865731%23id-name%3DS2CID&rft.aulast=Potok&rft.aufirst=Thomas&rft.au=Mladen+Vouk&rft.au=Andy+Rindos&rft_id=http%3A%2F%2Fwww.csm.ornl.gov%2F~v8q%2FHomepage%2FPapers%2520Old%2Fspetep-%2520printable.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-R.C.Martin-57"><span class="mw-cite-backlink"><b><a href="#cite_ref-R.C.Martin_57-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMartin" class="citation web cs1"><a href="/wiki/Robert_Cecil_Martin" class="mw-redirect" title="Robert Cecil Martin">Martin, Robert C.</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150906155800/http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf">"Design Principles and Design Patterns"</a> <span class="cs1-format">(PDF)</span>. Archived from <a rel="nofollow" class="external text" href="http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 6 September 2015<span class="reference-accessdate">. Retrieved <span class="nowrap">28 April</span> 2017</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Design+Principles+and+Design+Patterns&rft.aulast=Martin&rft.aufirst=Robert+C.&rft_id=http%3A%2F%2Fwww.objectmentor.com%2Fresources%2Farticles%2FPrinciples_and_Patterns.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-RDMDBobjectmis-58"><span class="mw-cite-backlink"><b><a href="#cite_ref-RDMDBobjectmis_58-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFNeward2006" class="citation web cs1">Neward, Ted (26 June 2006). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20060704030226/http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx">"The Vietnam of Computer Science"</a>. Interoperability Happens. Archived from <a rel="nofollow" class="external text" href="http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx">the original</a> on 4 July 2006<span class="reference-accessdate">. Retrieved <span class="nowrap">2 June</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=The+Vietnam+of+Computer+Science&rft.pub=Interoperability+Happens&rft.date=2006-06-26&rft.aulast=Neward&rft.aufirst=Ted&rft_id=http%3A%2F%2Fblogs.tedneward.com%2F2006%2F06%2F26%2FThe%2BVietnam%2BOf%2BComputer%2BScience.aspx&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-FOOTNOTEMeyer1997230-59"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEMeyer1997230_59-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFMeyer1997">Meyer 1997</a>, p. 230.</span> </li> <li id="cite_note-60"><span class="mw-cite-backlink"><b><a href="#cite_ref-60">^</a></b></span> <span class="reference-text">M.Trofimov, <i>OOOP – The Third "O" Solution: Open OOP.</i> First Class, <a href="/wiki/Object_Management_Group" title="Object Management Group">OMG</a>, 1993, Vol. 3, issue 3, p.14.</span> </li> <li id="cite_note-61"><span class="mw-cite-backlink"><b><a href="#cite_ref-61">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFNiklaus_Wirth2006" class="citation journal cs1"><a href="/wiki/Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a> (23 January 2006). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20161012215755/https://pdfs.semanticscholar.org/10bd/dc49b85196aaa6715dd46843d9dcffa38358.pdf">"Good ideas, through the looking glass"</a> <span class="cs1-format">(PDF)</span>. <i><a href="/wiki/IEEE_Computer" class="mw-redirect" title="IEEE Computer">IEEE Computer</a></i>. Cover Feature. <b>39</b> (1): 28–39. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FMC.2006.20">10.1109/MC.2006.20</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6582369">6582369</a>. Archived from <a rel="nofollow" class="external text" href="https://pdfs.semanticscholar.org/10bd/dc49b85196aaa6715dd46843d9dcffa38358.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 12 October 2016.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Computer&rft.atitle=Good+ideas%2C+through+the+looking+glass&rft.volume=39&rft.issue=1&rft.pages=28-39&rft.date=2006-01-23&rft_id=info%3Adoi%2F10.1109%2FMC.2006.20&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A6582369%23id-name%3DS2CID&rft.au=Niklaus+Wirth&rft_id=https%3A%2F%2Fpdfs.semanticscholar.org%2F10bd%2Fdc49b85196aaa6715dd46843d9dcffa38358.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-executioniKoN-62"><span class="mw-cite-backlink"><b><a href="#cite_ref-executioniKoN_62-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFYegge2006" class="citation web cs1">Yegge, Steve (30 March 2006). <a rel="nofollow" class="external text" href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html">"Execution in the Kingdom of Nouns"</a>. steve-yegge.blogspot.com<span class="reference-accessdate">. Retrieved <span class="nowrap">3 July</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Execution+in+the+Kingdom+of+Nouns&rft.pub=steve-yegge.blogspot.com&rft.date=2006-03-30&rft.aulast=Yegge&rft.aufirst=Steve&rft_id=http%3A%2F%2Fsteve-yegge.blogspot.com%2F2006%2F03%2Fexecution-in-kingdom-of-nouns.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-executioniKoN2-63"><span class="mw-cite-backlink"><b><a href="#cite_ref-executioniKoN2_63-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBoronczyk2009" class="citation web cs1">Boronczyk, Timothy (11 June 2009). <a rel="nofollow" class="external text" href="http://zaemis.blogspot.com/2009/06/whats-wrong-with-oop.html">"What's Wrong with OOP"</a>. zaemis.blogspot.com<span class="reference-accessdate">. Retrieved <span class="nowrap">3 July</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=What%27s+Wrong+with+OOP&rft.pub=zaemis.blogspot.com&rft.date=2009-06-11&rft.aulast=Boronczyk&rft.aufirst=Timothy&rft_id=http%3A%2F%2Fzaemis.blogspot.com%2F2009%2F06%2Fwhats-wrong-with-oop.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-realisticcodereuse-64"><span class="mw-cite-backlink"><b><a href="#cite_ref-realisticcodereuse_64-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFAmbler1998" class="citation web cs1">Ambler, Scott (1 January 1998). <a rel="nofollow" class="external text" href="http://www.drdobbs.com/184415594">"A Realistic Look at Object-Oriented Reuse"</a>. drdobbs.com<span class="reference-accessdate">. Retrieved <span class="nowrap">4 July</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=A+Realistic+Look+at+Object-Oriented+Reuse&rft.pub=drdobbs.com&rft.date=1998-01-01&rft.aulast=Ambler&rft.aufirst=Scott&rft_id=http%3A%2F%2Fwww.drdobbs.com%2F184415594&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-flaws-65"><span class="mw-cite-backlink"><b><a href="#cite_ref-flaws_65-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFShelly2008" class="citation web cs1">Shelly, Asaf (22 August 2008). <a rel="nofollow" class="external text" href="http://software.intel.com/en-us/blogs/2008/08/22/flaws-of-object-oriented-modeling/">"Flaws of Object Oriented Modeling"</a>. Intel Software Network<span class="reference-accessdate">. Retrieved <span class="nowrap">4 July</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Flaws+of+Object+Oriented+Modeling&rft.pub=Intel+Software+Network&rft.date=2008-08-22&rft.aulast=Shelly&rft.aufirst=Asaf&rft_id=http%3A%2F%2Fsoftware.intel.com%2Fen-us%2Fblogs%2F2008%2F08%2F22%2Fflaws-of-object-oriented-modeling%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-multithreadingisaverb-66"><span class="mw-cite-backlink"><b><a href="#cite_ref-multithreadingisaverb_66-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFJames2007" class="citation web cs1">James, Justin (1 October 2007). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20071010105117/http://blogs.techrepublic.com.com/programming-and-development/?p=518">"Multithreading is a verb not a noun"</a>. techrepublic.com. Archived from <a rel="nofollow" class="external text" href="http://blogs.techrepublic.com.com/programming-and-development/?p=518">the original</a> on 10 October 2007<span class="reference-accessdate">. Retrieved <span class="nowrap">4 July</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Multithreading+is+a+verb+not+a+noun&rft.pub=techrepublic.com&rft.date=2007-10-01&rft.aulast=James&rft.aufirst=Justin&rft_id=http%3A%2F%2Fblogs.techrepublic.com.com%2Fprogramming-and-development%2F%3Fp%3D518&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-multicore-67"><span class="mw-cite-backlink"><b><a href="#cite_ref-multicore_67-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFShelly2008" class="citation web cs1">Shelly, Asaf (22 August 2008). <a rel="nofollow" class="external text" href="http://support.microsoft.com/?scid=kb%3Ben-us%3B558117">"HOW TO: Multicore Programming (Multiprocessing) Visual C++ Class Design Guidelines, Member Functions"</a>. support.microsoft.com<span class="reference-accessdate">. Retrieved <span class="nowrap">4 July</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=HOW+TO%3A+Multicore+Programming+%28Multiprocessing%29+Visual+C%2B%2B+Class+Design+Guidelines%2C+Member+Functions&rft.pub=support.microsoft.com&rft.date=2008-08-22&rft.aulast=Shelly&rft.aufirst=Asaf&rft_id=http%3A%2F%2Fsupport.microsoft.com%2F%3Fscid%3Dkb%253Ben-us%253B558117&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-68"><span class="mw-cite-backlink"><b><a href="#cite_ref-68">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFRobert_Harper2011" class="citation web cs1"><a href="/wiki/Robert_Harper_(computer_scientist)" title="Robert Harper (computer scientist)">Robert Harper</a> (17 April 2011). <a rel="nofollow" class="external text" href="http://existentialtype.wordpress.com/2011/04/17/some-advice-on-teaching-fp/">"Some thoughts on teaching FP"</a>. Existential Type Blog<span class="reference-accessdate">. Retrieved <span class="nowrap">5 December</span> 2011</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Some+thoughts+on+teaching+FP&rft.pub=Existential+Type+Blog&rft.date=2011-04-17&rft.au=Robert+Harper&rft_id=http%3A%2F%2Fexistentialtype.wordpress.com%2F2011%2F04%2F17%2Fsome-advice-on-teaching-fp%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-poll97-69"><span class="mw-cite-backlink"><b><a href="#cite_ref-poll97_69-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPoll" class="citation web cs1">Poll, Erik. <a rel="nofollow" class="external text" href="https://www.cs.ru.nl/E.Poll/papers/kyoto97.pdf">"Subtyping and Inheritance for Categorical Datatypes"</a> <span class="cs1-format">(PDF)</span><span class="reference-accessdate">. Retrieved <span class="nowrap">5 June</span> 2011</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Subtyping+and+Inheritance+for+Categorical+Datatypes&rft.aulast=Poll&rft.aufirst=Erik&rft_id=https%3A%2F%2Fwww.cs.ru.nl%2FE.Poll%2Fpapers%2Fkyoto97.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> <li id="cite_note-AbadiCardelli-70"><span class="mw-cite-backlink">^ <a href="#cite_ref-AbadiCardelli_70-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-AbadiCardelli_70-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFAbadiCardelli,_Luca1996" class="citation book cs1"><a href="/wiki/Martin_Abadi" class="mw-redirect" title="Martin Abadi">Abadi, Martin</a>; Cardelli, Luca (1996). <a rel="nofollow" class="external text" href="http://portal.acm.org/citation.cfm?id=547964&dl=ACM&coll=portal"><i>A Theory of Objects</i></a>. Springer-Verlag New York, Inc. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-387-94775-4" title="Special:BookSources/978-0-387-94775-4"><bdi>978-0-387-94775-4</bdi></a><span class="reference-accessdate">. Retrieved <span class="nowrap">21 April</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=A+Theory+of+Objects&rft.pub=Springer-Verlag+New+York%2C+Inc.&rft.date=1996&rft.isbn=978-0-387-94775-4&rft.aulast=Abadi&rft.aufirst=Martin&rft.au=Cardelli%2C+Luca&rft_id=http%3A%2F%2Fportal.acm.org%2Fcitation.cfm%3Fid%3D547964%26dl%3DACM%26coll%3Dportal&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=31" title="Edit section: Further reading"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFAbadiLuca_Cardelli1998" class="citation book cs1"><a href="/wiki/Martin_Abadi" class="mw-redirect" title="Martin Abadi">Abadi, Martin</a>; <a href="/wiki/Luca_Cardelli" title="Luca Cardelli">Luca Cardelli</a> (1998). <i>A Theory of Objects</i>. <a href="/wiki/Springer_Verlag" class="mw-redirect" title="Springer Verlag">Springer Verlag</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-387-94775-4" title="Special:BookSources/978-0-387-94775-4"><bdi>978-0-387-94775-4</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=A+Theory+of+Objects&rft.pub=Springer+Verlag&rft.date=1998&rft.isbn=978-0-387-94775-4&rft.aulast=Abadi&rft.aufirst=Martin&rft.au=Luca+Cardelli&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFAbelsonGerald_Jay_Sussman1997" class="citation book cs1"><a href="/wiki/Harold_Abelson" class="mw-redirect" title="Harold Abelson">Abelson, Harold</a>; <a href="/wiki/Gerald_Jay_Sussman" title="Gerald Jay Sussman">Gerald Jay Sussman</a> (1997). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20171226134539/http://mitpress.mit.edu/sicp/"><i>Structure and Interpretation of Computer Programs</i></a>. <a href="/wiki/MIT_Press" title="MIT Press">MIT Press</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-262-01153-2" title="Special:BookSources/978-0-262-01153-2"><bdi>978-0-262-01153-2</bdi></a>. Archived from <a rel="nofollow" class="external text" href="http://mitpress.mit.edu/sicp/">the original</a> on 26 December 2017<span class="reference-accessdate">. Retrieved <span class="nowrap">22 January</span> 2006</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Structure+and+Interpretation+of+Computer+Programs&rft.pub=MIT+Press&rft.date=1997&rft.isbn=978-0-262-01153-2&rft.aulast=Abelson&rft.aufirst=Harold&rft.au=Gerald+Jay+Sussman&rft_id=http%3A%2F%2Fmitpress.mit.edu%2Fsicp%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFArmstrong2006" class="citation journal cs1">Armstrong, Deborah J. (February 2006). "The Quarks of Object-Oriented Development". <i>Communications of the ACM</i>. <b>49</b> (2): 123–128. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1113034.1113040">10.1145/1113034.1113040</a>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0001-0782">0001-0782</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:11485502">11485502</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Communications+of+the+ACM&rft.atitle=The+Quarks+of+Object-Oriented+Development&rft.volume=49&rft.issue=2&rft.pages=123-128&rft.date=2006-02&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A11485502%23id-name%3DS2CID&rft.issn=0001-0782&rft_id=info%3Adoi%2F10.1145%2F1113034.1113040&rft.aulast=Armstrong&rft.aufirst=Deborah+J.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBloch2018" class="citation book cs1">Bloch, Joshua (2018). <i>"Effective Java: Programming Language Guide"</i> (third ed.). Addison-Wesley. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0134685991" title="Special:BookSources/978-0134685991"><bdi>978-0134685991</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=%22Effective+Java%3A+Programming+Language+Guide%22&rft.edition=third&rft.pub=Addison-Wesley&rft.date=2018&rft.isbn=978-0134685991&rft.aulast=Bloch&rft.aufirst=Joshua&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBooch1997" class="citation book cs1"><a href="/wiki/Grady_Booch" title="Grady Booch">Booch, Grady</a> (1997). <a rel="nofollow" class="external text" href="https://archive.org/details/objectorientedan00booc"><i>Object-Oriented Analysis and Design with Applications</i></a>. <a href="/wiki/Addison-Wesley" title="Addison-Wesley">Addison-Wesley</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-8053-5340-2" title="Special:BookSources/978-0-8053-5340-2"><bdi>978-0-8053-5340-2</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object-Oriented+Analysis+and+Design+with+Applications&rft.pub=Addison-Wesley&rft.date=1997&rft.isbn=978-0-8053-5340-2&rft.aulast=Booch&rft.aufirst=Grady&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fobjectorientedan00booc&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFEelesOliver_Sims1998" class="citation book cs1">Eeles, Peter; <a href="/wiki/Oliver_Sims" title="Oliver Sims">Oliver Sims</a> (1998). <a rel="nofollow" class="external text" href="https://archive.org/details/buildingbusiness0000eele"><i>Building Business Objects</i></a>. <a href="/wiki/John_Wiley_%26_Sons" class="mw-redirect" title="John Wiley & Sons">John Wiley & Sons</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-471-19176-6" title="Special:BookSources/978-0-471-19176-6"><bdi>978-0-471-19176-6</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Building+Business+Objects&rft.pub=John+Wiley+%26+Sons&rft.date=1998&rft.isbn=978-0-471-19176-6&rft.aulast=Eeles&rft.aufirst=Peter&rft.au=Oliver+Sims&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fbuildingbusiness0000eele&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFGammaRichard_HelmRalph_JohnsonJohn_Vlissides1995" class="citation book cs1"><a href="/wiki/Erich_Gamma" title="Erich Gamma">Gamma, Erich</a>; <a href="/wiki/Richard_Helm" title="Richard Helm">Richard Helm</a>; <a href="/wiki/Ralph_Johnson_(computer_scientist)" title="Ralph Johnson (computer scientist)">Ralph Johnson</a>; <a href="/wiki/John_Vlissides" title="John Vlissides">John Vlissides</a> (1995). <a rel="nofollow" class="external text" href="https://archive.org/details/designpatternsel00gamm"><i>Design Patterns: Elements of Reusable Object Oriented Software</i></a>. Addison-Wesley. <a href="/wiki/Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/1995dper.book.....G">1995dper.book.....G</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-201-63361-0" title="Special:BookSources/978-0-201-63361-0"><bdi>978-0-201-63361-0</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Design+Patterns%3A+Elements+of+Reusable+Object+Oriented+Software&rft.pub=Addison-Wesley&rft.date=1995&rft_id=info%3Abibcode%2F1995dper.book.....G&rft.isbn=978-0-201-63361-0&rft.aulast=Gamma&rft.aufirst=Erich&rft.au=Richard+Helm&rft.au=Ralph+Johnson&rft.au=John+Vlissides&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fdesignpatternsel00gamm&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFHarmonWilliam_Morrissey1996" class="citation book cs1"><a href="/wiki/Paul_Harmon_(management_author)" title="Paul Harmon (management author)">Harmon, Paul</a>; William Morrissey (1996). <a rel="nofollow" class="external text" href="https://archive.org/details/objecttechnology00harm"><i>The Object Technology Casebook – Lessons from Award-Winning Business Applications</i></a>. John Wiley & Sons. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-471-14717-6" title="Special:BookSources/978-0-471-14717-6"><bdi>978-0-471-14717-6</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+Object+Technology+Casebook+%E2%80%93+Lessons+from+Award-Winning+Business+Applications&rft.pub=John+Wiley+%26+Sons&rft.date=1996&rft.isbn=978-0-471-14717-6&rft.aulast=Harmon&rft.aufirst=Paul&rft.au=William+Morrissey&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fobjecttechnology00harm&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFJacobson1992" class="citation book cs1"><a href="/wiki/Ivar_Jacobson" title="Ivar Jacobson">Jacobson, Ivar</a> (1992). <a href="/wiki/Use_case" title="Use case"><i>Object-Oriented Software Engineering: A Use Case-Driven Approach</i></a>. Addison-Wesley. <a href="/wiki/Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/1992oose.book.....J">1992oose.book.....J</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-201-54435-0" title="Special:BookSources/978-0-201-54435-0"><bdi>978-0-201-54435-0</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object-Oriented+Software+Engineering%3A+A+Use+Case-Driven+Approach&rft.pub=Addison-Wesley&rft.date=1992&rft_id=info%3Abibcode%2F1992oose.book.....J&rft.isbn=978-0-201-54435-0&rft.aulast=Jacobson&rft.aufirst=Ivar&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFKay" class="citation book cs1"><a href="/wiki/Alan_Kay" title="Alan Kay">Kay, Alan</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20050404075821/http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html"><i>The Early History of Smalltalk</i></a>. Archived from <a rel="nofollow" class="external text" href="http://gagne.homedns.org/%7etgagne/contrib/EarlyHistoryST.html">the original</a> on 4 April 2005<span class="reference-accessdate">. Retrieved <span class="nowrap">18 April</span> 2005</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+Early+History+of+Smalltalk&rft.aulast=Kay&rft.aufirst=Alan&rft_id=http%3A%2F%2Fgagne.homedns.org%2F%257etgagne%2Fcontrib%2FEarlyHistoryST.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMeyer1997" class="citation book cs1"><a href="/wiki/Bertrand_Meyer" title="Bertrand Meyer">Meyer, Bertrand</a> (1997). <a rel="nofollow" class="external text" href="https://bertrandmeyer.com/OOSC2/"><i>Object-Oriented Software Construction</i></a>. <a href="/wiki/Prentice_Hall" title="Prentice Hall">Prentice Hall</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-13-629155-8" title="Special:BookSources/978-0-13-629155-8"><bdi>978-0-13-629155-8</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object-Oriented+Software+Construction&rft.pub=Prentice+Hall&rft.date=1997&rft.isbn=978-0-13-629155-8&rft.aulast=Meyer&rft.aufirst=Bertrand&rft_id=https%3A%2F%2Fbertrandmeyer.com%2FOOSC2%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPecinovsky2013" class="citation book cs1">Pecinovsky, Rudolf (2013). <a rel="nofollow" class="external text" href="http://pub.bruckner.cz/titles/oop"><i>OOP – Learn Object Oriented Thinking & Programming</i></a>. Bruckner Publishing. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-80-904661-8-0" title="Special:BookSources/978-80-904661-8-0"><bdi>978-80-904661-8-0</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=OOP+%E2%80%93+Learn+Object+Oriented+Thinking+%26+Programming&rft.pub=Bruckner+Publishing&rft.date=2013&rft.isbn=978-80-904661-8-0&rft.aulast=Pecinovsky&rft.aufirst=Rudolf&rft_id=http%3A%2F%2Fpub.bruckner.cz%2Ftitles%2Foop&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFRumbaughMichael_BlahaWilliam_PremerlaniFrederick_Eddy1991" class="citation book cs1"><a href="/wiki/James_Rumbaugh" title="James Rumbaugh">Rumbaugh, James</a>; Michael Blaha; William Premerlani; Frederick Eddy; William Lorensen (1991). <a rel="nofollow" class="external text" href="https://archive.org/details/objectorientedmo00rumb"><i>Object-Oriented Modeling and Design</i></a>. Prentice Hall. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-13-629841-0" title="Special:BookSources/978-0-13-629841-0"><bdi>978-0-13-629841-0</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object-Oriented+Modeling+and+Design&rft.pub=Prentice+Hall&rft.date=1991&rft.isbn=978-0-13-629841-0&rft.aulast=Rumbaugh&rft.aufirst=James&rft.au=Michael+Blaha&rft.au=William+Premerlani&rft.au=Frederick+Eddy&rft.au=William+Lorensen&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fobjectorientedmo00rumb&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSchach2006" class="citation book cs1">Schach, Stephen (2006). <i>Object-Oriented and Classical Software Engineering, Seventh Edition</i>. <a href="/wiki/McGraw-Hill" class="mw-redirect" title="McGraw-Hill">McGraw-Hill</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-07-319126-3" title="Special:BookSources/978-0-07-319126-3"><bdi>978-0-07-319126-3</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object-Oriented+and+Classical+Software+Engineering%2C+Seventh+Edition&rft.pub=McGraw-Hill&rft.date=2006&rft.isbn=978-0-07-319126-3&rft.aulast=Schach&rft.aufirst=Stephen&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSchreiner1993" class="citation book cs1">Schreiner, Axel-Tobias (1993). <i>Object oriented programming with ANSI-C</i>. Hanser. <a href="/wiki/Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<a rel="nofollow" class="external text" href="https://hdl.handle.net/1850%2F8544">1850/8544</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-3-446-17426-9" title="Special:BookSources/978-3-446-17426-9"><bdi>978-3-446-17426-9</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object+oriented+programming+with+ANSI-C&rft.pub=Hanser&rft.date=1993&rft_id=info%3Ahdl%2F1850%2F8544&rft.isbn=978-3-446-17426-9&rft.aulast=Schreiner&rft.aufirst=Axel-Tobias&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFTaylor1992" class="citation book cs1">Taylor, David A. (1992). <a rel="nofollow" class="external text" href="https://archive.org/details/objectorientedin00tayl"><i>Object-Oriented Information Systems – Planning and Implementation</i></a>. John Wiley & Sons. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-471-54364-0" title="Special:BookSources/978-0-471-54364-0"><bdi>978-0-471-54364-0</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object-Oriented+Information+Systems+%E2%80%93+Planning+and+Implementation&rft.pub=John+Wiley+%26+Sons&rft.date=1992&rft.isbn=978-0-471-54364-0&rft.aulast=Taylor&rft.aufirst=David+A.&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fobjectorientedin00tayl&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFWeisfeld2009" class="citation book cs1">Weisfeld, Matt (2009). <i>The Object-Oriented Thought Process, Third Edition</i>. <a href="/wiki/Addison-Wesley" title="Addison-Wesley">Addison-Wesley</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-672-33016-2" title="Special:BookSources/978-0-672-33016-2"><bdi>978-0-672-33016-2</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+Object-Oriented+Thought+Process%2C+Third+Edition&rft.pub=Addison-Wesley&rft.date=2009&rft.isbn=978-0-672-33016-2&rft.aulast=Weisfeld&rft.aufirst=Matt&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFWest2004" class="citation book cs1">West, David (2004). <i>Object Thinking (Developer Reference)</i>. <a href="/wiki/Microsoft_Press" title="Microsoft Press">Microsoft Press</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-7356-1965-4" title="Special:BookSources/978-0-7356-1965-4"><bdi>978-0-7356-1965-4</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Object+Thinking+%28Developer+Reference%29&rft.pub=Microsoft+Press&rft.date=2004&rft.isbn=978-0-7356-1965-4&rft.aulast=West&rft.aufirst=David&rfr_id=info%3Asid%2Fen.wikipedia.org%3AObject-oriented+programming" class="Z3988"></span></li></ul> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Object-oriented_programming&action=edit&section=32" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1235681985">.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:var(--background-color-interactive-subtle,#f8f9fa);display:flow-root}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1;min-width:0}}@media(min-width:720px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}</style><style data-mw-deduplicate="TemplateStyles:r1237033735">@media print{body.ns-0 .mw-parser-output .sistersitebox{display:none!important}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}</style><div class="side-box side-box-right plainlinks sistersitebox"><style data-mw-deduplicate="TemplateStyles:r1126788409">.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}</style> <div class="side-box-flex"> <div class="side-box-image"><span class="noviewer" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/34px-Wikiquote-logo.svg.png" decoding="async" width="34" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/51px-Wikiquote-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/68px-Wikiquote-logo.svg.png 2x" data-file-width="300" data-file-height="355" /></span></span></div> <div class="side-box-text plainlist">Wikiquote has quotations related to <i><b><a href="https://en.wikiquote.org/wiki/Object-orientation" class="extiw" title="q:Object-orientation">Object-orientation</a></b></i>.</div></div> </div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1235681985"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1237033735"><div class="side-box side-box-right plainlinks sistersitebox"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"> <div class="side-box-flex"> <div class="side-box-image"><span class="noviewer" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/40px-Wikiversity_logo_2017.svg.png" decoding="async" width="40" height="33" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/60px-Wikiversity_logo_2017.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/80px-Wikiversity_logo_2017.svg.png 2x" data-file-width="626" data-file-height="512" /></span></span></div> <div class="side-box-text plainlist">Wikiversity has learning resources about <i><b><a href="https://en.wikiversity.org/wiki/Special:Search/Object-oriented_programming" class="extiw" title="v:Special:Search/Object-oriented programming">Object-oriented programming</a></b></i> at <div style="margin-left: 10px;"><a href="https://en.wikiversity.org/wiki/Topic:Object-Oriented_Programming" class="extiw" title="v:Topic:Object-Oriented Programming">Topic:Object-Oriented Programming</a></div></div></div> </div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1235681985"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1237033735"><div class="side-box side-box-right plainlinks sistersitebox"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1126788409"> <div class="side-box-flex"> <div class="side-box-image"><span class="noviewer" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/60px-Wikibooks-logo-en-noslogan.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/80px-Wikibooks-logo-en-noslogan.svg.png 2x" data-file-width="400" data-file-height="400" /></span></span></div> <div class="side-box-text plainlist">Wikibooks has a book on the topic of: <i><b><a href="https://en.wikibooks.org/wiki/Object_Oriented_Programming" class="extiw" title="wikibooks:Object Oriented Programming">Object Oriented Programming</a></b></i></div></div> </div> <ul><li><a rel="nofollow" class="external text" href="http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep">Introduction to Object Oriented Programming Concepts (OOP) and More</a> by L.W.C. Nirosh</li> <li><a rel="nofollow" class="external text" href="https://thenewstack.io/why-are-so-many-developers-hating-on-object-oriented-programming/">Discussion on Cons of OOP</a></li> <li><a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/tutorial/java/concepts/index.html">OOP Concepts (Java Tutorials)</a></li></ul> <div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style></div><div role="navigation" class="navbox" aria-labelledby="Programming_paradigms_(Comparison_by_language)" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Programming_paradigms_navbox" title="Template:Programming paradigms navbox"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Programming_paradigms_navbox" title="Template talk:Programming paradigms navbox"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Programming_paradigms_navbox" title="Special:EditPage/Template:Programming paradigms navbox"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Programming_paradigms_(Comparison_by_language)" style="font-size:114%;margin:0 4em"><a href="/wiki/Programming_paradigm" title="Programming paradigm">Programming paradigms</a> (<a href="/wiki/Comparison_of_multi-paradigm_programming_languages" title="Comparison of multi-paradigm programming languages">Comparison by language</a>)</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Imperative_programming" title="Imperative programming">Imperative</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Structured_programming" title="Structured programming">Structured</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Jackson_structured_programming" title="Jackson structured programming">Jackson structures</a></li> <li><a href="/wiki/Block_(programming)" title="Block (programming)">Block-structured</a></li> <li><a href="/wiki/Modular_programming" title="Modular programming">Modular</a></li> <li><a href="/wiki/Non-structured_programming" title="Non-structured programming">Non-structured</a></li> <li><a href="/wiki/Procedural_programming" title="Procedural programming">Procedural</a></li> <li><a href="/wiki/Programming_in_the_large_and_programming_in_the_small" title="Programming in the large and programming in the small">Programming in the large and in the small</a></li> <li><a href="/wiki/Design_by_contract" title="Design by contract">Design by contract</a></li> <li><a href="/wiki/Invariant-based_programming" title="Invariant-based programming">Invariant-based</a></li> <li><a href="/wiki/Nested_function" title="Nested function">Nested function</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a class="mw-selflink selflink">Object-oriented</a><br />(<a href="/wiki/Comparison_of_programming_languages_(object-oriented_programming)" title="Comparison of programming languages (object-oriented programming)">comparison</a>, <a href="/wiki/List_of_object-oriented_programming_languages" title="List of object-oriented programming languages">list</a>)</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Class-based_programming" title="Class-based programming">Class-based</a>, <a href="/wiki/Prototype-based_programming" title="Prototype-based programming">Prototype-based</a>, <a href="/wiki/Object-based_language" title="Object-based language">Object-based</a></li> <li><a href="/wiki/Agent-oriented_programming" title="Agent-oriented programming">Agent</a></li> <li><a href="/wiki/Immutable_object" title="Immutable object">Immutable object</a></li> <li><a href="/wiki/Persistent_programming_language" title="Persistent programming language">Persistent</a></li> <li><a href="/wiki/Uniform_Function_Call_Syntax" title="Uniform Function Call Syntax">Uniform Function Call Syntax</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Declarative_programming" title="Declarative programming">Declarative</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Functional_programming" title="Functional programming">Functional</a><br />(<a href="/wiki/Comparison_of_functional_programming_languages" title="Comparison of functional programming languages">comparison</a>)</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Recursion_(computer_science)" title="Recursion (computer science)">Recursive</a></li> <li><a href="/wiki/Anonymous_function" title="Anonymous function">Anonymous function</a> (<a href="/wiki/Partial_application" title="Partial application">Partial application</a>)</li> <li><a href="/wiki/Higher-order_programming" title="Higher-order programming">Higher-order</a></li> <li><a href="/wiki/Purely_functional_programming" title="Purely functional programming">Purely functional</a></li> <li><a href="/wiki/Total_functional_programming" title="Total functional programming">Total</a></li> <li><a href="/wiki/Strict_programming_language" title="Strict programming language">Strict</a></li> <li><a href="/wiki/Generalized_algebraic_data_type" title="Generalized algebraic data type">GADTs</a></li> <li><a href="/wiki/Dependent_type" title="Dependent type">Dependent types</a></li> <li><a href="/wiki/Functional_logic_programming" title="Functional logic programming">Functional logic</a></li> <li><a href="/wiki/Tacit_programming" title="Tacit programming">Point-free style</a></li> <li><a href="/wiki/Expression-oriented_programming_language" title="Expression-oriented programming language">Expression-oriented</a></li> <li><a href="/wiki/Applicative_programming_language" title="Applicative programming language">Applicative</a>, <a href="/wiki/Concatenative_programming_language" title="Concatenative programming language">Concatenative</a></li> <li><a href="/wiki/Function-level_programming" title="Function-level programming">Function-level</a>, <a href="/wiki/Value-level_programming" title="Value-level programming">Value-level</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Dataflow_programming" title="Dataflow programming">Dataflow</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Flow-based_programming" title="Flow-based programming">Flow-based</a></li> <li><a href="/wiki/Reactive_programming" title="Reactive programming">Reactive</a> (<a href="/wiki/Functional_reactive_programming" title="Functional reactive programming">Functional reactive</a>)</li> <li><a href="/wiki/Signal_programming" class="mw-redirect" title="Signal programming">Signals</a></li> <li><a href="/wiki/Stream_processing" title="Stream processing">Streams</a></li> <li><a href="/wiki/Synchronous_programming_language" title="Synchronous programming language">Synchronous</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Logic_programming" title="Logic programming">Logic</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Abductive_logic_programming" title="Abductive logic programming">Abductive logic</a></li> <li><a href="/wiki/Answer_set_programming" title="Answer set programming">Answer set</a></li> <li><a href="/wiki/Constraint_programming" title="Constraint programming">Constraint</a> (<a href="/wiki/Constraint_logic_programming" title="Constraint logic programming">Constraint logic</a>)</li> <li><a href="/wiki/Inductive_logic_programming" title="Inductive logic programming">Inductive logic</a></li> <li><a href="/wiki/Nondeterministic_programming" title="Nondeterministic programming">Nondeterministic</a></li> <li><a href="/wiki/Ontology_language" title="Ontology language">Ontology</a></li> <li><a href="/wiki/Probabilistic_logic_programming" title="Probabilistic logic programming">Probabilistic logic</a></li> <li><a href="/wiki/Query_language" title="Query language">Query</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Domain-specific_language" title="Domain-specific language">DSL</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Algebraic_modeling_language" title="Algebraic modeling language">Algebraic modeling</a></li> <li><a href="/wiki/Array_programming" title="Array programming">Array</a></li> <li><a href="/wiki/Automata-based_programming" title="Automata-based programming">Automata-based</a> (<a href="/wiki/Action_language" title="Action language">Action</a>)</li> <li><a href="/wiki/Command_language" title="Command language">Command</a> (<a href="/wiki/Spacecraft_command_language" title="Spacecraft command language">Spacecraft</a>)</li> <li><a href="/wiki/Differentiable_programming" title="Differentiable programming">Differentiable</a></li> <li><a href="/wiki/End-user_development" title="End-user development">End-user</a></li> <li><a href="/wiki/Grammar-oriented_programming" title="Grammar-oriented programming">Grammar-oriented</a></li> <li><a href="/wiki/Interface_description_language" title="Interface description language">Interface description</a></li> <li><a href="/wiki/Language-oriented_programming" title="Language-oriented programming">Language-oriented</a></li> <li><a href="/wiki/List_comprehension" title="List comprehension">List comprehension</a></li> <li><a href="/wiki/Low-code_development_platform" title="Low-code development platform">Low-code</a></li> <li><a href="/wiki/Modeling_language" title="Modeling language">Modeling</a></li> <li><a href="/wiki/Natural-language_programming" title="Natural-language programming">Natural language</a></li> <li><a href="/wiki/Non-English-based_programming_languages" title="Non-English-based programming languages">Non-English-based</a></li> <li><a href="/wiki/Page_description_language" title="Page description language">Page description</a></li> <li><a href="/wiki/Pipeline_(software)" title="Pipeline (software)">Pipes</a> and <a href="/wiki/Filter_(software)" title="Filter (software)">filters</a></li> <li><a href="/wiki/Probabilistic_programming" title="Probabilistic programming">Probabilistic</a></li> <li><a href="/wiki/Quantum_programming" title="Quantum programming">Quantum</a></li> <li><a href="/wiki/Scientific_programming_language" title="Scientific programming language">Scientific</a></li> <li><a href="/wiki/Scripting_language" title="Scripting language">Scripting</a></li> <li><a href="/wiki/Set_theoretic_programming" title="Set theoretic programming">Set-theoretic</a></li> <li><a href="/wiki/Simulation_language" title="Simulation language">Simulation</a></li> <li><a href="/wiki/Stack-oriented_programming" title="Stack-oriented programming">Stack-based</a></li> <li><a href="/wiki/System_programming_language" title="System programming language">System</a></li> <li><a href="/wiki/Tactile_programming_language" title="Tactile programming language">Tactile</a></li> <li><a href="/wiki/Template_processor" title="Template processor">Templating</a></li> <li><a href="/wiki/Transformation_language" title="Transformation language">Transformation</a> (<a href="/wiki/Graph_rewriting" title="Graph rewriting">Graph rewriting</a>, <a href="/wiki/Production_system_(computer_science)" title="Production system (computer science)">Production</a>, <a href="/wiki/Pattern_matching" title="Pattern matching">Pattern</a>)</li> <li><a href="/wiki/Visual_programming_language" title="Visual programming language">Visual</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Concurrent_computing" title="Concurrent computing">Concurrent</a>,<br /><a href="/wiki/Distributed_computing" title="Distributed computing">distributed</a>,<br /><a href="/wiki/Parallel_computing" title="Parallel computing">parallel</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Actor_model" title="Actor model">Actor-based</a></li> <li><a href="/wiki/Automatic_mutual_exclusion" title="Automatic mutual exclusion">Automatic mutual exclusion</a></li> <li><a href="/wiki/Choreographic_programming" title="Choreographic programming">Choreographic programming</a></li> <li><a href="/wiki/Concurrent_logic_programming" title="Concurrent logic programming">Concurrent logic</a> (<a href="/wiki/Concurrent_constraint_logic_programming" title="Concurrent constraint logic programming">Concurrent constraint logic</a>)</li> <li><a href="/wiki/Concurrent_object-oriented_programming" title="Concurrent object-oriented programming">Concurrent OO</a></li> <li><a href="/wiki/Macroprogramming" title="Macroprogramming">Macroprogramming</a></li> <li><a href="/wiki/Multitier_programming" title="Multitier programming">Multitier programming</a></li> <li><a href="/wiki/Organic_computing" title="Organic computing">Organic computing</a></li> <li><a href="/wiki/Parallel_programming_model" title="Parallel programming model">Parallel programming models</a></li> <li><a href="/wiki/Partitioned_global_address_space" title="Partitioned global address space">Partitioned global address space</a></li> <li><a href="/wiki/Process-oriented_programming" title="Process-oriented programming">Process-oriented</a></li> <li><a href="/wiki/Relativistic_programming" title="Relativistic programming">Relativistic programming</a></li> <li><a href="/wiki/Service-oriented_programming" title="Service-oriented programming">Service-oriented</a></li> <li><a href="/wiki/Structured_concurrency" title="Structured concurrency">Structured concurrency</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Metaprogramming" title="Metaprogramming">Metaprogramming</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Attribute-oriented_programming" title="Attribute-oriented programming">Attribute-oriented</a></li> <li><a href="/wiki/Automatic_programming" title="Automatic programming">Automatic</a> (<a href="/wiki/Inductive_programming" title="Inductive programming">Inductive</a>)</li> <li><a href="/wiki/Dynamic_programming_language" title="Dynamic programming language">Dynamic</a></li> <li><a href="/wiki/Extensible_programming" title="Extensible programming">Extensible</a></li> <li><a href="/wiki/Generic_programming" title="Generic programming">Generic</a></li> <li><a href="/wiki/Homoiconicity" title="Homoiconicity">Homoiconicity</a></li> <li><a href="/wiki/Interactive_programming" title="Interactive programming">Interactive</a></li> <li><a href="/wiki/Macro_(computer_science)" title="Macro (computer science)">Macro</a> (<a href="/wiki/Hygienic_macro" title="Hygienic macro">Hygienic</a>)</li> <li><a href="/wiki/Metalinguistic_abstraction" title="Metalinguistic abstraction">Metalinguistic abstraction</a></li> <li><a href="/wiki/Multi-stage_programming" title="Multi-stage programming">Multi-stage</a></li> <li><a href="/wiki/Program_synthesis" title="Program synthesis">Program synthesis</a> (<a href="/wiki/Bayesian_program_synthesis" title="Bayesian program synthesis">Bayesian</a>, <a href="/wiki/Inferential_programming" title="Inferential programming">Inferential</a>, <a href="/wiki/Programming_by_demonstration" title="Programming by demonstration">by demonstration</a>, <a href="/wiki/Programming_by_example" title="Programming by example">by example</a>)</li> <li><a href="/wiki/Reflective_programming" title="Reflective programming">Reflective</a></li> <li><a href="/wiki/Self-modifying_code" title="Self-modifying code">Self-modifying code</a></li> <li><a href="/wiki/Symbolic_programming" title="Symbolic programming">Symbolic</a></li> <li><a href="/wiki/Template_metaprogramming" title="Template metaprogramming">Template</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Separation_of_concerns" title="Separation of concerns">Separation<br />of concerns</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Aspect-oriented_programming" title="Aspect-oriented programming">Aspects</a></li> <li><a href="/wiki/Component-based_software_engineering" title="Component-based software engineering">Components</a></li> <li><a href="/wiki/Data-driven_programming" title="Data-driven programming">Data-driven</a></li> <li><a href="/wiki/Data-oriented_design" title="Data-oriented design">Data-oriented</a></li> <li><a href="/wiki/Event-driven_programming" title="Event-driven programming">Event-driven</a></li> <li><a href="/wiki/Feature-oriented_programming" title="Feature-oriented programming">Features</a></li> <li><a href="/wiki/Intentional_programming" title="Intentional programming">Intentional</a></li> <li><a href="/wiki/Literate_programming" title="Literate programming">Literate</a></li> <li><a href="/wiki/Role-oriented_programming" title="Role-oriented programming">Roles</a></li> <li><a href="/wiki/Subject-oriented_programming" title="Subject-oriented programming">Subjects</a></li></ul> </div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="Types_of_programming_languages" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Types_of_programming_languages" title="Template:Types of programming languages"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Types_of_programming_languages" title="Template talk:Types of programming languages"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Types_of_programming_languages" title="Special:EditPage/Template:Types of programming languages"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Types_of_programming_languages" style="font-size:114%;margin:0 4em"><a href="/wiki/Programming_paradigm" title="Programming paradigm">Types of programming languages</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Level</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Machine_code" title="Machine code">Machine</a></li> <li><a href="/wiki/Assembly_language" title="Assembly language">Assembly</a></li> <li><a href="/wiki/Compiled_language" title="Compiled language">Compiled</a></li> <li><a href="/wiki/Interpreted_language" class="mw-redirect" title="Interpreted language">Interpreted</a></li></ul> <ul><li><a href="/wiki/Low-level_programming_language" title="Low-level programming language">Low-level</a></li> <li><a href="/wiki/High-level_programming_language" title="High-level programming language">High-level</a></li> <li><a href="/wiki/Very_high-level_programming_language" title="Very high-level programming language">Very high-level</a></li> <li><a href="/wiki/Esoteric_programming_language" title="Esoteric programming language">Esoteric</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Programming_language_generations" title="Programming language generations">Generation</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/First-generation_programming_language" title="First-generation programming language">First</a></li> <li><a href="/wiki/Second-generation_programming_language" title="Second-generation programming language">Second</a></li> <li><a href="/wiki/Third-generation_programming_language" title="Third-generation programming language">Third</a></li> <li><a href="/wiki/Fourth-generation_programming_language" title="Fourth-generation programming language">Fourth</a></li> <li><a href="/wiki/Fifth-generation_programming_language" title="Fifth-generation programming language">Fifth</a></li></ul> </div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="Software_engineering" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Software_engineering" title="Template:Software engineering"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Software_engineering" title="Template talk:Software engineering"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Software_engineering" title="Special:EditPage/Template:Software engineering"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Software_engineering" style="font-size:114%;margin:0 4em"><a href="/wiki/Software_engineering" title="Software engineering">Software engineering</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Fields</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Computer_programming" title="Computer programming">Computer programming</a></li> <li><a href="/wiki/DevOps" title="DevOps">DevOps</a></li> <li><a href="/wiki/Empirical_software_engineering" title="Empirical software engineering">Empirical software engineering</a></li> <li><a href="/wiki/Experimental_software_engineering" title="Experimental software engineering">Experimental software engineering</a></li> <li><a href="/wiki/Formal_methods" title="Formal methods">Formal methods</a></li> <li><a href="/wiki/Requirements_engineering" title="Requirements engineering">Requirements engineering</a></li> <li><a href="/wiki/Search-based_software_engineering" title="Search-based software engineering">Search-based software engineering</a></li> <li><a href="/wiki/Site_reliability_engineering" title="Site reliability engineering">Site reliability engineering</a></li> <li><a href="/wiki/Social_software_engineering" title="Social software engineering">Social software engineering</a></li> <li><a href="/wiki/Software_deployment" title="Software deployment">Software deployment</a></li> <li><a href="/wiki/Software_design" title="Software design">Software design</a></li> <li><a href="/wiki/Software_maintenance" title="Software maintenance">Software maintenance</a></li> <li><a href="/wiki/Software_testing" title="Software testing">Software testing</a></li> <li><a href="/wiki/Systems_analysis" title="Systems analysis">Systems analysis</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Concepts</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Abstraction_(computer_science)" title="Abstraction (computer science)">Abstraction</a></li> <li><a href="/wiki/Component-based_software_engineering" title="Component-based software engineering">Component-based software engineering</a></li> <li><a href="/wiki/Computer_compatibility" title="Computer compatibility">Software compatibility</a> <ul><li><a href="/wiki/Backward_compatibility" title="Backward compatibility">Backward compatibility</a></li> <li><a href="/wiki/Compatibility_layer" title="Compatibility layer">Compatibility layer</a></li> <li><a href="/wiki/Compatibility_mode" title="Compatibility mode">Compatibility mode</a></li> <li><a href="/wiki/Forward_compatibility" title="Forward compatibility">Forward compatibility</a></li> <li><a href="/wiki/Software_incompatibility" title="Software incompatibility">Software incompatibility</a></li></ul></li> <li><a href="/wiki/Data_modeling" title="Data modeling">Data modeling</a></li> <li><a href="/wiki/Enterprise_architecture" title="Enterprise architecture">Enterprise architecture</a></li> <li><a href="/wiki/Functional_specification" title="Functional specification">Functional specification</a></li> <li><a href="/wiki/Modeling_language" title="Modeling language">Modeling language</a></li> <li><a href="/wiki/Programming_paradigm" title="Programming paradigm">Programming paradigm</a></li> <li><a href="/wiki/Software" title="Software">Software</a></li> <li><a href="/wiki/Software_archaeology" title="Software archaeology">Software archaeology</a></li> <li><a href="/wiki/Software_architecture" title="Software architecture">Software architecture</a></li> <li><a href="/wiki/Software_configuration_management" title="Software configuration management">Software configuration management</a></li> <li><a href="/wiki/Software_development_process" title="Software development process">Software development process/methodology</a></li> <li><a href="/wiki/Software_quality" title="Software quality">Software quality</a></li> <li><a href="/wiki/Software_quality_assurance" title="Software quality assurance">Software quality assurance</a></li> <li><a href="/wiki/Software_verification_and_validation" title="Software verification and validation">Software verification and validation</a></li> <li><a href="/wiki/Software_system" title="Software system">Software system</a></li> <li><a href="/wiki/Structured_analysis" title="Structured analysis">Structured analysis</a> <ul><li><a href="/wiki/Essential_systems_analysis" title="Essential systems analysis">Essential analysis</a></li></ul></li> <li><a href="/wiki/CI/CD" title="CI/CD">CI/CD</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Orientations</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Agile_software_development" title="Agile software development">Agile</a></li> <li><a href="/wiki/Aspect-oriented_programming" title="Aspect-oriented programming">Aspect-oriented</a></li> <li><a class="mw-selflink selflink">Object orientation</a></li> <li><a href="/wiki/Ontology_(information_science)" title="Ontology (information science)">Ontology</a></li> <li><a href="/wiki/Service-oriented_architecture" title="Service-oriented architecture">Service orientation</a></li> <li><a href="/wiki/Systems_development_life_cycle" title="Systems development life cycle">SDLC</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Models</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">Developmental</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Agile_software_development" title="Agile software development">Agile</a></li> <li><a href="/wiki/Enterprise_unified_process" title="Enterprise unified process">EUP</a></li> <li><a href="/wiki/Executable_UML" title="Executable UML">Executable UML</a></li> <li><a href="/wiki/Incremental_build_model" title="Incremental build model">Incremental model</a></li> <li><a href="/wiki/Iterative_and_incremental_development" title="Iterative and incremental development">Iterative model</a></li> <li><a href="/wiki/Software_prototyping" title="Software prototyping">Prototype model</a></li> <li><a href="/wiki/Rapid_application_development" title="Rapid application development">RAD</a></li> <li><a href="/wiki/Unified_Process" class="mw-redirect" title="Unified Process">UP</a></li> <li><a href="/wiki/Scrum_(software_development)" title="Scrum (software development)">Scrum</a></li> <li><a href="/wiki/Spiral_model" title="Spiral model">Spiral model</a></li> <li><a href="/wiki/V-model_(software_development)" title="V-model (software development)">V-model</a></li> <li><a href="/wiki/Waterfall_model" title="Waterfall model">Waterfall model</a></li> <li><a href="/wiki/Extreme_programming" title="Extreme programming">XP</a></li> <li><a href="/wiki/Model-driven_engineering" title="Model-driven engineering">Model-driven engineering</a></li> <li><a href="/wiki/Round-trip_engineering" title="Round-trip engineering">Round-trip engineering</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">Other</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/ISO/IEC_15504" title="ISO/IEC 15504">SPICE</a></li> <li><a href="/wiki/Capability_Maturity_Model_Integration" title="Capability Maturity Model Integration">CMMI</a></li> <li><a href="/wiki/Data_model" title="Data model">Data model</a></li> <li><a href="/wiki/Entity%E2%80%93relationship_model" title="Entity–relationship model">ER model</a></li> <li><a href="/wiki/Function_model" title="Function model">Function model</a></li> <li><a href="/wiki/Information_model" title="Information model">Information model</a></li> <li><a href="/wiki/Metamodeling" title="Metamodeling">Metamodeling</a></li> <li><a href="/wiki/Object_model" title="Object model">Object model</a></li> <li><a href="/wiki/Systems_modeling" title="Systems modeling">Systems model</a></li> <li><a href="/wiki/View_model" title="View model">View model</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">Languages</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/IDEF" title="IDEF">IDEF</a></li> <li><a href="/wiki/Unified_Modeling_Language" title="Unified Modeling Language">UML</a></li> <li><a href="/wiki/Universal_Systems_Language" title="Universal Systems Language">USL</a></li> <li><a href="/wiki/Systems_modeling_language" title="Systems modeling language">SysML</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related fields</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Computer_science" title="Computer science">Computer science</a></li> <li><a href="/wiki/Computer_engineering" title="Computer engineering">Computer engineering</a></li> <li><a href="/wiki/Information_science" title="Information science">Information science</a></li> <li><a href="/wiki/Project_management" title="Project management">Project management</a></li> <li><a href="/wiki/Risk_management" title="Risk management">Risk management</a></li> <li><a href="/wiki/Systems_engineering" title="Systems engineering">Systems engineering</a></li></ul> </div></td></tr><tr><td class="navbox-abovebelow" colspan="2" style="font-weight:bold;"><div> <ul><li><span class="noviewer" typeof="mw:File"><span title="Commons page"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/12px-Commons-logo.svg.png" decoding="async" width="12" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/18px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/24px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376" /></span></span> <a href="https://commons.wikimedia.org/wiki/Category:Software_engineering" class="extiw" title="commons:Category:Software engineering">Commons</a></li> <li><span class="noviewer" typeof="mw:File"><span title="Category"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/16px-Symbol_category_class.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/23px-Symbol_category_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/31px-Symbol_category_class.svg.png 2x" data-file-width="180" data-file-height="185" /></span></span> <a href="/wiki/Category:Software_engineering" title="Category:Software engineering">Category</a></li></ul> </div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"><style data-mw-deduplicate="TemplateStyles:r1038841319">.mw-parser-output .tooltip-dotted{border-bottom:1px dotted;cursor:help}</style></div><div role="navigation" class="navbox authority-control" aria-labelledby="Authority_control_databases_frameless&#124;text-top&#124;10px&#124;alt=Edit_this_at_Wikidata&#124;link=https&#58;//www.wikidata.org/wiki/Q79872#identifiers&#124;class=noprint&#124;Edit_this_at_Wikidata" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Authority_control_databases_frameless&#124;text-top&#124;10px&#124;alt=Edit_this_at_Wikidata&#124;link=https&#58;//www.wikidata.org/wiki/Q79872#identifiers&#124;class=noprint&#124;Edit_this_at_Wikidata" style="font-size:114%;margin:0 4em"><a href="/wiki/Help:Authority_control" title="Help:Authority control">Authority control databases</a> <span class="mw-valign-text-top noprint" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q79872#identifiers" title="Edit this at Wikidata"><img alt="Edit this at Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">International</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="http://id.worldcat.org/fast/1042804/">FAST</a></span></li></ul></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">National</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4233947-9">Germany</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh87007503">United States</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://catalogue.bnf.fr/ark:/12148/cb12115131k">France</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://data.bnf.fr/ark:/12148/cb12115131k">BnF data</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.ndl.go.jp/auth/ndlna/00937980">Japan</a></span></li><li><span class="uid"><span class="rt-commentedText tooltip tooltip-dotted" title="objektově orientované programování"><a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=ph115529&CON_LNG=ENG">Czech Republic</a></span></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=XX537453">Spain</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="http://olduli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request=987007539278305171">Israel</a></span></li></ul></div></td></tr></tbody></table></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐qmr87 Cached time: 20241122144131 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 1.174 seconds Real time usage: 1.364 seconds Preprocessor visited node count: 6663/1000000 Post‐expand include size: 231068/2097152 bytes Template argument size: 5730/2097152 bytes Highest expansion depth: 16/100 Expensive parser function count: 20/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 295511/5000000 bytes Lua time usage: 0.716/10.000 seconds Lua memory usage: 9034430/52428800 bytes Number of Wikibase entities loaded: 1/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 1146.185 1 -total 39.60% 453.910 1 Template:Reflist 16.31% 186.923 25 Template:Cite_web 14.36% 164.623 30 Template:Cite_book 9.00% 103.163 6 Template:Navbox 7.96% 91.268 1 Template:Short_description 7.46% 85.531 1 Template:Programming_paradigms_navbox 7.17% 82.217 7 Template:Sfn 5.10% 58.489 10 Template:Cite_journal 3.84% 43.998 2 Template:Pagetype --> <!-- Saved in parser cache with key enwiki:pcache:idhash:27471338-0!canonical and timestamp 20241122144131 and revision id 1258500683. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Object-oriented_programming&oldid=1258500683">https://en.wikipedia.org/w/index.php?title=Object-oriented_programming&oldid=1258500683</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Object-oriented_programming" title="Category:Object-oriented programming">Object-oriented programming</a></li><li><a href="/wiki/Category:Programming_paradigms" title="Category:Programming paradigms">Programming paradigms</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Webarchive_template_wayback_links" title="Category:Webarchive template wayback links">Webarchive template wayback links</a></li><li><a href="/wiki/Category:CS1_maint:_date_and_year" title="Category:CS1 maint: date and year">CS1 maint: date and year</a></li><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_matches_Wikidata" title="Category:Short description matches Wikidata">Short description matches Wikidata</a></li><li><a href="/wiki/Category:Use_dmy_dates_from_January_2020" title="Category:Use dmy dates from January 2020">Use dmy dates from January 2020</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_February_2010" title="Category:Articles with unsourced statements from February 2010">Articles with unsourced statements from February 2010</a></li><li><a href="/wiki/Category:Articles_needing_additional_references_from_August_2009" title="Category:Articles needing additional references from August 2009">Articles needing additional references from August 2009</a></li><li><a href="/wiki/Category:All_articles_needing_additional_references" title="Category:All articles needing additional references">All articles needing additional references</a></li><li><a href="/wiki/Category:Articles_containing_potentially_dated_statements_from_2006" title="Category:Articles containing potentially dated statements from 2006">Articles containing potentially dated statements from 2006</a></li><li><a href="/wiki/Category:All_articles_containing_potentially_dated_statements" title="Category:All articles containing potentially dated statements">All articles containing potentially dated statements</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 20 November 2024, at 02:34<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Object-oriented_programming&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-zmfvg","wgBackendResponseTime":232,"wgPageParseReport":{"limitreport":{"cputime":"1.174","walltime":"1.364","ppvisitednodes":{"value":6663,"limit":1000000},"postexpandincludesize":{"value":231068,"limit":2097152},"templateargumentsize":{"value":5730,"limit":2097152},"expansiondepth":{"value":16,"limit":100},"expensivefunctioncount":{"value":20,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":295511,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 1146.185 1 -total"," 39.60% 453.910 1 Template:Reflist"," 16.31% 186.923 25 Template:Cite_web"," 14.36% 164.623 30 Template:Cite_book"," 9.00% 103.163 6 Template:Navbox"," 7.96% 91.268 1 Template:Short_description"," 7.46% 85.531 1 Template:Programming_paradigms_navbox"," 7.17% 82.217 7 Template:Sfn"," 5.10% 58.489 10 Template:Cite_journal"," 3.84% 43.998 2 Template:Pagetype"]},"scribunto":{"limitreport-timeusage":{"value":"0.716","limit":"10.000"},"limitreport-memusage":{"value":9034430,"limit":52428800},"limitreport-logs":"anchor_id_list = table#1 {\n [\"CITEREFAbadiCardelli,_Luca1996\"] = 1,\n [\"CITEREFAbadiLuca_Cardelli1998\"] = 1,\n [\"CITEREFAbelsonGerald_Jay_Sussman1997\"] = 1,\n [\"CITEREFAlan_C._Kay1993\"] = 1,\n [\"CITEREFAmbler1998\"] = 1,\n [\"CITEREFArmstrong2006\"] = 1,\n [\"CITEREFBertrand_Meyer2009\"] = 1,\n [\"CITEREFBloch2018\"] = 1,\n [\"CITEREFBobrowStefik1982\"] = 1,\n [\"CITEREFBooch1986\"] = 1,\n [\"CITEREFBooch1997\"] = 1,\n [\"CITEREFBoronczyk2009\"] = 1,\n [\"CITEREFBrodie1984\"] = 1,\n [\"CITEREFBruckerWolff2008\"] = 1,\n [\"CITEREFButcher2014\"] = 1,\n [\"CITEREFCardelli1996\"] = 1,\n [\"CITEREFCardelliWegner1985\"] = 1,\n [\"CITEREFCassel2019\"] = 1,\n [\"CITEREFDonyMalenfantBardon1999\"] = 1,\n [\"CITEREFEelesOliver_Sims1998\"] = 1,\n [\"CITEREFEric_S._Raymond2003\"] = 1,\n [\"CITEREFFeldman2019\"] = 1,\n [\"CITEREFGammaRichard_HelmRalph_JohnsonJohn_Vlissides1995\"] = 1,\n [\"CITEREFGraham\"] = 1,\n [\"CITEREFHarmonWilliam_Morrissey1996\"] = 1,\n [\"CITEREFHolmevik1994\"] = 1,\n [\"CITEREFHunt\"] = 1,\n [\"CITEREFIvan_E._Sutherland1963\"] = 1,\n [\"CITEREFJacobsenMagnus_ChristersonPatrik_JonssonGunnar_Overgaard1992\"] = 1,\n [\"CITEREFJacobson1992\"] = 1,\n [\"CITEREFJames2007\"] = 1,\n [\"CITEREFJonesLiskov1976\"] = 1,\n [\"CITEREFKay\"] = 1,\n [\"CITEREFKhurana2009\"] = 1,\n [\"CITEREFKindlerKrivy2011\"] = 1,\n [\"CITEREFKristen_NygaardOle-Johan_Dahl1978\"] = 1,\n [\"CITEREFKrubner\"] = 1,\n [\"CITEREFLewisLoftus2008\"] = 1,\n [\"CITEREFMartin\"] = 1,\n [\"CITEREFMcCarthyAbrahamsEdwardsHart1962\"] = 1,\n [\"CITEREFMcCarthyBraytonEdwardsFox1969\"] = 1,\n [\"CITEREFMcDonough2017\"] = 1,\n [\"CITEREFMeyer1997\"] = 1,\n [\"CITEREFMoon1986\"] = 1,\n [\"CITEREFNeward2006\"] = 1,\n [\"CITEREFNiklaus_Wirth2006\"] = 1,\n [\"CITEREFPecinovsky2013\"] = 1,\n [\"CITEREFPierce2002\"] = 1,\n [\"CITEREFPike2004\"] = 1,\n [\"CITEREFPike2012\"] = 2,\n [\"CITEREFPoll\"] = 1,\n [\"CITEREFPotokMladen_VoukAndy_Rindos1999\"] = 1,\n [\"CITEREFRobert_Harper2011\"] = 1,\n [\"CITEREFRoss\"] = 1,\n [\"CITEREFRumbaughMichael_BlahaWilliam_PremerlaniFrederick_Eddy1991\"] = 1,\n [\"CITEREFSchach2006\"] = 1,\n [\"CITEREFSchreiner1993\"] = 1,\n [\"CITEREFShelly2008\"] = 2,\n [\"CITEREFStepanov\"] = 1,\n [\"CITEREFStroustrup2015\"] = 1,\n [\"CITEREFTaylor1992\"] = 1,\n [\"CITEREFWeisfeld2009\"] = 1,\n [\"CITEREFWest2004\"] = 1,\n [\"CITEREFYegge2006\"] = 1,\n [\"Criticism\"] = 1,\n [\"Object-oriented_source_code\"] = 1,\n}\ntemplate_list = table#1 {\n [\"!\"] = 1,\n [\"Anchor\"] = 2,\n [\"As of\"] = 1,\n [\"Authority control\"] = 1,\n [\"Blockquote\"] = 3,\n [\"Citation needed\"] = 1,\n [\"Cite book\"] = 30,\n [\"Cite conference\"] = 4,\n [\"Cite journal\"] = 10,\n [\"Cite mailing list\"] = 1,\n [\"Cite news\"] = 2,\n [\"Cite tech report\"] = 1,\n [\"Cite web\"] = 25,\n [\"Code\"] = 2,\n [\"DEFAULTSORT:Object-Oriented Programming\"] = 1,\n [\"ISBN\"] = 2,\n [\"Main\"] = 3,\n [\"Portal\"] = 1,\n [\"Programming paradigms navbox\"] = 1,\n [\"Quote box\"] = 1,\n [\"Redirect\"] = 1,\n [\"Reflist\"] = 1,\n [\"See also\"] = 4,\n [\"Sfn\"] = 7,\n [\"Short description\"] = 1,\n [\"Software engineering\"] = 1,\n [\"Types of programming languages\"] = 1,\n [\"Unreferenced section\"] = 1,\n [\"Use dmy dates\"] = 1,\n [\"Webarchive\"] = 1,\n [\"Wikibooks\"] = 1,\n [\"Wikiquote\"] = 1,\n [\"Wikiversity\"] = 1,\n}\narticle_whitelist = table#1 {\n}\n"},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-qmr87","timestamp":"20241122144131","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Object-oriented programming","url":"https:\/\/en.wikipedia.org\/wiki\/Object-oriented_programming","sameAs":"http:\/\/www.wikidata.org\/entity\/Q79872","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q79872","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2001-10-25T21:45:06Z","dateModified":"2024-11-20T02:34:50Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/18\/Oop-uml-class-example.png","headline":"programming paradigm based on the concept of objects"}</script> </body> </html>