Ver Mensaje Individual
  #38 (permalink)  
Antiguo 11/06/2015, 18:28
Avatar de BramSt
BramSt
 
Fecha de Ingreso: abril-2015
Mensajes: 117
Antigüedad: 9 años, 1 mes
Puntos: 5
Respuesta: ¿Para qué necesito un Constructor? (Sí, novato inside XD).

Cita:
Iniciado por vangodp Ver Mensaje
Los constructores se usan para dar un valor inicial a la hora de crear un objeto de la clase. Pero luego después se suele usar los seters para ello.

Una de las razones de peso de el porque se usa constructores puede ser por ejemplo a la hora de inicializar un objeto en caso de herencia. Si heredas una clase no vas estar inicializando cada variable a mano, no tendría sentido seria muy penoso.

Las clases pueden tener varios niveles de herencia, cosa que haría imposible darle un valor inicial de no ser por los constructores. Por eso los constructores solo se usan a la hora de crear el objeto y los seters se usan después junto con los demás métodos.

Un constructor incluso puede hacer uso de los geters y seters si así lo deseas. por ejemplo....
Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct cd {
  5. public:
  6.     cd ( float c, int d );
  7.     int getTotalcanciones() const;
  8.     void setPrecio(float unPrecio);
  9.     void setTotalcanciones(int nTotal);
  10.    
  11.    
  12. private:
  13.     float precio;
  14.     int totalcanciones;
  15. };
  16.  
  17. cd::cd ( float c, int d ) {
  18.     setPrecio(c);
  19.     setTotalcanciones(d);
  20. }
  21.  
  22. int cd::getTotalcanciones() const{
  23.     return totalcanciones;
  24. }
  25.  
  26. void cd::setPrecio(float unPrecio){
  27.     precio = unPrecio;
  28. }
  29. void cd::setTotalcanciones(int nTotal){
  30.     totalcanciones = nTotal;
  31. }
  32.  
  33. int main() {
  34.     cd cd2 ( 12, 15 );
  35.     cout << cd2.getTotalcanciones() << endl << endl;
  36.    
  37.     cin.ignore();
  38. }

La finalidad de los constructores te va quedar más clara con la herencia ya lo verás. Y por supuesto creo que te estás adelantando algo si aun estas en las estructuras, pues eso es tema de clases. No se si ya has pasado por los punteros.

En fin... Ten por seguro que la programación todo tiene un porque, nada esta ahí porque sí, creame, simplemente toma como se te explico y sigue adelante, por que son cosas que dependen de otras para entenderlo. si vieras el primer vídeo de clases entenderías lo que te digo, pues el que hace el vídeo lo dice igual que yo, parece que la finalidad de hacer una variable privada es poner trabas a la programación, pero no es así, necesitas seguir avanzando para entender el porque.
Tome como religión, si te dicen que eso es así tu palante >_<.

Muchas gracias amigo. Nuevamente, como no sé qué es una herencia, lo único que hago es liarme más XDDD


De todas formas creo que todo este estudio en apariencia infructuoso de los constructores me va a ayudar después, cuando llegue de verdad a las clases y objetos. Me ha dado una noción que aunque inexacta e imprecisa, ayudará a que configure mi cabeza hacia una correcta comprensión posterior.


Y sí, estoy seguro que todo tiene un por qué, y es el entender bien las cosas lo que hace que pregunte tanto. Me da miedo avanzar sin tener ciertas cosas claras, pero a veces no queda más remedio porque se ha adelantado uno demasiado.

Los punteros sí los he visto, pero son mi otro gran hueso (entender su por qué, qué hace que los arrays sean punteros, y su interrelación con las memorias dinámicas sobre todo, las cuales tampoco termino de entender bien).

Seguramente sobre esto van a ir mis siguientes hilos XD

Son muchos conceptos y muchas cosas. Poco a poco. Si al menos terminara de entender bien punteros y memorias dinámicas (al menos lo básico), antes de pasar a Java, me daría por ahora por contento en cuanto a C++.

Lo único que tengo claro es que cuanto más aprendo más me gusta. Temo que algún día me estalle la cabeza (intento solucionar una duda y salen dos o tres más, cual Hydra XD), pero creo que si no lo consigo en 2 horas, lo conseguiré en 20. Eso y no hacer caso a quienes intentan desanimarte (que sé que me los voy a encontrar), es la clave.

Última edición por BramSt; 11/06/2015 a las 18:36