Documente Academic
Documente Profesional
Documente Cultură
Se desea que usted elabore un diagrama de clases que recoja toda la información
necesaria para elaborar un sistema que permita.
Nota:
Esta modelación fue previamente analizada en la conferencia 1, por lo que
procederemos a declarar e implementar las clases involucradas y desarrollar el
programa que dé solución al problema.
Archivo pieza.h
#ifndef CPiezaH
#define CPiezaH
class CPieza // CPieza es una clase de entidad que representa a la ficha técnica de la pieza
{
private:
string nombre;
string codigo;
string pais;
int existencia;
float precioU;
public:
CPieza();
CPieza(string, string,string, int, float);
string GetNombre();
string GetCodigo();
string GetPais();
int GetExistencia();
float GetPrecioU();
};
#endif
Archivo pieza.cpp
#include "pieza.h"
CPieza::CPieza()
{
nombre= "";
codigo= "";
pais= "";
existencia = 0;
precioU=0.0;
}
CPieza::CPieza(string pnombre, string pcodigo, string ppais, int pexistencia, float pprecioU)
{
nombre= pnombre;
codigo= pcodigo;
pais = ppais;
existencia = pexistencia;
precioU = pprecioU;
}
string CPieza::GetNombre()
{
return nombre;
}
string CPieza::GetCodigo()
{
return codigo;
}
string CPieza::GetPais()
{
return pais;
}
int CPieza::GetExistencia()
{
return existencia;
}
float CPieza::GetPrecioU()
{
return precioU;
}
Archivo almacen.h
#ifndef CAlmacenH
#define CAlmacenH
#include "pieza.h"
#include <string.h>
Archivo almacen.cpp
#include "CAlmacen.h"
CAlmacen::CAlmacen(int ctdadMax)
{
maximo = ctdadMax;
cantReal = 0;
fichasTec = new CPieza *[maximo];
CAlmacen::~CAlmacen()
{
for(int i = 0; i < cantReal; i++)
delete fichasTec[i];
delete [] fichasTec;
}
int CAlmacen::GetCantReal()
{
return cantReal;
}
bool CAlmacen::Adiciona
(string pnombre, string pcodigo, string ppais, int pexistencia, float pprecioU)
{
if(cantReal < maximo)
{
/* Se declara un nuevo puntero a pieza y se le asigna la dirección
de un nuevo objeto pieza construido dinámicamente en el heap */
CPieza* nueva = new CPieza(pnombre, pcodigo, ppais, pexistencia, pprecioU);
// Se registra la nueva ficha y se cuenta un nuevo registro
fichasTec [cantReal++] = nueva;
return true;
}
return false;
}
CPieza** CAlmacen::ListadoOrdenado()
{
CPieza *tempfichas;
for(int i =0; i < cantReal-1; i++)
for( int j =i+1; j<cantReal; j++ )
{
if( fichasTec[i]->GetCodigo() > fichasTec[j]->GetCodigo())
{
tempfichas = fichasTec[j];
fichasTec[j] = fichasTec [i];
fichasTec[i] = tempfichas;
}
}
return fichasTec;
}
string CAlmacen::NombreMayor()
{
float mayor=fichasTec[0]->GetPrecioU();
int pos=0;
for(int i=1;i<cantReal;i++)
if(mayor<fichasTec[i]->GetPrecioU())
{
mayor=fichasTec[i]->GetPrecioU();
pos =i;
}
return fichasTec[pos]->GetNombre();
}
float CAlmacen::ValorTotal()
{
float suma=0;
for(int i=0;i<cantReal;i++)
suma+=fichasTec[i]->GetPrecioU()*fichasTec[i]->GetExistencia();
return suma;
}
#include <iostream.h>
#include "CAlmacen.h"
#include "CPieza.h"
void MostrarDatosPieza(CPieza * p)
{
cout<<"\nFicha técnica de la pieza: "<<p->GetNombre()<<endl;
cout<<"Codigo: "<<p->GetCodigo()<<endl;
cout<<"Pais: "<<p->GetPais()<<endl;
cout<<"Existencia: "<<p->GetExistencia()<<endl;
cout<<"Precio unitario: "<<p->GetPrecioU()<<endl;
}
void main()
{
int cant, e; float pu;
string nomb, codigo, pais;
do { cout << "Entre la cantidad de piezas del almacen: "; cin >> cant; } while (cant <= 0);
CAlmacen *almacen=new CAlmacen(cant);