Jump to content
silviia

Vector e classes

Recommended Posts

silviia

Então, eu já tentei pesquisar em muitos sítios mas ainda nao consegui encontrar o que realmente procuro. Eu estou no curso de engenharia, e na cadeira de Programação tenho que desenvolver um programa que envolve classes. 

Basicamente é uma classe loja que contem a classe cliente,a classe raça e a classe ração e depois a main é um menu com opções para acrescentar ou visualizar cada parametro da classe.

Eu já estruturei todas as classes so que agora tenho uma grande duvida em relaçao a implementar Vector.

Eu tenho que fazer vector na classe loja, de modo a que seja possivel guardar varios tipos de clientes,racas e racoes mas o problema é que eu nao entendo como faço isso. 

eu sei que tenho de definir cada vector

vector<int>v1;
vector<int>v2;
vector<int>v3;

mas nao percebo como indico por exemplo que o v1 = raca.h , v2=racao.h, v3 = loja.h e em que sitio da classe loja faço isso,

e ainda para acrescentar e visualizar o vetor eu faço

for (int i = 0; i < v.size; i++)
{
		v1.ler();
        push_back(v1)                
}

mas como vou buscar os dados que foram inseridos na classe?

Desculpem se esta confuso, eu realmente tenho dificuldade com vectores.

Obrigada pela ajuda!

Share this post


Link to post
Share on other sites
HappyHippyHippo

se eu escrever isto sera que comecas a perceber ?

vector<Cliente> lista_de_clientes = new vector<Cliente>();
vector<Raca> lista_de_racas = new vector<Raca>();
vector<Racao> lista_de_racoes = new vector<Racao>();

 


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
silviia
37 minutos atrás, HappyHippyHippo disse:

se eu escrever isto sera que comecas a perceber ?


vector<Cliente> lista_de_clientes = new vector<Cliente>();
vector<Raca> lista_de_racas = new vector<Raca>();
vector<Racao> lista_de_racoes = new vector<Racao>();

 

Eu entender entendo, eu so nao entendo em que zona da classe loja eu tenho de escrever isso, se é no public, no private ou em algum construtor em especifico.

 

Obrigada pela ajuda!

Share this post


Link to post
Share on other sites
HappyHippyHippo

public private ou outra coisas qualquer não são zonas. não são mais do que indicadores de nível de acesso aos elementos que estás a declarar.

a declaração dos parâmetros és tu que escolhes, se são public ou private, dependendo do que achas que deve ser.

a sua instânciação, claramente deverá ser no construtor;

 

ps : o código apresentado tem "um bug", deverás olhar para ele e saber que existe algo de errado nele, corrigir, e aplicar correctamente no teu código


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
silviia

decididamente não compreendo. 

Eu ainda estou aprender por isso é que é complicado para mim.

Já fiz as classes todas com o private,o public,os construtores,o escrever e o ler, mas isto dos vetores eu nao entendo e ja procurei em todo lado mas colocam o vector na main e fazem cin para introduzir o valor e no meu caso eu tenho de fazer isso na classe loja.h e o valor é inserido no escrever de cada classe que eu tenho que chamar nao sei como -.- 

Share this post


Link to post
Share on other sites
silviia
54 minutos atrás, HappyHippyHippo disse:

amostra o que tens

Eu so tenho mesmo a classe definida, porque nao faço ideia como vou colocar os vetores,

eu vou por aqui o que tenho de loja.h. A ideia é imagina no ler1 - leio os dados guardados no vetor que corresponde a classe raca, no inserir1 insiro dados no vetor que corresponde a classe raca....e por ai vai, tudo na classe loja.h e o menu ta na main. As outras classes estao como esta mas tem parametros que sao pedidos ao utilizador para preencher, e aparentemente estao bem porque foram vistos pela minha engenheira, a cena de ela me mandar fazer vector é que me baralha de uma maneira!

Obrigada!

 

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

#ifndef loja_
#define loja_

#include <vector>
#include <list> 
#include "data.h"
#include "raca.h"
#include "racao.h"
#include "cliente.h"


class loja
{
private:
	vector<int>v1;
	vector<int>v2;
	vector<int>v3;
	
public:



	//construtores
	loja();
	loja(int n);
	loja(raca & r, racao & rc, cliente & c);
	loja(string des, int cod, float ps, string mar, int codr, float qtd, int codt, string n, int num, int cd, float pso);
	loja(const loja & l);
	//destrutor
	~loja();
	
	
	//metodos ler e listar
	void inserir1();
	void listar1();
	void inserir2();
	void listar2();
	void inserir3();
	void listar3();


};

//implementar os construtores e o destrutor
loja::loja()
{


}

loja::loja(int n)
{

}


loja::loja(const loja & l)
{
	
}

loja::~loja()
{
	
}

loja* loja::clone() const
{
	return new  loja(*this);
}



//inserir e listar clientes//
void loja::inserir1(cliente *c)
{
	
}

void loja::listar1()
{
	
}

//inserir e listar racas//
void loja::inserir2(raca *r)
{
	
}

void loja::listar2()
{
	
}
//inserir e listar racao//
void loja::inserir3(racao *rc)
{
	
}

void loja::listar3()
{
	
}







#endif

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

mas tu nao fizeste o que disse para tu fazeres e continuas com vectores de inteiros ...

alem disso, definições das funções das classes deverão ir para o seu .cpp e não ficar no .h


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
silviia
1 hora atrás, HappyHippyHippo disse:

mas tu nao fizeste o que disse para tu fazeres e continuas com vectores de inteiros ...

alem disso, definições das funções das classes deverão ir para o seu .cpp e não ficar no .h

sim ainda nao mudei porque nao sabia onde colocar.

 

Como assim definicoes das funcoes? é porque eu tenho que chamar as classes racao,raca e cliente atraves da classe loja, é o que diz o meu enunciado pelo menos :x

Share this post


Link to post
Share on other sites
HappyHippyHippo

a declaração é o que esta escrito dentro da classe, e tu tens a definição das funções fora da classe e isso deveria estar num ficheiro separado


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
silviia

Esta dificil :s

esta é a minha classe raca.h

#pragma once
#include <set>

#ifndef raca_
#define raca_
class raca
{

private:
	string designacao;
	int codigo;
	float peso;

public:
	
	//construtores
	raca();
	raca(string des, int cod, float ps);
	raca(const raca &r);
	//destrutor
	virtual ~raca();
	//copia
	raca* clone() const;

	//operador de comparação
	raca & operator= (const raca & r);

	//atribuiçao
	raca & operator=(const raca & rhs);

	//metodos ler e listar
	virtual void inserirraca();
	virtual void listarraca() ;
};

//implementar os construtores e o destrutor
raca::raca()
{
	designacao = "";
	codigo = 0;
	peso = 0;
}

raca::raca(string des, int cod, float ps)
{
	designacao = des;
	codigo = cod;
	peso = ps;
}

raca::raca(const raca & r)
{
	designacao = r.designacao;
	codigo = r.codigo;
	peso = r.peso;
}

raca::~raca()
{};

raca* raca::clone() const
{
	return new  raca(*this);
}

//atribuiçao
raca & raca::operator = (const raca & rhs)
{
	if (this != &rhs)
	{
		designacao = rhs.designacao;
		codigo = rhs.codigo;
		peso = rhs.peso;
	}
	return *this;
}

//implementar ler e listar

void raca::inserirraca()
{
	cout << "===========Adicionar Raca==========" << endl;

	cout << "Designacao: ";
	cin >> designacao;

	cout << "Codigo: ";
	cin >> codigo;
	while (codigo <= 0)
	{
		cout << "Introduza um codigo valido!: ";
		cin >> codigo;
	}

	cout << "Peso: ";
	cin >> peso;
	while (peso <= 0)
	{
		cout << "Introduza um peso valido!: ";
		cin >> peso;
	}
	

}

void raca::listarraca()
{
	cout << "===========Visualizar Raca==========" << endl;

	cout << "Designaco: " << designacao << endl;
	cout << "Codigo: " << codigo << endl;
	cout << "Peso: " << peso<< endl;
	//defenir o tipo de raca atraves do peso
	if (peso <= 10)
	{
		cout << "Raca do tipo pequena"<<endl;
	}
	if (peso > 10 & peso <= 25)
	{
		cout << "Raca do tipo media" << endl;
	}
	if (peso > 25 & peso <= 45)
	{
		cout << "Raca do tipo grande" << endl;
	}
	if (peso > 45)
	{
		cout << "Raca do tipo gigante" << endl;
	}
}

#endif

e agora na classe loja eu tenho que chamar esta classe onde ja peço os dados no ler e listar, mas tem que ser vector (a main so leva mesmo o menu da escolha)

tenho assim a loja.h

#pragma once
#include <iostream>
#include <string>
#include <vector>
#include <list> 
using namespace std;

#ifndef loja_
#define loja_


#include "data.h"
#include "raca.h"
#include "racao.h"
#include "cliente.h"


class loja
{
private:
	vector<raca>v1= new vector<raca>;
	vector<racao>v2 = new vector<racao>;
	vector<cliente>v3 = new vector<cliente>;
	
public:



	//construtores
	loja();
	loja(int n);
	loja(raca & r, racao & rc, cliente & c);
	loja(string des, int cod, float ps, string mar, int codr, float qtd, int codt, string n, int num, int cd, float pso);
	loja(const loja & l);
	//destrutor
	~loja();
	//metodos ler e listar
	void inserir1();
	void listar1();
	void inserir2();
	void listar2();
	void inserir3();
	void listar3();


};

//implementar os construtores e o destrutor
loja::loja()
{


}

loja::loja(int n)
{

}


loja::loja(const loja & l)
{
	
}

loja::~loja()
{
	
}

//inserir e listar raca//
void loja::inserir1()
{
	for (int i = 0; i < v1.size(); i++)
	{
		v1.inserirraca()
		v1.push_back(const raca &r)
	}
}

void loja::listar1()
{
	for (int i = 0; i<v1.size(); i++)
	{
		cout<<v1[i];
	}
}

//inserir e listar racao//
void loja::inserir2()
{
	
}

void loja::listar2()
{
	
}
//inserir e listar clientes//
void loja::inserir3()
{
	
}

void loja::listar3()
{
	
}







#endif

 

Edited by silviia

Share this post


Link to post
Share on other sites
HappyHippyHippo

esquece o vector

cria o codigo de ler os dados de uma dessas classe que nao e uma loja, uma coisa de cada vez


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
silviia

Tenho que entregar o trabalho ate hoje as 23h55 então não tem como ir mais devagar :/ mal ou bem vou ter que apresentar algo se não tenho 0.

E eu tenho o ler e o listar em todas as classes. 

Share this post


Link to post
Share on other sites
HappyHippyHippo

entao onde esta o problema ? loja nao e mais do que um "repositorio" desses vectores


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
silviia

O problema esta que nao sei como fazer isso :s

eu coloquei 

vector<raca>v1; 
vector<racao>v2;
vector<cliente>v3 ;

e depois para poder escrever os valores

for (int i = 0; i < v1.size(); i++)
	{
		v1.inserirraca();
		v1.push_back()
	}

e depois para listar

for (int i = 0; i<v1.size(); i++)
	{
		cout<<v1[i];
	}

mas nao me parece que seja isto...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.