#include <iostream>
using namespace std;
class Perro { //<---Esto es la idea de lo que es un perro =D
//La parte publica de Perro
public:
//Metodos constructores
//Costructor por defecto
Perro( int unaEdad = 0, int unPeso = 0, string unNombre = "No tiene nombre", string unaRaza = "No tiene raza" ){
suEdad = unaEdad;
suPeso = unPeso;
suNombre = unNombre;
suRaza = unaRaza;
}
//Metodos destructores
~Perro(){} //destructor por defecto
//metodos geters "obtener"
int getEdad ()const { return suEdad; }
int getPeso ()const { return suPeso; }
string getNombre()const { return suNombre; }
string getRaza ()const { return suRaza; }
//Metodos seters "entrada de datos"
void setEdad ( int unaEdad ) { suEdad = unaEdad; }
void setPeso ( int unPeso ) { suPeso = unPeso; }
void setNombre( string unNombre ) { suNombre = unNombre; }
void setRaza ( string unaRaza ) { suRaza = unaRaza; }
//Otros metodos
void ladrar(){ std::cout << "aroof roof!XD" << endl; }
//La parte privada de perro"No podemos acceder desde fuera de la clase"
private:
//Atributos
int suEdad;
int suPeso;
string suNombre;
string suRaza;
}; //Fin de la idea perro "Esta es la clase no el objeto"
int main () {
//Ahora Creamos 2 objetos "Copias de la clase perro"
Perro miPerro; //Esto es un objeto creado apartir de la clase Perro, realmente es una copia de Perro
Perro otroPerro( 3, 7, "Rex", "Pitbull" ); //Esto es un objeto creado apartir de la clase Perro, realmente es una copia de Perro
// Como ves aun que llame a la funcion getNombre() en ambos casos dan resultados distintos, son copias de la
//clase Perro pero tienen sus propios datos, como no he pasado los datos a miPerro a tomado los datos del constructor por defecto
//que tambien tenia parametros por defecto.
cout << miPerro.getNombre() << endl;
cout << otroPerro.getNombre() << endl;
//Ponemos un nombre a miPerro
miPerro.setNombre("floriponcio");
cout << miPerro.getNombre() << endl;
miPerro.ladrar();
cin.ignore();
}