Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @brief Herencia utilizando archivos
- * @author David Castro Salinas
- * @date 10/2020
- * @note Ejercicio para completar por los estudiantes de Herencia utilizando archivos de header(.h cabecera) e implementación(.cpp)
- */
- //**************************************************************/
- // archivo main.cpp /
- //**************************************************************/
- #include <iostream>
- using namespace std;
- #include "Persona.h"
- int main()
- {
- Persona p;
- p.ver();
- cout <<"\nfecha: ";
- p.setFecha(5,8,2020);
- p.verFecha();
- cout <<"\nfecha: ";
- Persona diego(1,3,1980);
- diego.verFecha();
- Persona pedrito(2,6,1998, 1313,'K');
- pedrito.verRut();
- return 0;
- }
- //**************************************************************/
- // archivo Persona.h /
- //**************************************************************/
- #ifndef PERSONA_H_INCLUDED
- #define PERSONA_H_INCLUDED
- #include "Fecha.h"
- #include "Rut.h"
- class Persona: public Fecha, public Rut{
- public:
- //constructor parametrizado
- Persona(string n="") : nombre(n){
- }
- //constructor parametrizado que llama a otro constructor e inicializa la clase heredada
- Persona(int d, int m, int a) : Fecha(d, m, a){
- nombre ="";
- }
- //constructor parametrizado que llama a dos constructores e inicializa las clases heredadas
- Persona(int d, int m, int a, int r, char c) : Fecha(d, m, a), Rut(r, c){
- nombre ="";
- }
- //constructor parametrizado que llama a otro constructor e inicializa la clase heredada e inicializa un atributo propio de la clase
- Persona(int d, int m, int a, string s) : Fecha(d, m, a), nombre(s){
- }
- //constructor parametrizado que llama a dos constructores e inicializa las clases heredadas e inicializa un atributo propio de la clase
- Persona(int d, int m, int a, int r, char c, string s) : Fecha(d, m, a), Rut(r, c), nombre(s){
- }
- void ver();
- void mostrarElRut();
- private:
- string nombre;
- };
- #endif // PERSONA_H_INCLUDED
- //**************************************************************/
- // archivo Persona.cpp /
- //**************************************************************/
- //incluíomos el archivo de encabezado o header
- #include "Persona.h"
- #include "iostream"
- void Persona::ver(){
- std::cout << "ejemplo de clase persona";
- }
- //accedemos al rut interno
- void Persona::mostrarElRut(){
- Rut::ver();
- }
- //**************************************************************/
- // archivo Fecha.h /
- //**************************************************************/
- #ifndef FECHA_H_INCLUDED
- #define FECHA_H_INCLUDED
- #include "string"
- #include "iostream"
- /**
- * @class Fecha
- * @brief Clase incompleta, se debe incluir las validaciones
- */
- using namespace std;
- class Fecha {
- public:
- Fecha();
- Fecha(int _d, int _m, int _a): dia(_d), mes(_m), anho(_a){}
- void setAnho(int);
- void setMes(int);
- void setDia(int);
- int getAnho();
- int getMes();
- int getDia();
- bool isValida(Fecha);
- bool setFechaValidar(Fecha);
- int getFechaAAAAMMDD();
- void setFecha(Fecha );
- string toString();
- string toString(string);
- bool sonIguales(const Fecha &);
- void setFecha(int, int, int);
- void ver();
- void verFecha();
- private:
- int dia;
- int mes;
- int anho;
- };
- #endif // FECHA_H_INCLUDED
- //**************************************************************/
- // archivo Fecha.cpp /
- //**************************************************************/
- #include "Fecha.h"
- #include "iostream"
- #include "ctime"
- using namespace std;
- Fecha::Fecha(){
- time_t t = time(NULL); //#include <ctime>
- tm* timePtr = localtime(&t);
- anho = timePtr->tm_year+1900;
- mes = timePtr->tm_mon+1;
- dia = timePtr->tm_mday;
- }
- void Fecha::setAnho(int _valor){
- this->anho = _valor;
- }
- void Fecha::setMes(int _valor){
- this->mes = _valor;
- }
- void Fecha::setDia(int _valor){
- this->dia = _valor;
- }
- int Fecha::getAnho(){
- return this->anho;
- }
- int Fecha::getMes(){
- return this->mes;
- }
- int Fecha::getDia(){
- return this->dia;
- }
- void Fecha::ver() {
- cout <<toString("/");
- }
- void Fecha::verFecha() {
- cout <<toString("/");
- }
- bool Fecha::isValida(Fecha fechaValidar){
- if(fechaValidar.getAnho() > 3000 || fechaValidar.getAnho() < 1900)
- return false;
- if(fechaValidar.getMes()>12 || fechaValidar.getMes() < 1)
- return false;
- if(fechaValidar.getMes() == 2 && fechaValidar.getDia() > 29)
- return false;
- if(fechaValidar.getDia() > 31 || fechaValidar.getDia() < 0)
- return false;
- //pendiente validar bisiestos
- return true;
- }
- bool Fecha::setFechaValidar(Fecha fechaIngresar){
- if(!this->isValida(fechaIngresar)) {
- cout <<"\nfecha inválida\n";
- return false;
- }
- this->dia = fechaIngresar.getDia();
- this->mes = fechaIngresar.getMes();
- this->anho = fechaIngresar.getAnho();
- return true;
- }
- int Fecha::getFechaAAAAMMDD(){
- return getAnho()*10000+getMes()*100+getDia();
- }
- void Fecha::setFecha(Fecha _fecha) {
- setDia(_fecha.getDia());
- setMes(_fecha.getMes());
- setAnho(_fecha.getAnho());
- }
- string Fecha::toString(string separador) {
- string fecha = "";
- if(getDia() < 10)
- fecha = "0";
- fecha += to_string(getDia()) + separador;
- if(getMes() < 10)
- fecha += '0';
- fecha += to_string(getMes()) + separador;
- fecha += to_string(getAnho());
- return fecha;
- }
- string Fecha::toString() {
- return toString("_");
- }
- bool Fecha::sonIguales(const Fecha &fechaOther){
- return (this->dia == fechaOther.dia )
- &&(this->mes == fechaOther.mes )
- &&(this->anho== fechaOther.anho );
- }
- void Fecha::setFecha(int _d, int _m, int _a){
- dia =_d;
- mes = _m;
- anho = _a;
- }
- //**************************************************************/
- // archivo Rut.h /
- //**************************************************************/
- #ifndef RUT_H_INCLUDED
- #define RUT_H_INCLUDED
- class Rut{
- public:
- Rut();
- Rut(int a, char c);
- void ver();
- void verRut();
- };
- #endif // RUT_H_INCLUDED
- //**************************************************************/
- // archivo Rut.cpp /
- //**************************************************************/
- #include "Rut.h"
- #include "iostream"
- Rut::Rut(){
- }
- Rut::Rut(int a, char c){
- }
- void Rut::ver(){
- std::cout <<"\nEste es el rut solo"<<std::endl;
- }
- void Rut::verRut(){
- std::cout <<"\nEste es el rut"<<std::endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement