[DUDA]Propiedades o constantes

Iniciado por SLUGER, 23 Mayo 2012, 02:40 AM

0 Miembros y 1 Visitante están viendo este tema.

SLUGER

Hola,

Estoy creando un programa que usa varias clases, el problema es que no se como programar las clases. Para que quede mas claro, un ejemplo; tengo una clase Rectangulo, esta clase se encarga de dibujar un rectángulo de dos colores distintos, un color para el contorno y otro color para el relleno. Los colores ya estan definidos dentro de la aplicacion; Rojo para el contorno y Verde para el relleno. Como ya sé que colores quiero que tenga mi rectangulo, deberia de establecerlos como constantes de la clase Rectangulo:
Código (cpp) [Seleccionar]

class Rectangulo
{
    public:
        Rectangulo();
    private:
        static const int _penColor = Rojo;
        static const int _brushColor = Verde;
};


O debería de establecerlos como propiedades de la clase y ya luego en la función main tener definidas las constantes:
Código (cpp) [Seleccionar]

class Rectangulo
{
    public:
        Rectangulo(int penColor, int brushColor);
        // ... getters y setters de los colores ...
    private:
        int _penColor;
        int _brushColor;
};

...

#define PENCOLOR Rojo
#define BRUSHCOLOR Verde

void main()
{
     Rectangulo rect1(PENCOLOR, BRUSHCOLOR)
}

Y otra cosa, en el ultimo código, a pesar de que siempre en mi código voy a utilizar el constructor, para que definir getters y setter, ademas de que ya se establecieron los colores dentro de la aplicación.

KaL3o

yo lo haria de la segunda forma q has colocado

Cita de: SLUGER en 23 Mayo 2012, 02:40 AM
Para que quede mas claro, un ejemplo; tengo una clase Rectangulo, esta clase se encarga de dibujar un rectángulo de dos colores distintos, un color para el contorno y otro color para el relleno.

puesto q segun lei, la clase debe dibujar el rectangulo de dos colores diferentes, y si te cambian el main deberia ser capaz de pintar el rectangulo de otros colores y no solamente rojo y verde

Cita de: SLUGER en 23 Mayo 2012, 02:40 AM
Los colores ya estan definidos dentro de la aplicacion; Rojo para el contorno y Verde para el relleno.
La aplicacion los define o el main, pero no por ello son constantes.

Bueno en conclusion yo personalmente utilizaria la segunda opcion, resuminedo lo haria por portabilidad, si el dia de mañana te piden un rectangulo de otro color y has utilizado constantes tendrias que modificar todas las veces la clase, mientras que si lo haces de la segunda forma, no tendras que modificar la clase.

Salu2 :)
Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.

SLUGER

Ademas de que no eres la única persona que piensa de la misma manera, creo que tienes razón :) Aunque es un tanto ilógico estar creando getters y setters que por lo pronto no ( y creo que nunca ) utilizare >.<

KaL3o

Bueno los getters y los setters es bueno ponerlos... claro para programas pequeños seguramente no le veras mucha utilidad.

Pero por ejemplo si te piden en medio del programa que cambies el color del contorno... ya se me diras que llamas al construcctor parametrizado nuevamente, pero ¿llamaras al constructor de toda una clase para modificar solamente uno de los datos del objeto? estaras accediendo a todos sus miembros para cambiar solo un dato, eso no tiene sentido.

Claro para tu programa seguramente no habra problema, no es un programa complejo, pero si el problema fuera de una complegidad alta o un software muy robusto, ufff andar llamando al constructor solo para modificar una pequeña variable seria una muy mala practica. (incluso en programas pequeños me parece mala practica deprogramación)
Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.