Estrutura de Código
O .NET Framework possui três níveis de estrutura de código: assembly, namespace e complex types.
Assembly
Um assembly é um repositório para armazenar funcionalidades relacionadas. Existem dois tipos: executável (EXE) e link dinâmico (DLL).
É usado onde é necessário particionar ou encapsular funcionalidades dentro de uma unidade lógica.
Pode ser usado para controlar o caminho que o código é acessado e distribuído para um cliente.
Namespace
Um namespace reside dentro de um assembly e é usado como ferramenta para estruturar o código.
É uma unidade de compilação dentro do qual o código pode ser estruturado.
A visibilidade de um namesapce é pública e não pode ser trocada.
É codificada usando o keyword namespace.
namespace Estoque
{
namespace Maquinas
{
class Pistao
{.....}
}
}
Complex Types
Interface
Uma interface oferece flexibilidade para estruturar um código, porque suporta múltiplas heranças e pode ser implementada em qualquer nível dentro de uma hierarquia de classe ou dentro de uma outra hierarquia de interface. Pode conter propriedades, métodos, eventos e índices. É usada para aumentar a interface de uma classe ou estrutura.
namespace Modelos.Interfaces
{
interface ISedan
{
int Portas {get; set;}
void FazAlgumaCoisa();
}
interface ISport
{
int Portas {get; set;}
void FazAlgumaCoisaDiferente();
}
}
Vamos usar um tipo interface, para manter a definição de um carro genérico e herdar a funcionalidade apropriada usando a herença de interface.
using System;
// referenciando o namespace
using Modelos.Interfaces;
namespace ModelosInterfaceExemplos
{
// Herda funcionalidade Sedan
class Carro : ISedan
{
int _Portas;
// Implementa propriedade
public int Portas
{
get {return _Portas;)
set {_Portas = value;)
}
// Implementa Método
public void FazAlgumaCoisa()
{;}
}
}
Struct
Uma struct pode conter construtores, campos, propriedades, métodos, tipos nested, operadores e índices. Nào suporta heranças, mas pode ser herdada de uma interface.
struct MeuCarro : ISedan
{
int _Portas;
// implementa propriedade
public int Portas
{
get {return _Portas;)
set {_Portas = value;)
}
// Implementa Método
public void FazAlgumaCoisa()
{;}
}
Class
Uma classe é o mais sofisticado tipo usado para estruturar funcionalidades, suporta herança e pode ser codificada como uma abstração ou uma implementação.
class MeuCarro : ISedan
{
int _Portas;
// implementa propriedade
public int Portas
{
get {return _Portas;)
set {_Portas = value;)
}
// Implementa Método
public void FazAlgumaCoisa()
{;}
// Construtor da Classe
public MeuCarro()
{;}
}