{"id":34855,"date":"2019-10-31T22:00:51","date_gmt":"2019-10-31T19:00:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\/"},"modified":"2019-10-31T22:00:51","modified_gmt":"2019-10-31T19:00:51","slug":"10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","title":{"rendered":"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer\" src=\"\/wp-content\/uploads\/2019\/06\/129b610bc2576f8d753dfa72395f89f6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nMe encuentro con frecuencia desarrolladores que no han o\u00eddo hablar de los principios SOLID (hemos <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/442928\/\">hablado de ellos en detalle aqu\u00ed<\/a><\/noindex>. \u2014 Nota del editor) o de la programaci\u00f3n orientada a objetos (POO), o han o\u00eddo sobre ellos pero no los aplican en la pr\u00e1ctica. Este art\u00edculo describe las ventajas de los principios de la POO que ayudan al desarrollador en su trabajo diario. Algunos son bien conocidos, otros no tanto, as\u00ed que el art\u00edculo ser\u00e1 \u00fatil tanto para principiantes como para programadores experimentados.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Recordamos:<\/b> <i>Para todos los lectores de \u00abHabr\u00bb \u2014 descuento de 10,000 rublos al inscribirse en cualquier curso de Skillbox con el c\u00f3digo promocional \u00abHabr\u00bb.<\/i><\/p>\n<p><b>Skillbox recomienda:<\/b> Curso en l\u00ednea educativo <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/java\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=JAVDEV&amp;utm_content=articles&amp;utm_term=10oop\">Desarrollador Java<\/a><\/noindex>.<\/p><\/blockquote>\n<p><\/p>\n<h3>DRY (No te repitas)<\/h3>\n<p>\nUn principio bastante simple, cuya esencia es clara por su nombre: \u00abNo te repitas\u00bb. Para un programador, esto significa la necesidad de evitar c\u00f3digo duplicado, as\u00ed como la posibilidad de utilizar abstracci\u00f3n en su trabajo.<\/p>\n<p>Si hay dos fragmentos repetidos en el c\u00f3digo, deben combinarse en un solo m\u00e9todo. Si un valor fijo se utiliza m\u00e1s de una vez, debe convertirse en una constante p\u00fablica.<\/p>\n<p>Esto es necesario para simplificar el c\u00f3digo y facilitar su mantenimiento, que es el objetivo principal de la POO. Sin embargo, tampoco se debe abusar de la combinaci\u00f3n, ya que el mismo c\u00f3digo no puede pasar la verificaci\u00f3n tanto con OrderId como con SSN.<\/p>\n<h3>Encapsulamiento de cambios<\/h3>\n<p>\nLos productos de software de la mayor\u00eda de las empresas est\u00e1n en constante evoluci\u00f3n. Por lo tanto, es necesario realizar cambios en el c\u00f3digo y mantenerlo. Puedes simplificar tu vida mediante el encapsulamiento. Esto permitir\u00e1 probar y mantener de manera m\u00e1s efectiva la base de c\u00f3digo existente. <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.com\/2011\/12\/factory-design-pattern-java-example.html\">Aqu\u00ed hay un ejemplo<\/a><\/noindex>.<\/p>\n<p>Si est\u00e1s programando en Java, <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.sg\/2012\/03\/private-in-java-why-should-you-always.html#axzz559dyoLSA\">asigna por defecto a m\u00e9todos y variables el modificador private<\/a><\/noindex>.<\/p>\n<h3>Principio de apertura\/cierre<\/h3>\n<p>\nEste principio se puede recordar f\u00e1cilmente al leer la siguiente afirmaci\u00f3n: \u00abLas entidades de software (clases, m\u00f3dulos, funciones, etc.) deben estar abiertas a la extensi\u00f3n, pero cerradas a la modificaci\u00f3n\u00bb. En la pr\u00e1ctica, esto significa que pueden permitir cambios en su comportamiento sin modificar el c\u00f3digo fuente original.<\/p>\n<p>El principio es importante cuando los cambios en el c\u00f3digo fuente requieren revisiones, pruebas unitarias y otros procedimientos. El c\u00f3digo que se adhiere al principio de apertura\/cierre no se modifica al ser ampliado, por lo que presenta muchos menos problemas.<\/p>\n<p>Aqu\u00ed hay un ejemplo de c\u00f3digo que viola este principio.<\/p>\n<p><img decoding=\"async\" alt=\"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer\" src=\"\/wp-content\/uploads\/2019\/06\/85d53972bef28713087acc428deebc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nSi se necesita cambiar algo, tomar\u00e1 mucho tiempo, ya que habr\u00e1 que modificar todas las secciones del c\u00f3digo relacionadas con el fragmento necesario.<\/p>\n<p>Por cierto, la apertura y el cierre son uno de los principios SOLID.<\/p>\n<h3>Principio de Responsabilidad \u00danica (SRP)<\/h3>\n<p>\nOtro principio del conjunto SOLID. Establece que \"solo existe una raz\u00f3n para cambiar una clase\". Una clase solo debe abordar una tarea. Puede tener varios m\u00e9todos, pero cada uno se utiliza \u00fanicamente para resolver la tarea general. Todos los m\u00e9todos y propiedades deben servir solo a esto. <\/p>\n<p><img decoding=\"async\" alt=\"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer\" src=\"\/wp-content\/uploads\/2019\/06\/7332d424f27e091192cbbb8dacb13d01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nEl valor de este principio radica en que debilita la conexi\u00f3n entre un componente de software y el c\u00f3digo. Si se agrega m\u00e1s de una funcionalidad a una clase, se introduce una conexi\u00f3n entre dos funciones. As\u00ed, si se modifica una de ellas, hay una alta posibilidad de afectar la otra, que est\u00e1 relacionada con la primera. Esto significa un aumento en los ciclos de prueba para identificar todos los problemas de antemano.<\/p>\n<h3>Principio de Inversi\u00f3n de Dependencias (DIP)<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer\" src=\"\/wp-content\/uploads\/2019\/06\/eb1e09cceee028f88fa83fd8d30a189a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nEn el ejemplo de c\u00f3digo anterior, AppManager depende de EventLogWriter, que, a su vez, est\u00e1 estrechamente relacionado con AppManager. Si se necesita otra forma de mostrar una notificaci\u00f3n, ya sea un push, SMS o email, hay que modificar la clase AppManager.<\/p>\n<p>El problema puede resolverse utilizando DIP. As\u00ed, en lugar de AppManager, se solicita EventLogWriter, que ser\u00e1 introducido mediante el marco de trabajo.<\/p>\n<p>DIP permite reemplazar m\u00f3dulos individuales por otros sin problemas, cambiando el m\u00f3dulo de dependencia. Esto permite modificar un m\u00f3dulo sin afectar a los dem\u00e1s.<\/p>\n<h3>Composici\u00f3n en lugar de herencia<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer\" src=\"\/wp-content\/uploads\/2019\/06\/b97ebf8c423f415298dc10ae4e14fe89.jpg\" style=\"display:block;margin: 0 auto;\" \/>Las principales formas de reutilizaci\u00f3n de c\u00f3digo son la herencia y la composici\u00f3n, cada una con sus ventajas y desventajas. Por lo general, se prefiere la segunda, ya que es m\u00e1s flexible.<\/p>\n<p>La composici\u00f3n permite modificar el comportamiento de una clase en tiempo de ejecuci\u00f3n ajustando sus propiedades. Al implementar interfaces se utiliza el polimorfismo, lo que proporciona una implementaci\u00f3n m\u00e1s flexible.<\/p>\n<p>Incluso \"Effective Java\" de Joshua Bloch aconseja preferir la composici\u00f3n en lugar de la herencia.<\/p>\n<h3>Principio de Sustituci\u00f3n de Barbara Liskov (LSP)<\/h3>\n<p>\nOtro principio del conjunto de herramientas SOLID. Establece que los subtipos deben ser reemplazables por su supertipo. Es decir, los m\u00e9todos y funciones que trabajan con la superclase deben poder funcionar sin problemas tambi\u00e9n con sus subclases.<\/p>\n<p>El LSP est\u00e1 relacionado tanto con el principio de responsabilidad \u00fanica como con el principio de segregaci\u00f3n de interfaces. Si una clase ofrece m\u00e1s funcionalidad que su subclase, esta \u00faltima no podr\u00e1 mantener algunas funciones, violando as\u00ed este principio.<\/p>\n<p>Aqu\u00ed hay un fragmento de c\u00f3digo que contradice el LSP.<\/p>\n<p><img decoding=\"async\" alt=\"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer\" src=\"\/wp-content\/uploads\/2019\/06\/8c412a2cb4d1f7e53f69afc4ef46a967.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nEl m\u00e9todo area(Rectangle r) calcula el \u00e1rea de un Rectangle. El programa fallar\u00e1 al ejecutar Square, ya que Square no se considera un Rectangle aqu\u00ed. Seg\u00fan el principio LSP, las funciones que utilizan referencias a clases base deben poder usar objetos de clases derivadas sin instrucciones adicionales.<\/p>\n<p>Este principio, que es una definici\u00f3n espec\u00edfica de subtipo, fue propuesto por Barbara Liskov en 1987 en una conferencia durante una ponencia titulada 'Abstracci\u00f3n de datos e jerarqu\u00eda', de ah\u00ed su nombre.<\/p>\n<h3>Principio de segregaci\u00f3n de interfaces (ISP)<\/h3>\n<p>\nOtro principio SOLID. Seg\u00fan \u00e9l, una interfaz que no se utiliza no debe ser implementada. Seguir este principio ayuda a que el sistema se mantenga flexible y adecuado para refactorizaciones al introducir cambios en la l\u00f3gica de funcionamiento.<\/p>\n<p>Esta situaci\u00f3n ocurre con mayor frecuencia cuando una interfaz contiene varias funcionalidades y el cliente solo necesita una de ellas.<\/p>\n<p>Dado que escribir una interfaz es una tarea complicada, despu\u00e9s de completar su trabajo, cambiarla sin romper nada ser\u00e1 un desaf\u00edo.<\/p>\n<p>La ventaja del principio ISP en Java es que primero se deben implementar todos los m\u00e9todos, y solo despu\u00e9s pueden ser utilizados por las clases. Por lo tanto, el principio permite reducir el n\u00famero de m\u00e9todos.<\/p>\n<p><img decoding=\"async\" alt=\"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer\" src=\"\/wp-content\/uploads\/2019\/06\/ea3e314e9f7766e8c1d3ce46d0dcdc09.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Programar para una interfaz, no para una implementaci\u00f3n<\/h3>\n<p>\nAqu\u00ed queda claro por el nombre. La aplicaci\u00f3n de este principio conduce a la creaci\u00f3n de c\u00f3digo flexible que podr\u00e1 trabajar con cualquier nueva implementaci\u00f3n de la interfaz.<\/p>\n<p>Se debe utilizar el tipo de interfaz para variables, tipos de retorno o tipos de argumento de m\u00e9todo. Un ejemplo es utilizar SuperClass en lugar de SubClass.<\/p>\n<p>Es decir:<\/p>\n<p><i>List numbers = getNumbers();<\/i><\/p>\n<p>Y no:<\/p>\n<p><i>ArrayList numbers = getNumbers();<\/i><\/p>\n<p>Aqu\u00ed hay una implementaci\u00f3n pr\u00e1ctica de lo que se menciona arriba.<\/p>\n<p><img decoding=\"async\" alt=\"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer\" src=\"\/wp-content\/uploads\/2019\/06\/8bbcd8342a9870bc28272f0550a8664c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>El principio de delegaci\u00f3n<\/h3>\n<p>\nUn ejemplo com\u00fan son los m\u00e9todos equals() y hashCode() en Java. Cuando se necesita comparar dos objetos, esta acci\u00f3n se delega a la clase correspondiente en lugar del cliente.<\/p>\n<p>La ventaja del principio es la ausencia de duplicaci\u00f3n de c\u00f3digo y la relativa facilidad para modificar el comportamiento. Tambi\u00e9n se aplica a la delegaci\u00f3n de eventos.<\/p>\n<p><img decoding=\"async\" alt=\"10 principios de programaci\u00f3n orientada a objetos que todo desarrollador debe conocer\" src=\"\/wp-content\/uploads\/2019\/06\/c9ca40cb27e288e5e31ebfba76fa36a5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nTodos estos principios permiten escribir un c\u00f3digo m\u00e1s flexible, bonito y fiable, con alta cohesi\u00f3n y bajo acoplamiento. Por supuesto, la teor\u00eda es buena, pero para que un desarrollador realmente comience a utilizar lo aprendido, se requiere pr\u00e1ctica. El siguiente paso tras dominar los principios de la POO podr\u00eda ser estudiar patrones de dise\u00f1o para resolver problemas comunes en el desarrollo de software.<\/p>\n<blockquote><p><b>Skillbox recomienda:<\/b><\/p>\n<ul>\n<li>Curso pr\u00e1ctico <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/agima\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=AGIMA&amp;utm_content=articles&amp;utm_term=10oop\">\u00abDesarrollador M\u00f3vil PRO\u00bb<\/a><\/noindex>.<\/li>\n<li>Curso en l\u00ednea aplicado <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/python-data\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=PTNANA&amp;utm_content=articles&amp;utm_term=10oop\">\u00abAnalista de datos en Python\u00bb<\/a><\/noindex>.<\/li>\n<li>Curso pr\u00e1ctico de dos a\u00f1os <noindex><a rel=\"nofollow\" href=\"https:\/\/iamwebdev.skillbox.ru\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=WEBDEVPRO&amp;utm_content=articles&amp;utm_term=10oop\">\u00abSoy Desarrollador Web PRO\u00bb<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/454314\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043d\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 SOLID (\u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043e \u043d\u0438\u0445 \u0437\u0434\u0435\u0441\u044c. \u2014 \u041f\u0435\u0440.) \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u041e\u041e\u041f), \u0438\u043b\u0438 \u0441\u043b\u044b\u0448\u0430\u043b\u0438, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u0445 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u041e\u041e\u041f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0432 \u0435\u0433\u043e \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u043c \u0442\u0440\u0443\u0434\u0435. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b, \u0434\u0440\u0443\u0433\u0438\u0435 \u2014 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c, \u0442\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26244,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34855","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd4710 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:00:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd4710 principios de la programaci\u00f3n orientada a objetos que todo desarrollador deber\u00eda conocer | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd4710 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a | ProHoster","og:url":"https:\/\/prohoster.info\/es\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:00:51+00:00","article:modified_time":"2019-10-31T19:00:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34855","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:51:32","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:14:05","updated":"2026-01-21 20:51:32","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/34855","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=34855"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/34855\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/26244"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=34855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=34855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=34855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}