/*! elementor - v3.25.0 - 20-11-2024 */ (()=>{var e={7033:(e,t,o)=>{"use strict";var r=o(73203),n=o(7501);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var u=r(o(78983)),a=r(o(42081)),i=r(o(58724)),s=r(o(71173)),l=r(o(74910)),c=_interopRequireWildcard(o(44171)),f=_interopRequireWildcard(o(14606));function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,o=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?o:t})(e)}function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var o=_getRequireWildcardCache(t);if(o&&o.has(e))return o.get(e);var r={},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=u?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}return r.default=e,o&&o.set(e,r),r}function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var o,r=(0,l.default)(e);if(t){var n=(0,l.default)(this).constructor;o=Reflect.construct(r,arguments,n)}else o=r.apply(this,arguments);return(0,s.default)(this,o)}}var p=function(e){(0,i.default)(EComponent,e);var t=_createSuper(EComponent);function EComponent(e){var o;return(0,u.default)(this,EComponent),(o=t.call(this,e)).loadModules(),o}return(0,a.default)(EComponent,[{key:"getNamespace",value:function getNamespace(){return"notes"}},{key:"defaultHooks",value:function defaultHooks(){return this.importHooks(f)}},{key:"loadModules",value:function loadModules(){for(var e in c)new c[e]}}]),EComponent}($e.modules.ComponentBase);t.default=p},14606:(e,t,o)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NotesAddPanelMenuItem",{enumerable:!0,get:function get(){return r.NotesAddPanelMenuItem}});var r=o(36938)},36938:(e,t,o)=>{"use strict";var r=o(38003).__,n=o(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NotesAddPanelMenuItem=void 0;var u=n(o(78983)),a=n(o(42081)),i=n(o(58724)),s=n(o(71173)),l=n(o(74910));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var o,r=(0,l.default)(e);if(t){var n=(0,l.default)(this).constructor;o=Reflect.construct(r,arguments,n)}else o=r.apply(this,arguments);return(0,s.default)(this,o)}}var c=function(e){(0,i.default)(NotesAddPanelMenuItem,e);var t=_createSuper(NotesAddPanelMenuItem);function NotesAddPanelMenuItem(){return(0,u.default)(this,NotesAddPanelMenuItem),t.apply(this,arguments)}return(0,a.default)(NotesAddPanelMenuItem,[{key:"getCommand",value:function getCommand(){return"panel/state-ready"}},{key:"getId",value:function getId(){return"notes-add-panel-menu-item"}},{key:"apply",value:function apply(){elementor.modules.layouts.panel.pages.menu.Menu.addItem({name:"notes",icon:"eicon-commenting-o",title:r("Notes","elementor")+'',callback:function callback(){var e=elementor.helpers.hasProAndNotConnected();elementor.promotion.showDialog({title:r("Notes","elementor"),content:r("With Notes, teamwork gets even better. Stay in sync with comments, feedback & more on your website.","elementor"),position:{blockStart:"-3",inlineStart:"+10"},targetElement:this.$el,actionButton:{url:e?elementorProEditorConfig.urls.connect:elementor.config.promotions.notes.upgrade_url||"https://go.elementor.com/go-pro-notes/",text:r(e?"Connect & Activate":"Upgrade","elementor")}})}},"navigate_from_page","finder")}}]),NotesAddPanelMenuItem}($e.modules.hookUI.After);t.NotesAddPanelMenuItem=c;var f=c;t.default=f},65419:(e,t,o)=>{"use strict";var r=o(38003).__,n=o(73203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.NotesContextMenu=void 0;var u=n(o(78983)),a=n(o(42081)),i=n(o(58724)),s=n(o(71173)),l=n(o(74910));function _createSuper(e){var t=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function _createSuperInternal(){var o,r=(0,l.default)(e);if(t){var n=(0,l.default)(this).constructor;o=Reflect.construct(r,arguments,n)}else o=r.apply(this,arguments);return(0,s.default)(this,o)}}var c=function(e){(0,i.default)(NotesContextMenu,e);var t=_createSuper(NotesContextMenu);function NotesContextMenu(){return(0,u.default)(this,NotesContextMenu),t.apply(this,arguments)}return(0,a.default)(NotesContextMenu,[{key:"onInit",value:function onInit(){this.contextMenuNotesGroup()}},{key:"contextMenuNotesGroup",value:function contextMenuNotesGroup(){var e=this;["widget","section","column","container"].forEach((function(t){elementor.hooks.addFilter("elements/".concat(t,"/contextMenuGroups"),e.contextMenuAddGroup)}))}},{key:"contextMenuAddGroup",value:function contextMenuAddGroup(e){var t=_.findWhere(e,{name:"delete"}),o=e.indexOf(t);return-1===o&&(o=e.length),e.splice(o,0,{name:"notes",actions:[{name:"open_notes",title:r("Notes","elementor"),shortcut:'',promotionURL:"https://go.elementor.com/go-pro-notes-context-menu/",isEnabled:function isEnabled(){return!1},callback:function callback(){}}]}),e}}]),NotesContextMenu}(elementorModules.editor.utils.Module);t.NotesContextMenu=c;var f=c;t.default=f},44171:(e,t,o)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NotesContextMenu",{enumerable:!0,get:function get(){return r.NotesContextMenu}});var r=o(65419)},38003:e=>{"use strict";e.exports=wp.i18n},77266:e=>{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},78983:e=>{e.exports=function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},42081:(e,t,o)=>{var r=o(74040);function _defineProperties(e,t){for(var o=0;o{function _getPrototypeOf(t){return e.exports=_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function _getPrototypeOf(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},58724:(e,t,o)=>{var r=o(96196);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&r(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},73203:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},71173:(e,t,o)=>{var r=o(7501).default,n=o(77266);e.exports=function _possibleConstructorReturn(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return n(e)},e.exports.__esModule=!0,e.exports.default=e.exports},96196:e=>{function _setPrototypeOf(t,o){return e.exports=_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,_setPrototypeOf(t,o)}e.exports=_setPrototypeOf,e.exports.__esModule=!0,e.exports.default=e.exports},56027:(e,t,o)=>{var r=o(7501).default;e.exports=function toPrimitive(e,t){if("object"!=r(e)||!e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var n=o.call(e,t||"default");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},74040:(e,t,o)=>{var r=o(7501).default,n=o(56027);e.exports=function toPropertyKey(e){var t=n(e,"string");return"symbol"==r(t)?t:String(t)},e.exports.__esModule=!0,e.exports.default=e.exports},7501:e=>{function _typeof(t){return e.exports=_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,_typeof(t)}e.exports=_typeof,e.exports.__esModule=!0,e.exports.default=e.exports}},t={};function __webpack_require__(o){var r=t[o];if(void 0!==r)return r.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,__webpack_require__),n.exports}(()=>{"use strict";var e=__webpack_require__(73203)(__webpack_require__(7033));window.top.$e.components.register(new e.default)})()})();/*! elementor-pro - v3.19.0 - 07-02-2024 */ (()=>{"use strict";class Screenshot extends elementorModules.ViewModule{getDefaultSettings(){return{empty_content_headline:"Empty Content.",crop:{width:1200,height:1500},excluded_external_css_urls:["https://kit-pro.fontawesome.com"],external_images_urls:["https://i.ytimg.com"],timeout:15e3,render_timeout:5e3,timerLabel:null,timer_label:`${ElementorScreenshotConfig.post_id} - timer`,image_placeholder:"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=",isDebug:elementorCommonConfig.isElementorDebug,isDebugSvg:!1,...ElementorScreenshotConfig}}getDefaultElements(){const e=jQuery(ElementorScreenshotConfig.selector),t=e.find(".elementor-section-wrap > .elementor-section, .elementor > .elementor-section");return{$elementor:e,$sections:t,$firstSection:t.first(),$notElementorElements:elementorCommon.elements.$body.find("> *:not(style, link)").not(e),$head:jQuery("head")}}onInit(){return super.onInit(),this.log("Screenshot init","time"),this.timeoutTimer=setTimeout(this.screenshotFailed.bind(this),this.getSettings("timeout")),this.captureScreenshot()}captureScreenshot(){return this.elements.$elementor.length||(elementorCommon.helpers.consoleWarn("Screenshots: The content of this page is empty, the module will create a fake conent just for this screenshot."),this.createFakeContent()),this.removeUnnecessaryElements(),this.handleIFrames(),this.removeFirstSectionMargin(),this.handleLinks(),this.loadExternalCss(),this.loadExternalImages(),Promise.resolve().then(this.createImage.bind(this)).then(this.createImageElement.bind(this)).then(this.cropCanvas.bind(this)).then(this.save.bind(this)).then(this.screenshotSucceed.bind(this)).catch(this.screenshotFailed.bind(this))}createFakeContent(){this.elements.$elementor=jQuery("
").css({height:this.getSettings("crop.height"),width:this.getSettings("crop.width"),display:"flex",alignItems:"center",justifyContent:"center"}),this.elements.$elementor.append(jQuery("

").css({fontSize:"85px"}).html(this.getSettings("empty_content_headline"))),document.body.prepend(this.elements.$elementor)}loadExternalCss(){const e=[this.getSettings("home_url"),...this.getSettings("excluded_external_css_urls")].map((e=>`[href^="${e}"]`)).join(", ");jQuery("link").not(e).each(((e,t)=>{const s=jQuery(t),n=s.clone();n.attr("href",this.getScreenshotProxyUrl(s.attr("href"))),this.elements.$head.append(n),s.remove()}))}loadExternalImages(){const e=this.getSettings("external_images_urls").map((e=>`img[src^="${e}"]`)).join(", ");jQuery(e).each(((e,t)=>{const s=jQuery(t);s.attr("src",this.getScreenshotProxyUrl(s.attr("src")))}))}handleIFrames(){this.elements.$elementor.find("iframe").each(((e,t)=>{const s=jQuery(t),n=jQuery("
",{css:{background:"gray",width:s.width(),height:s.height()}});s.before(n),s.remove()}))}removeUnnecessaryElements(){let e=0;this.elements.$sections.filter(((t,s)=>{let n=!1;return e>=this.getSettings("crop.height")&&(n=!0),e+=jQuery(s).outerHeight(),n})).each(((e,t)=>{t.remove()})),this.elements.$notElementorElements.remove()}handleLinks(){elementorCommon.elements.$body.find("a").attr("href","/")}removeFirstSectionMargin(){this.elements.$firstSection.css({marginTop:0})}createImage(){const e=new Promise((e=>{window.addEventListener("load",(()=>{e()}))})),t=new Promise((e=>{setTimeout((()=>{e()}),this.getSettings("render_timeout"))}));return Promise.race([e,t]).then((()=>{if(this.log("Start creating screenshot."),this.getSettings("isDebugSvg"))return domtoimage.toSvg(document.body,{imagePlaceholder:this.getSettings("image_placeholder")}).then((e=>this.download(e))),Promise.reject("Debug SVG.");return/^((?!chrome|android).)*safari/i.test(window.userAgent)?(this.log('Creating screenshot with "html2canvas"'),html2canvas(document.body).then((e=>e.toDataURL("image/png")))):(this.log('Creating screenshot with "dom-to-image"'),domtoimage.toPng(document.body,{imagePlaceholder:this.getSettings("image_placeholder")}))}))}download(e){const t=jQuery("",{href:e,download:"debugSvg.svg",html:"Download SVG"});elementorCommon.elements.$body.append(t),t.trigger("click")}createImageElement(e){const t=new Image;return t.src=e,new Promise((e=>{t.onload=()=>e(t)}))}cropCanvas(e){const t=this.getSettings("crop.width"),s=this.getSettings("crop.height"),n=document.createElement("canvas"),i=n.getContext("2d"),o=t/e.width;return n.width=t,n.height=s>e.height?e.height:s,i.drawImage(e,0,0,e.width,e.height,0,0,e.width*o,e.height*o),Promise.resolve(n)}save(e){return new Promise(((t,s)=>{elementorCommon.ajax.addRequest("screenshot_save",{data:{post_id:this.getSettings("post_id"),screenshot:e.toDataURL("image/png")},success:e=>{this.log(`Screenshot created: ${encodeURI(e)}`),t(e)},error:()=>{this.log("Failed to create screenshot."),s()}})}))}markAsFailed(){return new Promise(((e,t)=>{elementorCommon.ajax.addRequest("screenshot_failed",{data:{post_id:this.getSettings("post_id")},success:()=>{this.log("Marked as failed."),e()},error:()=>{this.log("Failed to mark this screenshot as failed."),t()}})}))}getScreenshotProxyUrl(e){return`${this.getSettings("home_url")}?screenshot_proxy&nonce=${this.getSettings("nonce")}&href=${e}`}screenshotSucceed(e){this.screenshotDone(!0,e)}screenshotFailed(e){this.log(e,null),this.markAsFailed().then((()=>this.screenshotDone(!1)))}screenshotDone(e,t=null){clearTimeout(this.timeoutTimer),this.timeoutTimer=null,window.parent.postMessage({name:"capture-screenshot-done",success:e,id:this.getSettings("post_id"),imageUrl:t},"*"),this.log(`Screenshot ${e?"Succeed":"Failed"}.`,"timeEnd")}log(e,t="timeLog"){this.getSettings("isDebug")&&(console.log("string"==typeof e?`${this.getSettings("post_id")} - ${e}`:e),t&&console[t](this.getSettings("timer_label")))}}jQuery((()=>{new Screenshot}))})();
Объектно-ориентированное программирование: суть и задачи -

Объектно-ориентированное программирование: суть и задачи

Данные сущности описываются с помощью абстрактных классов и наследуются классами для реализации абстрактных методов. Первоначально (например, в том же Smalltalk) взаимодействие объектов представлялось как «настоящий» обмен сообщениями, то есть пересылка от одного объекта другому специального объекта-сообщения. Она прекрасно подходит, например, для описания параллельных вычислений с помощью активных объектов, каждый из которых имеет собственный поток исполнения и работает одновременно с прочими. Такие объекты могут вести себя как отдельные, абсолютно автономные вычислительные единицы. Данный подход реализован в языках программирования Smalltalk, Ruby, Objective-C, Python. Большое значение имеет правильное построение иерархии классов.

объектно ориентированное программирование

Как правило, языки программирования разрешают наследовать интерфейс от нескольких интерфейсов-предков. Все методы, объявленные в интерфейсах-предках, становятся частью объявления интерфейса-потомка. В отличие от наследования классов, множественное наследование интерфейсов гораздо проще реализуется и не вызывает существенных затруднений. Одни и те же методы могут применяться для обработки различных типов информации. К примеру, в строго типизированном языке C++ задействуется «перегрузка», а в JavaScript функции могут обрабатывать различные типы данных без необходимости заранее указывать тип.

Конструктор объекта

Модификатор abstract для интерфейса не требуется, поскольку все интерфейсы являются абстрактными классами. Его можно указать, но делать этого не рекомендуется, чтобы не загромождать код. C++ поддерживает множественное наследование и абстрактные объектно ориентированное программирование классы, поэтому, как уже упоминалось выше, отдельная синтаксическая конструкция для интерфейсов в этом языке не нужна. Интерфейсы определяются при помощи абстрактных классов, а реализация интерфейса производится путём наследования этих классов.

  • Чистые ОО языки дают преимущество новичкам в ООП, потому что программист вынужден использовать (и учить) модель ООП.
  • Несмотря на то, что он пустой, уже можно создать его экземпляр — объект.
  • В качестве альтернативы множественному наследованию существуют интерфейсы.
  • Однако можно применять техники ООП и для не-объектно-ориентированного языка и наоборот, применение объектно-ориентированного языка вовсе не означает, что код автоматически становится объектно-ориентированным.

При создании класса мы упрощаем его до тех атрибутов и методов, которые нужны в этом конкретном коде, не пытаясь описать его целиком и отбрасывая всё второстепенное. Скажем, все кошки теоретически умеют охотиться, но если наша программа не предназначена для ловли мышей, то и прописывать этот метод незачем. Используя эти свойства и методы, можно значительно ускорить разработку, сделать код более читаемым.

Классы

Сейчас нам все это позволяют сделать видеокарты, но раньше мощностей не хватало чтоб даже приблизиться к такой графике. Поэтому прибегали к более простым методам, не требующих большого количества вычислений. Мне давно хотелось узнать существуют ли программисты, которые понимают «делегирование» в рамках ООП так же, как я. В этой версии поддерживаются паттерны записи в switch-блоках и выражениях. Такой синтаксис выглядит монументально (как минимум, по меркам Java). Это водораздел, после которого мы вправе говорить, что в Java полноценно поддерживаются паттерны функционального программирования, подобно тому, как это сделано в Kotlin, Rust или C#.

Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования. DNS представляет распределенную децентрализованную систему для получении информации о доменах. Физичеcки dns – это сеть серверов, в которой размещен каталог, где доменные имен сопоставлены с IP-адресами.

Интерфейс (объектно-ориентированное программирование)

Этот принцип позволяет применять одни и те же команды к объектам разных классов, даже если они выполняются по-разному. Например, помимо класса «Кошка», у нас есть никак не связанный с ним класс «Попугай» — и у обоих есть метод «спать». Несмотря на то, что кошки и попугаи спят по-разному (кошка сворачивается клубком, а попугай сидит на жёрдочке), для этих действий можно использовать одну команду. Каждый верхний слой над объектом (классы) более абстрактный, чем его «младшая версия». Это позволяет не переписывать по 10 раз один и тот же объект, указывая одни и те же атрибуты и методы.

объектно ориентированное программирование

Программы работают несколько медленнее из-за особенностей доступа к данным и большого количества сущностей. Благодаря абстракции, полиморфизму и наследованию можно не писать один и тот же код много раз. Интерфейсы и классы в ООП могут легко преобразовываться в подобие библиотек, которые можно использовать заново в новых проектах. Также ООП экономит время при поддержке и доработке приложения. Объектно-ориентированный подход позволяет сделать код более структурированным, в нем легко разобраться стороннему человеку.

Часто задаваемые вопросы об объектно-ориентированном программировании

Его суть заключается в том, что каждый верхний слой над объектом (класс) является более абстрактным, чем его «младшая версия». Разработчику не нужно много раз создавать один и тот же объект, приписывая одинаковые атрибуты и методы. Основы объектно-ориентированного программирования представляют собой перечень принципов, которые формируют данный подход.

Далее нужно задать для него имя и указать все нужные характеристики в фигурных скобках. Новый объект в классе формируется по аналогии с предыдущим примером. Стоит учесть, что в языке PHP характеристики могут наследоваться лишь от одного класса. Теперь рассмотрим реализацию принципов ООП в ряде популярных ЯП. Стоит учесть, что перед рассмотрением этих паттернов, разработчику нужно изучить основы программирования на выбранном языке.

Принцип подстановки Барбары Лисков (LSP) — L

Языки программирования можно оценить по тому, насколько они строги к типам. Контроль типов включает проверку существования вызываемых методов, видов их параметров, проверку границ массивов и подобное. У объектно-ориентированного программирования много плюсов, и именно поэтому этот подход использует большинство современных программистов. Такой подход позволяет программировать каждый модуль независимо от остальных.

Свойства и методы сокета

Иными словами, ему нужно разбираться в теории, уметь формировать скрипты и т.д. С его помощью мы узнаем наименование и цену для конкретного товара. Затем сформируем подкласс, который будет иметь одно и то же название – «Телефон».

Artículos recomendados

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Abrir chat
1
¡Hola!
¿En qué podemos ayudarte?