/*
Author: Edwin Alexander 
Description: Ejemplo de Encapsulamiento
*/

#include <string> 
#include <iostream> 
using namespace std; 

class UniversityStudent {
   private:
   int id;
   string name;
   string gender;
   string university;
   string career;
   int numSubjects; 
   
   public:
   UniversityStudent(int _id,string _name,string _gender,string _university,string _career,int _numSubjects){
      id = _id;
      name = _name;
      gender = _gender;
      university = _university;
      career = _career;
      numSubjects = _numSubjects;          
   };
   
   void inscribeSubjects() {
      // TODO: implement
   }
   
   void cancelSubjects() {
      // TODO: implement
   }
   
   void consultRatings() { 
      // TODO: implement
   }
   
   void setNumSubjects(int _numSubjects){
        if(_numSubjects < 0 || _numSubjects > 10){
            cout<<"Numero invalido de materias";
        }else{
            numSubjects = _numSubjects;
        }
   }
   
   int getNumSubjects(){
        return numSubjects;
   }
   
   int getId() {
        return id;
   }
   
   string getName() {
        return name;
   }
   
   string getGender() {
        return gender;
   }
   
   string getUniversity() {
        return university;
   }
   
   string getCareer() {
        return career;
   }
   
};

int main() 
{  
//creacion de objeto con memoria dinamica:
 UniversityStudent *student = new UniversityStudent(123, "Pepe", "masculino", "UN", "Medicina", 8);
 cout<<"Estudiante : "<<student->getName()<<endl;;
 student->setNumSubjects(-15);
 cout<<endl;
 cout<<"Numero de materias : "<<student->getNumSubjects()<<endl;
 
 //creacion de objeto de forma convencional:
 UniversityStudent student2(345, "Maria", "femenino", "UExternado", "Derecho", 7);           
 cout<<"Estudiante : "<<student2.getName()<<endl;;
 student2.setNumSubjects(9);
 cout<<endl;
 cout<<"Numero de materias : "<<student2.getNumSubjects(); 
 cin.get(); 

}  
