Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CARRERA DE COMPUTACIÓN
PROGRAMACIÓN ORIENTADA A OBJETOS
PRACTICA 02: MIEMBROS ESTATICOS Y MANEJO DE OBJETOS
Introducción
Podemos decir que una función se declararía a si misma como miembro estático cuando
la misma no varía, podemos poner cualquier base además de ingresar cualquier clase ya
sea particular de la conocida función objeto donde esta se volverá independiente por así
decirlo, estos miembros estáticos específicamente no necesitan ser invocados en algún ya
mencionado objeto, ya que, al nosotros inicializar una función de forma estática, la
agregaremos al código mas el nombre de la clase, en conjunto con el operador y
obviamente sus cuatro puntos de acceso, así automáticamente si ejecutara la función
estática.
Marco teórico
Podemos decir con exactitud que los métodos llamados “Estáticos” lo que básicamente
tratan es importar instancias ya sean grandes o pequeñas de una clase, en la cual se hará
una copia automatizada del nombre el cual declaremos como estático y este de igual
manera se compartirá automáticamente por todos los objetos y clases, si no existiera otra
declaración de inicialización al momento de crear el objeto, todos estos datos se inicializar
a un valor de 0.
ACTIVIDADES PARA DESARROLLAR:
Partiendo del código base que se estudió en clase sobre pacientes y Hospitales, resolver las
siguientespreguntas:
1. Pregunta de programación
Indica que sucede si se elimina el constructor por defecto de la clase “Paciente”
(archivo paciente.cpp y paciente.h). ¿Qué error emite el compilador?, ¿Por qué crees
que se produce este error ? Consulta en Internet y responde de forma razonada.
Coloca las referencias que consultaste para responder.
2 Paciente
Nuestro programa ha tenido éxito y las autoridades sanitarias de la ciudad nos ha
solicitado querequieren más información de los pacientes hospitalizados. Estos
requerimientos son:
a) Genero del paciente, masculino o femenino (utiliza un tipo de dato char)
b) Altura en metros
c) Masa en kilogramos
d) Si un paciente ha sido dado de alta
e) Obtener el Índice de masa corporal del paciente, con su respectiva apreciación.
Deberás agregar más atributos y métodos a la clase Paciente. Además, tendrás que
modificar elmétodo “ficha()” para que imprima los atributos adicionales.
3 Hospital
Así mismo, los hospitales nos han solicitado agregar algunas funciones extra que se
listan acontinuación:
f) Dar de alta a un paciente.
g) Listar solo los pacientes con Covid-19
Por lo tanto, deberás agregar los métodos pertinentes que permitan realizar estas
funciones extra que nos solicitan.
4 Método main
Dentro del método main, debes realizar las modificaciones pertinentes para que
permita realizar losiguiente:
h) Ingresar el nombre del Hospital (solo la primera vez).
i) Mostrar un menú con las siguientes opciones:
1) Ingresar un paciente (solicitar todos los datos).
2) Listar todos los pacientes.
3) Listar pacientes con Covid-19.
4) Dar de alta a un paciente.
5) Establecer como contagiado a un paciente (establecer el atributo positivo a
verdadero)
6) Total de pacientes existentes
7) Salir
Las opciones 4 y 5 deberán solicitar el Identificador (id) del paciente, para que pueda
ser localizadodentro del vector y puedas modificar su estado. El menú siempre está
activo y el programa finaliza solamente cuando se elige la opción 8. Validar que la
opción ingresada sea correcta.
Código en C++
(Headers)
“Hospital.h”
En esta clase principalmente inicialice y agregue la librería en la cual podemos encontrar
variables y formulas del paciente ya que en paciente seria clave fundamental de este
código Hospital, por otro lado veremos que la clase(Hospital) y la subclase (paciente), ya
que podemos ver que estas se complementan entre si así que estas dependerán entre sí,
aquí mostraremos los pacientes con y sin SarsCOV y demás cosas que solicita el código.
#ifndef HOSPITAL_H
#define HOSPITAL_H
// librerias del sistema
#include <vector>
#include <iostream>
//librerias propias
#include "paciente.h"
class Hospital
{
private:
string nombre;
vector<Paciente> pacientesCON;
vector<Paciente> pacientesTODO;
public:
Hospital();
Hospital (string nombre);
void ingresarPaciente();
void listarPacientesConSarsCov_19();
void listarPacientesENGENERAL();
void ALTAP();
};
#endif // HOSPITAL_H
“paciente.h”
Básicamente lo que yo pude utilizar para generar la solución para esta clase fue agregar
variables distintas que el código solicitaba ya que el código de partida por así decirlo fue
impartido por el docente, de igual manera agregue algunas variables las cuales son de tipo
(float y string) para poder inicializar y ejecutar el (código.h).
#ifndef PACIENTE_H
#define PACIENTE_H
#include <string>
using namespace std;
class Paciente
{
private:
string genero;
string TieneSarsCOV();
string EstadeAlta();
public:
static int totalPacientes; //Es un contador estatico para el
numero de pacientes los cuales se van a crear automaticamente.
Paciente();
Paciente(string Nombre, int edad, string genero, float altura,
float masa, float indice);
string ficha();
void thisALTA(bool newValue);
void setPositivo(bool newValue);
};
#endif // PACIENTE_H
(Sources)
“Hospital.cpp”
#include "hospital.h"
Hospital::Hospital()
{
this->nombre = "";
}
Hospital::Hospital(string nombre)
{
this->nombre = nombre;
cout << "\n\t" +this->nombre + "\n";
}
void Hospital::ingresarPaciente()
{
string nombre;
int EdadP;
bool TieneSarsCOV;
string GeneroP;
float IMCPersona;
float AlturaP;
float masa;
// Creador de paciente
Paciente p(nombre, EdadP, GeneroP, AlturaP, masa, IMCPersona);
//Tene covid?
cout << "¿El paciente tiene Covid: \n";
cout << "1: Si\n0: No\n";
cout << "Ingrese el valor de la prueba: ";
cin >> TieneSarsCOV;
p.setPositivo(TieneSarsCOV);
this->pacientesTODO.push_back(p);
if(TieneSarsCOV == 1){
//Agrear al paciente a la lista de pacientes
this->pacientesCON.push_back(p); //Sirve solo en vectores
}else;
{
}
//limpiar el buffer de entrada
cin.ignore();
}
void Hospital::ALTAP(){
bool suAlta;
cout << "¿El paciente esta listo para dar de alta?: \n";
cout << "1: Si\n0: No\n";
cout << "Ingrese su opinion: ";
cin >> suAlta;
// Crear al paciente
Paciente p;
p.thisALTA(suAlta);
}
void Hospital::listarPacientesConSarsCov_19()
{
cout << "\n= Lista de pacientes contagiados por el CoVid-19
=\n";
for(Paciente p : this->pacientesCON){
cout << p.ficha();
void Hospital::listarPacientesENGENERAL(){
cout << "\n= Lista de todos pacientes =\n";
//Recorrer las lista de pacientes
for(Paciente p : this->pacientesTODO){
cout << p.ficha();
}
“main.cpp”
En el main.cpp podemos decir que es la parte mas importante del código ya que aquí
presentaremos el menú con sus distintas opciones aquí encontraremos varios métodos
void con los cuales pudimos inicializar el mismo, sin dejar de lado que tendremos que
agregar las librerías utilizadas para que este se ejecute.
#include "paciente.h"
#include "hospital.h"
using namespace std;
// Varible estatica!!!
int Paciente::totalPacientes = 0;
int main()
{
default:
break;
}
}while(op!=7);
cout << "\t ***{FIN MUCHAS GRACIAS}***\n\n";
/*
//Crear un paciente
Paciente p("Gorgolito Perez", 23);
//Volver imprimir
cout << p.ficha();
return 0;
}
“paciente.cpp”
#include "paciente.h"
/**
* @brief Paciente::Paciente Constructor por defecto
*/
Paciente::Paciente()
this->ID = 0;
this->edad = 0;
this->Nombre = "";
this->positivo = false;
this->alta = false;
/**
* @brief Paciente::Paciente Constructor parametrizado
* @param nombre Nombre del paciente
* @param edad Edad del paciente
*/
Paciente::Paciente(string Nombre, int edad, string genero, float
altura, float masa, float indice):Nombre(Nombre), edad(edad),
genero(genero), altura(altura), masa(masa), IMCPersona(indice){
this->positivo = false;
string Paciente::ficha()
{
string str = "ID: "+ to_string(this->ID) + "\n" +
"Nombre: "+ this->Nombre + "\n" +
"Genero: "+ this->genero + "\n" +
"Edad: "+ to_string(this->edad) + "\n" +
"Altura: "+ to_string(this->altura) + " metros\n" +
"Masa:"+ to_string(this->masa) + " kilogramos\n" +
"Indice de masa corporal: "+ to_string(this->IMCPersona)
+ "\n\n";
return str;
}
this->positivo = newValue;
}
Ejecución del programa (Se adjunta Capturas)
(Ejecución del menú)
Referencias y bibliografía
https://www.codingame.com/playgrounds/50557/clases-y-objetos-en-c-practica-
1/miembros-de-clase-en-c-variables-y-metodos. (2018). Obtenido de CodinGame:
https://www.codingame.com/playgrounds/50557/clases-y-objetos-en-c-practica-
1/miembros-de-clase-en-c-variables-y-metodos