Buscar

APOSTILA - PROGRAMAÇÃO ORIENTADA A OBJETOS II

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 294 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 294 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 294 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

Autor: Prof. Salatiel Luz Marinho 
Colaborador: Prof. Luciano Soares de Souza
Programação 
Orientada a Objetos II
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Professor conteudista: Salatiel Luz Marinho
Pós‑graduado em Gestão de Projetos pelo Instituto Brasileiro de tecnologia Avançada (IBTA) e formado em 
Engenharia da Computação pela Universidade Paulista (UNIP), trabalha há mais de dez anos no desenvolvimento 
de aplicações desktop e web, tendo prestado serviços a instituições financeiras, de varejo, acadêmicas e de seguros. 
Leciona há mais de oito anos as disciplinas de Programação Orientada a Objetos na UNIP.
© Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida por qualquer forma e/ou 
quaisquer meios (eletrônico, incluindo fotocópia e gravação) ou arquivada em qualquer sistema ou banco de dados sem 
permissão escrita da Universidade Paulista.
Dados Internacionais de Catalogação na Publicação (CIP)
M338p Marinho, Salatiel Luz.
Programação Orientada a Objetos II. / Salatiel Luz Marinho. – 
São Paulo: Editora Sol, 2015.
164 p., il.
Nota: este volume está publicado nos Cadernos de Estudos e 
Pesquisas da UNIP, Série Didática, ano XXI, n. 2‑150/15, ISSN 1517‑9230.
1. Linguagem de programação. 2. Camada de apresentação. 3. 
Desenvolvimento de software. I. Título. 
CDU 681.3.062
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Prof. Dr. João Carlos Di Genio
Reitor
Prof. Fábio Romeu de Carvalho
Vice-Reitor de Planejamento, Administração e Finanças
Profa. Melânia Dalla Torre
Vice-Reitora de Unidades Universitárias
Prof. Dr. Yugo Okida
Vice-Reitor de Pós-Graduação e Pesquisa
Profa. Dra. Marília Ancona‑Lopez
Vice-Reitora de Graduação
Unip Interativa – EaD
Profa. Elisabete Brihy 
Prof. Marcelo Souza
Prof. Dr. Luiz Felipe Scabar
Prof. Ivan Daliberto Frugoli
 Material Didático – EaD
 Comissão editorial: 
 Dra. Angélica L. Carlini (UNIP)
 Dra. Divane Alves da Silva (UNIP)
 Dr. Ivan Dias da Motta (CESUMAR)
 Dra. Kátia Mosorov Alonso (UFMT)
 Dra. Valéria de Carvalho (UNIP)
 Apoio:
 Profa. Cláudia Regina Baptista – EaD
 Profa. Betisa Malaman – Comissão de Qualificação e Avaliação de Cursos
 Projeto gráfico:
 Prof. Alexandre Ponzetto
 Revisão:
 Rose Castilho
 Juliana Mendes
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Sumário
Programação Orientada a Objetos II
APRESENTAÇÃO ......................................................................................................................................................7
INTRODUÇÃO ...........................................................................................................................................................7
Unidade I
1 PROGRAMAÇÃO ORIENTADA A OBJETOS II .............................................................................................9
1.1 Lógica de programação.........................................................................................................................9
1.1.1 Algoritmo ................................................................................................................................................... 10
1.1.2 Programas ...................................................................................................................................................11
1.1.3 Pseudocódigo ........................................................................................................................................... 12
1.2 O que é Programação Orientada a Objetos ............................................................................... 12
1.3 Linguagem de Programação C# ..................................................................................................... 14
2 PLANO DE DESENVOLVIMENTO DE SOFTwARE ................................................................................... 17
2.1 Diagrama de Caso de Uso ................................................................................................................. 18
2.2 Diagrama de Classe ............................................................................................................................. 19
2.3 Diagrama de Sequência ..................................................................................................................... 20
Unidade II
3 LINGUAGEM DE PROGRAMAÇÃO C# ..................................................................................................... 23
3.1 Histórico e curiosidades ..................................................................................................................... 23
3.2 Microsoft Visual Studio ..................................................................................................................... 24
3.3 Herança .................................................................................................................................................... 24
3.4 Polimorfismo .......................................................................................................................................... 27
4 CAMADA DE APRESENTAÇÃO .................................................................................................................... 34
4.1 Funções específicas da Camada de Apresentação .................................................................. 36
4.2 Criando a Camada de Apresentação ............................................................................................ 36
4.3 Desvios condicionais ........................................................................................................................... 84
4.3.1 Desvios condicionais (Comandos de Seleção) ............................................................................. 84
4.3.2 Condição ..................................................................................................................................................... 84
4.3.3 Decisão ........................................................................................................................................................ 85
4.3.4 Desvio condicional simples ................................................................................................................. 85
4.3.5 Desvio condicional composto ............................................................................................................ 86
4.3.6 Operadores Lógicos ................................................................................................................................ 87
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade III
5 EFETUANDO INCREMENTOS NA SOLUÇÃO ........................................................................................... 92
6 DESENVOLVIMENTO DE APLICAÇÃO EM CAMADAS .......................................................................119
6.1 Camada Modelo ..................................................................................................................................119
6.1.1 Método Cadastrar ................................................................................................................................ 129
6.1.2 Método ObterConexão .......................................................................................................................131
6.1.3 Método FecharConexao .....................................................................................................................131
6.1.4 Método Alterar...................................................................................................................................... 138
6.1.5 Método Excluir ...................................................................................................................................... 139
6.1.6 Método ObterAluno ............................................................................................................................140
Unidade IV
7 PERSISTêNCIA .................................................................................................................................................144
7.1 Reporting Service ...............................................................................................................................145
7.2 windows Presentation Foundation ............................................................................................146
7.3 Trabalhando com CommandBuilder ...........................................................................................146
7.4 DataSet ...................................................................................................................................................147
8 INTRODUÇÃO AO XML.................................................................................................................................149
8.1 Criar XML ...............................................................................................................................................150
8.2 DataGridView .......................................................................................................................................152
8.3 Exportando com CSV ........................................................................................................................156
7
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
APRESENTAÇÃO
Programação Orientada a Objetos II é uma das disciplinas‑base para o profissional formado nos 
cursos de Análise e Desenvolvimento de Sistemas, Ciência da Computação, Engenharia da Computação, 
entre outros.
O livro‑texto de Programação Orientada a Objetos II tem por finalidade customizar o processo de 
aprendizagem do aluno, tendo como premissa proporcionar uma leitura comparada a um guia passo a 
passo de desenvolvimento.
A concepção do livro‑texto se deu a partir da otimização do aprendizado, simulando, em diversos 
momentos dessa elaboração, situações que proporcionam ao aluno visualizar o ambiente real de 
desenvolvimento de softwares por meio de exemplos e desafios.
Pensando nesse cenário de aprendizagem, o livro‑texto foi dividido em unidades, possibilitando a 
divisão de capítulos, de forma que garanta o crescimento gradativo do conhecimento da disciplina.
Inicialmente, abordaremos os conceitos básicos de Programação Orientada a Objetos, tais como: 
apresentação de sua história, vantagens e desvantagens de se trabalhar com programação procedural, 
definição de conexão com banco de dados e a importância do trabalho de desenvolvimento de softwares 
enxergando o cenário documentação versus desenvolvimento.
Em seguida será apresentada, de maneira mais aprofundada, a linguagem C#, bem como a relação 
de seus componentes por meio de exemplos com aplicações práticas, abordando as principais técnicas 
de mercado no desenvolvimento de software, utilizando conceitos de programação orientada a objetos.
Mais adiante cada item sobre a disciplina de programação orientada a objetos será apresentado mais 
profundamente, como trabalho de desenvolvimento de software utilizando camadas e a interconexão 
de trabalho desktop e web.
Por fim, serão apresentados conceitos mais detalhados, trabalhando‑se com desenvolvimento 
amigável e reutilização de código, bem como serão abordados, por meio de exemplos práticos, como 
desenvolver softwares e a preocupação com o ciclo de vida e a manutenção do software
Bom estudo!
INTRODUÇÃO
Esta disciplina apresentará, de forma estruturada, os principais conceitos teóricos e práticos de 
Programação Orientada a Objetos. Nossa jornada se inicia com a exposição dos elementos e componentes 
básicos de desenvolvimento utilizando a linguagem C#. Em seguida apresentaremos a forma pela qual a 
informação é distribuída por meio da codificação. Será levado em consideração o modelo de referência 
MVC (Model, View, Controller), um modelo de camadas didático que permite fazer uso de padrões para 
implementar os diversos níveis.
8
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
A abordagem deste livro‑texto tem como foco o aprendizado top‑down do modelo de camadas, 
que compreende uma visão geral, desde as aplicações que fazem parte do nosso dia a dia até as mais 
avançadas, no âmbito de desenvolvimento de sistemas. Para tanto, serão considerados os conceitos de 
comunicação entre as camadas e apresentadas as principais arquiteturas que embasam o desenvolvimento 
de sistemas.
 Observação
Estudar análise de sistemas orientada a objetos é uma mistura de regras 
de negócio e desenvolvimento de software.
9
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Unidade I
1 PROgRAMAÇÃO ORIENTADA A ObjETOS II
Nesta unidade inicial, iremos nos familiarizar com alguns conceitos interessantes que envolvem 
programação, estruturação e modelagem de um software utilizando a linguagem C#. Este livro‑texto foi 
elaborado pensando em trazer o que há de mais recente para você, usando uma linguagem agradável e 
prazerosa. Boa leitura!
1.1 Lógica de programação
Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo.
A importância da lógica de programação é necessária quando programadores necessitam desenvolver 
softwares, pois permite‑se definir, por meio de uma sequência lógica, a evolução do desenvolvimento.
Uma sequência lógica é formada pelos passos executados até atingir um objetivo ou a solução de 
um problema, ou seja, por meio de uma sequência lógica determinada por diagramas e/ou fluxogramas 
que irão garantir o entendimento inicial do desenvolvedor.
Entrada
Processamento
Saída
Figura 1 – Fluxo de sistema procedural
Instruções executadas dentro de uma sequência lógica são um conjunto de regras ou normas definidas 
para a realização de ações. Podemos destacar também que apenas uma instrução, isoladamente, não 
garante a finalização de um processo, pois um conjunto de instruções pode, por exemplo, efetivar um 
ciclo completo de uma funcionalidade sistêmica.
10
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade I
Para efetivarmos nosso entendimento, podemos comparar, essas instruções, em uma sequência lógica, com o 
ato de fazer um bolo, no qual é necessário pôr algumas instruções em prática: colocar ovos, farinha, fermento etc.
•	 Mexer	os	ovos	com	a	farinha.
•	 Adicionar	leite	e	continuar	a	misturar.
•	 Mexer	durante	alguns	minutos.
•	 Adicionar,	aos	poucos,	açúcar	e	fermento.
•	 Mexer	durante	alguns	minutos.
Para garantirmos a plena execução do bolo, devemos cumprir essas instruções em uma ordem 
adequada, caso contrário podemos, por exemplo, deixar a massa do bolo muito seca ou inconsistente.
Sendo assim, não existe sentido algum em efetuar instruções separadas e sem nexo, pois é o conjunto 
de instruções de tarefas que garantirá a qualidade final do conjunto de instruções executadas.
Em desenvolvimento de softwares, o resultado da execução de instruções nada mais é do que uma 
ação elementar a ser executada.
Entrada = 
Variável A,
Variável B
Processamento
(Efetuar Soma)
Saída –
Apresentar
resultadoSoma
Figura 2 – Fluxograma de sistemas
1.1.1 Algoritmo
Podemos definir um algoritmo como uma sequência finita de passos que direcionam a execução 
de uma tarefa. Um algoritmo pode ser comparado, por exemplo, a uma receita, uma sequência de 
instruções que identificam uma meta específica.
A definição de algoritmo pode ser visualizada pelo exemplo de algoritmos das operações básicas 
(adição,	subtração,	divisão	e	multiplicação)	de	números	reais	e	decimais.	Também	podemos	agregar,	dentro	
Usuario
Realce
11
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
da cadeia de exemplos, manuais eletrônicos, como uma máquina fotográfica,que explicam passo a passo, 
por exemplo, como especificar e demonstrar modos de tirar fotos com melhor qualidade de imagem.
Alguns exemplos simples do nosso dia a dia podem ser descritos por uma sequência lógica:
•	 Comer	um	bombom
— Pegar o bombom.
— Retirar o papel do bombom.
— Comer o bombom.
— Identificar qual cesto de lixo corresponde a papel (reciclagem).
— Jogar o papel no lixo.
•	 Multiplicar	dois	números	quaisquer
—	Escrever	o	primeiro	número	no	retângulo	A.
—	Escrever	o	segundo	número	no	retângulo	B.
—	Multiplicar	o	número	do	retângulo	A	pelo	número	do	retângulo	B	e	colocar	o	resultado	no	
retângulo C.
Retângulo A Retângulo B Retângulo C* =
Figura 3 – Demonstração de operação de multiplicação
Algoritmo é como o programador imagina toda a estrutura de código que será desenvolvida. 
Muito importante colocar em prática o desenvolvimento de fluxograma, para que toda a lógica possa 
transcorrer de maneira amigável, tornando‑se assim a aplicação de algoritmo satisfatória.
1.1.2 Programas
Por meio das linguagens de computador (C#, Java, Cobol, Visual Basic etc.), podem‑se derivar 
algoritmos para a linguagem de programação específica.
Atualmente existem diversas linguagens, o que possibilita ao programador definir a linguagem mais 
adequada e cada uma será interpretada por uma máquina, que, no caso, será um computador.
Usuario
Realce
12
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade I
1.1.3 Pseudocódigo
Todos os algoritmos descritos são derivados de uma linguagem denominada pseudocódigo. Esse 
título é atribuído posteriormente a uma linguagem de programação, por exemplo, ao ser programado 
um código C#, será gerado um código C#.
Todo algoritmo construído deve ser de fácil entendimento e fácil de programar, ou seja, deve ser o 
intermediador entre linguagem falada e linguagem de programação.
Existem algumas regras que podem descrever a sequência de instruções de maneira simples e objetiva:
•	 Usar	somente	um	verbo	por	frase.
•	 Imaginar	que	você	está	desenvolvendo	um	algoritmo	para	pessoas	que	não	trabalham	com	informática.
•	 Usar	frases	curtas	e	simples.
•	 Ser	objetivo.
•	 Procurar	usar	palavras	que	não	tenham	sentido	dúbio.
 Lembrete
Algoritmo é como o programador imagina toda a estrutura de 
código que será desenvolvida. É muito importante colocar em prática o 
desenvolvimento de fluxograma para que toda a lógica possa transcorrer 
de maneira amigável, tornando‑se satisfatória a aplicação de algoritmo.
1.2 O que é Programação Orientada a Objetos
O desenvolvimento de aplicações C# pode ser considerado um estudo baseado na interação e na 
composição, bem como a disseminação pelo projeto de software denominado de camada de objetos.
Em muitos cenários leva‑se em consideração a utilização da modelagem de programação orientada 
a objetos em vez da programação procedural. O paradigma de orientação a objetos aproxima‑se de 
itens conceituais e, principalmente, da origem do campo de estudo da cognição, que por muitas vezes 
exerceu influência nas áreas de inteligência artificial e da linguística, sobretudo no âmbito da abstração 
de conceitos do mundo real.
Com base em estudos, podemos afirmar que, com o conceito de modelagem de programação 
orientada a objetos, pode‑se garantir a diminuição de gaps semânticos, bem como a estruturação da 
lógica e o ganho de performance sistêmica.
Usuario
Realce
13
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Existem linguagens, tais como Java, Visual Basic, C#, C++, dentre outras, que são concebidas com os 
conceitos de programação orientada a objetos.
Exemplo de aplicação
Uma agência de veículos tem diversos clientes. Pode, então, criar facilmente uma classe, mensurando 
para o computador o que é um cliente. Porém, para que todo o entendimento seja abstraído de maneira 
amigável, apresenta‑se a classe Cliente com os seguintes atributos:
•	 Nome.
•	 Data	de	nascimento.
•	 CNH.
Deve‑se considerar que um cliente vai muito além de dados contidos em uma base; ele pode sofrer 
ações dentro do sistema. Dentro do universo de programação orientada a objetos, toda e qualquer ação 
que um agente sofre deriva‑se para um método:
•	 AlugarVeículo.
•	 DevolverVeículo.
•	 ReservarVeículo.
É importante perceber que, por questões de boas práticas de desenvolvimento de software, todo 
e qualquer método é escrito no verbo infinitivo para exemplificar melhor as ações que determinado 
agente pode realizar dentro do sistema.
Sendo assim, entenda‑se a construção de uma classe por um dos seguintes requisitos:
•	 Todo	e	qualquer	atributo	é	um	dado	que	será	inserido,	alterado,	excluído	ou	consultado	de	uma	tabela.
•	 Todo	e	qualquer	método	descreve	quais	são	as	possíveis	ações	que	um	agente	pode	realizar.
Um software pode ter uma ou mais classes com métodos e atributos. No exemplo, cada agente 
terá seu nome, data de nascimento e CNH realizando os métodos: AlugarVeículo, DevolverVeículo e 
ReservarVeiculo.
14
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade I
1.3 Linguagem de Programação C#
A linguagem C# vem crescendo a cada dia, aumentando sua disseminação no mercado de 
desenvolvimento de software. A partir da sua concepção até os dias atuais, nota‑se a preocupação em 
garantir a evolução da linguagem, acompanhando o crescimento exponencial do mercado de software, 
como podemos conferir no texto a seguir:
A evolução do C#
Cada geração do C# tem trazido adicionais relevantes à linguagem, com poucas excelentes 
funções. Talvez a mais significativa função adicionada para o C# 2.0 tenha sido Generics 
(permitindo um aperfeiçoamento de segurança de tipo ao lidar com collections – coleções). 
Desta forma, a adição mais significativa ao C# 3.0 deve ser a extensão de Consulta de 
Linguagem Integrada (LINQ – Language‑Integrated Query), que adiciona ao C# extensões de 
consulta	de	dados	de	finalidade	geral,	embora	não	seja	a	única	melhoria	do	C#.
Outras novas características incluídas:
•	 Expressões	Lambda	(delegates	anônimos	nos	steroids).
•	 Métodos	de	Extensão.
•	 Inicializadores	de	Objeto.
•	 Tipos	anônimos.
•	 Variáveis	locais	de	tipo	implícito.
•	 Vetores	de	tipo	implícito.
•	 Árvores	de	Expressão.
•	 Propriedades	Automáticas	(uma	pequena	joia).
A Linguagem C#
A essência da linguagem C# é tranquilizadoramente simples, com pouco mais de cem 
palavras‑chave	 e	 uma	 dúzia	 de	 tipos	 internos	 de	 variáveis,	mas	 é	 altamente	 expressiva	
quando vem a implementar conceitos modernos de programação. A linguagem C# inclui 
todo o suporte para programação estruturada, com componentes funcionais e de orientação 
a objetos que você espera de uma linguagem moderna construída a partir de C++ e Java. A 
versão 3.0 tem sido estendida de três formas muito importantes:
Total suporte para LINQ – consultas em relação a dados agora fazem parte da linguagem.
Usuario
Realce
Usuario
Realce
Usuario
Realce
15
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
•	 Total	suporte	para	sintaxes	declarativas	do	Windows	Presentation	Foundation	(WPF;	
para criação de aplicações ricas do windows), work Flow (wF) e Silverlight (para 
criação multiplataforma e multinavegadores de aplicações ricas de internet).
•	 Muitas	 funções	 convenientes	 adicionadas	 para	 auxiliar	 a	 produtividade	 do	
programador e para funcionar e rodar corretamente no Visual Studio 2013.
Um pouquinho de história
A linguagem C# foi originalmente desenvolvida por um pequeno time conduzido por 
dois engenheiros da Microsoft, Anders Hejlsberg e Scott wiltamuth. Hejlsberg é também 
conhecido pela criação do Turbo Pascal, uma linguagem popular para programação PC, e 
por liderar o time que arquitetou o Borland Delphi, um dos primeiros vitoriosos Ambientes 
de Desenvolvimento Integrados (Integrated DevelopmentEnvironments – IDEs) para 
programação cliente/servidor.
Características do C#
No coração de qualquer linguagem orientada a objetos, está seu suporte para definir 
e trabalhar com classes. Classes determinam novos tipos, permitindo que você estenda a 
linguagem e consiga manipular melhor o problema que você está tentando solucionar. C# 
contém palavras‑chave para declaração de novas classes e de seus métodos e propriedades 
e para implementação de encapsulamento, polimorfismo, os três pilares da programação 
orientada a objetos.
No C#, tudo relacionado a uma declaração de classe localiza‑se na própria declaração. 
Definições de classe C# não necessitam de arquivos de cabeçalho ou arquivos separados 
(IDL – Interface Definition Language). Além disso, o C# permite documentação direta (inline) 
que simplifica a criação online e impressa de documentação para um aplicativo.
[O] C# também permite interfaces, um meio de fazer um contrato com uma classe 
para processos que a interface determina. No C#, uma classe pode herdar de apenas um 
objeto‑pai (parent),	mas	uma	classe	pode	implementar	múltiplas	interfaces.	Quando	uma	
classe implementa uma interface, na prática promete proporcionar funcionalidade que as 
interfaces especificam.
[A linguagem] C# proporciona também um suporte a structs (estruturas), um conceito que 
tem mudado seu significado de forma relevante a partir do C++. No C#, uma estrutura é um 
limitado tipo supérfluo que[,] quando instanciado, faz menos pedidos ao sistema operacional 
e à memória do que uma classe convencional faz. Uma struct pode herdar de uma classe ou 
ser herdada por uma classe, mas um struct pode implementar uma interface. [...].
C# proporciona suporte total de delegates (delegados): para invocação de métodos 
indiretamente. Em outras palavras, como no C++[,] você pode achar funcionalidade 
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
16
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade I
similar (como em ponteiros para funções de membros), mas delegates são referência de 
tipos seguros que encapsulam métodos com assinaturas e tipos de retorno específicos. 
Delegates têm sido estendidas significativamente, primeiro no C# 2.0 e novamente no C# 
3.0, primeiramente com anonymous delegates e agora com as Expressões Lambda (Lambda 
Expressions), colocando a base para o LINQ. [...].
[O] C# proporciona características orientadas a componentes, como propriedades, 
eventos e construtores declarativos (como atributos). Programação orientada a componente 
é sustentada pelo armazenamento de metadado com o código para a classe. O metadado 
descreve a classe, incluindo seus métodos e propriedades, bem como sua necessidade de 
segurança e outros atributos, assim como será que pode ser serializado, o código contém a 
lógica suficiente para executar suas funções.
Dessa forma, uma classe compilada é uma unidade independente. Então um ambiente de 
armazenamento de dados que sabe como ler um metadado e um código de uma classe não 
precisa de nenhuma outra informação para fazer utilização disso. Isso é possível, usando o C# e 
o Commom Language Runtime (CLR, Tempo de Execução de Linguagem Comum) para adicionar 
um metadado personalizado a uma classe pela criação de atributos personalizados. Dessa mesma 
forma, é possível ler um metadado de classe utilizando os tipos do CLR que suportam reflexão.
Quando você compila seu código, cria um assembly. Um assembly é uma coleção de arquivos 
que	aparecem	ao	programador	como	uma	única	DLL,	biblioteca	de	link dinâmico (Dynamic Link 
Library) ou executável (EXE). Em .NET, um assembly é a unidade básica de reutilização, versionamento, 
segurança	e	implantação.	O	CLR	proporciona	um	número	de	classes	para	manipulação	de	assemblies.
Uma nota final sobre o C# é que ele também proporciona suporte para:
•	 Acesso	direto	à	Memória	utilizando	ponteiros	do	estilo	C	++.
•	 Palavras‑chave	para	incluir	operações	como	inseguras.
•	 Avisa	o	coletor	de	lixo	CLR	para	não	coletar	objetos	referenciados	por	ponteiros	até	
que eles sejam liberados.
Fonte: Liberty; Xie (2009, p. 3‑5).
 Saiba mais
Fique sempre por dentro das novidades e lançamentos de versões 
atualizadas do Visual Studio. Eles se encontram no seguinte endereço:
<https://www.visualstudio.com/pt‑br/visual‑studio‑homepage‑vs.aspx>.
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
17
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
2 PLANO DE DESENvOLvIMENTO DE SOfTwARE
Atualmente, o desenvolvimento de software cresce exponencialmente. Planejamento, 
Desenvolvimento, Construção e Avaliação (PDCA) são as constantes utilizadas para que o ciclo de 
desenvolvimento permaneça ativo no dia a dia.
 Observação
PDCA (Plan – planejar, Do – fazer, Check – checar, Action – agir): é 
um conceito de boas práticas na gestão, podendo ser aplicado no 
desenvolvimento de softwares (Planejar, Desenvolver, Construir e Avaliar) 
a fim de se gerar evidências de todo o ciclo de análise e desenvolvimento 
de um software.
•	Ação	corretiva	no	
insucesso
•	Padronizar	e	 
treinar no 
sucesso
•	Verificar	 
atingimento 
de meta
•	Acompanhar	
indicadores
•	Localizar	
problemas
•	Estabelecer	
planos de ação
•	Execução	
do plano
•	Colocar	
plano em 
prática
Action
Agir
Check
Checar
Plan
Planejar
Do
Fazer
Figura 4 – Exemplo de execução do PDCA
Para o desenvolvimento de um software, são necessárias algumas perguntas:
•	 Como	entender	o	requisito	solicitado	e	“traduzir”	em	linguagem	de	programação?
•	 Como	 atender	 a	 todas	 as	 necessidades	 de	 um	 projeto	 de	 software utilizando linguagem de 
programação?
Para que todas as respostas possam ser apresentadas, um dos recursos que irão conduzir o 
desenvolvimento do software e auxiliar na visualização das etapas será o UML. Dessa metodologia, 
iremos absorver:
•	 Diagrama	de	Caso	de	Uso.
18
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade I
•	 Diagrama	de	Classe.
•	 Diagrama	de	Sequência.
 Saiba mais
Para saber mais a respeito do tema, sugerimos a leitura do seguinte artigo:
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.
2.1 Diagrama de Caso de Uso
Para que o desenvolvimento de software possa ser melhor entendido, após a análise de requisitos 
ser efetuada, o programador pode, por meio dos seus conhecimentos técnicos, efetuar o entendimento 
inicial do seu desenvolvimento.
O exemplo a seguir demonstra como podemos retirar informações preciosas do Diagrama de Caso de Uso:
Descrição Sucinta
Este caso de uso descreve os procedimentos que devem ser realizados para efetuar a inclusão de um relatório 
dinâmico.
Pré-Requisito: Verifica se o usuário tem permissão.
Fluxo de Eventos
Fluxo Básico B1 – (Incluir Relatório)
Por	meio	do	número	da	funcional	do	usuário	autenticado,	o	Sistema	verifica	que	o	usuário	logado	possui	acesso	
para incluir relatórios;
O Sistema apresenta a opção Gerenciar Relatório;
O	usuário	seleciona	a	opção	Gerenciar	Relatório	e	em	seguida	a	opção	“Incluir	Relatório”;
O sistema abre a tela de inclusão de relatório com as seguintes informações:
Nome, Descrição e Conteúdo
O usuário seleciona incluir.
O sistema verifica quais campos obrigatórios estão preenchidos.
O	sistema	valida	se	a	instrução	cadastrada	no	campo	Conteúdo	é	uma	instrução	de	Select.
O	Sistema	valida	se	os	parâmetros	passados	no	conteúdo	são	parâmetros	válidos	(formato	de	passagem	dos	
parâmetros:	@{Número	da	RS;int;5}	–	onde	@{	delimita	o	início	do	Nome	do	Dado;	o	primeiro	símbolo	“;”	delimita	
o	término	doNome	do	Dado	e	após	o	“ponto	e	vírgula”	é	o	início	do	Tipo	do	Dado).
O sistema efetiva a inclusão do relatório.
O	sistema	apresenta	a	mensagem	“Relatório	incluído	com	sucesso!”.
O caso de uso termina.
19
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Pode‑se observar que, por meio do Diagrama de Caso de Uso, podemos retirar:
•	 Entendimento	da	funcionalidade.
•	 Entendimento	do	fluxo	de	navegação	da	funcionalidade.
•	 Mensagens	que	serão	exibidas	no	software, por meio de caixa de mensagem.
Para que se possa traçar um paralelo entre a linguagem de programação e o Diagrama de Caso de 
Uso, observe a figura a seguir:
Figura 5 – MessageBox utilizado para exibir caixa de mensagem
Figura 6 – Caixa de Mensagem utilizada no C#
2.2 Diagrama de Classe
Este diagrama irá auxiliar o desenvolvedor a entender os seguintes itens no processo de construção 
do software:
•	 Criação	de	classe(s)	para	cada	funcionalidade(s).
•	 Criação	de	método(s)	para	cada	funcionalidade(s).
Quadro 1 – Diagrama de Classe: funcionalidade IncluirRelatorio
1 – ClsRelatorio
2 – Nome
3 – Descricao
4 – Conteudo
5 – IncluirRelatorio()
Usuario
Realce
Usuario
Realce
20
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade I
 Observação
A nomenclatura utilizada no diagrama de classe (clsIncluirRelatorio) 
foi adotada para facilitar o entendimento entre documentação e 
desenvolvimento do software.
Figura 7 – Classe clsRelatorio desenvolvida em C#
Com os atributos declarados no Diagrama de Classe, pode‑se definir, por exemplo, a construção da 
tabela que irá receber os valores de entrada informados no software.
 Observação
Apesar de a lógica de programação ser uma variante entre os 
programadores atuais, não se faz necessário a nomenclatura adotada neste 
livro‑texto ser seguida em todo o desenvolvimento; porém, atualmente, 
quanto mais o código‑fonte do seu software for fiel à documentação 
disponibilizada para o desenvolvimento, melhor o tempo de construção e 
manutenção de cada funcionalidade.
2.3 Diagrama de Sequência
Este diagrama irá auxiliar o desenvolvedor a entender os seguintes itens na construção do software:
•	 Integração	de	classe(s)	para	cada	funcionalidade(s).
•	 Integração	de	método(s)	para	cada	funcionalidade(s).
Usuario
Realce
21
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura 8 – Diagrama de Sequência: funcionalidade IncluirRelatorio
Todos os recursos apresentados auxiliam o desenvolvedor a otimizar o tempo de construção, 
garantindo uma entrega com qualidade e fiel à especificação atribuída.
 Lembrete
Estudar análise de sistemas orientada a objetos é uma mistura 
de regras de negócio e desenvolvimento de software. Embora sejam 
necessários os conceitos e teorias, somente a prática levará o estudante 
ao verdadeiro aprendizado!
 Resumo
Abordamos a concepção de códigos e uma breve passagem da linguagem 
de programação C#. É importante entender que todos os exemplos 
apresentados foram concebidos por meio do Visual Studio, utilizando a 
ferramenta console application.
Para que todo o aprendizado da linguagem de programação orientada 
a objetos seja mais efetivo, recomenda‑se estudar também a Unified 
Modeling Language (UML), que irá guiar o estudante a entender todo o 
conceito teórico da linguagem e como será visualizado no ambiente de 
trabalho entre análise e desenvolvimento de sistemas.
Diagramas essenciais para desenvolvimento de sistemas são: Diagrama 
de Caso de Uso, Diagrama de Sequência e Diagrama de Classe.
22
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade I
Estudar conceitos voltados à análise de sistemas garante a excelência 
no desenvolvimento e a proximidade entre requisitos solicitados, análise 
efetuada e aplicação desenvolvida.
Dentro do universo, por exemplo, de uma fábrica de software, podemos 
encontrar a figura do Diagrama de Caso de Uso, que é importante para 
o desenvolvedor na captura de informações que serão inseridas em uma 
caixa de mensagem. No Diagrama de Sequência, o estudante pode ter a 
visão de toda a interação sistêmica entre classes e métodos. Por fim, o 
Diagrama de Classe é composto por atributos e métodos, ou seja, todo 
atributo descreve as características de uma classe, e os métodos, por sua 
vez, são ações que toda a classe pode executar.
Uma classe é uma representação de um objeto que será trabalhado 
dentro de um sistema, sofrendo ações e, principalmente, tratando dados de 
persistências e conexões futuras.
Por fim, não se pode evoluir tecnicamente sem que o estudante tenha, 
ao menos, compreendido aspectos considerados pré‑requisitos para o 
entendimento da disciplina, tendo a certeza de que uma análise efetuada 
com sucesso pode garantir a excelência da execução de uma codificação. 
Estudos comprovam que quanto mais tempo gasto em análise, menos 
tempo precisará para se codificar.
Usuario
Realce
23
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Unidade II
Iniciaremos os nossos estudos apresentando técnicas de programação aplicando‑se a plataforma 
desktop. Iremos aprender como segregar a estrutura de código C# para que possamos garantir qualidade 
de desenvolvimento e performance de manutenção.
Entendendo as aplicações, torna‑se fácil entender os passos necessários para dar suporte a 
aplicações e identificar as diversas maneiras pelas quais essas aplicações Windows Form são fornecidas 
ou implementadas.
3 Linguagem de Programação C#
A linguagem de programação C# foi criada para que desenvolvedores pudessem atuar de maneira 
mais ágil com aplicações web. Dentre os pontos da linguagem, podemos destacar os seguintes:
•	 Linguagem	de	programação	orientada	a	objetos	ideal	para	desenvolvimento	de	aplicações	web.
•	 É	 considerada	 uma	 evolução	 do	 C++,	 do	 qual	 são	 utilizadas	 algumas	 características,	 como	
declarações, expressões e operadores.
•	 Utiliza	muitas	regras	de	programação	para	reduzir	a	possibilidade	de	erros.
•	 C#	também	tem	como	objetivo	permitir	o	desenvolvimento	de	qualquer	tipo	de	aplicação:	web 
service, aplicação Windows convencional, aplicações para serem executadas num palmtop ou 
handheld, aplicações para internet etc.
3.1 Histórico e curiosidades
•	 Criada	pela	Microsoft	especificamente	para	a	plataforma	.NET.
•	 Iniciada	em	1999	por	Anders	Hejlsberg	e	equipe,	com	nome	de	Cool.
•	 .NET	é	apresentada	em	2000	e	linguagem	Cool	é	renomeada	para	C#.
•	 O	símbolo	real	seria	o	♯, e não o #. Porém, devido a limitação de telas, fontes, teclados e alguns 
navegadores,	no	momento	da	normalização	junto	à	ECMA,	foi	feita	a	opção	pelo	#.
•	 Foi	criada	com	base	nas	linguagens	C++	e	Java.
•	 Tem	como	um	dos	principais	editores	o	Visual	Studio.
Usuario
Realce
24
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
 Saiba mais
Para saber mais a respeito do tema, sugerimos a leitura do seguinte artigo:
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.
3.2 microsoft Visual Studio
O	Microsoft Visual Studio	 é	 um	 pacote	 de	 programas	 da	 Microsoft	 para	 desenvolvimento,	
dedicado ao framework	.NET	e	às	linguagens	Visual	Basic	(VB),	C,	C++,	C#	e	J#.	Trata	também	de	
desenvolvimento web	na	plataforma	do	ASP.NET,	tendo	como	linguagens	mais	frequentes	VB.NET	
(Visual	Basic	.Net)	e	C#.
3.3 Herança
Trata‑se	 da	 característica	 mais	 poderosa	 e	 importante	 da	 orientação	 a	 objetos,	 pois	 permite	 o	
reaproveitamento	 de	 atributos	 e	 de	 métodos,	 otimizando	 o	 tempo	 de	 desenvolvimento.	 Com	 isso,	
podemos	reduzir	significativamente	a	linha	de	código.
O	conceitode	herança	trabalha	com	o	conceito	de	superclasse	e	 subclasse.	A	superclasse	é	uma	
classe que possui classes derivadas a partir dela, chamadas de subclasses. Estas, ao serem derivadas de 
uma superclasse, herdam seus atributos e métodos.
Figura	9 – Diagrama de Classe
Usuario
Realce
Usuario
Realce
25
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
A	seguir	podemos	observar	alguns	exemplos	que	contextualizam	a	explicação	de	herança:
Exemplo 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
 class Program
 {
 static void Main(string[] args)
 {
 
 Console.WriteLine (“ Instancia da Classe Pessoa, {0}!”, Console.
ReadLine());
 __________.__________ pessoa = new Heranca.______________();
 pessoa._______ = “professor unip”;
 ______.idade = 40;
 
 Console.WriteLine (“Pessoa: Nome={0},Idade={1}”, __________.nome, 
pessoa.__________);
 Console.WriteLine();
 Console.WriteLine();
 
 Console.WriteLine(“ Instancia da Classe Aluno, {0}!”, Console.Read‑
Line());
 Heranca.___________ __________ = new Heranca.Aluno();
 _____________.nome = “Joaquim”;
 _____________.idade = 30;
 aluno.___________________ = “AX3601223‑1”;
 
 Console.WriteLine(“Aluno: Nome={0},Idade={1}, Matricula={2}”, alu‑
no._____, ____._____, _____._____);
 Console.WriteLine();
 Console.WriteLine(“ Fim, {0}!”, Console.ReadLine());
 }
 }
}
namespace Heranca
{
 public class _____________
 {
 //atributos
 public string __________;
 public int _____________;
 
 //construtor
 public _____________()
 {
 Console.WriteLine(“Construção do objeto Pessoa.”);
 } 
 }
26
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
 public class _____________ : _____________
 {
 //atributo
 public String __________________;
 
 //construtor
 public Aluno()
 {
 Console.WriteLine(“Construção do objeto Aluno.”);
 }
 }
}
Exemplo 2
using System;
namespace ConsoleApplication2
{
 class Program
 {
 static void Main(string[] args)
 {
 
 //Início‑com base na herança 
 Console.WriteLine(“ Instancia da Classe Pessoa, {0}!”, Console.Read‑
Line());
 ____________.___________ _________ = new ___________.______(“Joa‑
quim”);
 Console.WriteLine (“Pessoa: Nome {0}”,_________.__________);
 Console.WriteLine();
 
 Console.WriteLine(“ Instancia da Classe Aluno com base na herança, 
{0}!”, Console.ReadLine());
 __________.________ aluno = new HerancaBase.__________(“090909‑x”, 
“Silva”);
 Console.WriteLine(“Aluno com nome {0} e matrícula {1}», aluno.nome, 
aluno.matricula);
 //Fim‑com base na herança
 Console.WriteLine(“ Fim, {0}!”, Console.ReadLine());
 }
 }
}
namespace HerancaBase
{
 public class __________
 {
 //atributos
 public string _________;
27
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
 public int ____________;
 //construtor
 public __________()
 {
 //nada
 }
 public Pessoa(string n)
 {
 this.nome = n;
 Console.WriteLine(“Construção do objeto Pessoa com parâmetro.”);
 }
 }
 public class _________ : ___________
 {
 //atributo
 public String ____________;
 //construtor com base na herança
 public Aluno(string m, string n)
 : base(n)
 {
 this.matricula = m;
 Console.WriteLine(“Construção do objeto Aluno com base na herança.”);
 }
 }
}
3.4 Polimorfismo
O	conceito	está	associado	à	herança	e	trabalha	com	a	redeclaração	de	métodos	previamente	herdados	
por	uma	classe.	O	ponto	principal	é	evitar	ter	de	modificar	o	código‑fonte;	 inserindo	uma	chamada	
em um método com um nome diferente, redeclara‑se o método com o mesmo nome declarado na 
superclasse.
A	seguir	podemos	observar	alguns	exemplos	que	contextualizam	a	explicação	de	polimorfismo:
Exemplo 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
 class ProgramP
 {
 static void Main(string[] args)
 {
Usuario
Realce
28
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
 Console.WriteLine(“ Instancia da Classe Familia, {0}!”, Console.
ReadLine());
 _________._________ familia = new _____________.__________();
 familia.pais();
 Console.WriteLine(“ Instancia da Classe Continente, {0}!”, Console.
ReadLine());
 ______________.Continente ____________ = new Polimorfismo. 
_______________();
 continente.________();
 Console.WriteLine(“ Instancia da Classe Hemisferio, {0}!”, Console.
ReadLine());
 Polimorfismo.Hemisferio ______________ = new Polimorfismo.Hemisferio();
 ____________.pais();
 Console.ReadLine();
 }
 }
}
namespace Polimorfismo
{
 public class ______________
 {
 public virtual void ___________()
 {
 Console.WriteLine(“ Método ‘pais’ do objeto ‘Familia’ “);
 }
 }
 //utilizando o método com o mesmo nome em classes diferentes
 class ____________ : Familia
 {
 public override void ________()
 {
 Console.WriteLine(“ Método ‘pais’ do objeto ‘Continente’ “);
 }
 }
 //utilizando o método com o mesmo nome em classes diferentes
 class Hemisferio : _____________
 {
 public override void _________()
 {
 Console.WriteLine(“ Método ‘pais’ do objeto ‘Hemisferio’ “);
 }
 }
}
Figura	10	–	Tela	Windows	Form
29
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	11	–	Tela	Windows	Form:	Label
Figura	12	–	Tela	Windows	Form:	CheckBox selecionado
Exemplo 2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
 public partial class Form1 : Form
 {
 public Form1()
 {
 InitializeComponent();
 checkBox1.Checked = false;
 label1.Text = “”;
 }
 
 private void button1_Click(object sender, EventArgs e)
 {
 Polimo.Movimenta __________ = new Polimo.Movimenta();
 if (this.checkBox1.Checked){
 _________.carro_em_movimento(new Polimo._______());
 label1.Text = “O Carro está acelerando.”;
 }
 else
30
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
 {
 movimenta.carro_em_movimento(new Polimo.________());
 label1.Text = “O Carro está freando.”;
 } 
 }
 }
}
namespace Polimo
{
 //Classe
 public abstract class Carro
 {
 public abstract bool __________();
 }
 //Classe
 public class Acelerar:Carro 
 {
 //Usa o mesmo nome do método da Classe Carro 
 public ______________ bool _________()
 {
 Console.WriteLine(“O Carro está acelerando.”);
 return true;
 }
 }
 
 //Classe
 public class Frear:Carro
 {
 //Usa o mesmo nome dométodo da Classe Carro 
 public override bool acao()
 {
 Console.WriteLine(“O Carro está freando.”);
 return true;
 } 
 }
 
 //Classe
 public class Movimenta
 {
 public bool carro_em_movimento(_________ car)
 {
 return car.___________();
 }
 }
} 
Exemplo 3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
 class Programh
31
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
 {
 static void Main(string[] args)
 {
 //Início‑com base na herança 
 Console.WriteLine(“ Instancia da Classe Pessoa, {0}!”, Console.Read‑
Line());
 HerancaBase.Pessoa pessoa = new HerancaBase.Pessoa(“LUIZ”);
 Console.WriteLine(“Pessoa: Nome {0}”, pessoa.nome);
 Console.WriteLine();
 Console.WriteLine(“ Instancia da Classe Aluno com base na herança, 
{0}!”, Console.ReadLine());
 HerancaBase.Aluno aluno = new HerancaBase.Aluno(“090909‑x”, “Lui‑
gi”);
 Console.WriteLine(“Aluno com nome {0} e matícula {1}”, aluno.nome, 
aluno.matricula);
 //Fim‑com base na herança
 Console.WriteLine(“ Fim, {0}!”, Console.ReadLine());
 }
 }
}
namespace HerancaBase
{
 public class Pessoa
 {
 //atributos
 public string nome;
 public int idade;
 //construtor
 public Pessoa()
 {
 //nada
 }
 public Pessoa(string n)
 {
 this.nome = n;
 Console.WriteLine(“Construção do objeto Pessoa com parâmetro.”);
 }
 }
 public class Aluno : Pessoa
 {
 //atributo
 public String matricula;
 //construtor com base na herança
 public Aluno(string m, string n)
 : base(n)
 {
 this.matricula = m;
 Console.WriteLine(“Construção do objeto Aluno com base na her‑
ança.”);
 }
 }
}
32
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Exemplo 4
using System;
namespace ConsoleApplication3
{
 class ProgramP
 {
 static void Main(string[] args)
 {
 Console.WriteLine (“ Instancia da Classe Familia, {0}!”, Console.
ReadLine());
 Polimorfismo.Familia familia = new Polimorfismo.Familia();
 familia.pais();
 Console.WriteLine(“ Instancia da Classe Continente, {0}!”, Console.
ReadLine());
 Polimorfismo.Continente continente = new Polimorfismo.Continente();
 continente.pais();
 Console.WriteLine(“ Instancia da Classe Hemisferio, {0}!”, Console.
ReadLine());
 Polimorfismo.Hemisferio hemisferio = new Polimorfismo.Hemisferio();
 hemisferio.pais();
 Console.ReadLine();
 }
 }
}
namespace Polimorfismo
{
 public class Familia
 {
 //método pais [País ou Pais]
 public virtual void pais()
 {
 Console.WriteLine (“ Método ‘pais’ do objeto ‘Familia’ “);
 }
 }
 //utilizando o método com o mesmo nome em classes diferentes
 class Continente : Familia
 {
 public override void pais()
 {
 Console.WriteLine (“ Método ‘pais’ do objeto ‘Continente’ “);
 }
 }
 //utilizando o método com o mesmo nome em classes diferentes
 class Hemisferio : Familia
 {
 public override void pais()
 {
 Console.WriteLine (“ Método ‘pais’ do objeto ‘Hemisferio’ “);
 }
 }
33
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
 
Figura	13	–	Tela	Windows	Form	–	Label
Figura	14	–	Tela	Windows	Form	–	CheckBox selecionado
Exemplo 5
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
 public partial class Form1 : Form
 {
 public Form1()
 {
 InitializeComponent();
 checkBox1.Checked = false;
 label1.Text = “”;
 }
 private void button1_Click(object sender, EventArgs e)
 {
 Polimo.Movimenta movimenta = new Polimo.Movimenta();
 if (this.checkBox1.Checked)
 {
34
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
 movimenta.carro_em_movimento(new Polimo.Acelerar());
 label1.Text = “O Carro está acelerando.”;
 }
 else
 {
 movimenta.carro_em_movimento(new Polimo.Frear());
 label1.Text = “O Carro está freando.”;
 }
 }
 }
}
namespace Polimo
{
 //Classe
 public abstract class Carro
 {
 public abstract bool acao();
 }
 //Classe
 public class Acelerar : Carro
 {
 //Usa o mesmo nome do método da Classe Carro 
 public override bool acao()
 {
 Console.WriteLine(“O Carro está acelerando.”);
 return true;
 }
 }
 //Classe
 public class Frear : Carro
 {
 //Usa o mesmo nome do método da Classe Carro 
 public override bool acao()
 {
 Console.WriteLine(“O Carro está freando.”);
 return true;
 }
 }
 //Classe
 public class Movimenta
 {
 public bool carro_em_movimento(Carro car)
 {
 return car.acao();
 }
 }
}
4 Camada de aPreSentação
Em primeiro lugar, é importante sabermos que a Camada de Apresentação é a entrada de dados 
de	uma	aplicação.	Em	muitos	momentos	ela	é	apresentada	em	projetos	de	software como Front‑End, 
definida como protótipo na fase de levantamento de requisitos.
Usuario
Realce
35
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	15 – Camada de Apresentação
Quadro 2 – Relação Controle versus Tela
Controle Name do Controle Text do Controle
Form frmNotasUnip Cadastro	de	Notas
GroupBox1 grpNotasSemestre Notas	do	Semestre
Label1 lblNotasP1 NotaP1:
Label2 lblNotasP2 NotaP2:
Label3 lblMedia Média:
ComboBox1 cbxNotaP1 ‑
ComboBox2 cbxNotaP2 ‑
GroupBox2 grpExameFinal Exame Final
Label4 lblNotaExame Nota	Exame:
Button1 btnCalcularMedia Calcular	Mé&dia
Button2 btnLimpar Lim&par
Button3 btnSair Sai&r
Button4 btnCalcularExame Calcular &Exame
 Saiba mais
Para saber mais sobre esse assunto, sugerimos a leitura do artigo:
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.
36
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
4.1 Funções específicas da Camada de apresentação
A camada de apresentação é responsável por diversas funções importantes no processo de execução 
do software:
•	 Pode	ser	categorizada	por	processos	de	aplicação.
•	 Processamento	de	transações.
•	 Acesso	a	banco	de	dados.
•	 Gerência	de	ações	sistêmicas	etc.
 observação
Software ou aplicação podem, por meio de uma boa análise efetuada, 
gerar	frutos	excepcionais.	Uma	boa	análise	equivale	a	80%	da	execução	de	
um	projeto,	restando	apenas	20%,	que	se	destinam	à	programação.
Estudar	uma	linguagem	específica	garante	conhecimento	da	tecnologia,	
ou	 seja,	 ganho	 técnico.	 Porém,	 se	 a	 análise	 não	 andar	 em	 paralelo	 com	
o	 código,	não	 será	possível	 aplicar	 todo	o	 conhecimento	 técnico	para	o	
sucesso da execução do desenvolvimento do software	e/ou	da	aplicação.
A camada de apresentação contém os elementos da interface do usuário do site e inclui toda a 
lógica,	que	compreende	a	interação	do	visitante	e	das	regras	de	negócio	(Windows	Form).
Podemos	definir	a	Camada	de	Apresentação,	ou	Camada	do	Cliente,ou	até	mesmo	Camada	Superior,	
como	a	interface	com	o	usuário,	que	poderia	ser	considerada	até	mesmo	como	as	janelas	do	Windows	
do nosso aplicativo, por exemplo.
Essa	camada	interage	com	a	Camada	de	Controle	(intermediária)	para	fazer	solicitações	e	recuperar	
informações da camada de dados, exibindo‑as para os usuários.
Uma	segregação	de	camadas	certamente	deixa	o	código	com	uma	leitura	e	um	controle	mais	fáceis,	
pois toda a regra está alocada em uma camada isolada.
4.2 Criando a Camada de apresentação
Iremos	apresentar	como	será	feita	a	criação	da	nossa	primeira	camada	de	apresentação.	A	princípio	
será criado um form para que possamos conhecer alguns componentes.
Como	primeiro	passo,	abriremos	nosso	IDE	de	programação,	chamado	Microsoft	Visual	Studio.
Usuario
Realce
Usuario
Realce
37
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
 observação
Neste	livro‑texto	iremos	utilizar	o	Microsoft	Visual	Studio	2012.	Todo	e	
qualquer	exemplo	e/ou	exercício	deverá	ser	executado	nessa	versão	ou	em	
uma superior.
Figura	16	–	IDE	de	programação	Microsoft	Visual	Studio	2012
 Lembrete
Para	 efeito	 de	 padronização	 e	 arquitetura	 de	 solução,	 a	 estrutura	
de desenvolvimento de softwares	 terá	 como	 referência	 o	 MVC	 (Model,	
View,	Controller),	conforme	mencionado	anteriormente.	No	entanto,	essa	
arquitetura	 dará	 ao	 estudante	 uma	 visualização	 melhor	 sobre	 todos	 os	
recursos	utilizados	neste	livro‑texto.
Podemos	destacar,	dentro	do	Microsoft	Visual	Studio,	pontos	que	são	essenciais	para	a	execução	de	
um bom trabalho para o desenvolvedor:
•	 Solution	 Explorer (Gerenciador de Soluções): aba em que irá ficar concentrada toda 
a nossa estrutura de aplicação, desde a camada de apresentação até as classes que serão 
utilizadas	na	aplicação.
Usuario
Realce
Usuario
Realce
38
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	17	–	Solution	Explorer:	Gerenciador	de	Soluções
•	 Toolbox	(Barra	de	Ferramentas):	utilizada	para	que	o	desenvolvedor	possa	criar	suas	telas	com	
base	em	protótipos	elaborados	na	fase	de	levantamento	de	requisitos	do	projeto	de	software.
Figura	18	–	ToolBox:	Barra	de	Ferramentas
Para	criamos	um	projeto	Windows	Form,	ou	seja,	um	projeto	em	que	a	premissa	será	elaborar	uma	
aplicação que será executada em ambiente desktop, teremos de seguir estes passos:
•	 Ao	iniciar	o	Microsoft	Visual	Studio,	devemos	acionar	o	link New	Project	(Novo	Projeto),	ou	no	
menu superior File	(Arquivo)	 New	(Novo)	Project	(Projeto).
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
39
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	19	–	Tela	inicial	para	adicionar	um	novo	projeto
Figura	20	–	Rota	de	menu	para	adicionar	um	novo	projeto
 observação
A	 versão	 do	 Microsoft	 Visual	 Studio	 utilizada	 para	 ilustração	 deste	
livro‑texto	está	em	inglês.	O	autor	recomenda	a	utilização	dessa	versão,	pois	
ela é encontrada na maioria das empresas que atuam com desenvolvimento 
de software.
40
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
•	 Após	executar	a	ação	anterior,	a	seguinte	tela	deverá	ser	apresentada:
Figura	21	–	Caixa	inicial	de	criação	de	um	novo	projeto
Na	figura,	podemos	nos	atentar	para	alguns	detalhes,	tais	como:
•	 Do	lado	esquerdo	existe	um	item	chamado	Templates, onde podemos, por exemplo, definir em 
qual	linguagem	iremos	atuar.	É	muito	importante	atentarmos	à	linguagem	escolhida	para	que,	no	
momento da codificação, não possamos programar em linguagens diferentes.
Figura	22	–	Aplicação	Visual	Basic	com	código	C#
41
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	23 – Templates	contidos	dentro	do	Visual	C#
Podemos notar que existem diversos templates,	porém	o	que	 iremos	utilizar	será	o	Windows 
Form Application.
Para	que	possamos	finalizar	o	processo	de	criação	do	nosso	projeto,	será	necessário	atentar	para	
mais alguns itens:
•	 Name	(Nome):	nome	que	será	colocado	no	projeto	desenvolvido.
•	 Location	(Localização):	onde	ficará	alocado	o	novo	projeto.
•	 Solution	Name	(Nome	da	Solução):	será	replicado	o	Name	(Nome)	informado	para	o	novo	projeto.
 observação
Recomendamos que nunca informe um diretório de pen drive para 
salvar	ou	abrir	um	projeto	Windows	Form.	Como	parte	das	boas	práticas,	o	
projeto	deve	ser	criado	e/ou	alocado	em	disco	local	e	só	depois	de	todas	as	
alterações efetuadas ser transferido para o pen drive.
42
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	24	–	Definição	do	projeto	inicial
Após a execução desse passo será apresentada a seguinte tela:
Figura	25 – Ambiente de Desenvolvimento Windows Form
Quando	 um	 projeto	 Windows	 Form	 é	 adicionado,	 temos	 a	 visualização	 do	 Form1,	 que	 é	
adicionado automaticamente.
O	 Form1	 nada	 mais	 é	 do	 que	 a	 tela	 onde	 o	 desenvolvedor	 irá	 adicionar	 todos	 os	 componentes	
necessários para a sua funcionalidade.
Existe	 também,	 dentro	 do	 projeto	 Windows	 Form,	 a	 aba	 Solution	 Explorer, que detalha toda a 
estrutura	do	projeto.
43
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	26 – Apresentação da Solution	Explorer
Dentro da Solution	Explorer existem alguns itens como:
•	 AplicacaoTeste:	nome	da	aplicação,	definida	no	momento	da	criação	do	projeto.
•	 Properties	 (propriedades):	propriedades	do	projeto.	Dentro	dela,	podemos	visualizar	 cada	 label 
utilizado	no	projeto	e	configurações	realizadas	para	o	funcionamento	da	aplicação.
•	 References	(referências):	local	onde	se	armazenam	todas	as	referências	utilizadas	na	execução	
da aplicação.
•	 App.config:	 classe	 que	 centraliza	 endereçamentos	 utilizados	 no	 projeto,	 dentro	 deles,	 o	
endereçamento de banco de dados.
•	 Form1:	formulário	inicial	para	desenvolver	o	layout.
•	 Program: classe que define qual formulário será executado primeiro.
Figura	27	–	Nome	da	aplicação	–	AplicacaoTeste
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
Usuario
Realce
44
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	28 – Properties	(Propriedades)	–	AplicacaoTeste
Figura	29 – References	(Referências)	–	AplicacaoTeste
Figura	30 – App.config	–	AplicacaoTeste
45
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	31 – Classe App.config	–	AplicacaoTeste
Figura	32	–	Form1.cs	–	AplicacaoTeste
Figura	33	–	Form1	–	AplicacaoTeste
46
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	34	–	Program.cs	–	AplicacaoTeste
Figura	35	–	Classe	program.cs	–	AplicacaoTeste
Podemos	 alterar	 algumas	 propriedades	 do	 formulário.	 Na	 camada	 de	 apresentação	 podemos	
adicionar n	projetos,	ou	seja,	não	existe	limitação	de	formulários	dentro	desse	projeto.
Para adicionarmos um novo formulário podemos seguir por esta rota:
47
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
•	 Em	cima	do	projeto	AplicacaoTeste,	devemos	clicar	 com	o	botão	direito.	A	 seguinte	 tela	
será apresentada:
Figura	36	–	Menu	com	itens	a	serem	selecionados
Figura	37	–	Selecionar	o	item	Add  Windows Form
48
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Em seguida acionaremos a rota Add  New	Item, a tela a seguir será apresentada:
Figura	38	–	Tela	para	adicionar	um	novo	item	ao	projeto	–	AplicacaoTeste
Nessa	tela,	podemosnotar	que	é	possível	adicionar	ao	projeto:
•	 classe;
•	 formulário;
•	 classe	de	componente;
•	 diagrama	de	classe.
Figura	39 – Templates	que	podem	ser	adicionados	ao	projeto	–	AplicacaoTeste
49
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Após ser adicionado o novo formulário, a Solution	Explorer	é	atualizada	com	o	novo	item:
Figura	40	–	Form2	adicionado	à	Solution	Explorer
Podemos	alterar	o	nome	do	Form1	para	que	possamos	especificar	melhor	nosso	projeto.
 observação
Dentro da Solution	Explorer	podemos	adicionar	muitos	formulários.	No	
entanto,	 é	muito	 importante	que	 todos	os	 formulários	 sejam	nomeados	
para	 que,	 no	 futuro,	 cada	 um	 possa	 ser	 atribuído	 como	 funcionalidade	
sistêmica	da	aplicação.
Para que essa ação possa ser efetuada, podemos clicar com o botão direito em cima do nome do 
formulário e acionar a ação rename	(renomear).
Figura	41	–	Renomear	Form1	dentro	da	Solution	Explorer
50
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
 observação
Como	 forma	 de	 padronização,	 nomearemos	 as	 interfaces	 iniciando	
sempre com as letras “frm”, representando a abreviação do termo 
“formulário”, de forma que auxilie os desenvolvedores a saberem que tudo o 
que estiver escrito dessa forma deverá ser entendido como implementação 
de interfaces.
Figura	42	–	frmMensagem:	nome	do	novo	formulário
Após ser alterado o nome, acionar o botão enter	 do	 teclado.	 Será	 apresentada	 a	 tela	 a	 seguir,	
perguntando	se	todas	as	classes	poderão	ser	renomeadas;	acionamos	o	botão	“sim”:
Figura	43	–	Confirmação	da	alteração	de	nome	de	Form1	para	frmMensagem
51
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Para	alterarmos	o	nome	da	barra	de	títulos	do	formulário,	deveremos	clicar	com	o	botão	direito	em	
cima	do	formulário	frmMensagem	e	acionar	o	item	properties.
Figura	44 – Properties	(propriedades)	do	formulário	Form1
Será	apresentada,	ao	lado	direito	da	tela,	uma	aba	na	qual	todas	as	propriedades	serão	apresentadas.
Figura	45 – Propriedades do formulário
52
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Todo	formulário	adicionado	contém	suas	respectivas	propriedades.	Dentre	elas,	podemos	alterar:
•	 Nome	do	título.
•	 Cor	de	fundo.
•	 Tamanho	do	formulário.
•	 Fonte.
•	 Controles	do	formulário.
Figura	46 – Propriedade Text	alterada	para	frmMensagem
Quando	a	propriedade	Text	foi	alterada,	automaticamente	o	título	do	formulário	foi	alterado	para	
frmMensagem;	assim,	no	momento	de	execução,	esse	é	o	título	que	será	apresentado.
 Lembrete
Para	efeito	de	padronização,	nomeamos	as	interfaces	iniciando	sempre	
com as letras “frm”, representando a abreviação do termo “formulário”. Isso 
auxilia os desenvolvedores a saberem que tudo o que estiver descrito dessa 
maneira será entendido como implementação de interfaces.
53
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	47 – Formulário em modo de execução
Podemos, por meio de um protótipo desenvolvido na fase de levantamento de requisitos, iniciar a 
construção	da	camada	de	apresentação.	Um	protótipo	é	uma	visão	de	como	a	camada	de	apresentação	
será	construída	dentro	do	projeto	de	software.
Figura	48 – Protótipo
Com	base	no	protótipo,	podemos	replicar	a	figura	dentro	da	camada	de	apresentação	utilizando	
alguns	componentes‑padrão	do	Microsoft	Visual	Studio.
Os	componentes	que	serão	utilizados	para	a	construção	da	camada	de	apresentação	são:
Usuario
Realce
54
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
•	 Label: responsável por alocar um rótulo na camada de apresentação.
•	 TextBox:	responsável	por	adicionarmos	dados	de	entrada	e	saída	na	camada	de	apresentação.
•	 Button: responsável por executar a ação desenvolvida na linguagem determinada.
Esses componentes estão contidos no ToolBox	(barra	de	ferramentas).
Figura	49 – Componente Label
Figura	50 – Componente TextBox
Figura	51 – Componente Button
 observação
Os	 componentes	 estão	 alocados	 na	 barra	 de	 ferramentas,	 no	 item	
Common Controls.
Iremos iniciar clicando no componente Label	e	arrastando	para	o	formulário.	Todos	os	componentes	
têm	como	premissa	o	comportamento	de	orientação	a	objeto,	ou	seja,	todos	os	componentes	são	objetos	
com as suas respectivas propriedades.
Todo	componente	tem,	em	suas	propriedades,	cor,	tamanho,	posicionamento	etc.
Usuario
Realce
Usuario
Realce
Usuario
Realce
55
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	52	–	Formulário	com	label1
Para	que	o	label1	seja	apresentado	conforme	o	protótipo	anterior	devemos	alterar	a	sua	propriedade	
de nome. Para isso, em cima do label, iremos clicar com o botão direito do mouse, assim sendo apresentado 
um menu.
Figura	53	–	Menu	de	ações	do	label1
Ao	ser	apresentado	esse	menu,	iremos	clicar	em	Propriedades.	Nesse	momento,	para	o	label1,	serão	
visualizadas	todas	as	propriedades	para	esse	componente.
56
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	54	–	Propriedades	do	componente	label1
Podemos	visualizar	diversas	propriedades	atribuídas	ao	componente	label1.	Nesse	primeiro	momento	
iremos alterar as propriedades Name e Text.
Figura	55 – Propriedade Text	do	componente	label1
Nesse	momento,	ao	ser	alterada	a	propriedade	text	do	componente	label1,	automaticamente,	no	
formulário,	é	replicada	e	visualizada	a	alteração.	Após	essa	ação	iremos	alterar	a	propriedade	name do 
componente	label1,	que	será	chamado	de	lblDigiteMensagem.
57
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	56 – Propriedade Name do componente label
Essa	alteração	é	necessária	para	um	bom	entendimento	do	código.	Iremos	acompanhar	mais	à	frente	
que todos os componentes deverão ser nomeados de uma maneira amigável para que possa facilitar o 
desenvolvimento e a manutenção do código.
Quadro 3 – Detalhes de componentes
Componente Name Text 
Label lblDigiteMensagem Digite	uma	Mensagem:
TextBox txtDigiteMensagem N/A
Button btnOk Ok
Podemos perceber que, para cada componente, sempre o seu name irá se iniciar com uma 
identificação	que	remeta	ao	nome	do	componente.	Exemplo:	no	caso	do	nome	lblDigiteMensagem,	as	
letras “lbl” seriam uma espécie de abreviação de label;	já	no	caso	de	btnDigiteMensagem,	as	letras	“btn”	
seriam	a	referência	ao	componente	button.
 observação
Não	 é	 uma	 regra	 trabalhar	 com	 abreviação	 de	 componentes.	 Caso	
o desenvolvedor se sinta confortável, nem precisa alterar o seu name. 
Porém, devemos pensar que podem existir aplicações nas quais, dentro do 
formulário,	podem	existir	dez	TextBox	e,	como	cada	vez	que	é	adicionado	
um	 componente	 o	 Microsoft	 Visual	 Studio	 adiciona	 o	 número	 1	 (como	
textbox1,	 textbox2,	 textbox3	 etc.),	 como	 identificar,	 por	 exemplo,	 qual	
textbox equivale ao nome do usuário ou ao login do usuário?
58
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Agora será adicionado o Textbox.	Para	isso,	iremos	localizar	o	componente	na	barra	de	ferramentas	
e arrastar para o nosso formulário.
Figura	57 – Text adicionado ao formulário
Para esse componente, será alterado o seu name. Para essa ação, iremos clicar com o botão direito 
do mouse e será aberto um menu de ações desse componente:
Figura	58	–	Menu	de	ações	do	componente	TextBox
Após esta ação será acionada a propriedade do componente TextBox.	 Serão	 abertas	 todas	 as	
propriedades desse componente:
59
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
ação
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	59 – Propriedades do componente TextBox
Após	 a	 janela	 de	 propriedades	 ser	 apresentada,	 iremos	 alterar	 a	 sua	 propriedade	 name para 
txtDigiteMensagem.
Figura	60 – Propriedade Name	alterada	para	txtDigiteMensagem
Agora iremos adicionar o nosso terceiro componente no formulário chamado button. Para isso iremos 
até a barra de ferramentas, clicaremos no componente button e vamos arrastá‑lo até o formulário.
60
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	61 – Componente button adicionado ao formulário
Depois, iremos acessar as propriedades do componente button. Para isso, iremos clicar com o botão 
direito em cima do componente button e acionar o item Propriedades.
Figura	62	–	Menu	de	ações	do	componente	button
61
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	63 – Propriedades do componente button
Para esse componente iremos alterar as propriedades name e text, conforme protótipo 
apresentado anteriormente.
Figura	64 – Propriedade name do componente button alterada
62
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	65 – Propriedade text do componente button alterada
Após serem efetuadas todas as inclusões de componentes no formulário, teremos nossa camada de 
apresentação fiel ao protótipo apresentado.
Figura	66 – Camada de apresentação
63
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Para	que	possamos	visualizar	a	nossa	aplicação	devemos	acionar	o	botão	“executar”,	que	fica	no	
menu	superior	do	Microsoft	Visual	Studio.	Nesse	instante	acontecerá	uma	simulação	do	comportamento	
da aplicação, como se ela estivesse instalada, por exemplo, em uma estação de trabalho.
Figura	67	–	Botão	Start, que executa aplicação
Figura	68	–	AplicacaoTeste	sendo	executada
Podemos imprimir a mensagem “Professor” dentro de um label. Para isso seguiremos o escopo a seguir:
•	 Digitar	uma	mensagem	na	caixa	de	texto.
64
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
•	 Acionar	o	botão	Ok.
•	 Apresentar	a	mensagem	por	meio	de	uma	label.
Iremos adicionar uma label logo abaixo da caixa de texto:
Figura	69	–	Label1	inserida	no	formulário
Serão	 alteradas	 as	 propriedades	 Name e Text para identificarmos o componente adicionado 
ao	 formulário.	 Para	 essa	 ação	 iremos	 clicar	 com	 o	 botão	 direito	 em	 cima	 do	 componente	 label1	 e	
acionaremos o item Properties	(Propriedades).
Figura	70	–	Menu	de	ações	do	componente	label1
65
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	71 – Text	lblMensagem
Figura	72 – Name	lblMensagem
Nesse	 momento,	 atendemos	 parcialmente	 o	 requisito	 solicitado.	 Nesse	 instante	 iremos	 iniciar	 a	
codificação.	Para	isso,	acionaremos	o	botão	OK,	efetuando	um	duplo	clique.
66
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	73	–	Modo	de	codificação
Para que possamos entender melhor o cenário proposto, quando o usuário digitar uma mensagem e 
acionar	o	botão	Ok,	a	mensagem	deverá	ser	apresentada	dentro	do	label lblmensagem.
Inicialmente, para que possamos efetuar o entendimento do código, vamos pensar em um 
código estruturado.
Início  Digite uma mensagem  Mensagem é transferida para label	lblMensagem		Fim
Para	que	essa	ação	possa	ser	concretizada	no	código,	digitaremos	a	seguinte	instrução:
Figura	74	–	Código	do	botão	OK
67
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
O	entendimento	do	código	poderia	ser	feito	da	seguinte	maneira:
•	 lblMensagem.Text: neste trecho estamos informando ao código C# o nome do componente 
(lblMensagem)	e	sua	propriedade	(Text).	Quando	a	propriedade	 informada	for	Text, poderemos 
entender	que	ela	irá	receber	dados	alfanuméricos	(String).
•	 txtDigiteMensagem.Text: neste trecho estamos informando ao código C# o nome do 
componente	(txtDigiteMensagem)	e	sua	propriedade	(Text).	Quando	a	propriedade	informada	for	
Text,	poderemos	entender	que	ela	irá	receber	dados	alfanuméricos	(String).
Resumido	a	ação	codificada,	tudo	o	que	estiver	sendo	informado	no	componente	txtDigiteMensagem	
será	enviado	para	o	componente	lblMensagem.
Vamos	executar	nossa	aplicação:
Figura	75	–	AplicacaoTeste	sendo	executada
Após	digitar	a	palavra	“Professor”	na	caixa	de	texto,	acionaremos	o	botão	OK.	Perceba	que	existe	no	
formulário o label	lblMensagem.
68
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	76 – Label recebe palavra digitada na caixa de texto
Nesse	instante,	após	o	botão	Ok	ser	acionando,	o	label	lblMensagem	mudou	para	a	palavra	“Professor”,	
que foi digitada na caixa de texto.
Vamos	exercitar.	A	partir	de	um	protótipo	construído	após	efetuado	um	levantamento	de	requisitos,	
iremos construir uma calculadora, onde teremos as operações básicas da matemática: adição, subtração, 
divisão	e	multiplicação.	Vamos	observar	o	protótipo	construído:
Figura	77 – Protótipo Calculadora
69
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Para	a	efetivação	do	código,	iremos	iniciar	pela	análise	do	protótipo.	Na	figura	podemos	observar	
que existem:
•	 Três	labels.
•	 Quatro	botões.
Quadro 4 – Componentes
Componente Nome Texto 
Label lblDigitePrimeiroNumero Digite	o	primeiro	número
Label lblDigiteSegundoNumero Digite	o	segundo	número
Label lblResultado Resultado
Button btnAdicao +
Button btnSubtracao ‑
Button btnMultiplicação *
Button btnDivisao /
Vamos	programar:
1.	Crie	um	novo	projeto	(Windows	FormApplication),	com	o	nome	de	Calculadora.
2.	Altere	a	propriedade	Text do formulário para Calculadora.
Figura	78	–	Projeto	Windows	Form	Application:	calculadora
70
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
3.	 Agora	 iremos	 inserir	 os	 componentes	 dentro	 do	 formulário,	 conforme	 protótipo	 apresentado	
anteriormente.
Figura	79 – Formulário Calculadora
Podemos	notar	que	todos	os	componentes	inseridos	no	formulário	estão	sem	o	nome;	para	isso,	em	
todos os componentes, iremos alterar as propriedades Name e Text:
Figura	80 – Alterando propriedade Text do botão Adicionar
71
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Programação orientada a objetos ii
Figura	81 – Propriedade Name alterada no botão Adicionar
Para todos os componentes de tela iremos alterar as propriedades Name e Text e, para isso, iremos 
para cada componente, clicar com o botão direito e, em seguida, em Properties:
Figura	82 – Properties	(propriedades)	do	botão	Adicionar
Após a execução desse passo, todos os componentes serão alterados e apresentados conforme figura 
a seguir:
72
Re
vi
sã
o:
 R
os
e 
C.
 -
 D
ia
gr
am
aç
ão
: J
ef
fe
rs
on
 -
 2
3/
06
/1
5
Unidade II
Figura	83 – Calculadora com todos os componentes adicionados
Vamos	iniciar	a	codificação	dos	botões	da	nossa	calculadora,	mas,	antes,	precisamos	entender	alguns	
pontos importantes:
•	 Todo	número,	a	princípio,	só	poderá	ser	matematicamente	operado	se	for,	no	mínimo,	do	tipo	inteiro.
•	 Caixas	de	texto	recebem	somente	string.
Para iniciarmos o entendimento de como as operações matemáticas serão efetuadas, precisamos 
entender	 o	 conceito	 de	 Tipos	 Primitivos,	 que	 são	 atribuições	 dadas	 a	 variáveis	 que	 auxiliam	 na	
codificação C#.
Exemplo: precisamos somar dois valores contidos em caixas de texto.
Valor	A:	10.
Valor	B:	10.

Continue navegando