tag:blogger.com,1999:blog-19450532.post115308818848476355..comments2023-08-04T05:53:13.693-03:00Comments on PHP Senior: "Herencia múltiple en PHP5"Enrique Placehttp://www.blogger.com/profile/15452998349449419148noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-19450532.post-81227678270643027082010-10-06T11:50:29.141-03:002010-10-06T11:50:29.141-03:00Hola:
Aunque acabo de descubrir tu blog y me pare...Hola:<br /><br />Aunque acabo de descubrir tu blog y me parece muy interesante, habría que puntualizar varias cosas. <br /><br />1-. La herencia múltiple es un mecanismo más de la orientación a objetos, y si se usa bien, bastante potente. Si se usa mal, pues como la herencia simple, molesta más que ayuda.<br /><br />2-. Bertrand Meyer no es ningún loco o personaje aleatorio, sino uno de los más famosos personajes dentro de la comunidad de la orientación a objetos, primer premio Dahl-Nygaard por la AITO, que no es un premio que se lo den al primero que pasa. Sus opiniones pueden ser o no ciertas, como la de cualquier persona, pero por su trayectoria merecen algo de consideración porque la experiencia nos ha demostrado que sus opiniones suelen ser bastante ciertas.<br /><br />3-. Gran parte de la investigación actual en programación orientada a objetos versa sobre cosas como mixins, orientación a características, etc. muchas de las cuales se pueden resolver de forma simple y elegante usando herencia múltiple.<br /><br />Por tanto, la herencia múltiple está ahí y si se usa bien puede ser muy útil. Ahora, hay que saber usarla bien. A mi me da cierta pena que no aparezca en los lenguajes modernos. <br /><br />Un saludo, Pablo.Pablo Sánchezhttps://www.blogger.com/profile/12599533619264248353noreply@blogger.comtag:blogger.com,1999:blog-19450532.post-60738437440980187942010-06-16T14:28:43.760-03:002010-06-16T14:28:43.760-03:00>> Te voy a indicar un libro que
>> de...>> Te voy a indicar un libro que<br />>> defiende la herencia múltiple y<br />>> la justifica muy bien:<br /><br />> Hay locos en todos lados, que unos > pocos libros hablen del tema no lo > valida como una estrategia recomendable (a la fecha no he visto > un solo patrón de diseño que siquiera sugiera la idea).<br /><br />Enrique:<br />Coincido con vos en el tema de la herencia, y en todo lo que expusiste. Pero quería remarcar que el "loco" Bertrand Meyer, un poquito entiende del tema y amerita para que al menos veas que es lo que el dice. Pero igualmente estoy con vos en el tema de la herencia y la implementación de interfaces.<br /><br />Saludos!tiagoxhttps://www.blogger.com/profile/01650293421766836055noreply@blogger.comtag:blogger.com,1999:blog-19450532.post-15981112432949183282010-03-10T15:27:16.552-03:002010-03-10T15:27:16.552-03:00"Eh?! Te fuiste al infinito disparatado y más..."Eh?! Te fuiste al infinito disparatado y más allá, la herencia de clases nada tiene que ver con las interfaces, son dos conceptos completamente distintos y no pueden unirse."<br /><br />Que copado tener a un blogger que trate asi a sus lectores ;).<br /><br />Sos el Baby Etchecopar de los blogs.Un cambio por Diseñohttps://www.blogger.com/profile/17534994667706030602noreply@blogger.comtag:blogger.com,1999:blog-19450532.post-6235667953825293662007-07-03T00:51:00.000-03:002007-07-03T00:51:00.000-03:00Estimado Beñat:> Te voy a indicar un libro que...<B>Estimado Beñat:</B><BR/><BR/>> Te voy a indicar un libro que<BR/>> defiende la herencia múltiple y <BR/>> la justifica muy bien:<BR/><BR/>Hay locos en todos lados, que unos pocos libros hablen del tema no lo valida como una estrategia recomendable (a la fecha no he visto un solo patrón de diseño que siquiera sugiera la idea).<BR/><BR/>> Los problemas que dices que <BR/>> se presentan al permitir la <BR/>> herencia múltiple ("colisiones de<BR/>> nombres" y la "herencia <BR/>> repetida") se solucionan <BR/>> elegantemente permitiendo <BR/>> renombrar los métodos.<BR/><BR/>Que tampoco significa que sea el meollo del problema. El mayor problema es que la herencia múltiple desarma los diseños. <BR/><BR/>Como ya dije en el post: <BR/><BR/>- Las jerarquías "gordas y bajas" son síntoma de "poca especialización"<BR/>- Las jerarquías "altas y flacas" son síntoma de "excesiva especialización".<BR/><BR/>¿Si tantas recomendaciones existen para la herencia simple, que queda esperar para la herencia múltiple?<BR/><BR/>Es una estrategia desaconsejada por donde la mires y donde mires.<BR/><BR/>> Que yo sepa, de los lenguajes<BR/>> que permiten la herencia <BR/>> múltiple, sólo Eiffel permite <BR/>> ofrece el renombrado. Así que es <BR/>> la única implementación de <BR/>> herencia múltiple bien realizada.<BR/><BR/>Más a favor del argumento que la herencia múltiple no es aconsejada.<BR/><BR/>> El problema de la <BR/>> impopularidad de la herencia <BR/>> múltiple creo que es C++ y lo mal<BR/>> que lo implementa.<BR/><BR/>No le veo la lógica, perfectamente otro lenguaje podría implementarla bien... y?<BR/><BR/>> La herencia múltiple de <BR/>> interfaz es totalmente necesaria.<BR/>> Por eso muchos lenguajes la <BR/>> proporcionan de una u otra forma.<BR/>> En Java por ejemplo se añaden <BR/>> interfaces.<BR/><BR/>La herencia de clases y la herencia de interfaces no tienen nada que ver entre ellas. Son dos conceptos completamente distintos. Generalmente cuando se habla de "herencia múltiple" se refiere a clases, no interfaces. Las interfaces son "contratos de implementación", ni siquiera tiene código, además de agrupar clases por lo que hacen y no por lo que son (no hay "parentesco").<BR/><BR/>> La herencia múltiple de <BR/>> implementación es muy útil y no <BR/>> tiene problemas si se ofrece la <BR/>> opción de renombrado de métodos. <BR/>> Es útil porque reduce la cantidad<BR/>> de código y de conceptos <BR/>> necesarios. <BR/><BR/>Herencia va más allá del reuso del código... cuando se hacen diseños pensando en esto es cuando más errores se cometen (Principo de Liskov).<BR/><BR/>> Las interfaces no son necesarias <BR/>> y tampoco hay q mantener dos <BR/>> jerarquías por separado, una para<BR/>> las interfaces y otra para las <BR/>> clases.<BR/><BR/><BR/>Eh?! Te fuiste al infinito disparatado y más allá, la herencia de clases nada tiene que ver con las interfaces, son dos conceptos completamente distintos y no pueden unirse.Enrique Placehttps://www.blogger.com/profile/15452998349449419148noreply@blogger.comtag:blogger.com,1999:blog-19450532.post-62860021193534407322007-06-15T12:41:00.000-03:002007-06-15T12:41:00.000-03:00Te voy a indicar un libro que defiende la herencia...Te voy a indicar un libro que defiende la herencia múltiple y la justifica muy bien:<BR/><BR/>Construcción de Software Orientado a Objetos<BR/>de Bertrand Meyer<BR/>ISBN 84-8322-040-7<BR/><BR/>Los problemas que dices que se presentan al permitir la herencia múltiple ("colisiones de nombres" y la "herencia repetida") se solucionan elegantemente permitiendo renombrar los métodos.<BR/><BR/>Que yo sepa, de los lenguajes que permiten la herencia múltiple, sólo Eiffel permite ofrece el renombrado. Así que es la única implementación de herencia múltiple bien realizada.<BR/><BR/>El problema de la impopularidad de la herencia múltiple creo que es C++ y lo mal que lo implementa.<BR/><BR/>La herencia múltiple de interfaz es totalmente necesaria. Por eso muchos lenguajes la proporcionan de una u otra forma. En Java por ejemplo se añaden interfaces.<BR/><BR/>La herencia múltiple de implementación es muy útil y no tiene problemas si se ofrece la opción de renombrado de métodos. Es útil porque reduce la cantidad de código y de conceptos necesarios. Las interfaces no son necesarias y tampoco hay q mantener dos jerarquías por separado, una para las interfaces y otra para las clases.Autorhttps://www.blogger.com/profile/02091252969921847075noreply@blogger.com