SlideShare una empresa de Scribd logo
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
clase, denominado constructor por defecto:

constructor

a

la

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;
}
…..
}

Más contenido relacionado

La actualidad más candente

Graficando funciones cuadraticas en geogebra
Graficando funciones cuadraticas en geogebraGraficando funciones cuadraticas en geogebra
Graficando funciones cuadraticas en geogebra
Kevin Kef Calderon Gamarra
 
Introduccion a awt
Introduccion a awtIntroduccion a awt
Introduccion a awt
Ricardo Garcia
 
Intro opengl
Intro openglIntro opengl
Intro opengl
sispro
 
Correccion evaluacion 2 periodo
Correccion evaluacion 2 periodoCorreccion evaluacion 2 periodo
Correccion evaluacion 2 periodo
Sebastian Montañez
 
Cuadrado y cubo de un numero
Cuadrado y cubo de un numeroCuadrado y cubo de un numero
Cuadrado y cubo de un numero
Robert Wolf
 
Producto notable Geogebra
Producto notable GeogebraProducto notable Geogebra
Producto notable Geogebra
insutecvirtual
 
Arreglo bidimensional ejercicio
Arreglo bidimensional ejercicioArreglo bidimensional ejercicio
Arreglo bidimensional ejercicio
KeevynMoreno
 
Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12
jack_corvil
 
Guia autocad AVA
Guia autocad AVAGuia autocad AVA
Guia autocad AVA
LORENA CARCHIDIO
 

La actualidad más candente (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
 

Destacado

Support services
Support services Support services
Support services
Tg Hanis Wahida
 
Contabilidad financiera I
Contabilidad financiera IContabilidad financiera I
Contabilidad financiera I
Eliza_gr9124
 
Ochsenhausen
OchsenhausenOchsenhausen
Ochsenhausen
institut2012
 
PODCAST
PODCASTPODCAST
PODCAST
miishellerios
 
Pleno marzo 2014 - Moción sobre la devolución del céntimo sanitario
Pleno marzo 2014 - Moción sobre la devolución del céntimo sanitarioPleno marzo 2014 - Moción sobre la devolución del céntimo sanitario
Pleno marzo 2014 - Moción sobre la devolución del céntimo sanitario
Unión Progreso y Democracia Alcobendas
 
Las tics
Las ticsLas tics
Las tics
marcecarlos
 
Grandes Fracasos Tecnologicos
Grandes Fracasos TecnologicosGrandes Fracasos Tecnologicos
Grandes Fracasos Tecnologicos
joalbachi
 
Proyecto de Ley Orgánica de Movilidad Humana
Proyecto de Ley Orgánica de Movilidad HumanaProyecto de Ley Orgánica de Movilidad Humana
Proyecto de Ley Orgánica de Movilidad Humana
mariangel1982
 
Presentacion Delegacion de Corea Sobre Oportunidades en Paraguay
Presentacion Delegacion de Corea Sobre Oportunidades en ParaguayPresentacion Delegacion de Corea Sobre Oportunidades en Paraguay
Presentacion Delegacion de Corea Sobre Oportunidades en Paraguay
GlobalPeaceFoundation
 
¿Que es un Wiki?
¿Que es un Wiki?¿Que es un Wiki?
¿Que es un Wiki?
ingsistvazquez
 
Citas y bibliografia 11
Citas y bibliografia 11Citas y bibliografia 11
Citas y bibliografia 11
Cristhian Riofrio
 
Dossier koshukai shinjo uechi agosto
Dossier koshukai shinjo uechi agostoDossier koshukai shinjo uechi agosto
Dossier koshukai shinjo uechi agosto
elmunu
 
Puerto vallarta
Puerto vallartaPuerto vallarta
Puerto vallarta
MonserrathRuiz12
 
Introducción a la seguridad y protección en excel
Introducción a la seguridad y protección en excelIntroducción a la seguridad y protección en excel
Introducción a la seguridad y protección en excel
Cristhian Riofrio
 
Ost 1 00592 72
Ost 1 00592 72Ost 1 00592 72
Ost 1 00592 72unigujjar
 
Tarification stam jort 1999
Tarification stam jort 1999Tarification stam jort 1999
Tarification stam jort 1999Mehdi Maatoug
 
Katherine parrau
Katherine parrauKatherine parrau
Katherine parrau
erikpaurre
 
Nachwuchsmedizner gesucht! Eine Kampagne der KV Hessen
Nachwuchsmedizner gesucht! Eine Kampagne der KV HessenNachwuchsmedizner gesucht! Eine Kampagne der KV Hessen
Nachwuchsmedizner gesucht! Eine Kampagne der KV Hessen
KV Hessen
 
Psicologia
PsicologiaPsicologia
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Fortalecer las capacidades y...
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Fortalecer las capacidades y...UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Fortalecer las capacidades y...
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Fortalecer las capacidades y...
CarmitaCT
 

Destacado (20)

Support services
Support services Support services
Support services
 
Contabilidad financiera I
Contabilidad financiera IContabilidad financiera I
Contabilidad financiera I
 
Ochsenhausen
OchsenhausenOchsenhausen
Ochsenhausen
 
PODCAST
PODCASTPODCAST
PODCAST
 
Pleno marzo 2014 - Moción sobre la devolución del céntimo sanitario
Pleno marzo 2014 - Moción sobre la devolución del céntimo sanitarioPleno marzo 2014 - Moción sobre la devolución del céntimo sanitario
Pleno marzo 2014 - Moción sobre la devolución del céntimo sanitario
 
Las tics
Las ticsLas tics
Las tics
 
Grandes Fracasos Tecnologicos
Grandes Fracasos TecnologicosGrandes Fracasos Tecnologicos
Grandes Fracasos Tecnologicos
 
Proyecto de Ley Orgánica de Movilidad Humana
Proyecto de Ley Orgánica de Movilidad HumanaProyecto de Ley Orgánica de Movilidad Humana
Proyecto de Ley Orgánica de Movilidad Humana
 
Presentacion Delegacion de Corea Sobre Oportunidades en Paraguay
Presentacion Delegacion de Corea Sobre Oportunidades en ParaguayPresentacion Delegacion de Corea Sobre Oportunidades en Paraguay
Presentacion Delegacion de Corea Sobre Oportunidades en Paraguay
 
¿Que es un Wiki?
¿Que es un Wiki?¿Que es un Wiki?
¿Que es un Wiki?
 
Citas y bibliografia 11
Citas y bibliografia 11Citas y bibliografia 11
Citas y bibliografia 11
 
Dossier koshukai shinjo uechi agosto
Dossier koshukai shinjo uechi agostoDossier koshukai shinjo uechi agosto
Dossier koshukai shinjo uechi agosto
 
Puerto vallarta
Puerto vallartaPuerto vallarta
Puerto vallarta
 
Introducción a la seguridad y protección en excel
Introducción a la seguridad y protección en excelIntroducción a la seguridad y protección en excel
Introducción a la seguridad y protección en excel
 
Ost 1 00592 72
Ost 1 00592 72Ost 1 00592 72
Ost 1 00592 72
 
Tarification stam jort 1999
Tarification stam jort 1999Tarification stam jort 1999
Tarification stam jort 1999
 
Katherine parrau
Katherine parrauKatherine parrau
Katherine parrau
 
Nachwuchsmedizner gesucht! Eine Kampagne der KV Hessen
Nachwuchsmedizner gesucht! Eine Kampagne der KV HessenNachwuchsmedizner gesucht! Eine Kampagne der KV Hessen
Nachwuchsmedizner gesucht! Eine Kampagne der KV Hessen
 
Psicologia
PsicologiaPsicologia
Psicologia
 
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Fortalecer las capacidades y...
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Fortalecer las capacidades y...UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Fortalecer las capacidades y...
UTE_Carmen del Rocio Calderon, Gonzalo Remache, "Fortalecer las capacidades y...
 

Similar a uso Constructores

Tercera clase de algoritmica ii
Tercera clase de algoritmica iiTercera clase de algoritmica ii
Tercera clase de algoritmica ii
Carlos Javier Majerhua
 
Patrones de diseño.pptx
Patrones de diseño.pptxPatrones de diseño.pptx
Patrones de diseño.pptx
gigoallspam1
 
Programación C++.pdf
Programación C++.pdfProgramación C++.pdf
Programación C++.pdf
Daniel Carpio Contreras
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)
claudiocj7
 
Clases
ClasesClases
Clases
Lili
 
Programacion VBA para AutoCad 2007 ejemplos
Programacion VBA para AutoCad 2007 ejemplosProgramacion VBA para AutoCad 2007 ejemplos
Programacion VBA para AutoCad 2007 ejemplos
jjcontras
 
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
 
C++
C++C++
Programación en c++
Programación en c++Programación en c++
Cplus
CplusCplus
Taller 1 6
Taller 1 6Taller 1 6
Taller 1 6
Taller 1 6Taller 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
Gloria Isabel Bautista Lasprilla
 
Tema5
Tema5Tema5
apuntes-openscad-1.pdf
apuntes-openscad-1.pdfapuntes-openscad-1.pdf
apuntes-openscad-1.pdf
Juan Carlos Viana Clavijo
 
El lenguaje C++ (1).ppt
El lenguaje C++ (1).pptEl lenguaje C++ (1).ppt
El lenguaje C++ (1).ppt
JOSECASHUUG
 
El lenguaje C++.ppt
El lenguaje C++.pptEl lenguaje C++.ppt
El lenguaje C++.ppt
John Harold Bonilla
 
clases y objetos
clases y objetosclases y objetos
clases y objetos
Iván Timekool
 
AUTOCAD INTERMEDIO UA3.pdf
AUTOCAD INTERMEDIO UA3.pdfAUTOCAD INTERMEDIO UA3.pdf
AUTOCAD INTERMEDIO UA3.pdf
RaquelSalasRipas
 

Similar a uso Constructores (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
 
Programación C++.pdf
Programación C++.pdfProgramación C++.pdf
Programación C++.pdf
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)
 
Clases
ClasesClases
Clases
 
Programacion VBA para AutoCad 2007 ejemplos
Programacion VBA para AutoCad 2007 ejemplosProgramacion VBA para AutoCad 2007 ejemplos
Programacion VBA para AutoCad 2007 ejemplos
 
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
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Cplus
CplusCplus
Cplus
 
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
 
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
 
AUTOCAD INTERMEDIO UA3.pdf
AUTOCAD INTERMEDIO UA3.pdfAUTOCAD INTERMEDIO UA3.pdf
AUTOCAD INTERMEDIO UA3.pdf
 

uso Constructores

  • 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 clase, denominado constructor por defecto: constructor a la 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; } ….. }