Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 11-04-2015
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
La explicación de AL es la forma normal cuando se tiene una jerarquia de clases, pero viendo este punto:

Cita:
Empezado por oscjae Ver Mensaje
de ese modo puedo hacer que en un aplicación ese procedimiento tenga un implementación diferente a otra aplicación.
Puede que te deje corto. El problema de la OO es que la herencia es "vertical" y no "horizontal". Osea, la OO es un "arbol" con un "raiz" y es facil compartir código al caminar rama y sub-ramas, de arriba a abajo, pero no al saltar de una rama a la siguiente (de lado a lado) sin obligar "subir" mas arriba hasta un ancestro comun a todas ellas... y aun así puede que eso no sea suficiente o posible.

Hay un principio de la OO que es muy util: Composición en vez de herencia. 9 de 10 veces, es MEJOR:

https://en.wikipedia.org/wiki/Compos...er_inheritance

http://stackoverflow.com/questions/4...er-inheritance

http://programmers.stackexchange.com...ance-come-from

Este comentario creo que explica de forma simple el punto:

Cita:
Inheritance is primarily a polymorphic tool, but some people, much to their later peril, attempt to use it as a way of reusing/sharing code
Composición permite compartir tanto "vertical" como "horizontal" e incluso, a travez de multiples arboles con diferentes "raices" o que saltan de árbol a árbol, aplicación a aplicación, e incluso, de lenguaje a lenguaje!

Un ejemplo puede ser:

Código Delphi [-]
type
    IPrivilegios = Interface(IInterface)
     // Retornar una lista de privilegios, con nombre= Acceso si/no
      function ListarPrivilegios(para:TForm):TDictionary<string, Boolean>;
    end;

De alli puede hacer 2 cosas:

1- Puedes implementar la interface en formularios, y NO IMPORTAN SI HEREDAN DEL MISMO BASE

o

2- Puedes usar una simple funcion, sin amarrar a formularios:

Porque pasas a la intefaces el formulario de forma explicita, en vez de de depender que estas dentro de la clases. Asi incluso se lo puedes aplicar a formularios externos a tu codigo.

3- E incluso, si en vez de forzar que privilegios tiene que ver con formularios, cambias el parametro "para" con una clase "Generics" u otra interface, puedes aplicarselo a cualquier objeto (ej: Obtener los privilegios para un usuario, un archivo, etc)
__________________
El malabarista.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda tonta con herencia Angel.Matilla C++ Builder 5 28-12-2013 10:52:18
Herencia miguel867 OOP 6 12-01-2007 23:08:20
Herencia... dunia_lv C++ Builder 3 29-05-2006 22:43:00
Problemas con herencia adpa OOP 5 05-02-2006 20:03:31
Herencia vegalisandro OOP 8 15-09-2003 14:30:42


La franja horaria es GMT +2. Ahora son las 17:33:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi