añadido parte2

This commit is contained in:
Pablo
2025-11-09 23:04:57 +01:00
parent 44826a2687
commit b4ab0acef3
17 changed files with 466 additions and 0 deletions

31
parte2/include/Cliente.h Normal file
View File

@@ -0,0 +1,31 @@
#ifndef CLIENTE_H
#define CLIENTE_H
#include <iostream> //cin, cout
#include "Fecha.h"
using namespace std;
//SI FALTA ALGUN METODO O FUNCION A<>ADIRLO...
class Cliente {
long int dni;
char *nombre;
Fecha fechaAlta;
public:
Cliente(long int d, const char *nom, Fecha f);
virtual ~Cliente();
Cliente& operator=(const Cliente& c);
long int getDni() const { return this->dni; }
const char* getNombre() const { return nombre; } //VIP devolver un puntero constante para evitar que desde el main() se puede modificar el nombre
Fecha getFecha() const { return fechaAlta; }
void setNombre(const char *nom);
void setFecha(Fecha f);
bool operator==(const Cliente& c) const; // if (c1 ===c2)
};
ostream& operator<<(ostream &s, const Cliente &c); //funcion no amiga de la clase
#endif // CLIENTE_H

33
parte2/include/Contrato.h Normal file
View File

@@ -0,0 +1,33 @@
#ifndef CONTRATO_H
#define CONTRATO_H
#include <iostream> //cin, cout
#include "Fecha.h"
using namespace std;
class Contrato {
static int contador;
const int idContrato;
long int dniContrato;
Fecha fechaContrato;
public:
Contrato(long int dni, Fecha f);
virtual ~Contrato();
//Contrato(const Contrato& c); //<2F>es necesario? pensar y reflexionad
//Contrato& operator=(const Contrato& c); //no es necesario y ademas no puede ser usado porque Contrato tiene un
//atributo constante idContrato que no puede modificarse
//no se puede usar el = en el main con objetos Contrato
int getIdContrato() const { return this->idContrato; }
long int getDniContrato() const { return this->dniContrato; }
Fecha getFechaContrato() const { return this->fechaContrato; }
void setFechaContrato(Fecha f) { this->fechaContrato=f; }
void setDniContrato(long int dni) { this->dniContrato=dni; }
void ver() const;
};
ostream& operator<<(ostream &s, const Contrato &c);
#endif // CONTRATO_H

View File

@@ -0,0 +1,39 @@
#ifndef CONTRATOMOVIL_H
#define CONTRATOMOVIL_H
#include <iostream> //cin, cout
#include "Fecha.h"
#include "Contrato.h"
using namespace std;
class ContratoMovil: public Contrato {
float precioMinuto;
int minutosHablados;
char *nacionalidad;
public:
ContratoMovil(long int dni, Fecha f, float p, int m, char *nac);
virtual ~ContratoMovil(); //necesario porque hay un atributo puntero char*
ContratoMovil(const ContratoMovil& c); //necesario porque hay un atributo puntero char*
//ContratoMovil& operator=(const ContratoMovil& c); //necesario si en el main pensamos usar = para asignar
//si NUNCA vamos a usar = en el main no hace falta implementarlo
//como ContratoMovil hereda un atributo constante idContrato que no puede modificarse
//no podemos usar el = en el main() y por tanto no lo implementamos
float getPrecioMinuto() const { return this->precioMinuto; }
int getMinutosHablados() const { return this->minutosHablados; }
const char* getNacionalidad() const { return this->nacionalidad; } //IMPORTANTE devuelve un puntero constante
void setPrecioMinuto(float precio) { this->precioMinuto=precio; }
void setMinutosHablados(int m) { this->minutosHablados=m; }
void setNacionalidad(char* nac);
void ver() const;
float factura() const;
};
ostream& operator<<(ostream &s, const ContratoMovil &c);
#endif // CONTRATOMOVIL_H

View File

@@ -0,0 +1,32 @@
#ifndef CONTRATOTP_H
#define CONTRATOTP_H
#include <iostream> //cin, cout
#include "Fecha.h"
#include "Contrato.h"
using namespace std;
class ContratoTP: public Contrato {
static int minutosTP;
static float precioTP;
int minutosHablados;
static const float precioExcesoMinutos;
public:
ContratoTP(long int dni, Fecha f, int m);
//virtual ~ContratoTP(); //<2F>es necesario? pensar y reflexionad
//ContratoTP(const ContratoTP& c); //<2F>es necesario? pensar y reflexionad
//ContratoTP& operator=(const ContratoTP& c); //<2F>es necesario? pensar y reflexionad
static int getLimiteMinutos() { return ContratoTP::minutosTP; }
static float getPrecio() { return ContratoTP::precioTP; }
static void setTarifaPlana(int m, float p); //el el .cpp se pone la cabecera sin la palabra static
//A RELLENAR POR EL ALUMNO...
};
ostream& operator<<(ostream &s, const ContratoTP &c);
#endif // CONTRATOTP_H

31
parte2/include/Fecha.h Normal file
View File

@@ -0,0 +1,31 @@
#ifndef FECHA_H
#define FECHA_H
#include <iostream> //cin, cout
using namespace std;
//SI FALTA ALGUN METODO O FUNCION A<>ADIRLO...
class Fecha {
int dia;
int mes, anio;
public:
Fecha(const int &dia, const int &m, const int &anio);
//virtual ~Fecha(); //NO HACE FALTA
//Fecha(const Fecha &f); //NO HACE FALTA: EL QUE GENERA EL COMPILADOR FUNCIONA BIEN YA QUE NO HAY PUNTEROS
int getDia() const { return dia; }
int getMes() const { return this->mes; }
int getAnio() const { return this->anio; }
void setFecha(const int &dia, const int &mes, const int &a);
void ver() const;
bool bisiesto() const;
Fecha operator++(); //++f
Fecha operator++(int i); //f++
Fecha operator+(const int &i) const; //f+5
friend Fecha operator+(const int &i, const Fecha &f); //const por seguridad y & por velocidad
friend ostream& operator<<(ostream& os, const Fecha& f);
};
Fecha operator+(const int &i, const Fecha &f); //const por seguridad y & por velocidad
#endif // FECHA_H