Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Prof. MSc. Tarcísio Peres
UNIDADE III
Programação Orientada 
a Objetos II
 Desenvolvimento em camadas e MVC.
 Entendendo os componentes do Windows Presentation Foundation.
 MVVM e sua integração com XAML.
 String de conexão: utilização do SQLClient.
 Conexões locais e servidores remotos no contexto da computação em nuvem.
 LINQ e ADO.NET
Conteúdo da unidade III 
 No desenvolvimento de software, a arquitetura em camadas e o modelo MVC (Model-View-
Controller) são abordagens que ajudam a organizar e estruturar aplicações de maneira 
eficiente e sustentável. 
 Na arquitetura em camadas, a aplicação é dividida em diferentes níveis, cada um 
responsável por um aspecto específico do processo. 
 Geralmente, essas camadas incluem a interface do usuário, a lógica de negócios e o 
acesso a dados. 
 A camada da interface do usuário é a frente (front end) da aplicação, interagindo diretamente 
com o usuário e apresentando dados de forma compreensível. 
 A lógica de negócios, por sua vez, lida com o processamento 
de informações, regras de negócio e decisões. 
 A camada de acesso a dados é responsável pela comunicação 
com os sistemas de armazenamento, como bancos de dados, 
garantindo que os dados sejam guardados e recuperados de 
forma eficaz.
Arquitetura em camadas
 Essa separação clara permite que cada camada seja desenvolvida, testada e mantida de 
forma independente, o que aumenta a eficiência e reduz a complexidade geral do sistema.
 Essa estrutura oferece a flexibilidade para alterar ou atualizar uma camada específica sem 
afetar as outras, facilitando a adaptação a novas tecnologias ou requisitos de negócios.
 Paralelamente, o padrão MVC, especialmente popular em ambientes de desenvolvimento 
como C#, oferece um framework robusto para a separação de responsabilidades. 
 No MVC, a aplicação é dividida em três componentes : o Modelo, a Visão e o Controlador. 
 O Modelo representa a lógica de dados e as regras de negócio, mantendo-se independente 
da interface do usuário. 
 A Visão é a camada que apresenta os dados ao usuário, 
sendo uma representação visual das informações contidas 
no Modelo. 
 O Controlador atua como intermediário entre o Modelo 
e a Visão, manipulando os dados do Modelo e 
apresentando-os na Visão. 
Arquitetura MVC
 O Controlador responde às interações do usuário, como cliques ou entradas de dados, e 
realiza as ações correspondentes. 
 O MVC é particularmente eficaz na promoção da separação de responsabilidades, facilitando 
a manutenção e a expansão das aplicações. 
 Ao isolar a lógica de negócios e a interface do usuário, permite aos desenvolvedores alterar 
a aparência da aplicação sem interferir na lógica por trás dela. 
 Essa separação torna também mais fácil testar diferentes 
componentes de forma independente, contribuindo para a 
qualidade e confiabilidade do software.
Arquitetura MVC
 O padrão Model-View-ViewModel (MVVM) é uma abordagem arquitetônica no 
desenvolvimento de software que enfatiza a separação clara de responsabilidades entre a 
interface do usuário e a lógica de negócios, algo de extrema importância em projetos 
complexos, especialmente naqueles desenvolvidos com tecnologias Microsoft, como WPF 
(Windows Presentation Foundation) em C#. 
 Originário do desejo de facilitar a manutenção e a escalabilidade de aplicações, o MVVM 
tornou-se um elemento central na arquitetura de software moderna. 
 No centro do MVVM está a divisão de uma aplicação em três componentes principais: o 
Model, o View e o ViewModel. 
 O Model representa a lógica de negócios e os dados 
subjacentes. É o núcleo funcional da aplicação, contendo as 
regras, algoritmos e estruturas de dados que definem o 
comportamento da aplicação. 
 Em um contexto C#, o Model seria composto por classes que 
gerenciam os dados e a lógica de negócios da aplicação, muitas 
vezes interagindo com bancos de dados ou serviços web. 
Model-View-ViewModel
 O View é a interface do usuário. 
 É a representação visual da aplicação, responsável por apresentar os dados ao usuário e 
capturar as interações do usuário. 
 Em WPF e outras tecnologias baseadas em C#, o View é frequentemente construído usando 
XAML (Extensible Application Markup Language), que permite a descrição declarativa da 
interface do usuário. 
 O ViewModel atua como um intermediário entre o Model e o View. 
 Ele é responsável por lidar com a lógica de apresentação. 
 O ViewModel transforma dados do Model em formatos que 
podem ser facilmente apresentados no View. 
 Ele implementa comandos e ações que são acionados pela 
interface do usuário. 
 Essencialmente, o ViewModel "traduz" as informações do 
Model de uma forma que o View possa entender e apresentar 
de forma eficaz.
Model-View-ViewModel
 Uma das vantagens mais significativas do MVVM é a facilitação de testes 
unitários e manutenção. 
 Como o ViewModel não depende diretamente do View, é possível testar a lógica de 
apresentação sem a necessidade de uma interface de usuário, o que simplifica os 
testes automatizados. 
 Essa separação permite que designers e desenvolvedores trabalhem de maneira 
mais independente e paralela, melhorando a eficiência do desenvolvimento. 
 Outra característica importante do MVVM em C# é a implementação do data binding. 
 Data binding é um conceito que permite a ligação de 
elementos da interface do usuário a propriedades 
no ViewModel. 
 Quando os dados no ViewModel mudam, a interface do 
usuário é automaticamente atualizada para refletir essas 
mudanças e vice-versa.
Model-View-ViewModel
 Jogo em WPF.
Os três mosqueteiros
Fonte: autoria própria.
Qual das seguintes opções melhor descreve o benefício do modelo MVC em desenvolvimento 
de software?
a) Permite uma complexa integração de dados em tempo real.
b) Facilita a criptografia de dados sensíveis dentro da aplicação.
c) Melhora a reusabilidade e a manutenção ao separar as responsabilidades.
d) Aumenta a velocidade de processamento da aplicação.
e) Reduz a necessidade de testes devido à automatização integrada.
Interatividade
Qual das seguintes opções melhor descreve o benefício do modelo MVC em desenvolvimento 
de software?
a) Permite uma complexa integração de dados em tempo real.
b) Facilita a criptografia de dados sensíveis dentro da aplicação.
c) Melhora a reusabilidade e a manutenção ao separar as responsabilidades.
d) Aumenta a velocidade de processamento da aplicação.
e) Reduz a necessidade de testes devido à automatização integrada.
Resposta
JanelaPrincipal.xaml
WPF - Windows Presentation Foundation
Jogo em WPF.
Os três mosqueteiros
Fonte: autoria própria.
JanelaPrincipal.xaml
WPF - Windows Presentation Foundation
JanelaPrincipal.xaml
WPF - Windows Presentation Foundation
TransparentButton}"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
BorderThickness="0" Margin="0,0,50,50"
Click="RolarDado_Click"
Width="300" Height="300"
PreviewMouseDown="BotaoDado_PreviewMouseDown"
PreviewMouseUp="BotaoDado_PreviewMouseUp"
Visibility="{Binding VisibilidadeDado}">
JanelaPrincipal.xaml
WPF - Windows Presentation Foundation
JanelaPrincipal.xaml
WPF - Windows Presentation Foundation
JanelaPrincipal.xaml
WPF - Windows Presentation Foundation
JanelaPrincipal.xaml.cs
WPF - Windows Presentation Foundation
public partial class JanelaPrincipal : Window
{
private JogoViewModel jogoViewModel;
public JanelaPrincipal()
{
InitializeComponent();
jogoViewModel = new JogoViewModel();
this.DataContext = jogoViewModel; // Define o 
DataContext da janela
}
private void RolarDado_Click(object sender, 
RoutedEventArgs e)
{
int resultadoDado = jogoViewModel.RolarDado();
jogoViewModel.MoverJogadorAtual(resultadoDado);
}
JanelaPrincipal.xaml.cs
WPF - Windows Presentation Foundation
private void BotaoDado_PreviewMouseDown(object sender, 
MouseButtonEventArgs e)
{
jogoViewModel.ImagemDado = "/DadoE.png";
}
private void BotaoDado_PreviewMouseUp(object sender, 
MouseButtonEventArgs e)
{
jogoViewModel.ImagemDado = "/Dado.png";
}
private void ImagemCarta_MouseDown(object sender, MouseButtonEventArgs e)
{
jogoViewModel.ImagemCarta = "/CartaVerso.png";
jogoViewModel.VisibilidadeDado = Visibility.Visible;
}
}
}
Jogo em WPF.
Os três mosqueteiros
Fonte: autoria própria.
Qual das seguintes declarações está correta sobre o método RolarDado_Click?
a) Ele modifica diretamente a visibilidade do dado.
b) Ele atualiza a posição do jogador usando o resultado de um dado.
c) Ele redefine a imagem do dado para a imagem padrão.
d) Ele é chamado antes do evento PreviewMouseDown.
e) Ele é usado para esconder a imagem do dado.
Interatividade
Qual das seguintes declarações está correta sobre o método RolarDado_Click?
a) Ele modifica diretamente a visibilidade do dado.
b) Ele atualiza a posição do jogador usando o resultado de um dado.
c) Ele redefine a imagem do dado para a imagem padrão.
d) Ele é chamado antes do evento PreviewMouseDown.
e) Ele é usado para esconder a imagem do dado.
Resposta
 As strings de conexão são essencialmente uma coleção de parâmetros utilizados para definir 
a comunicação entre uma aplicação e um banco de dados. 
 Esses parâmetros podem incluir o nome do servidor, o nome do banco de dados, credenciais
de usuário e senha e outras configurações relevantes. 
 Uma string de conexão bem configurada é fundamental para garantir uma conexão segura e 
eficiente com o banco de dados. 
 Entre os provedores de dados mais utilizados no .NET Framework para gerenciar essas 
conexões, destaca-se o SQLClient, projetado especificamente para interagir com bases de 
dados SQL Server. 
 Ele é amplamente reconhecido por sua alta performance e 
integração estreita com o SQL Server, proporcionando um 
meio direto e eficaz de executar comandos SQL, ler dados e 
manipular transações. 
 Um dos principais benefícios do SQLClient é a sua alta 
eficiência e desempenho.
String de conexão
 Por ser uma solução dedicada ao SQL Server, é capaz de aproveitar características 
específicas desse sistema de gerenciamento de banco de dados, oferecendo uma 
comunicação mais rápida e eficaz em comparação com provedores de dados 
mais genéricos. 
 Isso se traduz em tempos de resposta mais rápidos e menor consumo de recursos, aspectos 
críticos para aplicações de larga escala e alta demanda
 O SQLClient também se destaca por sua segurança e estabilidade. 
 Ele suporta uma gama de recursos de segurança do SQL Server, incluindo autenticação 
integrada e encriptação de dados. 
 Outro aspecto importante do SQLClient é a sua forte tipagem. 
 O suporte a tipos de dados específicos do SQL Server reduz a 
ocorrência de erros de tipo em tempo de execução e melhora 
a legibilidade e manutenção do código.
String de conexão
 O SQLClient também facilita a execução de procedimentos armazenados e transações, 
oferecendo aos desenvolvedores um controle granular sobre o comportamento das 
operações de banco de dados. 
 Essa capacidade é particularmente útil em cenários complexos de negócios, nos quais 
operações múltiplas precisam ser executadas de forma atômica e consistente.
 É utilizado por meio das classes como SqlConnection, SqlCommand e SqlDataReader. 
 A classe SqlConnection é usada para estabelecer a conexão com o banco de dados
 SqlCommand permite a execução de consultas SQL e procedimentos armazenados. 
O SqlDataReader é uma ferramenta eficiente para ler dados de forma rápida e sequencial. 
String de conexão
Note os parâmetros.
Conexão manual
Fonte: autoria própria.
Criando banco.
Conexão manual
Fonte: autoria própria.
Criando colunas.
Conexão manual
Fonte: autoria própria.
String de conexão.
Conexão automática
using System;
using System.Data.SqlClient;
namespace ConsoleApp4
{
internal class Program
{
static void Main(string[] args)
{
string connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial 
Catalog=Jogador;Integrated Security=True";
// Inserir cada jogador
InsertJogador(connectionString, "Athos", "01", "05", "05");
InsertJogador(connectionString, "Pothos", "01", "05", "05");
InsertJogador(connectionString, "Aramis", "01", "05", "05");
InsertJogador(connectionString, "Dartagnan", "01", "05", "05");
Console.ReadLine();
}
Inserindo dados.
Conexão automática
static void InsertJogador(string connectionString, string nome, string posicao, 
string fortuna, string honra)
{
string query = "INSERT INTO Jogador (Jogador, Posicao, Fortuna, Honra) 
VALUES (@Jogador, @Posicao, @Fortuna, @Honra)";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Jogador", nome);
command.Parameters.AddWithValue("@Posicao", posicao);
command.Parameters.AddWithValue("@Fortuna",fortuna);
command.Parameters.AddWithValue("@Honra", honra);
connection.Open();
int result = command.ExecuteNonQuery();
if (result > 0) Console.WriteLine($"Inserção de {nome} realizada com sucesso!");
else Console.WriteLine("Inserção falhou."); }}}}
Qual ação é realizada pela linha command.Parameters.AddWithValue("@Jogador", nome);?
a) Conecta a base de dados usando o nome como chave.
b) Insere um novo registro na tabela com o nome do jogador.
c) Cria um novo parâmetro para o comando SQL para evitar SQL injection.
d) Configura o nome da tabela onde os dados serão inseridos.
e) Define o nome da fonte de dados na string de conexão.
Interatividade
Qual ação é realizada pela linha command.Parameters.AddWithValue("@Jogador", nome);?
a) Conecta a base de dados usando o nome como chave.
b) Insere um novo registro na tabela com o nome do jogador.
c) Cria um novo parâmetro para o comando SQL para evitar SQL injection.
d) Configura o nome da tabela onde os dados serão inseridos.
e) Define o nome da fonte de dados na string de conexão.
Resposta
String de conexão.
Conexão automática
using System;
using System.Data.SqlClient;
namespace ConsoleApp4
{
internal class Program
{
static void Main(string[] args)
{
string connectionString = @"Data 
Source=(localdb)\MSSQLLocalDB;Initial Catalog=Jogador;Integrated 
Security=True";
// Inserir cada jogador como fizemos anteriormente
// Ler todos os jogadores
ReadJogadores(connectionString);
}
Consultando dados.
Conexão automática
static void ReadJogadores(string connectionString)
{
string query = "SELECT Jogador, Posicao, Fortuna, Honra 
FROM Jogador";
using (SqlConnection connection = new
SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(query, 
connection);
connection.Open();
Imprimindo dados.
Conexão automática
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"Jogador: 
{reader["Jogador"]}, Posição: 
{reader["Posicao"]}, Fortuna: 
{reader["Fortuna"]}, Honra: 
{reader["Honra"]}");
}
Console.ReadLine();
}
}
}
}
}
 Além do SQLClient, existem outros provedores de dados como OLE DB e ODBC. 
 OLE DB, sigla para Object Linking and Embedding Database, é um conjunto de interfaces 
que permite acesso uniforme a diferentes tipos de fontes de dados. 
 É bastante versátil, mas pode ser um pouco mais complexo de se usar em algumas 
situações. 
 Já o ODBC (Open Database Connectivity) é um padrão que permite a conexão com uma 
ampla variedade de bancos de dados, utilizando um driver intermediário. 
 O ODBC pode não ser tão otimizado para determinados tipos de bancos de dados 
específicos como o SQLClient é para o SQL Server. 
 A decisão de usar OLE DB ou ODBC em vez de SqlClient 
depende de uma avaliação cuidadosa das necessidades 
específicas da aplicação, incluindo o tipo de fonte de dados a 
ser acessada, a necessidade de portabilidade entre diferentes 
sistemas operacionais e ambientes e os requisitos de 
desempenho e funcionalidade.
Outros provedores
 A computação em nuvem, ao permitir o acesso a recursos computacionais avançados sob 
demanda, elimina a necessidade de investimentos pesados em infraestrutura física. 
 Para um desenvolvedor que utiliza C# para criar soluções que interagem com bancos de 
dados SQL Server, isso significa que é possível escalar recursos de maneira flexível, 
pagando apenas pelo que se usa. 
 No entanto, essa flexibilidade traz consigo a necessidade de garantir que as conexões entre 
os ambientes locais e os servidores remotos sejam seguras e eficientes. 
 No que diz respeito à segurança, é imprescindível que os dados transmitidos entre o cliente e 
o servidor remoto sejam criptografados e protegidos contra acessos não autorizados. 
 Utilizar práticas recomendadas de segurança, como a 
implementação de VPNs (Redes Privadas Virtuais) e o uso de 
protocolos de criptografia robustos, torna-se essencial para 
prevenir violações de dados.
Computação em nuvem
 Além da segurança, a latência é outro fator crítico a ser considerado. 
 Desenvolvedores que trabalham com aplicações em tempo real sabem que o tempo de 
resposta é crucial para a experiência do usuário. 
 Portanto, ao migrar para a nuvem, é importante escolher provedores de serviços em 
nuvem que ofereçam baixa latência e garantam a rápida transmissão de dados entre o 
cliente e o servidor. 
 A integração de sistemas locais com servidores remotos na nuvem também representa 
um desafio. 
 É essencial que os desenvolvedores criem interfaces de 
programação de aplicativos (APIs) bem projetadas e utilizem 
serviços de middleware para facilitar a comunicação entre 
diferentes sistemas. 
 Entender como utilizar adequadamente os serviços de nuvem 
e como integrá-los às aplicações locais é fundamental para o 
sucesso do projeto.
Computação em nuvem
 Ao migrar para a nuvem, o desenvolvedor precisa se familiarizar com os serviços de 
computação em nuvem oferecidos por plataformas como Azure (da Microsoft), AWS (da 
Amazon) ou Google Cloud Platform (do Google). 
 Essas plataformas fornecem serviços de banco de dados que podem ser semelhantes ao 
SQL Server, como o Azure SQL Database no caso do Azure, mas também introduzem novos 
paradigmas, como bancos de dados NoSQL, funções como serviço (FaaS) e outros serviços 
de computação sem servidor (serverless).
Computação em nuvem
String de conexão.
Computação em nuvem
using System;
using System.Data.SqlClient;
class Program
{
static void Main()
{
// String de conexão ao Azure SQL Database
var connectionString =
"Server=tcp:seuservidor.database.windows.net,1433;Ini
tial Catalog=seuBanco;Persist Security 
Info=False;User 
ID=seuUsername;Password=seuPassword;MultipleActiveRes
ultSets=False;Encrypt=True;TrustServerCertificate=Fal
se;Connection Timeout=30;";
Consulta SQL.
Computação em nuvem
var sqlQuery = "SELECT TOP 10 * FROM SuaTabela";
using (var connection = new
SqlConnection(connectionString))
{
var command = new SqlCommand(sqlQuery, connection);
connection.Open();
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["NomeDaSuaColuna"].ToString());
}
}
}
}
}
 LINQ e ADO.NET representam duas tecnologias essenciais para a manipulação e o acesso a 
dados, cada uma com suas particularidades e casos de uso. 
 O LINQ, uma extensão do .NET, introduz um método para consultas de dados, permitindo 
que sejam escritas diretamente na linguagem C# de maneira declarativa.
 Independentemente do tipo de dados - seja em uma coleção em memória, um arquivo XML 
ou um banco de dados - o desenvolvedor pode utilizar a mesma sintaxe de consulta, 
facilitando a manutenção e a reutilização do código.
 ADO.NET é uma estrutura mais antiga e robusta, projetada para o acesso a dados e a 
manipulação de bancos de dados relacionais. 
 ADO.NET oferece um conjunto de classes que permitem 
conectar-se a fontes de dados, executar comandos, gerenciar 
transações e lidar com o retorno de dados. 
 ADO.NET é particularmente útil em cenários que exigem 
operações complexas, transações ou otimizações específicas 
de desempenho que estão além do escopo do LINQ.
LINQ e ADO.NET
Qual recurso o SQLClient não suporta diretamente?
a) Executar comandos SQL.
b) Ler dados de forma sequencial.
c) Manipular transações.
d) Conectar-se a bancos de dados no SQL.
e) Oferecer alta performance e segurança.
Interatividade
Qual recurso o SQLClient não suporta diretamente?
a) Executar comandos SQL.
b) Ler dados de forma sequencial.
c) Manipular transações.
d) Conectar-se a bancos de dados no SQL.
e) Oferecer alta performance e segurança.
Resposta
ATÉ A PRÓXIMA!

Mais conteúdos dessa disciplina