Académique Documents
Professionnel Documents
Culture Documents
Orientada a Objetos II
Autor: Prof. Salatiel Luz Marinho
Colaborador: Prof. Luciano Soares de Souza
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.
CDU 681.3.062
© 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.
Prof. Dr. João Carlos Di Genio
Reitor
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
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
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
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.
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
Observação
8
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!
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
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.
9
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.
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.
Entrada =
Variável A,
Variável B
Processamento
(Efetuar Soma)
Saída –
Apresentar
resultadoSoma
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
10
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.
— Comer o bombom.
Retângulo A
* Retângulo B = Retângulo C
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.
11
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:
• Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham com informática.
• Ser objetivo.
Lembrete
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.
12
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.
13
Unidade I
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#.
• Métodos de Extensão.
• Inicializadores de Objeto.
• Tipos anônimos.
• Árvores de Expressão.
A Linguagem C#
Total suporte para LINQ – consultas em relação a dados agora fazem parte da linguagem.
14
Programação Orientada a Objetos II
Um pouquinho de história
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.
[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.
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. [...].
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:
• Avisa o coletor de lixo CLR para não coletar objetos referenciados por ponteiros até
que eles sejam liberados.
Saiba mais
<https://www.visualstudio.com/pt‑br/visual‑studio‑homepage‑vs.aspx>.
16
Programação Orientada a Objetos II
Observação
Check Do
• Verificar Checar Fazer • Execução
atingimento do plano
de meta • Colocar
• Acompanhar plano em
indicadores prática
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:
17
Unidade I
• Diagrama de Classe.
• Diagrama de Sequência.
Saiba mais
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 do Nome 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.
18
Programação Orientada a Objetos II
Pode‑se observar que, por meio do Diagrama de Caso de Uso, podemos retirar:
• Entendimento da funcionalidade.
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:
Este diagrama irá auxiliar o desenvolvedor a entender os seguintes itens no processo de construção
do software:
1 – ClsRelatorio
2 – Nome
3 – Descricao
4 – Conteudo
5 – IncluirRelatorio()
19
Unidade I
Observação
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
Este diagrama irá auxiliar o desenvolvedor a entender os seguintes itens na construção do software:
20
Programação Orientada a Objetos II
Lembrete
Resumo
21
Unidade I
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.
22