Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @file Alumnos.cpp
- * @brief Ejemplo de utilización de composición de clases
- * @author David Castro Salinas
- * @date 10/2020
- * @note bajar doxygen http://www.doxys.dk/doxys_homepage/homepage/Download/Download0_dir_description.html
- */
- //más información doxygen https://www.scenebeta.com/tutorial/documentando-el-codigo-con-doxygen
- #include <iostream>
- using namespace std;
- /**
- * @class Direccion
- * @brief Representa una dirección que para ser utilizada por otras clases
- */
- class Direccion{
- public:
- Direccion(string _calle="vacio", int _numero=1, int _codigoPostal=0) : calle(_calle), numero(_numero), codigoPostal(_codigoPostal) { };
- void setCalle(string valor);
- string getCalle();
- int getNumero();
- int getCodigoPostal(){
- return this->codigoPostal;
- };
- void ver(){
- cout <<"calle:" << this->calle << " #" << this->numero << ", postal:" << this->codigoPostal<<endl;
- };
- private:
- string calle;
- int numero;
- int codigoPostal;
- };
- /**
- * @fn Direccion::getCalle
- * @brief Devuelve el nombre de la calle
- * @return Devuelve el nombre de la calle
- */
- string Direccion::getCalle(){
- return this->calle;
- };
- /**
- * @fn Direccion::setCalle
- * @brief Permite asignar el nombre de una calle a la clase Dirección
- * @param nombre de una calle
- * @return void
- */
- void Direccion::setCalle(string valor){
- this->calle = valor;
- };
- int Direccion::getNumero(){
- return this->numero;
- };
- /**
- * @class Rut
- * @brief Permite mantener información de Rut de personas
- */
- class Rut {
- public:
- Rut(int _numero=0, char _dv=' '): numero(_numero), dv(_dv) {};
- int getNumero(){
- return this->numero;
- };
- char getDv(){
- return this->dv;
- };
- bool validar(){
- return true;
- }
- void ver(){
- cout <<this->numero<<"-"<<this->getDv();
- }
- private:
- int numero;
- char dv;
- };
- /**
- * @class Persona
- * @brief La clase persona es la base del ejercicio de un curso, en el cuál la clase Persona representará a un Alumno, Ayudante o profesor
- */
- class Persona{
- public:
- Persona(string _n="", Rut _r=Rut(), Direccion _d=Direccion()): nombre(_n), rut(_r), direccion(_d){
- eliminado = false;
- };
- void setNombre(string nombre){
- this->nombre = nombre;
- };
- string getNombre(){
- return nombre;
- };
- Rut getRut(){
- return this->rut;
- }
- void setRut(Rut rut){
- this->rut = rut;
- }
- void setDireccion(Direccion _direccion){
- direccion = _direccion;
- }
- Direccion getDireccion() {
- return this->direccion;
- }
- void ver(){
- cout <<"\n**Persona**";
- cout <<"\nnombre: "<<nombre;
- cout <<"\nrut:";
- rut.ver();
- cout <<"\ndireccion:";
- direccion.ver();
- }
- void setEliminado(bool valor){
- this->eliminado = valor;
- };
- bool getEliminado(){
- return this->eliminado;
- }
- private:
- string nombre;
- //composición de clases
- Rut rut;
- Direccion direccion;
- bool eliminado;
- };
- class Curso{
- public:
- Curso(string _c=0):codigo(_c){
- this->index = 0;
- };
- int size(){
- return this->index;
- }
- void setProfesor(Persona valor){
- profesor = valor;
- };
- Persona getProfesor(){
- return profesor;
- };
- void setAyudante(Persona valor){
- ayudante = valor;
- };
- Persona getAyudante(){
- return ayudante;
- };
- void setAlumno(int posicion, Persona alumno){
- if(index >= 0 && index < MAX_ALUMNOS)
- alumnos[posicion] = alumno;
- else
- cout <<"Fuera de indice";
- }
- Persona getAlumno(int posicion){
- if(index >= 0 && index < MAX_ALUMNOS)
- return alumnos[posicion];
- else {
- cout <<"Fuera de indice";
- return Persona(0);
- }
- }
- void addAlumno(Persona nuevoAlumno){
- if(index < MAX_ALUMNOS){
- alumnos[index] = nuevoAlumno;
- index++;
- } else
- cout <<"No puede ingresar más alumnos";
- }
- void listaAlumnos(){
- for(int i=0;i<index;i++){
- if(alumnos[i].getEliminado() == false)
- alumnos[i].ver();
- }
- }
- void ver(){
- cout <<"[CURSO "<<codigo<<"]\n";
- cout <<"\n\tProfesor: ";
- this->getProfesor().ver();
- cout <<"\n\tAyudante: ";
- getAyudante().ver();
- cout <<"\n\tAlumnos: ";
- listaAlumnos();
- };
- private:
- const int MAX_ALUMNOS = 100;
- int index;
- string codigo;
- Persona profesor;
- Persona ayudante;
- Persona alumnos[100];
- };
- //funciones miembro
- int main()
- {
- /**1.- SobreCarga**/
- /**2.- Inicialización de constructores*/
- Direccion d("Avenida Macul", 23, 4321);
- d.ver();
- Direccion d2("Avenida Macul", 23);
- d2.ver();
- Direccion d3("Avenida Macul");
- d3.ver();
- Direccion d4;
- d4.ver();
- /***tarea construir la clase rut**/
- Rut rut(13921921,'K');
- rut.ver();
- /**3.- Alumno**/
- Persona a("David", Rut(13921921, 'K'), Direccion("Macul", 123));
- a.ver();
- /**4.- Curso ****/
- Curso curso("2020-02");
- curso.setProfesor(Persona("David Castro", Rut(13212121, 'K')));
- curso.setAyudante(Persona("Carlos Montuyao", Rut(23232323, '1'), Direccion("Maipu")));
- curso.addAlumno(Persona("Juan Carlos", Rut(242424, '3')));
- curso.addAlumno(Persona("Merari Gomez", Rut(343434, '4')));
- curso.addAlumno(Persona("Pedro Perez", Rut(656565, '6')));
- //curso.ver();
- /***EDICION***/
- Persona alumnoEditar = curso.getAlumno(0);
- alumnoEditar.setEliminado(true);
- alumnoEditar.setRut(Rut(876876,'2'));
- curso.setAlumno(0, alumnoEditar);
- /***EDICION***/
- alumnoEditar = curso.getAlumno(1);
- alumnoEditar.setNombre("Merari Godines");
- curso.setAlumno(1, alumnoEditar);
- /**Esto no se puede**/
- curso.getAlumno(2).setEliminado(true); //MAL
- curso.getAlumno(2).setNombre("otro"); //MAL
- curso.getAlumno(0).setEliminado(true); //MAL
- curso.ver();
- return 0;
- }
Add Comment
Please, Sign In to add comment