Baixe o app para aproveitar ainda mais
Prévia do material em texto
Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 1 Criando uma nova solution em branco: Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 2 Criando um projeto Console Application Criando uma classe de entidade using System; using System.Collections.Generic; using System.Linq; using System.Text; Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 3 using System.Threading.Tasks; namespace Projeto01.Entities { public class Funcionario { //[prop] + 2x[tab] public int IdFuncionario { get; set; } public string Nome { get; set; } public decimal Salario { get; set; } public DateTime DataAdmissao { get; set; } //[ctor] + 2x[tab] public Funcionario() { //construtor default (vazio) } //sobrecarga de métodos (overloading) public Funcionario(int idFuncionario, string nome, decimal salario, DateTime dataAdmissao) { IdFuncionario = idFuncionario; Nome = nome; Salario = salario; DataAdmissao = dataAdmissao; } //sobrescrita de método (override) public override string ToString() { return string.Format("Id: {0}, Nome: {1}, Salário: {2}, Data de Admissão: {3}", IdFuncionario, Nome, Salario, DataAdmissao); } } } Classe para entrada de dados de funcionario atraves do prompt do DOS: Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 4 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Projeto01.Inputs { public class FuncionarioInput { //método para ler o id do funcionario.. public int LerIdFuncionario() { Console.Write("Informe o id do funcionário......: "); return int.Parse(Console.ReadLine()); } //método para ler o nome do funcionário.. public string LerNome() { Console.Write("Informe o nome do funcionário....: "); return Console.ReadLine(); } //método para ler o salário do funcionário.. public decimal LerSalario() { Console.Write("Informe o salário do funcionário.: "); return decimal.Parse(Console.ReadLine()); } //método para ler a data de admissão do funcionário.. public DateTime LerDataAdmissao() { Console.Write("Informe a data de admissão.......: "); return DateTime.Parse(Console.ReadLine()); } } } ----------------------------- Métodos estáticos Um método estático consiste de um método que é delcarado com a palavra reservada static. Estes tipos de métodos não são executados atraves dos objetos de uma classe (Instância) e sim atraves do proprio nome da classe. Para estes tipos de métodos, a máquina virtual do .NET ja garante a alocação de espaço de memória. Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 5 Exemplo: Método não estático public class A { public void Imprimir() { Console.WriteLine("Imprime A"); } } public class Test { void Main() { A a = new A(); a.Imprimir(); } } ----------- Método estático public class A { public static void Imprimir() { Console.WriteLine("Imprime A"); } } public class Test { void Main() { A.Imprimir(); } } Note que no exemplo acima, a chamada ao método Imprimir() é feita não por um objeto da classe A, mas sim atraves do proprio nome da classe: A.Imprimir(); Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 6 Regra: Se uma classe for declarada como static, todos os métodos desta classe tambem deverão ser declarados com static. Exemplo: public static class A { public static void Imprimir01() { Console.WriteLine("Imprime A"); } public static void Imprimir02() { Console.WriteLine("Imprime A"); } } public class Test { void Main() { } } --------------------------- Voltando para a classe Input: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Projeto01.Inputs { public class FuncionarioInput { //método para ler o id do funcionario.. public static int LerIdFuncionario() { Console.Write("Informe o id do funcionário......: "); return int.Parse(Console.ReadLine()); } //método para ler o nome do funcionário.. public static string LerNome() { Console.Write("Informe o nome do funcionário....: "); return Console.ReadLine(); } Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 7 //método para ler o salário do funcionário.. public static decimal LerSalario() { Console.Write("Informe o salário do funcionário.: "); return decimal.Parse(Console.ReadLine()); } //método para ler a data de admissão do funcionário.. public static DateTime LerDataAdmissao() { Console.Write("Informe a data de admissão.......: "); return DateTime.Parse(Console.ReadLine()); } } } ----------------------------- Executando os métodos estáticos: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Projeto01.Entities; //importando.. using Projeto01.Inputs; //importando.. namespace Projeto01 { class Program { static void Main(string[] args) { Funcionario funcionario = new Funcionario(); try { funcionario.IdFuncionario = FuncionarioInput.LerIdFuncionario(); funcionario.Nome = FuncionarioInput.LerNome(); funcionario.Salario = FuncionarioInput.LerSalario(); funcionario.DataAdmissao = FuncionarioInput.LerDataAdmissao(); //imprimindo.. Console.WriteLine("\nFuncionário: " + funcionario.ToString()); } catch(Exception e) { //imprimir mensagem de erro.. Console.WriteLine("Erro: " + e.Message); } Console.ReadKey(); } } } Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 8 Executando: Criando um arquivo de banco de dados do SqlServer MDF - Master Database File Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 9 Gerenciador de servidores:Criando uma tabela de funcionarios na base de dados: Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 10 --LINGUAGEM SQL create table Funcionario( IdFuncionario integer primary key, Nome nvarchar(50) not null, Salario decimal(18,2) not null, DataAdmissao datetime not null); Executando: Tabela criada na base de dados: Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 11 Primeiro passo para acessar a base de dados: Criar uma classe de conexão com o banco de dados. O objetivo desta classe será simplesmente abrir e fechar conexão com o banco de dados using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; //importando.. namespace Projeto01.Repositories { public class Conexao { //[prop] + 2x[tab] 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(); } } } Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 12 ConnectionString Nome dado ao "endereço" através do qual podemos acessar uma base de dados. A connectionstring é composta de todas as informações necessárias para que um programa possa conectar-se a um banco. Obtendo a connectionstring: Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 13 App.config.xml Arquivo XML utilizado para definir a maior parte dos parametros de configuração que serão utilizados pelo sistema Console Application. Em projetos Asp.Net este arquivo chama-se Web.config.xml <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <connectionStrings> <add name="aula05" connectionString="Data Source=(LocalDB)\MSSQLLocalDB; AttachDbFilename=C:\Users\COTI\Desktop\ Aula_07.11.18\Aula05\Projeto01\App_Data\Banco.mdf; Integrated Security=True" /> </connectionStrings> </configuration> Como ler uma configuração definida pelo arquivo App.config.xml? Adicionar no projeto uma biblioteca do .NET chamada: System.Configuration Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 14 Selecione: System.Configuration using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; //importando.. using System.Configuration; //importando.. namespace Projeto01.Repositories { public class Conexao { //[prop] + 2x[tab] 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["aula05"].ConnectionString); Connection.Open(); } public void FecharConexao() { Connection.Close(); } } } Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 15 Criando uma classe para realizar operações em banco de dados com a tabela / entidade Funcionario: CRUD (Create, Read, Update e Delete) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using Projeto01.Entities; namespace Projeto01.Repositories { public class FuncionarioRepository : Conexao { //método para gravar um funcionario na tabela do banco public void Inserir(Funcionario funcionario) { AbrirConexao(); //escrever o comando SQL (query) string query = "insert into Funcionario (IdFuncionario, Nome, Salario, DataAdmissao) " + "values(@IdFuncionario, @Nome, @Salario, @DataAdmissao)"; Command = new SqlCommand(query, Connection); Command.Parameters.AddWithValue ("@IdFuncionario", funcionario.IdFuncionario); Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 16 Command.Parameters.AddWithValue ("@Nome", funcionario.Nome); Command.Parameters.AddWithValue ("@Salario", funcionario.Salario); Command.Parameters.AddWithValue ("@DataAdmissao", funcionario.DataAdmissao); Command.ExecuteNonQuery(); //executar o comando SQL.. FecharConexao(); } } } Executando: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Projeto01.Entities; //importando.. using Projeto01.Inputs; //importando.. using Projeto01.Repositories; //importando.. namespace Projeto01 { class Program { static void Main(string[] args) { Funcionario funcionario = new Funcionario(); try { funcionario.IdFuncionario = FuncionarioInput.LerIdFuncionario(); funcionario.Nome = FuncionarioInput.LerNome(); funcionario.Salario = FuncionarioInput.LerSalario(); funcionario.DataAdmissao = FuncionarioInput.LerDataAdmissao(); FuncionarioRepository repository = new FuncionarioRepository(); repository.Inserir(funcionario); Console.WriteLine("\nDados gravados com sucesso."); //imprimindo.. Console.WriteLine("\nFuncionário: " + funcionario.ToString()); } catch(Exception e) { //imprimir mensagem de erro.. Console.WriteLine("Erro: " + e.Message); } Console.ReadKey(); } } } Treinamento em C# WebDeveloper Aula 05 Quarta-feira, 07 de Novembro de 2018 Desenvolvimento Orientado a Objetos em C# 17 Saída do programa: No banco de dados:
Compartilhar