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()

{;}

}