Buscar

Aula_09 11

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Treinamento em C# WebDeveloper
	
Aula
06
	
	Sexta-feira, 09 de Novembro de 2018
	
	
	
Desenvolvimento Orientado a Objetos em C#
	
Criando uma nova solution em branco:
Criando um projeto console:
Criando a base de dados:
MDF - Master Database File
Arquivo de banco de dados local do sqlserver
App.config.xml
Mapeamento da connectionstring do banco de dados
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 
 <startup> 
 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
 </startup>
 <connectionStrings>
 <add
 name="Aula06"
 connectionString="Data Source=(LocalDB)\MSSQLLocalDB;
		AttachDbFilename=C:\Users\COTI\Desktop\Aula_09.11.18\
		Aula06\Projeto01\App_Data\Banco.mdf;Integrated Security=True"
 />
 </connectionStrings>
</configuration>
----------------
Diagrama de Entidade Relacionamento (DER)
Diagrama de banco de dados
Criando as tabelas no banco de dados:
Linguagem SQL
Script das tabelas:
create table Categoria(
	IdCategoria	integer		identity(1,1),
	Nome			nvarchar(50)	not null,
	primary key(IdCategoria))
go
create table Produto(
	IdProduto		integer		identity(1,1),
	Nome			nvarchar(50)	not null,
	Preco			decimal(18,2)	not null,
	Quantidade		integer		not null,
	IdCategoria	integer		not null,
	primary key(IdProduto),
	foreign key(IdCategoria)
		references Categoria(IdCategoria))
go
Diagrama de Classes
Modelagem Orientada a Objetos
· Classes de entidade:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Projeto01.Entities
{
 public class Categoria
 {
 public int IdCategoria { get; set; }
 public string Nome { get; set; }
 //Relacionamento (TER-MUITOS)
 public List<Produto> Produtos { get; set; }
 //construtor default..
 public Categoria()
 {
 //vazio
 }
 //sobrecarga de métodos (overloading)
 public Categoria(int idCategoria, string nome)
 {
 IdCategoria = idCategoria;
 Nome = nome;
 }
 //sobrecarga de métodos (overloading)
 public Categoria(int idCategoria, string nome, List<Produto> produtos)
 : this(idCategoria, nome)
 { 
 Produtos = produtos;
 }
 //sobrescrita de método (override)
 public override string ToString()
 {
 return $"Id: {IdCategoria}, Nome: {Nome}";
 }
 }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Projeto01.Entities
{
 public class Produto
 {
 public int IdProduto { get; set; }
 public string Nome { get; set; }
 public decimal Preco { get; set; }
 public int Quantidade { get; set; }
 public Categoria Categoria { get; set; }
 public Produto()
 {
 }
 public Produto(int idProduto, string nome, decimal preco, int quantidade)
 {
 IdProduto = idProduto;
 Nome = nome;
 Preco = preco;
 Quantidade = quantidade;
 }
 public Produto(int idProduto, string nome, decimal preco, int quantidade, 
		Categoria categoria) : this(idProduto, nome, preco, quantidade)
 {
 Categoria = categoria;
 }
 public override string ToString()
 {
 return $"Id: {IdProduto}, Nome: {Nome}, 
			Preço: {Preco}, Quantidade: {Quantidade}";
 }
 }
}
Criando a classe de 
conexão do banco de dados:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; //SqlServer..
namespace Projeto01.Repositories
{
 public class Conexao
 {
 public SqlConnection Connection { get; set; }
 public SqlCommand Command { get; set; }
 public SqlDataReader DataReader { get; set; }
 public SqlTransaction Transaction { get; set; }
 public void AbrirConexao()
 {
 Connection = new SqlConnection();
 Connection.Open();
 }
 public void FecharConexao()
 {
 Connection.Close();
 }
 }
}
Obtendo a connectionstring
Adicionando referencia para System.Configuration
Selecione: System.Configuration
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; //SqlServer..
using System.Configuration;
namespace Projeto01.Repositories
{
 public class Conexao
 {
 public SqlConnection Connection { get; set; }
 public SqlCommand Command { get; set; }
 public SqlDataReader DataReader { get; set; }
 public SqlTransaction Transaction { get; set; }
 public void AbrirConexao()
 {
 Connection = new SqlConnection(ConfigurationManager.ConnectionStrings
					["Aula06"].ConnectionString);
 Connection.Open();
 }
 public void FecharConexao()
 {
 Connection.Close();
 }
 }
}
Interface
Criando um contrato para declarar os métodos abstratos que 
deverão ser implementados pelas classes de repositorio:
using Projeto01.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Projeto01.Contracts
{
 public interface IRepository<T>
 where T : class
 {
 //métodos abstratos
 void Inserir(T obj);
 void Atualizar(T obj);
 void Excluir(int id);
 List<T> Consultar();
 } 
}
Implementando a interface genérica:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; //importando..
using Projeto01.Entities; //importando..
using Projeto01.Contracts; //importando..
namespace Projeto01.Repositories
{
 public class CategoriaRepository
 : Conexao, IRepository<Categoria>
 {
 public void Atualizar(Categoria obj)
 {
 throw new NotImplementedException();
 }
 public List<Categoria> Consultar()
 {
 throw new NotImplementedException();
 }
 public void Excluir(int id)
 {
 throw new NotImplementedException();
 }
 public void Inserir(Categoria obj)
 {
 throw new NotImplementedException();
 }
 }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; //importando..
using Projeto01.Entities; //importando..
using Projeto01.Contracts; //importando..
namespace Projeto01.Repositories
{
 public class ProdutoRepository
 : Conexao, IRepository<Produto>
 {
 public void Atualizar(Produto obj)
 {
 throw new NotImplementedException();
 }
 public List<Produto> Consultar()
 {
 throw new NotImplementedException();
 }
 public void Excluir(int id)
 {
 throw new NotImplementedException();
 }
 public void Inserir(Produto obj)
 {
 throw new NotImplementedException();
 }
 }
}
---------------------------------------------------
Implementando o Repositorio de Categoria:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; //importando..
using Projeto01.Entities; //importando..
using Projeto01.Contracts; //importando..
namespace Projeto01.Repositories
{
 public class CategoriaRepository
 : Conexao, IRepository<Categoria>
 {
 public void Atualizar(Categoria obj)
 {
 string query = "update Categoria set Nome = @Nome "
 + "where IdCategoria = @IdCategoria";
 Command = new SqlCommand(query,Connection);
 Command.Parameters.AddWithValue("@Nome", obj.Nome);
 Command.Parameters.AddWithValue("@IdCategoria", obj.IdCategoria);
 Command.ExecuteNonQuery();
 }
 public List<Categoria> Consultar()
 {
 string query = "select * from Categoria";
 Command = new SqlCommand(query, Connection);
 DataReader = Command.ExecuteReader();
 //declarar uma lista de Categoria
 List<Categoria> lista = new List<Categoria>();
 //varrer o DataReader..
 while(DataReader.Read()) //lendo cada registro contido no DataReader
 {
 Categoria categoria = new Categoria();
 categoria.IdCategoria = Convert.ToInt32(DataReader
						["IdCategoria"]);
 categoria.Nome = Convert.ToString(DataReader["Nome"]);
 lista.Add(categoria);
 }
 //retornando a lista..
 return lista;
 }
 public void Excluir(int id)
 {
 string query = "delete from Categoria 
				 where IdCategoria = @IdCategoria";
 Command = new SqlCommand(query, Connection);
 Command.Parameters.AddWithValue("@IdCategoria", id);
 Command.ExecuteNonQuery();
 }
 public void Inserir(Categoria obj)
 {
 string query = "insert into Categoria(Nome) values(@Nome)";
 Command = new SqlCommand(query, Connection);
 Command.Parameters.AddWithValue("@Nome", obj.Nome);
 Command.ExecuteNonQuery();
 }
 }
}
Implementando o Repositorio de Produto:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; //importando..
using Projeto01.Entities; //importando..
using Projeto01.Contracts; //importando..
namespace Projeto01.Repositories
{
 public class ProdutoRepository
 : Conexao, IRepository<Produto>
 {
 public void Atualizar(Produto obj)
 {
 string query = "update Produto set Nome = @Nome, Preco = @Preco, "
 + "Quantidade = @Quantidade, IdCategoria = @IdCategoria "
 + "where IdProduto = @IdProduto";
 Command = new SqlCommand(query, Connection);
 Command.Parameters.AddWithValue("@Nome", obj.Nome);
 Command.Parameters.AddWithValue("@Preco", obj.Preco);
 Command.Parameters.AddWithValue("@Quantidade", obj.Quantidade);
 Command.Parameters.AddWithValue("@IdCategoria", 
							obj.Categoria.IdCategoria);
 Command.Parameters.AddWithValue("@IdProduto", obj.IdProduto);
 Command.ExecuteNonQuery();
 }
 public List<Produto> Consultar()
 {
 string query = "select p.IdProduto, p.Nome, p.Quantidade, p.Preco, "
 + "c.IdCategoria, c.Nome as NomeCategoria "
 + "from Produto p inner join Categoria c "
 + "on p.IdCategoria = c.IdCategoria";
 Command = new SqlCommand(query, Connection);
 DataReader = Command.ExecuteReader();
 List<Produto> lista = new List<Produto>();
 while(DataReader.Read())
 {
 Produto produto = new Produto();
 produto.Categoria = new Categoria();
 produto.IdProduto = Convert.ToInt32(DataReader["IdProduto"]);
 produto.Nome = Convert.ToString(DataReader["Nome"]);
 produto.Preco = Convert.ToDecimal(DataReader["Preco"]);
 produto.Quantidade = Convert.ToInt32(DataReader["Quantidade"]);
 produto.Categoria.IdCategoria = Convert.ToInt32
							(DataReader["IdCategoria"]);
 produto.Categoria.Nome = Convert.ToString
							(DataReader["NomeCategoria"]);
 lista.Add(produto);
 }
 return lista;
 }
 public void Excluir(int id)
 {
 string query = "delete from Produto where IdProduto = @IdProduto";
 Command = new SqlCommand(query, Connection);
 Command.Parameters.AddWithValue("@IdProduto", id);
 Command.ExecuteNonQuery();
 }
 public void Inserir(Produto obj)
 {
 string query = "insert into Produto(Nome, Preco, 
				Quantidade, IdCategoria) "
 + "values(@Nome, @Preco, @Quantidade, @IdCategoria)";
 Command = new SqlCommand(query, Connection);
 Command.Parameters.AddWithValue("@Nome", obj.Nome);
 Command.Parameters.AddWithValue("@Preco", obj.Preco);
 Command.Parameters.AddWithValue("@Quantidade", obj.Quantidade);
 Command.Parameters.AddWithValue("@IdCategoria", 
							obj.Categoria.IdCategoria);
 Command.ExecuteNonQuery();
 }
 }
}
----------------------------------------
Testando:
Método Main()
finally
O catch é usado para capturar exceções e só, o finally é executado sempre após o final de um bloco de código dentro do try ou catch, se houver um, havendo exceção ou não.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Projeto01.Entities; //importando
using Projeto01.Repositories; //importando
namespace Projeto01
{
 class Program
 {
 static void Main(string[] args)
 {
 CategoriaRepository categoriaRepository = new CategoriaRepository();
 try
 {
 Console.WriteLine("\nCADASTRO DE CATEGORIA\n");
 Categoria categoria = new Categoria();
 Console.Write("Informe o nome da Categoria....: ");
 categoria.Nome = Console.ReadLine();
 categoriaRepository.AbrirConexao();
 categoriaRepository.Inserir(categoria);
 Console.WriteLine("\nCategoria cadastrado com sucesso.");
 }
 catch(Exception e)
 {
 Console.WriteLine("\nOcorreu um erro: " + e.Message); 
 }
 finally
 {
 categoriaRepository.FecharConexao();
 }
 Console.ReadKey();
 }
 } 
}
Executando:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Projeto01.Entities; //importando
using Projeto01.Repositories; //importando
namespace Projeto01
{
 class Program
 {
 static void Main(string[] args)
 {
 CategoriaRepository categoriaRepository = new CategoriaRepository();
 try
 {
 Console.WriteLine("\nCADASTRO DE CATEGORIA\n");
 Categoria categoria = new Categoria();
 Console.Write("Informe o nome da Categoria....: ");
 categoria.Nome = Console.ReadLine();
 categoriaRepository.AbrirConexao();
 categoriaRepository.Inserir(categoria);
 Console.WriteLine("\nCategoria cadastrado com sucesso.");
 //exibindo a consulta..
 Console.WriteLine("\n\tCONSULTA DE CATEGORIAS");
 foreach(Categoria registro in categoriaRepository.Consultar())
 {
 Console.WriteLine("\n\tCategoria ->" + registro.ToString());
 }
 }
 catch(Exception e)
 {
 Console.WriteLine("\nOcorreu um erro: " + e.Message); 
 }
 finally
 {
 categoriaRepository.FecharConexao();
 }
 Console.ReadKey();
 }
 } 
}
Executando:
Auto-Relacionamento:
Relacionamento de associação para a mesma entidade
Exemplo:
Pessoa TEM Pessoa (Conjuge)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Projeto01
{
 class Program
 {
 static void Main(string[] args)
 {
 Pessoa p1 = new Pessoa();
 p1.Nome = "Sergio";
 p1.Sexo = "Masculino";
 Pessoa p2 = new Pessoa();
 p2.Nome = "Juliana";
 p2.Sexo = "Feminino";
 p1.Conjuge = p2;
 }
 }
 public class Pessoa
 {
 public string Nome { get; set; }
 public string Sexo { get; set; }
 public Pessoa Conjuge { get; set; }
 }
}
18

Continue navegando