SlideShare uma empresa Scribd logo
1 de 10
CONSTRUCTORES - ¿qué es y para qué sirve?
Supongamos que se tiene la clase Punto.
Esta clase representa puntos geométricos caracterizados por
dos coordenadas: x, y.
Además se tiene un método llamado dibujar() y cuya función es
mostrar los valores de las coordenadas del punto:
class Punto {
private: int x, y;
public:
int getX() {
return x;
}
int getY() {
return y;
}
CONSTRUCTORES - ¿qué es y para qué sirve?
void setX(int x) {
this.x=x;
}
void setY(int y) {
this.y=y;
}
void dibujar()
{
cout<< ̎las coordenadas son ̎ << x << ̎ , ̎<<y;
}

}

Si se desea crear un punto a partir de esta clase y dibujarlo:
Punto pt = new Punto();
pt.setX(6);
pt.setY(10);
pt.dibujar();
CONSTRUCTORES - ¿qué es y para qué sirve?


Observe que cada vez que se va a crear un punto para realizar luego
una operación, se debe llamar explícitamente a los métodos setX() y
setY() para asignar valores a las coordenadas del punto.



Esto además de resultar pesado en caso de tener muchos
atributos, puede dar lugar a olvidos y, por tanto que ciertos atributos
queden sin inicializarse. Para evitar estos problemas se tienen los
constructores.



Un constructor es un método especial que se ejecuta al momento en
que se crea un objeto de la clase (cuando se llama al operador new).



Los constructores permiten agregar tareas que deben realizarse al
momento de crear un objeto de la clase, como por ejemplo la
inicialización de los atributos.
CONSTRUCTORES - ¿qué es y para qué sirve?


Al crear un constructor se deben seguir las siguientes reglas:
 El nombre del constructor debe ser el mismo que el de la
clase.
 El constructor no puede tener tipo de devolución, ni siquiera
void.
 Los constructores se pueden sobrecargar (una clase puede
tener más de un constructor) por tanto distintas formas de
inicializar sus atributos.

 Toda clase debe tener al menos un constructor.
CONSTRUCTORES - ¿qué es y para qué sirve?


En el siguiente listado se muestra la clase Punto con dos
constructores para la inicialización de las coordenadas.
class Punto {
private: int x, y;
public:
Punto (int x, int y) {
this.x=x;
this.y=y;
}
Punto(int v) {
this.x=v;
this.y=v;
}
…..
}
CONSTRUCTORES - ¿qué es y para qué sirve?
Así los constructores hacen más cómoda la creación de un objeto
Punto, pasándole las coordenadas del Punto al constructor en la
instrucción de creación del objeto:
Punto pt = new Punto(4, 6); // llama primer constructor
pt.dibujar();
Como el constructor almacena los números en x e y, la llamada dibujar()
mostrará:
las coordenadas son 4 y 6
Si las dos coordenadas tuviesen el mismo valor, se optaría por el segundo
constructor.
Punto pt = new Punto(5); // x, y toman el valor de 5
pt.dibujar();
CONSTRUCTORES – por defecto
Según la cuarta regla toda clase debe tener un constructor, ¿pero que
pasa si se crea una clase sin constructores?
En este caso el compilador añade un constructor a la clase,
denominado constructor por defecto:

public:
NombreClase() {
:
}

Es decir, será un constructor sin parámetros y sin código, per
necesario para que la clase pueda compilar.
CONSTRUCTORES – por defecto
Cuando se creó la clase Punto y no se generó ningún constructor, el
compilador implícitamente el siguiente constructor:
public:
Punto() {
:
}
Sin él no será posible crear objetos Punto de la forma:
Punto pt=new Punto();
Si se genera un objeto cuya clase tenga parámetros y sólo se cuente
con un constructor por defecto se provocará un error de compilación.
CONSTRUCTORES – por defecto
Es importante tener en cuenta que al desarrollar la clase, además de poder
inicializar atributos en la creación de los objetos, se desea crear objetos de la
clase sin ningún tipo de inicialización, se debe codificar el constructor por defecto
de la clase.
class Punto {
private:
int x, y;
public:
Punto () { //constructor por defecto
}
Punto(int x, int y) {
this.x=0;
this.y=0;
}
Punto(int v) {
this.x=0;
this.y=0;
}
…..
}
CONSTRUCTORES – por defecto
Es importante tener en cuenta que al desarrollar la clase, además de poder
inicializar atributos en la creación de los objetos, se desea crear objetos de la
clase sin ningún tipo de inicialización, se debe codificar el constructor por defecto
de la clase.
class Punto {
private: int x, y;
public:
Punto () { //constructor por defecto
}
Punto(int x, int y) {
this.x=x;
this.y=y;
}
Punto(int v) {
this.x=v;
this.y=v;
}
…..
}

Mais conteúdo relacionado

Mais procurados (9)

Graficando funciones cuadraticas en geogebra
Graficando funciones cuadraticas en geogebraGraficando funciones cuadraticas en geogebra
Graficando funciones cuadraticas en geogebra
 
Introduccion a awt
Introduccion a awtIntroduccion a awt
Introduccion a awt
 
Intro opengl
Intro openglIntro opengl
Intro opengl
 
Correccion evaluacion 2 periodo
Correccion evaluacion 2 periodoCorreccion evaluacion 2 periodo
Correccion evaluacion 2 periodo
 
Cuadrado y cubo de un numero
Cuadrado y cubo de un numeroCuadrado y cubo de un numero
Cuadrado y cubo de un numero
 
Producto notable Geogebra
Producto notable GeogebraProducto notable Geogebra
Producto notable Geogebra
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicio
 
Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12
 
Guia autocad AVA
Guia autocad AVAGuia autocad AVA
Guia autocad AVA
 

Destaque

Waldparktrommel 2012 final print_2
Waldparktrommel 2012 final print_2Waldparktrommel 2012 final print_2
Waldparktrommel 2012 final print_2
michili
 
Pres 15-vacuolas corregir
Pres 15-vacuolas   corregirPres 15-vacuolas   corregir
Pres 15-vacuolas corregir
roberto142
 
Sabado 1 de junio
Sabado 1 de junioSabado 1 de junio
Sabado 1 de junio
pra2581
 
Poyecto final de hortalizas
Poyecto final de hortalizasPoyecto final de hortalizas
Poyecto final de hortalizas
hjdkiskfsduieui
 
Parcial de documentación
Parcial de documentaciónParcial de documentación
Parcial de documentación
SofyaOro18
 
Enfoques en la enseñanza de la lengua
Enfoques en la enseñanza de la lenguaEnfoques en la enseñanza de la lengua
Enfoques en la enseñanza de la lengua
Vero Fzozaya
 
Kennedy iii b_manual_de_gb
Kennedy iii b_manual_de_gbKennedy iii b_manual_de_gb
Kennedy iii b_manual_de_gb
iPages.am
 
Importancia de los objetivos
Importancia de los objetivos Importancia de los objetivos
Importancia de los objetivos
SofyaOro18
 
Tecnología y educación
Tecnología y educaciónTecnología y educación
Tecnología y educación
pverac
 

Destaque (20)

Waldparktrommel 2012 final print_2
Waldparktrommel 2012 final print_2Waldparktrommel 2012 final print_2
Waldparktrommel 2012 final print_2
 
Pres 15-vacuolas corregir
Pres 15-vacuolas   corregirPres 15-vacuolas   corregir
Pres 15-vacuolas corregir
 
Bloque 2
Bloque 2Bloque 2
Bloque 2
 
Sabado 1 de junio
Sabado 1 de junioSabado 1 de junio
Sabado 1 de junio
 
Thomafluid III deutsch
Thomafluid III deutschThomafluid III deutsch
Thomafluid III deutsch
 
Poyecto final de hortalizas
Poyecto final de hortalizasPoyecto final de hortalizas
Poyecto final de hortalizas
 
Parcial de documentación
Parcial de documentaciónParcial de documentación
Parcial de documentación
 
GMA Preservation Portfolio
GMA Preservation PortfolioGMA Preservation Portfolio
GMA Preservation Portfolio
 
Practica 4
Practica 4Practica 4
Practica 4
 
Selbsterkenntnis - Wie Du Dich selbst erkennst und Deine Potentiale lebst
Selbsterkenntnis - Wie Du Dich selbst erkennst und Deine Potentiale lebstSelbsterkenntnis - Wie Du Dich selbst erkennst und Deine Potentiale lebst
Selbsterkenntnis - Wie Du Dich selbst erkennst und Deine Potentiale lebst
 
Enfoques en la enseñanza de la lengua
Enfoques en la enseñanza de la lenguaEnfoques en la enseñanza de la lengua
Enfoques en la enseñanza de la lengua
 
2da parte de la prueba de bloque de Computación PODCAST.
2da parte de la prueba de bloque de Computación PODCAST.2da parte de la prueba de bloque de Computación PODCAST.
2da parte de la prueba de bloque de Computación PODCAST.
 
Kennedy iii b_manual_de_gb
Kennedy iii b_manual_de_gbKennedy iii b_manual_de_gb
Kennedy iii b_manual_de_gb
 
DEBERES
DEBERESDEBERES
DEBERES
 
El valor y sus caracteristicas escenciales
El valor y sus caracteristicas escencialesEl valor y sus caracteristicas escenciales
El valor y sus caracteristicas escenciales
 
Marea Magenta Alcobendas nº 14
Marea Magenta Alcobendas nº 14Marea Magenta Alcobendas nº 14
Marea Magenta Alcobendas nº 14
 
Expo ibague
Expo ibague Expo ibague
Expo ibague
 
Ambiente educacional
Ambiente educacionalAmbiente educacional
Ambiente educacional
 
Importancia de los objetivos
Importancia de los objetivos Importancia de los objetivos
Importancia de los objetivos
 
Tecnología y educación
Tecnología y educaciónTecnología y educación
Tecnología y educación
 

Semelhante a Constructores uso

Clases
ClasesClases
Clases
Lili
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
Axel
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
Alelt2890
 

Semelhante a Constructores uso (20)

Tercera clase de algoritmica ii
Tercera clase de algoritmica iiTercera clase de algoritmica ii
Tercera clase de algoritmica ii
 
Patrones de diseño.pptx
Patrones de diseño.pptxPatrones de diseño.pptx
Patrones de diseño.pptx
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)
 
Programación C++.pdf
Programación C++.pdfProgramación C++.pdf
Programación C++.pdf
 
Clases
ClasesClases
Clases
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
 
Programacion VBA para AutoCad 2007 ejemplos
Programacion VBA para AutoCad 2007 ejemplosProgramacion VBA para AutoCad 2007 ejemplos
Programacion VBA para AutoCad 2007 ejemplos
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Taller 1 6
Taller 1 6Taller 1 6
Taller 1 6
 
Taller 1 6
Taller 1 6Taller 1 6
Taller 1 6
 
Definición de clases en POO
Definición de clases en POODefinición de clases en POO
Definición de clases en POO
 
Tema5
Tema5Tema5
Tema5
 
apuntes-openscad-1.pdf
apuntes-openscad-1.pdfapuntes-openscad-1.pdf
apuntes-openscad-1.pdf
 
AUTOCAD INTERMEDIO UA3.pdf
AUTOCAD INTERMEDIO UA3.pdfAUTOCAD INTERMEDIO UA3.pdf
AUTOCAD INTERMEDIO UA3.pdf
 
El lenguaje C++ (1).ppt
El lenguaje C++ (1).pptEl lenguaje C++ (1).ppt
El lenguaje C++ (1).ppt
 
El lenguaje C++.ppt
El lenguaje C++.pptEl lenguaje C++.ppt
El lenguaje C++.ppt
 
clases y objetos
clases y objetosclases y objetos
clases y objetos
 

Constructores uso

  • 1. CONSTRUCTORES - ¿qué es y para qué sirve? Supongamos que se tiene la clase Punto. Esta clase representa puntos geométricos caracterizados por dos coordenadas: x, y. Además se tiene un método llamado dibujar() y cuya función es mostrar los valores de las coordenadas del punto: class Punto { private: int x, y; public: int getX() { return x; } int getY() { return y; }
  • 2. CONSTRUCTORES - ¿qué es y para qué sirve? void setX(int x) { this.x=x; } void setY(int y) { this.y=y; } void dibujar() { cout<< ̎las coordenadas son ̎ << x << ̎ , ̎<<y; } } Si se desea crear un punto a partir de esta clase y dibujarlo: Punto pt = new Punto(); pt.setX(6); pt.setY(10); pt.dibujar();
  • 3. CONSTRUCTORES - ¿qué es y para qué sirve?  Observe que cada vez que se va a crear un punto para realizar luego una operación, se debe llamar explícitamente a los métodos setX() y setY() para asignar valores a las coordenadas del punto.  Esto además de resultar pesado en caso de tener muchos atributos, puede dar lugar a olvidos y, por tanto que ciertos atributos queden sin inicializarse. Para evitar estos problemas se tienen los constructores.  Un constructor es un método especial que se ejecuta al momento en que se crea un objeto de la clase (cuando se llama al operador new).  Los constructores permiten agregar tareas que deben realizarse al momento de crear un objeto de la clase, como por ejemplo la inicialización de los atributos.
  • 4. CONSTRUCTORES - ¿qué es y para qué sirve?  Al crear un constructor se deben seguir las siguientes reglas:  El nombre del constructor debe ser el mismo que el de la clase.  El constructor no puede tener tipo de devolución, ni siquiera void.  Los constructores se pueden sobrecargar (una clase puede tener más de un constructor) por tanto distintas formas de inicializar sus atributos.  Toda clase debe tener al menos un constructor.
  • 5. CONSTRUCTORES - ¿qué es y para qué sirve?  En el siguiente listado se muestra la clase Punto con dos constructores para la inicialización de las coordenadas. class Punto { private: int x, y; public: Punto (int x, int y) { this.x=x; this.y=y; } Punto(int v) { this.x=v; this.y=v; } ….. }
  • 6. CONSTRUCTORES - ¿qué es y para qué sirve? Así los constructores hacen más cómoda la creación de un objeto Punto, pasándole las coordenadas del Punto al constructor en la instrucción de creación del objeto: Punto pt = new Punto(4, 6); // llama primer constructor pt.dibujar(); Como el constructor almacena los números en x e y, la llamada dibujar() mostrará: las coordenadas son 4 y 6 Si las dos coordenadas tuviesen el mismo valor, se optaría por el segundo constructor. Punto pt = new Punto(5); // x, y toman el valor de 5 pt.dibujar();
  • 7. CONSTRUCTORES – por defecto Según la cuarta regla toda clase debe tener un constructor, ¿pero que pasa si se crea una clase sin constructores? En este caso el compilador añade un constructor a la clase, denominado constructor por defecto: public: NombreClase() { : } Es decir, será un constructor sin parámetros y sin código, per necesario para que la clase pueda compilar.
  • 8. CONSTRUCTORES – por defecto Cuando se creó la clase Punto y no se generó ningún constructor, el compilador implícitamente el siguiente constructor: public: Punto() { : } Sin él no será posible crear objetos Punto de la forma: Punto pt=new Punto(); Si se genera un objeto cuya clase tenga parámetros y sólo se cuente con un constructor por defecto se provocará un error de compilación.
  • 9. CONSTRUCTORES – por defecto Es importante tener en cuenta que al desarrollar la clase, además de poder inicializar atributos en la creación de los objetos, se desea crear objetos de la clase sin ningún tipo de inicialización, se debe codificar el constructor por defecto de la clase. class Punto { private: int x, y; public: Punto () { //constructor por defecto } Punto(int x, int y) { this.x=0; this.y=0; } Punto(int v) { this.x=0; this.y=0; } ….. }
  • 10. CONSTRUCTORES – por defecto Es importante tener en cuenta que al desarrollar la clase, además de poder inicializar atributos en la creación de los objetos, se desea crear objetos de la clase sin ningún tipo de inicialización, se debe codificar el constructor por defecto de la clase. class Punto { private: int x, y; public: Punto () { //constructor por defecto } Punto(int x, int y) { this.x=x; this.y=y; } Punto(int v) { this.x=v; this.y=v; } ….. }