1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Clases o Funciones, son lo mismo ? dudas sobre POO

Tema en 'Programación y Diseño Web' iniciado por marzupial, 28 Nov 2007.

  1. marzupial

    marzupial Usuario activo

    Alguien puede exlicar cual es la forma correcta de trabajar con clases por ejemplo yo utilizaria una
    clase productos la cual contendria todos los datos de dicha tabla para poder usarla en cualquier parte
    de una aplicacion pero lo mismo se puede hacer utilizando una funcion mostrarproductos este es el uso correcto
    para una clase ya que no entiendo mucho del tema he oido hablar tambien de capas , 3capas e incluso he aprendido a crear clases con .net y el unico uso que le veo es el mencionado anteriromente suguramente estoy 100% eqivocado es mas no se si la pregunta sea correcta espero alguien pueda ondar mas sobre el tema.
    Ah por cierto no se vayan a poner la explicar los conceptos de clase objeto herencia y demas que eso lo tengo claro
    bueno no mucho pero si algo
     
  2.  
  3. elQuique

    elQuique Usuario activo

    Bueno primero que nada y comenzando por el final, si lees tu pregunta se deja ver que para nada tienes claro los conceptos de Objetos, Clases, Herencia jeje, si los tuvieras claro sabrías la ventaja de usuarlos.

    Igualmente debes tener en cuenta que en un pequeño ejercicio o incluso un programa de pocas lineas no se nota la diferencia de usarlo, estos conceptos se hacen mas visibles cuando los utilizas en programas de mayor tamaño.

    Yo por ejemplo en mis sistemas comerciales tengo una clase Persona que por ejemplo esta formada por:

    clase Persona {
    nombre
    apellido
    domicilio

    etc
    }

    con sus métodos para setear y obtener valores, luego cuando comienzo a armar mi sistema tengo:

    Clientes que hereda de Persona
    Cobradores que hereda de Persona

    y así todos los que tengan que ver con ese concepto, ahí tengo la primer ventaja con el simple hecho de heredar todos los métodos queda utilizables, solo debo agregar nuevos métodos específicos para las nuevas clases.

    Por ejemplo para Clientes le agrego tipo para saber que tipo de cliente es (vip, común, etc), y para cobrador por ejemplo la zona en la que cobra o la ciudad.

    Lo de capas es parecido, pero orientado a la forma de trabajo, por ejemplo usualmente utilizo 3 capas, una capa de Presentación, otra de Negocios y otra de Datos.

    En la capa de datos, hago por ejemplo:

    Conectar
    AgregarRegistro
    ModificarRegistro
    EliminarRegistro

    y programo estos de manera genérica, para que me sirvan para Clientes, Personas, Productos, etc.

    Y a su vez la programo para SQL, pero también me hago otra copia para MySQL y otra copia para Oracle, etc.

    De esta forma cuando programo la Capa de Negocios que es la que tiene los procedimientos para llevar toda la lógica del software, ejemplo GuardarFactura, CalcularSaldos, etc, voy a usar simplemente la Capa de Datos llamando AgregarRegistro, etc.

    Que logro con esto ??, pues bueno que separe de tal manera las cosas que diciendo que mi Capa de Datos sea SQL o MySQL en una o 2 lineas tengo un sistema multi base de datos, SIN !!! tener que cambiar nada en mi Capa de Negocios ya que llamo a los genericos AgregarRegistro, ModificarRegitro, etc.

    La otra Capa es la de Presentación, donde programo todo para WindowsForms o para WebForms, o sea que también utilizando mis otras dos capas y sin modificarlas logro que mi sistema (uno solo) corra en Windows o Web :)

    Esta claro ??
     
  4. marzupial

    marzupial Usuario activo

    Exelente explicacion me quedo claro el uso de capas,pero quedaron algunas dudas sobre las clases
    el ejemplo lo entendi las clases <b>cliente </b> y <b>cobrador </b> heredan los objetos nombre,apellido,domicilio con todos sus metodos de la clase <b>persona</b>,pero podrian plantear otro ejemplo para tener un concepto mas amplio del uso de clases.:arriba:
     
  5. elQuique

    elQuique Usuario activo

    Imagina que las clases son como moldes, e imagina que estas haciendo un soft de administración comercial, y vas a tener:

    clase Documento {
    NumeroDocumento;
    Cliente;
    Fecha;
    metodo abstracto CalcularTotal ()
    }

    nota: los abstracto son métodos que se deben sobreescribir o sea generar en la clase heredada, ya veremos por que :p

    Luego tu sistema va a tener Facturas (de contado, crédito, nota de crédito), que sera una clase heredada de Documentos así:

    clase Factura hereda Documento {
    Productos (una lista de ellos);
    Precios (un precio por cada producto);
    Cantidades (una cantidad pro cada producto);

    metodo CalcularTotal () {

    aca programas todo para que recorra todos los renglones haga cantidad x precio y sume y haga un return de ese total ;)

    }
    metodo DesplegarFactura() {

    acá despliegas numero de documento, cliente, fecha que viene por herencia y además los renglones de los productos y el total
    }
    }

    Pero en tu sistema vas a tener Recibos que son los que das cuando pagan este también hereda de Documento, pero obviamente el total sera distinto, puede ser así:

    clase Recibo hereda Documento {
    Total;
    metodo DesplegarTotal(){
    bien fácil acá muestras solo total
    }
    método DesplegarRecibo() {
    acá haces todo para que muestre fecha, cliente, numero de recibo y total
    }

    ;) mas o menos así la idea :p
     
  6. kreikol

    kreikol Nuevo usuario

    Muy buenas. Buena explicación Quique, me ha venido bien para entender lo de las capas. Pero me surge alguna duda, he entendido la finalidad de las capas y las ventaja, pero la duda que me queda es como creas las capas físicamente. Nunca he usado capas y por eso no lo entiendo, te creas una clase con agregar, modificar,..., otra para la parte de presentacion y luego cada clase q necesites (persona, cliente...)?

    Un saludo
     
  7. elQuique

    elQuique Usuario activo

    Se puede en cualquier lenguaje jaja pero justo ahora tengo abierto el Visual Studio 2005 y con ese te explico:

    Tengo 1 Solución con Varios Proyectos:

    Proyecto 1 - Entidades
    este adentro tiene varias clases, por ejemplo Clientes, Productos, Ventas, y cada entidad tiene simplemente los get y set de las propiedades típicas de clientes, productos, ventas.

    Proyecto 2 - Datos (capa de datos)
    este adentro tiene por ejemplo una clase Clientes, con funciones Agregar, Modificar, Eliminar, obtenerTodos, obtenerUno, obviamente en la copia que uso para SQL lo hago con la ejecución de ordenes SQL o stores procedures.
    De este datos es que tengo varias implementaciones, una para SQL, otra para Oracle, otra para MySQL, con eso logro un sistema reutilizable para varias bases.
    Además de Clientes en este mismo proyecto que ademas es la capa de datos tengo la case Productos, Ventas, etc.

    Proyecto 3 - Negocios (capa de negocios)
    Esta es la capa donde programo todo lo del sistema y es el intermediario entre las entidades y la capa de datos y la capa de vista (que es para web o para windows).

    Por ejemplo en esta capa de Negocios es donde yo compruebo que no debo permitir DNI (numero de identificación o pasaportes) de tal o cual valor, que los importes no pueden ser mayores a tanto, que es hasta tantas cuotas, etc.

    Acá es donde hago, por ejemplo así:

    Dim oDatos As Datos.Clientes

    o en mi caso

    Dim oDatos As DatosSQL.Clientes

    o

    Dim oDatos As DatosMySQL.Clientes

    o sea que en esta capa decido que usar como base de datos.

    Y bueno tengo otro Proyecto 4 - oyGestion que es el que arma todo el sistema en cuanto a menú, opciones, formularios, etc.

    Conclusión, una Solución, 1 proyecto por capa.
     
  8. kreikol

    kreikol Nuevo usuario

    Ya lo siento pero sigo sin verlo del todo claro, la idea la entiendo, pero yo estoy intentando imaginarmelo para php con una web mia y no lo termino de ver. Ledaré más vueltas cuando llegue a casa, que ahora estoy currando, a ver si lo entiendo, y sino posteare jeje

    Salu2
     
  9. elQuique

    elQuique Usuario activo

    En PHP hago lo mismo hago una Clase Clientes con los datos, una capa de datos que uso ADODB y otra capa que relaciono el objeto Clientes con Datos.
     
  10. kreikol

    kreikol Nuevo usuario

    Sip pero... a qué llamas Capa? y como las relacionas.
    (Sorry...pero hoy estoy algo espesa...)
     
  11. elQuique

    elQuique Usuario activo

    En PHP hago lo mismo hago una Clase Clientes con los datos, una capa de datos que uso ADODB y otra capa que relaciono el objeto Clientes con Datos.

    Y para visualización uso Smarty.

    Eso uso en sistemas como el CMS de <a href="http://www.solophotoshop.com" target="_blank">http://www.solophotoshop.com</a> y <a href="http://www.tallerwebmaster.com" target="_blank">http://www.tallerwebmaster.com</a>, y los de videos como <a href="http://www.toprankvideo.com" target="_blank">http://www.toprankvideo.com</a> y <a href="http://www.famososvideos.com" target="_blank">http://www.famososvideos.com</a>

    Capas es un concepto abstracto :p jaja

    <a href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_por_capas" target="_blank">http://es.wikipedia.org/wiki/Programaci%C3%B3n_por_capas</a>

    Aconsejo leer un poco de teoría de POO y Capas
     
  12. Samus_

    Samus_ Guest

    je lindo tema :) como toda herramienta las clases tienen sus usos y sus abusos, si vamos a comparar una clase con una función pelada la clase es un mecanismo muchísimo más complejo (de hecho las clases contienen funciones) pero bueno todo va en función de la aplicación.

    si se hace uso de las caracetrísticas básicas de las clases creo yo que la principal ventaja con respecto a la programación clásica es el orden, nosostros cuando creamos una clase lo que logramos es asociar determinadas variables y determinadas funciones en un grupo único formando asi un concepto, esto da mucha claridad al código ya que esas funciones que de otro modo estarían únicamente separadas por archivos, en este modelo de trabajo estan directamente asociadas al concepto sobre el cual trabajan, por ej. en lo que planteaba quique de los empleados hay determinadas operaciones que son inherentes a los mismos, en un modelo clásico tendríamos funciones que reciben como parámetro el empleado en cuestión y realizan las operaciones, en la programación orientada a objetos esas funciones ya estan asociadas a los empleados, porque estan directamente vinculadas a los mismos entonces el "empleado" se materializa dentro del código como una unidad, con propiedades (variables) y métodos (funciones) pero que cada uno de ellos esta directamente asociado a ese concepto en particular.

    despues de eso las clases permiten implementar mecanismos avanzados como son la herencia, el encapsulamiento de datos, las interfases, etc. pero esto si bien son ventajas clave a la hora de diseñar creo yo son más parte de la herramienta en si y no del concepto.

    con respecto a lo de las capas, no creo que tenga demasaido que ver con las clases; es decir, las capas son uno entre tantos modelos de trabajo que de hecho pueden aplicarse con o sin el uso de clases.
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·