Você está na página 1de 30

C# WebDeveloper

Domingo, 29 de Maro de 2015


Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Criando a Solution
Ambiente de trabalho

Criando o Projeto
Console Application
Ambiente: DOS (Prompt de comando)
Adicionando um novo projeto na Solution

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Mtodo Main
Responsvel por executar o projeto. Primeira funo executada
quando o projeto startado.
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj01
{
class Program
{
//mtodo utilizado para executar o projeto
static void Main(string[] args)
{
}
}
}

Classes de entidade

So classes compostas de atributos e mtodos mas com o objetivo de


simplesmente modelar e representar alguma entidade do sistema.
So caractersticas deste tipo de classe:
Atributos privados
Mtodos de encapsulamento (set/get)
Construtores

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Classe: Produto (entidade)


Modelagem de entidades

using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj01.Entity
{
//public -> visibilidade total
public class Produto //entidade
{
//atributos (dados)
//private -> acessado somente dentro da propria classe
private int idProduto;
private string nome;
private double preco;
//mtodos de encapsulamento (set/get)
public int IdProduto //property
{
set { idProduto = value; } //entrada
get { return idProduto; } //saida
}
public string Nome
{
set { nome = value; } //entrada
get { return nome; } //saida
}
public double Preco
{
set { preco = value; } //entrada
get { return preco; } //saida
}
}
}

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Construtores
Toda classe em C# possui mtodos utilizados para instanciar os seus
objetos (definem o espao de memria). Estes mtodos so
chamados de construtores.
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj01.Entity
{
//public -> visibilidade total
public class Produto //entidade
{
//atributos (dados)
//private -> acessado somente dentro da propria classe
private int idProduto;
private string nome;
private double preco;
//Construtores (new)
//[ctor] + 2x[tab]
public Produto()
{
//construtor padro (vazio)
}
//Sobrecarga de mtodos (overloading)
public Produto(int idProduto, string nome, double preco)
{
this.idProduto = idProduto;
this.nome = nome;
this.preco = preco;
}
//mtodos de encapsulamento (set/get)
public int IdProduto //property
{
set { idProduto = value; } //entrada
get { return idProduto; } //saida
}
public string Nome
{
set { nome = value; } //entrada
get { return nome; } //saida
}
public double Preco
{
set { preco = value; } //entrada
get { return preco; } //saida
}
}
}

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Tarefa:
Criar um programa que permita gravar produtos
em um arquivo do tipo CSV (excel)

Manipulao de arquivos:
(System.IO)

StreamWriter

Classe utilizada para gravao de arquivos (escrita)

StreamReader

Classe utilizada para leitura de arquivos (leitura)


using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj01.Entity; //classes de entidade
System.IO; //input, output

namespace Proj01.Control
{
public class ControleProduto
{
//Mtodo para gravar os dados do produto em um arquivo CSV
public void GravarArquivo(Produto p) //value object (VO)
{
try //tentativa
{
//classe para gravao de arquivos em C#...
StreamWriter writer = new StreamWriter("c:\\temp\\produtos.csv");
//escrever o conteudo do arquivo...
writer.WriteLine(p.IdProduto + ";" + p.Nome + ";" + p.Preco);

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

//fechar o arquivo..
writer.Close();
}
catch(Exception e) //captura do erro
{
Console.WriteLine("Erro ao gravar arquivo: " + e.Message);
}
}
}
}

Testando...
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj01.Control; //classes de controle...
Proj01.Entity; //classes de entidade...

namespace Proj01
{
class Program
{
//mtodo utilizado para executar o projeto
static void Main(string[] args)
{
//criando objetos da classe produto...
Produto p1 = new Produto(1, "Mouse", 30.0);
Produto p2 = new Produto(2, "Monitor", 400.0);
Produto p3 = new Produto(3, "Notebook", 2000.0);
Produto p4 = new Produto(4, "PenDrive", 100.0);
//gravar cada produto dentro do arquivo...
ControleProduto c = new ControleProduto(); //classe de controle...
c.GravarArquivo(p1); //gravando...
c.GravarArquivo(p2); //gravando...
c.GravarArquivo(p3); //gravando...
c.GravarArquivo(p4); //gravando...
Console.WriteLine("Operao realizada com sucesso.");
//pausar a execuo...
Console.ReadKey();
}
}
}

C# WebDeveloper

Aula

Domingo, 29 de Maro de 2015


Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

02

Configurando a gravao do arquivo para no sobrescrever o arquivo


criado e sim adicionar contedo ao final do arquivo j existente...

StreamWriter writer = new StreamWriter


("c:\\temp\\produtos.csv",

true);

Exemplo:
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj01.Entity; //classes de entidade
System.IO; //input, output

namespace Proj01.Control
{
public class ControleProduto
{
//Mtodo para gravar os dados do produto em um arquivo CSV
public void GravarArquivo(Produto p) //value object (VO)
{
try //tentativa
{
//classe para gravao de arquivos em C#...
StreamWriter writer = new StreamWriter
("c:\\temp\\produtos.csv", true);
//escrever o conteudo do arquivo...
writer.WriteLine(p.IdProduto + ";" + p.Nome + ";" + p.Preco);
//fechar o arquivo..
writer.Close();
}
catch(Exception e) //captura do erro
{
Console.WriteLine("Erro ao gravar arquivo: " + e.Message);
}
}
}
}

Executando:

Arquivo gerado:
7

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Mtodo para ler e retornar


o contedo do arquivo...
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj01.Entity; //classes de entidade
System.IO; //input, output

namespace Proj01.Control
{
public class ControleProduto
{
//Mtodo para gravar os dados do produto em um arquivo CSV
public void GravarArquivo(Produto p) //value object (VO)
{
try //tentativa
{
//classe para gravao de arquivos em C#...
StreamWriter writer = new
StreamWriter("c:\\temp\\produtos.csv", true);
//escrever o conteudo do arquivo...
writer.WriteLine(p.IdProduto + ";" + p.Nome + ";" + p.Preco);
//fechar o arquivo..
writer.Close();
}
catch(Exception e) //captura do erro
{
Console.WriteLine("Erro ao gravar arquivo: " + e.Message);
}
}

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

//Mtodo para ler e retornar o conteudo do arquivo...


public string LerArquivo()
{
try
{
//Classe para leitura de arquivos em C#...
StreamReader reader = new StreamReader("c:\\temp\\produtos.csv");
string conteudo = string.Empty; //vazio...
//ler cada linha do arquivo enquanto no o final do arquivo
while( ! reader.EndOfStream ) //enquanto no o final no arquivo
{
//lendo a linha do arquivo e acumulando
//na variavel 'conteudo'
conteudo += reader.ReadLine();
conteudo += "\n"; //quebra de linha...
}
reader.Close(); //fechar o arquivo...
//retornar o conteudo...
return conteudo;
}
catch(Exception e)
{
//retornando uma mensagem de erro..
return "Erro ao ler arquivo: " + e.Message;
}
}
}
}

Executando:
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj01.Control; //classes de controle...
Proj01.Entity; //classes de entidade...

namespace Proj01
{
class Program
{
//mtodo utilizado para executar o projeto
static void Main(string[] args)
{
//criando objetos da classe produto...
Produto p1 = new Produto(1, "Mouse", 30.0);
Produto p2 = new Produto(2, "Monitor", 400.0);
Produto p3 = new Produto(3, "Notebook", 2000.0);
Produto p4 = new Produto(4, "PenDrive", 100.0);
//gravar cada produto dentro do arquivo...
ControleProduto c = new ControleProduto(); //classe de controle...
c.GravarArquivo(p1); //gravando...
c.GravarArquivo(p2); //gravando...
c.GravarArquivo(p3); //gravando...

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

c.GravarArquivo(p4); //gravando...
Console.WriteLine("Operao realizada com sucesso.");

//ler o conteudo do arquivo...


string conteudo = c.LerArquivo();
//imprimir o conteudo lido do arquivo...
Console.WriteLine(conteudo);
//pausar a execuo...
Console.ReadKey();
}
}
}

Executando:

Criando um novo projeto...

10

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Classe de entidade:

using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj02.Entity
{
public class Cliente //entidade
{
//encapsulamento implicito dos atributos
//[prop] + 2x[tab]
public int IdCliente { get; set; }
public string Nome { get; set; }
public string Email { get; set; }
}
}

Interfaces
So componentes de programao Orientado a Objetos utilizada para
definir padres em sistemas.
Toda interface deve obedecer s seguintes regras:
Interfaces no podem ter atributos
Interfaces no podem ter construtores
Interfaces no podem ter mtodos com corpo, apenas
assinatura (mtodos abstratos)
11

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Toda classe que HERDAR uma interface ser obrigada a


programar o contedo de todos os mtodos definifos na
interface.

Por boa prtica, toda interface criada em C# deve ter o nome


comeando com a letra I

using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

12

C# WebDeveloper

Aula

Domingo, 29 de Maro de 2015


Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

02

namespace Proj02.Control
{
public interface IControleCliente
{
}
}

Uma interface somente pode ter mtodos abstratos, ou seja,


mtodos que no possuem corpo, apenas assinatura.
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj02.Entity; //entidades

namespace Proj02.Control
{

//programa para padronizar a forma de trabalhar das classes


public interface IControleCliente
{
void AbrirArquivo(); //mtodo abstrato!
void GravarDados(Cliente c); //mtodo abstrato!
void FecharArquivo(); //mtodo abstrato!
}
}

Comparativo:
Classes

Interfaces

Atributos

Sim

No

Construtores

Sim

No

Mtodos concretos

Sim

No

Mtodos abstratos

No

Sim

Pode ser instanciado

Sim

No

13

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Criando uma classe implementando a interface:

using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj02.Entity; //classes de entidade...
System.IO; //input, output...

namespace Proj02.Control
{
//Classe IMPLEMENTA a interface...

public class ControleCliente : IControleCliente


{
}
}

14

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

using
using
using
using
using
using
using

Aula

02

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj02.Entity; //classes de entidade...
System.IO; //input, output...

namespace Proj02.Control
{
//Classe IMPLEMENTA a interface...
public class ControleCliente : IControleCliente
{
public void AbrirArquivo()
{
throw new NotImplementedException();
}
public void GravarDados(Cliente c)
{
throw new NotImplementedException();
}
public void FecharArquivo()
{
throw new NotImplementedException();
}
}
}

Programando o contedo dos mtodos:


using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj02.Entity; //classes de entidade...
System.IO; //input, output...

namespace Proj02.Control
{
//Classe IMPLEMENTA a interface...
public class ControleCliente : IControleCliente
{
//declarar um atributo para gravar arquivos...
private StreamWriter writer;
public void AbrirArquivo()
{
//abrindo um arquivo para gravao...
writer = new StreamWriter("c:\\temp\\clientes.txt", true);
}
public void GravarDados(Cliente c)
{
writer.WriteLine("Codigo...........: " + c.IdCliente);
writer.WriteLine("Nome do Cliente..: " + c.Nome);

15

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

writer.WriteLine("Email............: " + c.Email);


writer.WriteLine("\n");
}
public void FecharArquivo()
{
writer.Close(); //fechar o arquivo...
}
}
}

Observao:
No podemos instanciar uma interface diretamente, pois esta no
possui mtodos construtores...

IControleCliente c = new IControleCliente();


Testando...
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj02.Entity; //classes de entidade...
Proj02.Control; //classes de controle...

namespace Proj02
{

16

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

class Program
{
static void Main(string[] args)
{
Cliente cli = new Cliente(); //objeto
cli.IdCliente = 1; //set
cli.Nome = "Sergio Mendes"; //set
cli.Email = "sergio.coti@gmail.com"; //set
try
{
ControleCliente c = new ControleCliente();
c.AbrirArquivo();
c.GravarDados(cli);
c.FecharArquivo();
Console.WriteLine("Dados gravados.");
}
catch(Exception e)
{
//imprimir mensagem com o erro...
Console.WriteLine("Erro: " + e.Message);
}
Console.ReadKey(); //pausar...
}
}
}

Executando:

17

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Novo projeto:

Modelagem de entidades:
Relacionamento de Herana (SER)
Generalizao / Especializao

18

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

using
using
using
using
using

Aula

02

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj03.Entity
{

public class Pessoa


{
public int IdPessoa { get; set; }
public string Nome { get; set; }
}
}

using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj03.Entity
{
//PessoaFisica -UMA Pessoa

public class PessoaFisica : Pessoa


{
public string Cpf { get; set; }
}
}

using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;

19

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

using System.Threading.Tasks;
namespace Proj03.Entity
{
//PessoaJuridica -UMA Pessoa

public class PessoaJuridica : Pessoa


{
public string Cnpj { get; set; }
}
}

Associao (TER)

Tipo de relacionamento que define que uma classe faz parte de outra
classe. Relacionamento de utilizao e no generalizao.

20

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

using
using
using
using
using

Aula

02

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj03.Entity
{
public class Endereco
{
public int IdEndereco { get; set; }
public string Logradouro { get; set; }
public string Cidade { get; set; }
public string Estado { get; set; }
}
}

Relacionando Pessoa a Endereco:


using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj03.Entity
{

public class Pessoa


{
public int IdPessoa { get; set; }
public string Nome { get; set; }

//Associao (TER-1)
public Endereco Endereco { get; set; }
}
}

21

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Importante:
Quando instanciamos a classe PessoaFisica, como abaixo, definimos
espao de memria para todos os atributos de PessoaFisica e
tambm da sua classe pai: Pessoa.

PessoaFisica pf = new PessoaFisica();


[Classe]

[Objeto]

[Espao de Memria]

Porm, o Endereco relacionado a Pessoa no instanciado, para isso


deveramos executar tambm o construtor da classe Endereco

PessoaFisica pf = new PessoaFisica();


pf.Endereco = new Endereco();
[Associao]

using
using
using
using
using
using

[Espao de memria]

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj03.Entity; //entidades...

namespace Proj03
{
class Program
{
static void Main(string[] args)
{
PessoaFisica pf = new PessoaFisica(); //classe de entidade
pf.Endereco = new Endereco(); //espao de memria para endereco
pf.IdPessoa = 1; //set
pf.Nome = "Ana Paula"; //set

22

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

pf.Cpf = "1234567890"; //set


pf.Endereco.IdEndereco = 1; //set
pf.Endereco.Logradouro = "Av Rio Branco"; //set
pf.Endereco.Cidade = "Rio de Janeiro"; //set
pf.Endereco.Estado = "RJ"; //set
//imprimindo...
Console.WriteLine("Pessoa Fisica: {0}, {1}, {2}",
pf.IdPessoa, pf.Nome, pf.Cpf);
Console.WriteLine("Endereco: {0}, {1}, {2}", pf.Endereco.Logradouro,
pf.Endereco.Cidade, pf.Endereco.Estado);
Console.ReadKey(); //pausar...
}
}
}

Novo projeto:

using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj04.Entity
{

23

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

public class Funcionario


{
public int IdFuncionario { get; set; }
public string Nome { get; set; }
public double Salario { get; set; }
}
}

Tipo ENUM

Classes utilizadas para definir tipos de dados pr-estabelecidos


Exemplo:
Sexo (Masculino, Feminino)

using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;

namespace Proj04.Entity
{

public enum Sexo


{
Masculino,
Feminino
}
}

Relacionando a entidade ao enum


Funcionario TEM Sexo (Associao)
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;

24

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

using System.Threading.Tasks;
namespace Proj04.Entity
{

public class Funcionario


{
public int IdFuncionario { get; set; }
public string Nome { get; set; }
public double Salario { get; set; }

public Sexo Sexo { get; set; } //ENUM


}
}

Modelagem:

Testando:
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj04.Entity; //classes de entidade...

namespace Proj04
{
class Program
{
static void Main(string[] args)
{
//criando os objetos...
Funcionario f1 = new Funcionario();
f1.IdFuncionario = 1;
f1.Nome = "Ana Paula";
f1.Salario = 2000.0;
f1.Sexo = Sexo.Feminino;
Funcionario f2 = new Funcionario();
f2.IdFuncionario = 2;
f2.Nome = "Joao Pedro";
f2.Salario = 3000.0;
f2.Sexo = Sexo.Masculino;

25

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Funcionario f3 = new Funcionario();


f3.IdFuncionario = 3;
f3.Nome = "Carlos Silva";
f3.Salario = 4000.0;
f3.Sexo = Sexo.Masculino;
Console.ReadKey();
}
}
}

Colees de dados (Collections)


System.Collections.Generic
O .NET possui uma biblioteca voltada somente para manipulao de
colees de dados em C# (Conjunto de dados). So exemplos:

Listas
Pilhas
Filas
Mapas
Etc...

(List)
(Stack)
(Queue)
(Dictionary)

Listas
Tipo de coleo de dados utilizado para formar conjuntos de objetos.
Funciona similar a um vetor, porem com mais recursos...

List<Funcionario> lista = new List<Funcionario>();


[Collection]

[Objeto]

[Espao de Memria Vazio]

Exemplo:
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj04.Entity; //classes de entidade...

namespace Proj04
{
class Program
{
static void Main(string[] args)
{
//criando os objetos...
Funcionario f1 = new Funcionario();
f1.IdFuncionario = 1;
f1.Nome = "Ana Paula";

26

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

f1.Salario = 2000.0;
f1.Sexo = Sexo.Feminino;
Funcionario f2 = new Funcionario();
f2.IdFuncionario = 2;
f2.Nome = "Joao Pedro";
f2.Salario = 3000.0;
f2.Sexo = Sexo.Masculino;
Funcionario f3 = new Funcionario();
f3.IdFuncionario = 3;
f3.Nome = "Carlos Silva";
f3.Salario = 4000.0;
f3.Sexo = Sexo.Masculino;
//declarar uma lista de funcionarios...
List<Funcionario> lista = new List<Funcionario>(); //lista vazia...
lista.Add(f1); //adicionando...
lista.Add(f2); //adicionando...
lista.Add(f3); //adicionando...
//imprimir a quantidade de funcionarios...
Console.WriteLine("Quantidade de Funcionarios: " + lista.Count);
Console.ReadKey();
}
}
}

Percorrendo o contedo da lista:

foreach(Funcionario f in lista)
[Para cada funcionrio dentro da lista, crie um objeto f]
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj04.Entity; //classes de entidade...

namespace Proj04
{
class Program
{
static void Main(string[] args)
{
//criando os objetos...
Funcionario f1 = new Funcionario();
f1.IdFuncionario = 1;
f1.Nome = "Ana Paula";
f1.Salario = 2000.0;
f1.Sexo = Sexo.Feminino;
Funcionario f2 = new Funcionario();
f2.IdFuncionario = 2;

27

C# WebDeveloper

Aula

Domingo, 29 de Maro de 2015


Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

02

f2.Nome = "Joao Pedro";


f2.Salario = 3000.0;
f2.Sexo = Sexo.Masculino;
Funcionario f3 = new Funcionario();
f3.IdFuncionario = 3;
f3.Nome = "Carlos Silva";
f3.Salario = 4000.0;
f3.Sexo = Sexo.Masculino;

//declarar uma lista de funcionarios...


List<Funcionario> lista = new List<Funcionario>(); //lista vazia...
lista.Add(f1); //adicionando...
lista.Add(f2); //adicionando...
lista.Add(f3); //adicionando...
//imprimir a quantidade de funcionarios...
Console.WriteLine("Quantidade de Funcionarios: " + lista.Count);

//varrendo a coleo de dados...


foreach(Funcionario f in lista)
{
Console.WriteLine("IdFuncionario...:
Console.WriteLine("Nome............:
Console.WriteLine("Salario.........:
Console.WriteLine("Sexo............:
Console.WriteLine("\n");
}

"
"
"
"

+
+
+
+

f.IdFuncionario);
f.Nome);
f.Salario);
f.Sexo);

Console.ReadKey();
}
}
}

Executando:

28

C# WebDeveloper
Domingo, 29 de Maro de 2015
Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

Aula

02

Removendo elementos da lista...


Podemos remover um elemento de qualquer posio da lista, desde
que informemos o ndice da posio desejada, comeando sempre de
zero. Exemplo:

lista.RemoveAt(1); //posio 1
Executando:
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj04.Entity; //classes de entidade...

namespace Proj04
{
class Program
{
static void Main(string[] args)
{
//criando os objetos...
Funcionario f1 = new Funcionario();
f1.IdFuncionario = 1;
f1.Nome = "Ana Paula";
f1.Salario = 2000.0;
f1.Sexo = Sexo.Feminino;
Funcionario f2 = new Funcionario();
f2.IdFuncionario = 2;
f2.Nome = "Joao Pedro";
f2.Salario = 3000.0;
f2.Sexo = Sexo.Masculino;
Funcionario f3 = new Funcionario();
f3.IdFuncionario = 3;
f3.Nome = "Carlos Silva";
f3.Salario = 4000.0;
f3.Sexo = Sexo.Masculino;
//declarar uma lista de funcionarios...
List<Funcionario> lista = new List<Funcionario>(); //lista vazia...
lista.Add(f1); //adicionando... (0)
lista.Add(f2); //adicionando... (1)
lista.Add(f3); //adicionando... (2)
//imprimir a quantidade de funcionarios...
Console.WriteLine("Quantidade de Funcionarios: " + lista.Count);

//Removendo um elemento
lista.RemoveAt(1); //posio 1
Console.WriteLine("\nElemento removido da lista\n");

29

C# WebDeveloper

Aula

Domingo, 29 de Maro de 2015


Manipulao de arquivos. Relacionamentos entre Classes (Herana e
Associao). Interfaces e Colees de dados. Tipos Enum

//varrendo a coleo de dados...


foreach(Funcionario f in lista)
{
Console.WriteLine("IdFuncionario...:
Console.WriteLine("Nome............:
Console.WriteLine("Salario.........:
Console.WriteLine("Sexo............:
Console.WriteLine("\n");
}

"
"
"
"

+
+
+
+

02

f.IdFuncionario);
f.Nome);
f.Salario);
f.Sexo);

Console.ReadKey();
}
}
}

Resultado:

30

Você também pode gostar