Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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
StreamReader
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
02
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
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
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.");
Executando:
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
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
12
C# WebDeveloper
Aula
02
namespace Proj02.Control
{
public interface IControleCliente
{
}
}
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
Proj02.Entity; //entidades
namespace Proj02.Control
{
Comparativo:
Classes
Interfaces
Atributos
Sim
No
Construtores
Sim
No
Mtodos concretos
Sim
No
Mtodos abstratos
No
Sim
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
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...
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();
}
}
}
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
Observao:
No podemos instanciar uma interface diretamente, pois esta no
possui mtodos construtores...
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
{
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Proj03.Entity
{
//PessoaFisica -UMA Pessoa
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
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; }
}
}
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Proj03.Entity
{
//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.
[Objeto]
[Espao de Memria]
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
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
Tipo ENUM
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Threading.Tasks;
namespace Proj04.Entity
{
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
{
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
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...
[Objeto]
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();
}
}
}
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
02
"
"
"
"
+
+
+
+
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
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
"
"
"
"
+
+
+
+
02
f.IdFuncionario);
f.Nome);
f.Salario);
f.Sexo);
Console.ReadKey();
}
}
}
Resultado:
30