{"id":229699,"date":"2022-11-17T18:57:00","date_gmt":"2022-11-17T15:57:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229699"},"modified":"2022-11-09T15:59:56","modified_gmt":"2022-11-09T12:59:56","slug":"programacion-orientada-a-objetos-en-wordpress-analisis-parte-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/programacion-orientada-a-objetos-en-wordpress-analisis-parte-1\/","title":{"rendered":"Programaci\u00f3n Orientada a Objetos en WordPress: An\u00e1lisis, Parte 1"},"content":{"rendered":"\n<p>Cuando me propuse por primera vez ofrecer <a href=\"https:\/\/tommcfarlin.com\/membership-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">membres\u00edas<\/a> en este sitio, sab\u00eda que lo primero que quer\u00eda abordar era una introducci\u00f3n a la programaci\u00f3n orientada a objetos.<\/p>\n<p>Es algo que parece ser interesante para la mayor\u00eda de las personas que trabajan en WordPress, pero hay un problema que aleja a mucha gente o genera malos resultados:<\/p>\n<p>La programaci\u00f3n orientada a objetos puede complicarse r\u00e1pidamente. Y esto se vuelve desmotivador.<\/p>\n<p>Esto es lo que quiero decir: supongamos que es un desarrollador de WordPress que comienza a investigar la programaci\u00f3n orientada a objetos. Comienza hablando de clases, constructores y funciones, y todo parece estar bien.<\/p>\n<p>Pero luego se mete r\u00e1pidamente en:<\/p>\n<ul>\n<li>m\u00e9todos privados y protegidos,<\/li>\n<li>herencia,<\/li>\n<li>polimorfismo,<\/li>\n<li>patrones de dise\u00f1o,<\/li>\n<li>inyecci\u00f3n de dependencia,<\/li>\n<li>repositorios,<\/li>\n<li>y as\u00ed.<\/li>\n<\/ul>\n<p>Es una bola de nieve, \u00bfno? Y no tiene que ser as\u00ed en absoluto, pero es dif\u00edcil encontrar una introducci\u00f3n adecuada salvo por <a href=\"https:\/\/carlalexander.ca\/discover-object-oriented-programming\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">algunos recursos<\/a> que existen.<\/p>\n<p>Dicho todo esto (y sirviendo como tel\u00f3n de fondo de hacia d\u00f3nde me dirijo), quer\u00eda comenzar a crear una serie de contenido para aquellos que:<\/p>\n<ul>\n<li>est\u00e1n realmente interesados \u200b\u200ben la programaci\u00f3n orientada a objetos,<\/li>\n<li>no est\u00e1 seguro de por d\u00f3nde empezar,<\/li>\n<li>quieren hacer crecer sus habilidades,<\/li>\n<li>quiere comenzar desde cero sin escalar a material m\u00e1s complicado demasiado r\u00e1pido.<\/li>\n<\/ul>\n<p>Y eso es lo que estoy comenzando hoy y en el primer gran plan serio para los <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">miembros<\/a>. Dicho todo esto, comencemos.<\/p>\n<p>Espec\u00edficamente, comencemos a hablar sobre la programaci\u00f3n, el an\u00e1lisis y el dise\u00f1o orientados a objetos, y por qu\u00e9 deber\u00eda comenzar all\u00ed.<\/p>\n<h2>Programaci\u00f3n Orientada a Objetos: An\u00e1lisis<\/h2>\n<p>Cuando se trata de escribir c\u00f3digo, actualmente hay tres formas populares de hacerlo:<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">funcional<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">procesal<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Object-oriented_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">orientado a<\/a> objetos<\/li>\n<\/ul>\n<p>Siempre que trabajemos y leamos c\u00f3digo de WordPress, leer\u00e1 una combinaci\u00f3n de c\u00f3digo de procedimiento y c\u00f3digo orientado a objetos.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e125a74e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e125a74e.png\" alt=\"Programaci\u00f3n Orientada a Objetos en WordPress: An\u00e1lisis, Parte 1\" ><\/a><\/p>\n<p>Hay algunas razones por las que este es el caso, pero est\u00e1 fuera del alcance de nuestra discusi\u00f3n.<\/p>\n<p>Esto se debe a que WordPress est\u00e1 construido con ambos y porque ciertos aspectos del desarrollo de WordPress se pueden escribir con c\u00f3digo de procedimiento, como complementos y temas, y otros requieren desarrollo orientado a objetos como <a href=\"https:\/\/codex.wordpress.org\/Widgets_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">widgets<\/a>.<\/p>\n<h3>An\u00e1lisis y Dise\u00f1o<\/h3>\n<p>Muy a menudo, lo primero que queremos hacer, como desarrolladores (en ciernes o no), es empezar a escribir c\u00f3digo de inmediato. Yo tambi\u00e9n lo consigo. Es divertido. Tenemos una idea, queremos darle vida, queremos comenzar a usarla y queremos mostr\u00e1rsela a otras personas.<\/p>\n<p>Sin embargo, aqu\u00ed est\u00e1 el problema de hacer eso: a menudo pasamos directamente a escribir c\u00f3digo para tratar de hacer que el proyecto haga lo que queremos que haga.<\/p>\n<p>Si este es un proyecto simple (y me refiero a realmente simple), entonces no es gran cosa. Honestamente, lo he hecho (y <a href=\"https:\/\/github.com\/tommcfarlin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a> es prueba de ello). Pero cuando se trata del trabajo que hacemos en <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pressware<\/a> ; es una historia diferente.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e173b695.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e173b695.png\" alt=\"Programaci\u00f3n Orientada a Objetos en WordPress: An\u00e1lisis, Parte 1\" ><\/a><\/p>\n<p>Cuando se trata de proyectos como ese, queremos hacer un poco de an\u00e1lisis y dise\u00f1o antes de escribir el c\u00f3digo.<\/p>\n<p>Lo que plantea la pregunta, \u00bfqu\u00e9 es el an\u00e1lisis y dise\u00f1o orientado a objetos?<\/p>\n<h4>An\u00e1lisis<\/h4>\n<p>En resumen, pi\u00e9nsalo de esta manera:<\/p>\n<p>El an\u00e1lisis es el proceso de tomar la idea que tiene el cliente o que usted tiene y excavar lo que realmente se necesita construir.<\/p>\n<p>Esto puede ayudarlo a determinar cu\u00e1l es el c\u00f3digo de la aplicaci\u00f3n y qu\u00e9 no es necesario para la primera versi\u00f3n de la aplicaci\u00f3n. Me gusta etiquetarlos en cuanto a los &quot;imprescindibles&quot; y cu\u00e1les son los &quot;buenos para tener&quot;.<\/p>\n<p>Una buena regla general es esta:<\/p>\n<ul>\n<li><strong>los imprescindibles<\/strong> son las cosas que son fundamentales para la aplicaci\u00f3n y deben incluirse en la primera iteraci\u00f3n del proyecto,<\/li>\n<li><strong>agradables<\/strong> son las cosas que eventualmente podemos construir en \u00e9l<\/li>\n<\/ul>\n<p>En \u00faltima instancia, esto nos ayuda a trabajar hacia una primera versi\u00f3n s\u00f3lida para el cliente. Quiz\u00e1s un ejemplo es para WordPress:<\/p>\n<ul>\n<li>\u00bfLa primera versi\u00f3n de WordPress necesitaba tener una API de complemento o solo necesitaba tener la capacidad de que las personas escribieran publicaciones y las publicaran en la web?<\/li>\n<\/ul>\n<p>Si est\u00e1 creando una plataforma para blogs, \u00bfdebe ser extensible desde la primera versi\u00f3n? Esto no es m\u00e1s que un ejemplo, pero se entiende la idea.<\/p>\n<h4>\u00bfQu\u00e9 hace que el an\u00e1lisis sea tan dif\u00edcil?<\/h4>\n<p>Creo que a menudo tiene que ver con personajes.<\/p>\n<p>Por ejemplo, nosotros, como programadores, pensamos que un proyecto siempre debe hacer lo que el cliente quiere. La verdad es que no siempre es as\u00ed.<\/p>\n<p>Quiero decir, eventualmente, podr\u00eda ser, pero la primera versi\u00f3n del proyecto no necesariamente tiene que ser as\u00ed.<\/p>\n<p>Adem\u00e1s, uno de los principios de la programaci\u00f3n orientada a objetos es que no escribimos mucho c\u00f3digo duplicado. Pero eso puede ser muy dif\u00edcil de hacer si no se ha realizado un an\u00e1lisis adecuado.<\/p>\n<p>Finalmente, aquellos que tienen m\u00e1s experiencia dir\u00e1n que un buen software utilizar\u00e1 principios probados y verdaderos, ya sean patrones de dise\u00f1o o no, pero que se puede modificar f\u00e1cilmente con el tiempo. Eso, en cierto sentido, crece org\u00e1nicamente.<\/p>\n<h2>\u00bfEntonces, qu\u00e9 vamos a hacer?<\/h2>\n<p>En el pr\u00f3ximo art\u00edculo, voy a hablar sobre tres cosas que podemos hacer, como desarrolladores, para asegurarnos de que el software que estamos creando para nosotros mismos o para otros nos lleve en la direcci\u00f3n correcta.<\/p>\n<p>No dir\u00e9 que es una bala de plata porque no creo que exista, pero dir\u00e9 que es un enfoque bastante fuerte que he encontrado que otros usan y tambi\u00e9n yo mismo y que conduce a una direcci\u00f3n bastante buena. en t\u00e9rminos de an\u00e1lisis orientado a objetos.<\/p>\n<p>Esto eventualmente nos llevar\u00e1 al dise\u00f1o. Pero a\u00fan no hemos llegado.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La programaci\u00f3n orientada a objetos en WordPress, por no hablar de cualquier plataforma, puede ser una tarea desalentadora. Pero quiero comenzar en la zona cero y avanzar desde all\u00ed.<\/p>\n","protected":false},"author":1,"featured_media":165351,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,716,831,840],"tags":[1172],"class_list":["post-229699","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-guia-para-principiantes","category-tutoriales","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=229699"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229699\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/165351"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=229699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=229699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=229699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}