Relacionamento entre Classes

06/05/2014

0

Tenho uma classe clienteFisica que se relaciona com a classe cliente sendo que a classe cliente se relaciona com a classe empresa.

Descrição Classe Empresa
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ObjetoTransferencia
{
public class Empresa
{
public int Acao { get; set; }
public int IDEmpresa { get; set; }
public string Razao { get; set; }
public string Fantazia { get; set; }
public string Cnpj { get; set; }
public string Ie { get; set; }
public string Endereco { get; set; }
public string Complemento { get; set; }
public string Bairro { get; set; }
public string Cep { get; set; }
public string Cidade { get; set; }
public string Estado { get; set; }
public bool Situacao { get; set; }
public string TelFixo { get; set; }
public string TelCelular { get; set; }
public string Email { get; set; }
public string HomePage { get; set; }
public string NomeResponsavel { get; set; }
public string CpfResponsavel { get; set; }
public string RgResponsavel { get; set; }
public string EmailResponsavel { get; set; }
}
}

Descrição Classes Cliente
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ObjetoTransferencia
{
public class Cliente
{
public int IDCliente { get; set; }
public ClienteTipo ClienteTipo { get; set; }
public Empresa Empresa { get; set; }
public DateTime DtCadastro { get; set; }
}
}

Descrição Classe clienteFisica
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ObjetoTransferencia
{
public class ClienteFisica
{
public int Acao { get; set; }
public int IDEmpresa { get; set; }
public Cliente Cliente { get; set; }
public string Nome { get; set; }
public string Cpf { get; set; }
public string Rg { get; set; }
public DateTime DtNascimento { get; set; }
public string Endereco { get; set; }
public string Complemento { get; set; }
public string Bairro { get; set; }
public string Cep { get; set; }
public string Cidade { get; set; }
public string Estado { get; set; }
public string Situacao { get; set; }
public Decimal LimiteCredito { get; set; }
public string NomePai { get; set; }
public string NomeMae { get; set; }
public string Email { get; set; }
public string TelFixo { get; set; }
public string TelCelular { get; set; }
public string Observacao { get; set; }
}
}

Descrição Classe clienteFisicaNegocio:
using System;
using System.Data;

using AcessoBancoDados;
using ObjetoTransferencia;

namespace ObjetoTransferencia
{
public class ClienteFisicaNegocio
{
AcessoDadosSqlServer acessoDadosSqlServer = new AcessoDadosSqlServer();

public string Inserir(ClienteFisica clienteFisica)
{
try
{
acessoDadosSqlServer.LimparParametros();
acessoDadosSqlServer.AdicionarParametros("@Acao", clienteFisica.Acao);
acessoDadosSqlServer.AdicionarParametros("@IDEmpresa", clienteFisica.Cliente.Empresa.IDEmpresa);
acessoDadosSqlServer.AdicionarParametros("@Nome", clienteFisica.Nome);
acessoDadosSqlServer.AdicionarParametros("@Cpf", clienteFisica.Cpf);
acessoDadosSqlServer.AdicionarParametros("@Rg", clienteFisica.Rg);
acessoDadosSqlServer.AdicionarParametros("@DtNascimento", clienteFisica.DtNascimento);
acessoDadosSqlServer.AdicionarParametros("@Endereco", clienteFisica.Endereco);
acessoDadosSqlServer.AdicionarParametros("@Complemento", clienteFisica.Complemento);
acessoDadosSqlServer.AdicionarParametros("@Bairro", clienteFisica.Bairro);
acessoDadosSqlServer.AdicionarParametros("@Cep", clienteFisica.Cep);
acessoDadosSqlServer.AdicionarParametros("@Cidade", clienteFisica.Cidade);
acessoDadosSqlServer.AdicionarParametros("@Estado", clienteFisica.Estado);
acessoDadosSqlServer.AdicionarParametros("@Situacao", clienteFisica.Situacao);
acessoDadosSqlServer.AdicionarParametros("@LimiteCredito", clienteFisica.LimiteCredito);
acessoDadosSqlServer.AdicionarParametros("@NomePai", clienteFisica.NomePai);
acessoDadosSqlServer.AdicionarParametros("@NomeMae", clienteFisica.NomeMae);
acessoDadosSqlServer.AdicionarParametros("@Email", clienteFisica.Email);
acessoDadosSqlServer.AdicionarParametros("@TelFixo", clienteFisica.TelFixo);
acessoDadosSqlServer.AdicionarParametros("@TelCelular", clienteFisica.TelCelular);
acessoDadosSqlServer.AdicionarParametros("@Observacao", clienteFisica.Observacao);

string idClienteFisica = acessoDadosSqlServer.ExecutarManipulacao(CommandType.StoredProcedure, "uspClienteFisicaManter").ToString();
return idClienteFisica;
}
catch (Exception ex)
{
return ex.Message;
}
}
}
}

Formulário de Clientes:
using System;
using System.Windows.Forms;

using ObjetoTransferencia;
using Negocios;

namespace Apresentacao
{
public partial class FrmClienteCadastro : Form
{
public FrmClienteCadastro()
{
InitializeComponent();
}

private void btnSalvar_Click(object sender, EventArgs e)
{

ClienteFisica clienteFisica = new ClienteFisica();

clienteFisica.Acao = 1;
clienteFisica.Cliente.Empresa.IDEmpresa = 1;
clienteFisica.Nome = txtRazao.Text;
clienteFisica.Cpf = txtCnpj.Text;
clienteFisica.Rg = txtIe.Text;
clienteFisica.DtNascimento = Convert.ToDateTime("04/06/1978");
clienteFisica.Endereco = txtEndereco.Text;
clienteFisica.Complemento = txtComplemento.Text;
clienteFisica.Bairro = txtBairro.Text;
clienteFisica.Cep = txtCep.Text;
clienteFisica.Cidade = txtCidade.Text;
clienteFisica.Estado = txtEstado.Text;
if (rbAtivo.Checked == true)
clienteFisica.Situacao = "1";
else
clienteFisica.Situacao = "0";
clienteFisica.LimiteCredito = Convert.ToDecimal(txtLimiteCredito.Text);
clienteFisica.NomePai = "JOAO ANTONIO POCAS";
clienteFisica.NomeMae = "LEONICE MARTINS POCAS";
clienteFisica.Email = txtEmail.Text;
clienteFisica.TelFixo = "4332321729";
clienteFisica.TelCelular = "4332321729";
clienteFisica.Observacao = txtObservacao.Text;

ClienteFisicaNegocio clienteFisicaNegocio = new ClienteFisicaNegocio();
string retorno = clienteFisicaNegocio.Inserir(clienteFisica);

try
{
int idCliente = Convert.ToInt32(retorno);
MessageBox.Show("Dados salvos com sucesso. \n Código: " + idCliente.ToString(), "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.DialogResult = DialogResult.Yes;
}
catch
{
MessageBox.Show("Não foi possível salvar. \n Detalhes: " + retorno, "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.DialogResult = DialogResult.No;
}
}
}
}

Nesta linha clienteFisica.Cliente.Empresa.IDEmpresa = 1; apresenta o seguinte erro (Object reference not set to an instance of an object.)

Estou usando ADO.NET em camadas sendo (AcessoDados, Negocio, Apresentacao e ObjetoTranferência)

E não sei qual é o problema.

Agradeço deste já se alguém puder me ajudar.


Elessandro Poças

Elessandro Poças

Responder

Post mais votado

29/05/2014

Obrigado pelo retorno, amigo.
Estou encerrando o tópico.

Joel Rodrigues

Joel Rodrigues
Responder

Mais Posts

07/05/2014

Joel Rodrigues

Esse erro é gerado quando um objeto não foi instanciado e você está tentando acessá-lo. Você precisa instanciar o objeto Empresa dentro da classe Cliente, bem como instanciar a Cliente dentro da ClienteFisica, antes de utiliza-las.
Responder

07/05/2014

Elessandro Poças

Joel,

Obrigado pela ajuda, funcionou... pode fechar o tópico...

Na classe cliente ficou:

public Cliente()
{
Empresa = new Empresa();
ClienteTipo = new ClienteTipo();
}

Na classe clienteFisica ficou:

public clienteFisica()
{
Cliente = new Cliente()
}
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar