{"id":903,"date":"2022-07-08T00:00:00","date_gmt":"2022-07-07T22:00:00","guid":{"rendered":"https:\/\/programaraciegas.net\/?p=903"},"modified":"2022-06-30T07:46:55","modified_gmt":"2022-06-30T05:46:55","slug":"el-polimorfismo-dentro-de-la-programacion-orientada-a-objetos","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=903","title":{"rendered":"El polimorfismo dentro de la programaci\u00f3n orientada a objetos"},"content":{"rendered":"<p>El polimorfismo permite que una clase hija modifique el comportamiento de un m\u00e9todo de la superclase.<\/p>\n<h2>Ejemplo con la m\u00fasica<\/h2>\n<p>Queremos realizar una aplicaci\u00f3n que haga sonar varios instrumentos musicales a la vez para interpretar una composici\u00f3n musical.<\/p>\n<p>Como podemos modelar nuestra orquesta de la forma que prefiramos podemos crear una clase DirectorDeOrquesta que dar\u00e1 \u00f3rdenes a un listado de instrumentos musicales. De esta forma nuestro director de orquesta puede dar \u00f3rdenes a una orquesta que tenga un tama\u00f1o indeterminado.<\/p>\n<p>Para conseguir esto cada instrumento musical debe responder a una \u00f3rden espec\u00edfica del director de orquesta. Esta \u00f3rden puede estar representada por una llamada al m\u00e9todo tocar de cada instrumento musical.<\/p>\n<p>Nuestra clase directorDeOrquesta ser\u00eda algo como:<\/p>\n<pre>Clase Director<br \/><br \/>\u00a0 \u00a0 atributos: listaDeInstrumentos<br \/><br \/>\u00a0 \u00a0 M\u00e9todos: tocarLista<\/pre>\n<p>Imaginemos que tenemos la clase InstrumentoMusical y la declaramos as\u00ed:<\/p>\n<pre>Clase InstrumentoMusical<br \/><br \/>\u00a0 \u00a0 Atributos: nombre, tipo<br \/><br \/>\u00a0 \u00a0 M\u00e9todos: tocar<\/pre>\n<p>Esta clase al ejecutar el m\u00e9todo tocar mostrar\u00e1 un mensaje por pantalla.<\/p>\n<p>Veamos la definici\u00f3n de la clase InstrumentoMusical con m\u00e1s detalle:<\/p>\n<pre>Clase InstrumentoMusical<br \/><br \/>\u00a0 \u00a0 nombre, tipo<br \/><br \/><br \/><br \/>\u00a0 \u00a0 funci\u00f3n tocar() {<br \/><br \/>\u00a0 \u00a0 \u00a0 \u00a0 imprime(\"El instrumento suena\")<br \/><br \/>\u00a0 \u00a0 }<\/pre>\n<p>Ahora imaginemos que queremos declarar las clases Flauta y la clase tambor. La declaraci\u00f3n quedar\u00eda as\u00ed:<\/p>\n<pre>Clase Flauta que hereda de InstrumentoMusical<br \/><br \/>\u00a0 \u00a0 funci\u00f3n tocar() {<br \/><br \/>\u00a0 \u00a0 \u00a0 \u00a0 imprime(\"Piiiiiiii\")<br \/><br \/>\u00a0 \u00a0 }<br \/><br \/><br \/><br \/>Clase Tambor que hereda de InstrumentoMusical<br \/><br \/>\u00a0 \u00a0 funci\u00f3n tocar() {<br \/><br \/>\u00a0 \u00a0 \u00a0 \u00a0 imprime(\"Bum\")<br \/><br \/>\u00a0 \u00a0 }<\/pre>\n<p>De esta forma las clases hijas tienen comportamientos personalizados para el m\u00e9todo tocar que ha sido heredado de su clase padre.<\/p>\n<p>El polimorfismo es la capacidad de un programa de detectar la verdadera clase de un objeto e invocar su implementaci\u00f3n, incluso aunque su tipo real sea desconocido en el contexto actual.<br \/>Tambi\u00e9n se puede pensar en el polimorfismo como la capacidad de un objeto para \u201cfingir\u201d ser otro objeto,<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El polimorfismo permite que una clase hija modifique el comportamiento de un m\u00e9todo de la superclase. Ejemplo con la m\u00fasica Queremos realizar una aplicaci\u00f3n que haga sonar varios instrumentos musicales a la vez para interpretar una composici\u00f3n musical. Como podemos modelar nuestra orquesta de la forma que prefiramos podemos crear una clase DirectorDeOrquesta que dar\u00e1 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=903\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abEl polimorfismo dentro de la programaci\u00f3n orientada a objetos\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,6],"tags":[87,388],"class_list":["post-903","post","type-post","status-publish","format-standard","hentry","category-metodologiafilosofia","category-programacion","tag-programacion-2","tag-teoria"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/903","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=903"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/903\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}