Ir para o conteúdo
pedruss

Relacionamento de Objectos (many-to-one)

Mensagens Recomendadas

pedruss    0
pedruss

Boas,

Estou a fazer um trabalho para a escola que consiste numa aplicação que auxilie a gestão de clientes, artigos e fornecedores.... Já fiz o UML e agora estou a implementar para o Visual C++. Mas a teórica é bem mais bonita que a prática... :biggrin:

A dúvida que me está a surgir consiste no seguinte: tenho uma classe "loja" e uma classe "cliente", a relação existente entre estas duas classes é de um para muitos(many-to-one)

Pergunta: Como é que vou fazer para que um objecto "loja" tenha conhecimento de todos os objectos "cliente"? Isto é necessário para depois poder aceder, através da classe "loja", aos clientes para efectuar, por exemplo, uma listagem de todos os clientes, pesquisa de um cliente, etc....

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
shumy    17
shumy

Isto em termos de BD é ao contrario, ou seja o cliente tem um apontador para loja, que é outra forma de fazer, mas para o caso é melhor a lista.

Agora... eu acho que devia ser um (many-to many) porque um cliente pode pertencer a mais lojas, a não ser que os dados sejam apenas usados localmente por cada loja, nesse caso faz sentido.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedruss    0
pedruss

Viva,

Infelizmente o trabalho tem de ser feito sem recurso a base de dados... ;)

Já agora outra pergunta, estava a pensar fazer uma superclasse "pessoa" onde derivava as sub-classes "cliente", "fornecedor" e "funcionario". Neste caso tambem posso usar vectores? Se usar vectores tenho de meter na classe "loja" o vector de cliente, fornecedores e funcionários da mesma forma?

Brigadão pela a ajuda!  :ipool:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
merlin3000    0
merlin3000

Podes usar vectores para todos os tipos de dados que quiseres incluindo as classes, não percebi a dúvida.

Não tens de por os vectores na classe loja mas essa deve ser a melhor maneira. ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedruss    0
pedruss

Boas,

Não sabia se podia colocar classes derivadas... Mas estou a ver que posso...  (ops, desculpem a "maçariquice"...:-[ )

Neste caso quem fala em vectores também fala em listas (da STL), certo? (foi aqui que começou a minha dúvida presente na sala de discussão "SOS - classe list com objectos", mas agora já estou a perceber o encadeamento da "coisa"...  :hmm: )

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

Boas,

Não sabia se podia colocar classes derivadas... Mas estou a ver que posso...  (ops, desculpem a "maçariquice"...:-[ )

Neste caso quem fala em vectores também fala em listas (da STL), certo? (foi aqui que começou a minha dúvida presente na sala de discussão "SOS - classe list com objectos", mas agora já estou a perceber o encadeamento da "coisa"...  :hmm: )

As estruturas de dados dão para pôr o que quiseres lá dentro. Seja qual estrutura de dados for seja qual tipo de dados for. Isto se estiverem escritas para tal, o que é o caso da STL. É mesmo essa a ideia de uma linguagem orientada a objectos.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
MX+    0
MX+

Acho que nada melhor que um exemplo para te esclarecer. Falta implementar excepçoes, erros, etc etc, mas o essencial está aqui, tudo muito "orientado a objectos" como eles gostam nas cadeiras de OOP :)

Só mais umas coisas:

- Acho que não deves misturar Fornecedores, Clientes e Funcionarios nos HashMaps/Listas, etc, embora eles devam ser todos subclasses de "Pessoa".

- Acho que pode ser bastante melhorados se for separado em várias classes os métodos:

    - Class GerirClientes co-existirna mesma package e faz as operações básicas sobre Clientes e é chamada pela Loja.

PS: Esqueci-me de dizer que fica tambem um exemplo de overriding só pra ficar bonito lol

Cumprimentos :)

class Loja
{
HashMap<int, Cliente> _clientes = new HashMap<int, Cliente>;

public Loja()
{
	..
}

public void criarCliente(int id, String nome, String morada)
{
	Cliente novo = new Cliente(id);
	novo.setNome(nome);
	novo.setMorada(morada);

	_clientes.put(id, novo);
}

private void imprimeLinhaCliente(Cliente c)
{
	System.out.println( c.getId() + " | " + c.getNome() );
}

public void listarClientes()
{
	System.out.println("-- Listagem Clientes");

	for ( Cliente c : _clientes )
	{
		imprimeLinhaCliente(c);
	}
}

public void procurarCliente(int id)
{
	System.out.println("-- Resultado Pesquisa ID: " + id);

	for ( Cliente c : _clientes )
	{
		if ( c.getId() == id )
		{
			imprimeLinhaCliente(c);
		}
	}
}

public void procurarCliente(String nome)
{
	System.out.println("-- Resultado Pesquisa Nome: " + nome);

	for ( Cliente c : _clientes )
	{
		if ( c.getNome() == nome )
		{
			imprimeLinhaCliente(c);
		}
	}
}
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
MX+    0
MX+

Eu acho que ás vezes importa dar exemplos e também não reparei que isto era C++ portanto ele tem de "traduzir" o Java para C++ ainda vai aprender pelo menos com isso :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade