Documente Academic
Documente Profesional
Documente Cultură
Unidade IV
7 Persistência
Todo objeto transiente atua em meios voláteis, ou seja, trabalhando sempre em memória. Por exemplo:
a partir do momento em que uma sessão é finalizada, ou a execução de um software, todo e qualquer
dado contido no objeto utilizado será perdido, de maneira que sua recuperação será irreversível.
Objeto persistente tem como característica não atuar em meios voláteis; assim, a partir da execução,
todos os dados trafegados serão armazenados em disco ou em uma base de dados alocada em servidor,
por exemplo, garantindo que um objeto pode ser recuperado após a finalização do software.
Observação
Saiba mais
144
Programação Orientada a Objetos II
Reporting Service é considerado como uma plataforma de geração de relatórios com base em
servidor que fornece funcionalidade de relatório, podendo‑se agregar para diversas fontes de dados. As
ferramentas que o compõem são funcionais no ambiente do Microsoft Visual Studio e são completamente
integradas com as ferramentas e os componentes associados do Microsoft SQL Server.
(Logon inicial)
Cliente
Logon no serviço web
Método LogonUser() 1
5 Autenticação
tíquete
Servidor de relatório
Serviço web
Serviço web 2
4 Verdadeiro se as
credenciais forem
válidas
Extensão de segurança
IAuthenticationExtension.LogonUser()
Validar nome do
usuário e senha 3
Repositório de usuários
145
Unidade IV
Saiba mais
Windows Presentation Foundation (WPF) pode ser considerado como um mecanismo de resolução
independente e renderização vetorial, criado simplesmente para tirar proveito dos mecanismos
modernos, pensando em hardware, no universo de desenvolvimento gráfico.
Esta visão pode acontecer para desenvolvedores que abordam os principais recursos e conceitos
de WPF.
Saiba mais
• InsertCommand: define a inserção de linha na fonte de dados por meio de um RowState Added.
Inserir valores para todas as colunas, que poderão ser atualizadas.
146
Programação Orientada a Objetos II
• UpdateCommand: define a atualização de linha na fonte de dados por meio de RowState Modified.
Atualiza valores para todas as colunas selecionadas.
• DeleteCommand: define a exclusão de linha na fonte de dados por meio de RowState Deleted.
Exclui valores para todas as colunas selecionadas.
Observação
Lembrete
adapter.SelectCommand.CommandText =
“SELECT CustomerID, ContactName FROM dbo.Customers”;
builder.RefreshSchema();
custDS.Tables.Remove(custDS.Tables[“Customers”]);
adapter.Fill(custDS, “Customers”);
7.4 DataSet
DataSet pode ser considerado um cache de memória dos dados recuperados de uma fonte de dados,
ou seja, é um componente que consiste em uma coleção de objetos DataTable, que pode se relacionar a
outros com o DataRelation. Um DataSet pode ler e gravar dados utilizando, por exemplo, arquivo XML.
Em uma implementação típica de várias camadas, por exemplo, as etapas para criar e atualizar um
DataSet, atualizando os dados originais, são:
• Criar e preencher cada DataTable em um DataSet com os dados de uma fonte de dados usando
um DataAdapter.
147
Unidade IV
• Alterar os dados individuais em objetos DataTable, adicionar, atualizar ou excluir objetos DataRow.
• Chamar o método GetChanges para criar um segundo DataSet que apresente somente as
alterações nos dados.
• Chamar o método Update para o DataAdapter, passando o segundo DataSet como um argumento.
• Chamar o AcceptChanges sobre o DataSet. Como alternativa, chamar RejectChanges para cancelar
as alterações.
Observação
using System;
using System.Data;
using System.Data.SqlClient;
namespace Microsoft.AdoNet.DataSetDemo
{
class NorthwindDataSet
{
staticvoid Main()
{
string connectionString = GetConnectionString();
ConnectToData(connectionString);
}
privatestaticvoid ConnectToData(string connectionString)
{
SqlConnection connection =
new SqlConnection(connectionString))
{
adapter.TableMappings.Add(“Table”, “Suppliers”);
connection.Open();
Console.WriteLine(“The SqlConnection is open.”);
148
Programação Orientada a Objetos II
adapter.SelectCommand = command;
productsAdapter.Fill(dataSet);
connection.Close();
Console.WriteLine(“The SqlConnection is closed.”);
DataColumn parentColumn =
dataSet.Tables[“Suppliers”].Columns[“SupplierID”];
DataColumn childColumn =
dataSet.Tables[“Products”].Columns[“SupplierID”];
DataRelation relation =
new System.Data.DataRelation(“SuppliersProducts”,
parentColumn, childColumn);
dataSet.Relations.Add(relation);
Console.WriteLine(
“The {0} DataRelation has been created.”,
relation.RelationName);
}
}
}
}
8 Introdução ao XML
Extensible Markup Language (XML) é uma linguagem de marcadores, como a HTML, que foi concebida
para descrever dados. Encontra‑se como uma vantagem, considerando‑se que ela é extensível, ou seja,
não possui um limite no número de tags que podem ser criadas, colocando a linguagem em uma
posição de autodefinição. Para que se possa trabalhar com os dados XML, usa‑se a Document Type
Definition (DTD).
Segue um exemplo:
<?xml version=”1.0”?>
<lembrete>
<para>José data=”10/05/2015”</para>
<de>Lauro</de>
<cabecalho>Lembre‑se</cabecalho>
149
Unidade IV
</lembrete>
Alerta.xml
A primeira linha do documento (<?xml version=”1.0”?>) é uma declaração XML e deve sempre ser
incluída, pois define a versão XML que está sendo utilizada. Neste caso estamos especificando a versão
1.0 da XML.
<para>José data=”10/05/2015”</para>
<de>Lauro</de>
<cabecalho>Lembre‑se</cabecalho>
Estas quatro linhas definem quatro elementos‑filhos da raiz (para, de, cabecalho e corpo)
Para que um novo arquivo XML seja criado na linguagem C#, a classe utilizada será XmlTextWriter.
Essa classe fornece uma maneira eficaz de gerar streams ou arquivos contendo dados XML em
conformidade com a W3C Extensible Markup Language. Nesse item podemos encontrar diversos
métodos e propriedades que auxiliarão no trabalho pesado para implementação na prática.
150
Programação Orientada a Objetos II
Observação
Essa lista não está completa, portanto será necessário que o aluno
verifique o menu Help da linguagem C# do menu de opções do Visual
Studio para obter mais detalhes e conhecer outras funções para o
desenvolvimento do recurso.
• Criar um documento.
• Incluir elementos.
• Incluir subelementos.
• Incluir atributos.
• Fechar documento.
151
Unidade IV
O código C# para gerar este arquivo usando a classe XmlTextWriter é dado a seguir:
Lembrete
8.2 DataGridView
DataGridView pode ser considerado um controle que permite fornecer ao usuário a exibição de
registros em linhas e colunas, ideal para efetuar pesquisa de registros:
152
Programação Orientada a Objetos II
Observação
153
Unidade IV
using System;
using System.Drawing;
using System.Windows.Forms;
public Form1()
{
this.Load += new EventHandler(Form1_Load);
}
private void Form1_Load(System.Object sender, System.EventArgs e)
{
SetupLayout();
SetupDataGridView();
PopulateDataGridView();
}
private void songsDataGridView _CellFormatting(object sender,
System.Windows.Forms.DataGridViewCellFormattingEventArgs e)
{
if (e != null)
{
if (this. songsDataGridView.Columns[e.ColumnIndex].Name == “Release
Date”)
{
if (e.Value != null)
{
try
{
e.Value = DateTime.Parse(e.Value.ToString())
.ToLongDateString();
e.FormattingApplied = true;
}
catch (FormatException)
{
Console.WriteLine(“{0} is not a valid date.”, e.Value.
ToString());
}
}
}
}
}
private void addNewRowButton_Click(object sender, EventArgs e)
{
this. songsDataGridView.Rows.Add();
}
private void deleteRowButton_Click(object sender, EventArgs e)
{
if (this. songsDataGridView.SelectedRows.Count > 0 &&
this.songsDataGridView.SelectedRows[0].Index !=
this.songsDataGridView.Rows.Count ‑ 1)
{
154
Programação Orientada a Objetos II
this.songsDataGridView.Rows.RemoveAt(
this.songsDataGridView.SelectedRows[0].Index);
}
}
private void SetupLayout()
{
this.Size = new Size(600, 500);
addNewRowButton.Text = “Add Row”;
addNewRowButton.Location = new Point(10, 10);
addNewRowButton.Click += new EventHandler(addNewRowButton_Click);
buttonPanel.Controls.Add(addNewRowButton);
buttonPanel.Controls.Add(deleteRowButton);
buttonPanel.Height = 50;
buttonPanel.Dock = DockStyle.Bottom;
this.Controls.Add(this.buttonPanel);
}
private void SetupDataGridView()
{
this.Controls.Add(songsDataGridView);
songsDataGridView.ColumnCount = 5;
songsDataGridView.ColumnHeadersDefaultCellStyle.BackColor = Color.Navy;
songsDataGridView.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;
songsDataGridView.ColumnHeadersDefaultCellStyle.Font =
new Font(songsDataGridView.Font, FontStyle.Bold);
songsDataGridView.Name = “songsDataGridView”;
songsDataGridView.Location = new Point(8, 8);
songsDataGridView.Size = new Size(500, 250);
songsDataGridView.AutoSizeRowsMode =
DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
songsDataGridView.ColumnHeadersBorderStyle =
DataGridViewHeaderBorderStyle.Single;
songsDataGridView.CellBorderStyle = DataGridViewCellBorderStyle.Single;
songsDataGridView.GridColor = Color.Black;
songsDataGridView.RowHeadersVisible = false;
songsDataGridView.CellFormatting += new
DataGridViewCellFormattingEventHandler(
155
Unidade IV
songsDataGridView_CellFormatting);
}
private void PopulateDataGridView()
{
string[] row0 = { “11/22/1968”, “29”, “Revolution 9”,
“Beatles”, “The Beatles [White Album]” };
string[] row1 = { “1960”, “6”, “Fools Rush In”,
“Frank Sinatra”, “Nice ‘N’ Easy” };
string[] row2 = { “11/11/1971”, “1”, “One of These Days”,
“Pink Floyd”, “Meddle” };
string[] row3 = { “1988”, “7”, “Where Is My Mind?”,
“Pixies”, “Surfer Rosa” };
string[] row4 = { “5/1981”, “9”, “Can’t Find My Mind”,
“Cramps”, “Psychedelic Jungle” };
string[] row5 = { “6/10/2003”, “13”,
“Scatterbrain. (As Dead As Leaves.)”,
“Radiohead”, “Hail to the Thief” };
string[] row6 = { “6/30/1992”, “3”, “Dress”, “P J Harvey”, “Dry” };
songsDataGridView.Rows.Add(row0);
songsDataGridView.Rows.Add(row1);
songsDataGridView.Rows.Add(row2);
songsDataGridView.Rows.Add(row3);
songsDataGridView.Rows.Add(row4);
songsDataGridView.Rows.Add(row5);
songsDataGridView.Rows.Add(row6);
songsDataGridView.Columns[0].DisplayIndex = 3;
songsDataGridView.Columns[1].DisplayIndex = 4;
songsDataGridView.Columns[2].DisplayIndex = 0;
songsDataGridView.Columns[3].DisplayIndex = 1;
songsDataGridView.Columns[4].DisplayIndex = 2;
}
[STAThreadAttribute()]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
System.Object;
System.Text.StringBuilder
System.Text;
156
Programação Orientada a Objetos II
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class StringBuilder : ISerializable
public ExportExcel()
{
sb = new StringBuilder();
if (HttpContext.Current != null)
Context = HttpContext.Current;
}
build(l, expression);
Context.Response.AddHeader(“content‑disposition”, “attachment;file‑
name=” + Filename);
Context.Response.Charset = string.Empty;
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
Context.Response.ContentType = «application/CSV»;
Context.Response.Write(sb.ToString());
Context.Response.End();
}
157
Unidade IV
foreach (var i in l)
{
foreach (var propertyName in propertiesName)
{
sb.Append(getPropertyValue(i, propertyName).ToString() +
“;”);
}
sb.AppendLine();
}
}
Resumo
158
Programação Orientada a Objetos II
159
FIGURAS e ILUSTRAÇÕES
Figura 4
Figura 190
Referências
ARAÚJO, E. C. Introdução à linguagem C#. DevMedia, Rio de Janeiro, [s.d.]. Disponível em: <http://www.
devmedia.com.br/introducao‑a‑linguagem‑c/27711>. Acesso em: 9 jun. 2015.
BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. UML: guia do usuário. 2. ed. Rio de Janeiro: Campus, 2006.
CAMARA, F. Orientação a objeto com .NET. 2. ed. Florianópolis: Visual Books, 2006.
FOWLER, M. UML essencial: um breve guia para a linguagem‑padrão de modelagem de objetos. São
Paulo: Bookman, 2006.
HERANÇA (Guia de programação em C#). Microsoft Developer Network. 2015. Disponível em: <https://
msdn.microsoft.com/pt‑br/library/ms173149.aspx>. Acesso em: 15 jun. 2015.
JOMORI, S. M.; VOLPE, R. L. D; ZABEU, A. C. P. Qualidade de software. Revista Banas Qualidade, São
Paulo, ano 13, n. 141, fev. 2004.
LIBERTY, J.; XIE, D. Programando C# 3.0. Rio de Janeiro: Alta Books, 2009.
LIMA, E.; REIS, E. C# e .Net para desenvolvedores. Rio de Janeiro: Campus, 2002.
160
MANZANO, J.A. Estudo dirigido de Microsoft Visual C# 2010 Express. São Paulo: Érica, 2010.
REIS, D. F. UML (Unified Modeling Language) e Unified Software Development Process (Unified
Process). DevMedia, Rio de Janeiro, [s.d.]. Disponível em: <http://www.devmedia.com.br/uml‑unified
‑modeling‑language‑e‑unified‑software‑development‑process‑unified‑process/11217>. Acesso em: 9
jun. 2015.
REPORTING services (SSRS). Microsoft Developer Network. 2015. Disponível em: <https://msdn.
microsoft.com/pt‑br/library/ms159106.aspx>. Acesso em: 15 jun. 2015.
SANTOS, R. Introdução a programação orientada a objetos usando Java. Rio de Janeiro: Campus, 2003.
SHARP, J. Consultando informações em banco de dados. In: ___. Microsoft Visual C# 2010: passo a
passo. Porto Alegre: Bookman, 2011. p. 567‑96.
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL (UFRGS). Calculando com o zero: dividindo por zero.
Porto Alegre: UFRGS, [s.d.]. Disponível em: <http://www.mat.ufrgs.br/~portosil/passa7d.html>. Acesso
em: 22 jun. 2015.
161
Sites
<http://www.microsoft.com/brasil/msdn>.
<https://www.visualstudio.com/pt‑br/visual‑studio‑homepage‑vs.aspx>.
162
163
164
Informações:
www.sepi.unip.br ou 0800 010 9000