DECLARA?ÃO DE CLASSES

MARCELOKROL 10/07/2016 10:40:49
#464686
Bom dia

Essa é uma duvida que sempre tive desde que me aventurei pelo C#!
Por exemplo essa sequencia de classes:
   
public class Departamentos
{
public int Codigo { get; set; }
public string Descricao { get; set; }
}

///Um grupo deve ter obrigatoriamente um departamento
public class Grupos
{
public int Codigo { get; set; }
public string Descricao { get; set; }
public int CodigoDepartamento { get; set; }
}


Então...
A declaração para a classes produtos deve ser assim:
   
public class Produtos
{
public int Codigo { get; set; }
public string Descricao { get; set; }
public int CodigoDepartamento { get; set; }
public int CodigoGrupo { get; set; }
}


ou assim:
   
public class Produtos
{
public int Codigo { get; set; }
public string Descricao { get; set; }
public Departamentos Departamento { get; set; }
public Grupos Grupo { get; set; }
}
ACCIOLLY 10/07/2016 10:48:54
#464687
O que tem nessas classes são atributos encapsulados???
MARCELOKROL 10/07/2016 11:02:09
#464689
Desculpe, faltou explicar o que elas fazem... Elas são tabelas do banco de dados, e serão carregadas com os devidos fields em outros métodos para serem usados em relatórios, grids, forms, etc
MARCELOKROL 16/07/2016 22:05:09
#464852
upzinho básico
ACCIOLLY 17/07/2016 11:54:01
#464855
Acredito que tanto faz. Vc terá menos trabalho se usar a segunda opção. Porque quando for manipular os dados só precisará instanciar a classe Produtos uma vez que ela te dá acesso as demais classes. Ex

public class Movimento{

Produtos prod = new Produtos(); // Instancia da classe

public void pegaValor(){
int codigo = prod.Codigo;
string Descricao = prod.Descricao;
int codigoDepartameto = prod.Departamento.Codigo;
String DescricaoDepartamento = prod.Departamento.Descricao;
}

}


Como pode perceber apenas foi instanciado a classe Produto. Por ela vc pode manipular todos os registros. Com tanto que as outras classes tenham sido instanciadas na classe produto.
JABA 17/07/2016 12:41:52
#464857
Resposta escolhida
Primeiro, pare de enxergar as classes como módulos, eles não são equivalentes. Como eu sei que você está enxergando as classes como módulo? Por causa da forma com que você escreveu o nome delas. O que torna a pluralidade das classes são as instâncias. Por tanto, retire o [Ô]s[Ô] do final do nome delas.

Segundo, existem redundâncias no seu código, por isso dei uma refatorada e ficou como segue abaixo:

public class Departamento
{
public int Codigo { get; set; }
public string Descricao { get; set; }
}

///Um grupo deve ter obrigatoriamente um departamento
public class Grupo
{
public int Codigo { get; set; }
public string Descricao { get; set; }
[txt-color=#e80000] public Departamento Departamento { get; set; }[/txt-color]
}

public class Produto
{
public int Codigo { get; set; }
public string Descricao { get; set; }
[txt-color=#e80000] public Grupo Grupo { get; set; }[/txt-color]
}

Tópico encerrado , respostas não são mais permitidas