• Ir al contenido
  • Ir a la navegación
  • Ir al buscador
 
Infoudo
ING English
Directorio WAP para móvil, Tablet, iPhone o Smartphone

Centro de Noticias de la Universidad de Oriente

Categorías

 

Inicio  |  Contacto  |  Posts  |  TIENDA PUBLISHOP  |  Sobre nosotros  |  Registro y Planes  |  Pagos  |  Donaciones

Ver Código QR de esta página

Campaña #AyudemosaYuli  |  Campaña #AyudemosaStephany.  |  ¿Interesado(a) en cursos y resolución de ejercicios de materias prácticas? Para más información, contáctenos por: Teléfono: +58 (412) - 8226575. WhatsApp y Telegram: +58 (426) - 6836955 o escriba al correo: [email protected]. Únete al grupo: SISTEMAS (UDOMO).

[»] **Musica para tu celular

WEB TRANSLATOR

LINK for English Language

Use this link for translate into English


+ Buscar en InfoUDO

 

Constructor de la clase

Tweet
 

lunes julio 11, 2016

En C++ podemos definir un método que se ejecute inicialmente y en forma automática. Este método se lo llama constructor.

El constructor tiene las siguientes características:

  • Tiene el mismo nombre de la clase.
  • Es el primer método que se ejecuta.
  • Se ejecuta en forma automática.
  • No puede retornar datos.
  • Se ejecuta una única vez.
  • Un constructor tiene por objetivo inicializar atributos.

Problema 1:

Se desea guardar los sueldos de 5 operarios en un vector. Realizar la carga del vector en el constructor.

Programa:

#include<iostream>

using namespace std;

class Operarios {
private:
    float sueldos[5];
public:
    Operarios();
    void imprimir();
};

Operarios:perarios()
{
    cout <<"Carga de sueldos." <<"";
    for(int f=0;f < 5;f++)
    {
        cout <<"Ingrese el sueldo:";
        cin >>sueldos[f];
    }
}

void Operarios::imprimir()
{
    for(int f = 0; f < 5; f++)
    {
        cout <<sueldos[f] <<"";;
    }
    cin.get();
    cin.get();
}

void main()
{
    Operarios op;
    op.imprimir();
}

Este proyecto lo puede descargar en un zip desde este enlace :

Constructor1.zip

Como podemos ver es el mismo problema que resolvimos cuando vimos vectores. La diferencia es que hemos sustituido el método cargar con el constructor:

Operarios:perarios()
{
    cout <<"Carga de sueldos." <<"";
    for(int f=0;f < 5;f++)
    {
        cout <<"Ingrese el sueldo:";
        cin >>sueldos[f];
    }
}

Como la clase se llama Operarios el constructor tiene el mismo nombre, no disponemos la palabra clave void ya que el constructor no puede retornar datos.

La ventaja de plantear un constructor en lugar de definir un método con cualquier nombre es que se llamará en forma automática cuando se defina un objeto de esta clase:

    Operarios op;   //se esta llamando al constructor en esta línea

Cuando se crea el objeto op se llama al método constructor.

Finalmente llamamos al método imprimir con la sintaxis que ya conocemos:

    op.imprimir();

Problema 2:

Plantear una clase llamada Alumno y definir como atributos su nombre y su edad. En el constructor realizar la carga de datos. Definir otros dos métodos para imprimir los datos ingresados y un mensaje si es mayor o no de edad (edad >=18)

Programa:

#include<iostream>

using namespace std;

class Alumno {
private:
    char nombre[40];
    int edad;
public:
    Alumno();
    void imprimir();
    void esMayorEdad();
};

Alumno::Alumno()
{
    cout <<"Ingrese nombre:";
    cin.getline(nombre,40);
    cout <<"Ingrese la edad:";
    cin >>edad;
}

void Alumno::imprimir()
{
    cout <<"Nombre:" <<nombre <<"";
    cout <<"Edad:" <<edad <<"";
}

void Alumno::esMayorEdad()
{
    if (edad >= 18) 
    {
        cout <<"es mayor de edad.";
    }
    else 
    {
        cout <<"no es mayor de edad.";
    }
    cin.get();
    cin.get();
}

void main()
{
    Alumno alumno1;
    alumno1.imprimir();
    alumno1.esMayorEdad();
}

Este proyecto lo puede descargar en un zip desde este enlace :

Constructor2.zip

Declaramos la clase Alumno, sus dos atributos y definimos el constructor con el mismo nombre de la clase:

class Alumno {
private:
    char nombre[40];
    int edad;
public:
    Alumno();
    void imprimir();
    void esMayorEdad();
};

En el constructor realizamos la carga de los dos atributos por teclado:

Alumno::Alumno()
{
    cout <<"Ingrese nombre:";
    cin.getline(nombre,40);
    cout <<"Ingrese la edad:";
    cin >>edad;
}

En la main el constructor se llama en forma automática cuando definimos un objeto de la clase Alumno:

void main()
{
    Alumno alumno1;

Los otros dos métodos deben llamarse por su nombre y en el orden que necesitemos:

    alumno1.imprimir();
    alumno1.esMayorEdad();

Problema 3:

Plantear una clase llamada Moneda. Al constructor llega como parámetro el valor de la moneda (1,5,50 o 100) Definir luego dos objetos de esta clase con valores de moneda 5 y 50.

Programa:

#include<iostream>

using namespace std;

class Moneda {
private:
    int valor;
public:
    Moneda(int v);
    void imprimir();
};

Moneda::Moneda(int v)
{
    valor=v;
}

void Moneda::imprimir()
{
    cout <<"Valor de la moneda:" <<valor <<"";
}

void main()
{
    Moneda moneda1(5);
    Moneda moneda2(50);
    moneda1.imprimir();
    moneda2.imprimir();
    cin.get();
}

Este proyecto lo puede descargar en un zip desde este enlace :

Constructor3.zip

Como hemos dicho un constructor no puede retornar dato, pero si puede recibir uno o más parámetros, en este caso el constructor recibe un entero (hay un atributo llamado valor que se inicializa en el constructor con el parámetro v):

class Moneda {
private:
    int valor;
public:
    Moneda(int v);
    void imprimir();
};

Moneda::Moneda(int v)
{
    valor=v;
}

Ahora cuando definimos un objeto de la clase Moneda debemos pasar un parámetro entero en el momento de definir el objeto:

    Moneda moneda1(5);

Como este problema requiere definir dos objetos de la clase moneda la función main completa es:

void main()
{
    Moneda moneda1(5);
    Moneda moneda2(50);
    moneda1.imprimir();
    moneda2.imprimir();
    cin.get();
}

Si el constructor tiene un solo parámetro podemos utilizar la siguiente sintaxis alternativa para definir el objeto y que se llame el constructor:

	Moneda moneda1=5;
  1. Confeccionar una clase que represente un empleado. Definir como atributos su nombre y su sueldo. En el constructor cargar los atributos y luego en otro método imprimir sus datos y por último uno que imprima un mensaje si debe pagar impuestos (si el sueldo supera a 3000)
  2. Implementar la clase Operaciones. Al constructor llegan dos enteros que deben utilizarse en los métodos para calcular su suma, resta, multiplicación y división. imprimir dichos resultados.
Solución
#include<iostream>

using namespace std;

class EmpleadoFabrica {
private:
    char nombre[40];
    float sueldo;
public:
    EmpleadoFabrica();
    void imprimir();
    void pagaImpuestos();
};

EmpleadoFabrica::EmpleadoFabrica()
{
    cout <<"Ingrese el nombre del empleado:";
    cin.getline(nombre,40);
    cout <<"Ingrese su sueldo:";
    cin >>sueldo;
}

void EmpleadoFabrica::imprimir()
{
    cout <<"Nombre:" <<nombre <<"";
    cout <<"Sueldo"  <<sueldo <<"";
}

void EmpleadoFabrica::pagaImpuestos() 
{
    if (sueldo > 3000)
    {
        cout <<"Debe abonar impuestos";
    }
    else 
    {
        cout <<"No paga impuestos";
    }
    cin.get();
    cin.get();
}
    
void main()
{
    EmpleadoFabrica empleado1;
    empleado1.imprimir();
    empleado1.pagaImpuestos();
}

Este proyecto lo puede descargar en un zip desde este enlace :Constructor4.zip

#include<iostream> using namespace std; class Operaciones { private: int valor1,valor2; public: Operaciones(int v1,int v2); void sumar(); void restar(); void multiplicar(); void dividir(); }; Operaciones:peraciones(int v1,int v2) { valor1=v1; valor2=v2; } void Operaciones::sumar() { int suma; suma=valor1+valor2; cout <<"La suma es:" <<suma <<""; } void Operaciones::restar() { int resta; resta=valor1-valor2; cout <<"La resta es:" <<resta <<""; } void Operaciones::multiplicar() { int multi; multi=valor1*valor2; cout <<"El producto es:" <<multi <<""; } void Operaciones::dividir() { int division; division=valor1/valor2; cout <<"La division es:" <<division <<""; } void main() { Operaciones operaciones1(100,50); operaciones1.sumar(); operaciones1.restar(); operaciones1.multiplicar(); operaciones1.dividir(); cin.get(); }

Este proyecto lo puede descargar en un zip desde este enlace :Constructor5.zip

— @INFOUDO.OFICIAL

— Síguenos en Facebook@INFOUDO.OFICIAL

Categorías: #C++, #


[0] Atrás | Directorio
« Inicio
Apps Infoudo
Apps Infoudo ¡Descarga el icono directo en el menú de tu equipo!
[»] Las mejores Apps para tu celular
[»] Imágenes Gratis


Comenta o lee lo que otros opinan

COMPÁRTELO:

Indica que te gusta y comparte

Me Gusta :)Facebook Tuiteame :)Twitter .WhatsApp .Telegram . LinkedIn

También te puede interesar:

NOCIONES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Material de Apoyo del Curso de Programación - Lenguaje C++ - Periodo (Feb - May) del año en curso
Parámetros por valor y por referencia de objetos
Parámetros por valor y por referencia de datos simples
Métodos constantes (const)
Parámetros de un método constante (const)
Definición de constantes (const)
Directiva #define
Puntero this
Métodos estáticos de una clase


« Estructura de datos tipo matriz  |  Matrices y vectores paralelos »
 
Apps Infoudo
 
Buscador:
Powered by Google:


Web móvil
Imágenes
La Web

 

Síguenos por RSS


Puedes leerlos mediante el navegador Firefox, lectores de noticias en la computadora o el móvil o usando el servicio de Feedburner de Google para recibir las notificaciones por correo electrónico.
RSS - Suscribirse usando Feedburner de Google

email Recibir las nuevas publicaciones de Infoudo por email

Atom


»Ir a URL
.....
Registra Gratis Tu Negocio
....
Sugerir un nuevo sitio WAP

...
¡Bloguea Ya!

..
Registro de Profesionales(Abogados, escritores, doctores, licenciados, ingenieros, etc.)
.
Soporte

Síguenos en las redes sociales

Síguenos en Facebook facebook.com/INFOUDO.OFICIAL Síguenos en Twitter @infoudomon Síguenos en Instagram @infoudooficial Síguenos en Telegram t.me/Infoudooficial
Síguenos en Facebook facebook.com/tuinfou Síguenos en Twitter @infoudomonagas
Síguenos en WhatsApp INFO UDO Síguenos en YouTube youtube.com/@infoudooficial
Síguenos en Facebook facebook.com/SergioAlemanFans Síguenos en Twitter @SergioAleman1 Síguenos en Instagram @sergioalemanfans
Síguenos en WhatsApp wa.me/qr/Y7Q232VLZPR5O1 Síguenos en Tiktok @sergioalemanoficial Síguenos en Tiktok @sergioalemanfans
Síguenos en Telegram t.me/SergioAlemanOficial Síguenos en YouTube youtube.com/@sergioaleman
Síguenos en Facebook facebook.com/boludooficial Síguenos en Twitter @bolUDOoficial Síguenos en Instagram @boludooficial Síguenos en Telegram t.me/Boludooficial
Síguenos en WhatsApp BolUDOoficial Síguenos en YouTube youtube.com/@boludo.oficial

Mis cuentas sociales

FB
Twitter
Pinterest
Instagram
Otras

Móvil: (0426 683 6955 - 0412 8226575) - E-mail: [email protected] - [email protected] - WhatsApp: +58 (0426) 683.69.55


Copyscape
Volver arriba

Protocolo  |  Mapa del Sitio  |  Report Abuse - DMCA  |  Términos y Condiciones  |  Ayuda  |  Privacidad de Datos  |  Política de Cookies  |  Reportar un bug  |  Licencia: CC BY-NC-ND 3.0

Copyright ©2023 Infoudo. Todos los derechos reservados. Diseñado y Desarrollado por Sergio Alemán Mi perfil en GitHub


SUBIR