Buscar

2018315_191418_C_23_ASPNET_06

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

Programação C# + ASP.NET
Prof. MSc. Daniel Menin Tortelli
e-mail: danielmenintortelli@gmail.com
Site: http://sites.google.com/site/danielmenintortelli/home
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 1
mailto:danielmenintortelli@gmail.com
http://sites.google.com/site/danielmenintortelli/home
Tratamento de 
Exceções
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 2
Tratamento de Exceções
• As exceções são ações que causam 
anomalias nas aplicações. Podem ser 
tratadas de diversas formas.
• Quando uma exceção ocorre, um objeto 
herdado de System.Exception, é criado para 
representá-la.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 3
Tratamento de Exceções
• Os comandos em C# para utilização do tratamento de 
exceções estruturados são: 
• try – bloco de proteção do código.
• catch - filtra e trata a exceção.
• finally - sempre executado após o disparo da exceção 
ou não.
• throw - dispara uma exceção.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 4
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 5
Tratamento de Exceções
• try – catch
– Uma ou mais instruções catch são colocadas logo abaixo do 
bloco try para interceptar uma exceção. Dentro do bloco catch
é encontrado o código de tratamento da exceção. 
– O tratamento da exceção trabalha de forma hierárquica, ou 
seja: quando uma exceção é disparada, cada catch é verificado 
de acordo com a exceção e, se a exceção ou derivada dela é 
encontrada, o bloco será executado e os outros desprezados. 
– O catch também pode ser encontrado na sua forma isolada, 
tratando qualquer exceção não detalhada.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 6
Tratamento de Exceções
• try – finally
– A instrução finally garante a execução de seu bloco, 
independente da exceção ocorrer no bloco try.
– Tradicionalmente, o bloco finally é utilizado para 
liberação de recursos consumidos, por exemplo, 
fechar um arquivo ou uma conexão.
• Os comandos try, catch e finally podem ser 
utilizados em conjunto.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 7
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 8
Estrutura de 
dados (Structs)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 9
Introdução
• Uma struct é uma estrutura de 
dados normalmente usada 
para encapsular pequenos 
grupos de variáveis 
relacionadas, como as 
coordenadas de um retângulo, 
as características de um item 
em um inventário, os dados 
pessoais de um cliente, etc. 
• O exemplo a seguir mostra 
uma declaração simples de 
estrutura: 
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 10
Introdução
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 11
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 12
Características de Structs
• Structs são definidas usando o comando struct.
• Os atributos/variáveis de uma struct podem ser do tipo private ou public. O tipo 
protected não é usado.
• Se os atributos/variáveis de uma struct forem do tipo private (ou seja: não podem ser 
acessados diretamente fora da struct), é necessário criar métodos para atribuição (set) 
e retorno (get) de seus valores.
• Se os atributos/variáveis de uma struct forem do tipo public, seus atributos/variáveis 
podem ser acessados diretamente fora da struct.
• Structs podem conter métodos/funções para realizar tarefas específicas.
• Diferente de classes, as structs não podem herdar ou servir de base para outra struct.
• Métodos em structs não podem ser especificados como abstract, protected ou 
virtual.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 13
Características de Structs
• Quando se cria um objeto baseado em uma struct usando o comando 
new, um construtor padrão é chamado.
• Uma struct não possui um método destrutor.
• Uma struct pode ou não ser criado com o comando new.
• É possível criar um Construtor para uma struct para inicializar todos os 
seus atributos/variáveis. Obs.: TODOS os atributos devem estar listados 
como parâmetro para o construtor.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 14
Classes
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 15
Introdução
• Em Linguagens de Programação Estruturadas (como 
C), a programação tende a ser orientada a ações.
• Linguagens de Programação como C++, C# e JAVA 
utilizam o conceito de objetos. Ou seja, são 
orientadas a objetos.
• Em C, as unidades de programação são denominadas 
funções (ou métodos).
• Em C#, as unidades de programação são 
denominadas Classes.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 16
Introdução
• Programadores C# se concentram na criação 
de Classes, que são denominadas de tipos 
definidos pelo usuário.
• Da mesma forma que um programador pode 
instanciar uma variável do tipo int, ele 
também pode criar uma instância de sua 
própria classe. Essa instância da classe é 
chamada de objeto.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 17
Introdução
• Os objetos de uma classe são instanciados (criados) a partir da definição 
de uma classe específica.
• Essa classe possui funções/métodos e variáveis/atributos dentro de seu 
próprio escopo.
• Cada objeto possui dados e métodos que são utilizados para manipular e 
acessar esses dados.
• A classe define quais dados e funcionalidades cada objeto em particular 
(denominado instância) da classe pode conter.
• Em uma aplicação, podemos criar várias instâncias da mesma classe, que 
compartilham todos os seus recursos e funcionalidades.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 18
Criando uma Classe em C#
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 19
1
2
Criando uma Classe em C#
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 20
3
4
5
6
Criando a Classe 
CContaCorrente
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 21
Criando a Classe CContaCorrente
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 22
Instanciando objetos da classe CContaCorrente
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 23
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 24
Variáveis de Instância e Métodos Set e Get
• Uma classe consiste em um ou mais métodos/funções que 
manipulam os atributos que pertencem a um objeto particular da 
classe.
• Os atributos são representados como variáveis em uma declaração 
de classe.
• Essas variáveis são declaradas dentro de uma declaração de 
classe, mas fora dos blocos das declarações dos métodos da classe. 
• Quando cada objeto de uma classe mantém sua própria cópia de 
um atributo, a variável que representa o atributo também é 
conhecido como uma variável de instância.
• Ou seja, cada objeto (instância) da classe tem uma instância 
separada da variável na memória.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 25
Variáveis de Instância e Métodos Set e Get
• As classes costumam fornecer métodos public para permitir a 
clientes da classe configurar (set, isto é, atribuir valores) ou obter 
(get, isto é, obter valores de) variáveis de instância declarados como 
private no corpo da classe.
• Os métodos set também são comumente chamados de métodos 
modificadores (porque geralmente alteram um valor).
• Um método público set pode – e deve – avaliar cuidadosamente as 
tentativas de modificar o valor da variável a fim de assegurar que o 
novo valor é apropriado para esse item de dados.
• Os métodos get também são comumente chamados de métodos 
de acesso ou métodos de consulta.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 26
Variáveis de Instância e Métodos Set e Get
• Os métodosget também são comumente chamados de métodos 
de acesso ou métodos de consulta.
• Um método get poderia controlar o formato dos dados que ele 
retorna e, assim, proteger o código do cliente na representação dos 
dados.
• Se necessário, forneça métodos public para alterar (set) e 
recuperar (get) os valores de variáveis de instância private. Essa 
arquitetura ajuda a ocultar a implementação de uma classe dos seus 
clientes, o que aprimora a modificabilidade do programa.
• Nem sempre é necessário fornecer métodos set e get para cada 
campo private. Essas capacidades devem ser fornecidas somente 
quando fizerem sentido.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 27
Modificadores de Acesso – Public e Private
• A maioria das declarações de variáveis de instância é 
precedida pela palavra-chave private
• Assim como public, a palavra-chave private é um 
modificador de acesso.
• As variáveis ou métodos declarados com o modificador 
de acesso private só são acessíveis a métodos da classe 
em que são declarados.
• Declarar variáveis da classe com modificador de acesso 
private é conhecido como ocultamento de dados.
Criando a Classe CAlunos
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 28
Criando a Classe CAlunos
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 29
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 30
Instanciando objetos da classe CAlunos (Exemplo 1)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 31
Instanciando objetos da classe CAlunos (Exemplo 1)
Instanciando objetos 
da classe CAlunos 
(Exemplo 2)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 32
Instanciando objetos da classe CAlunos (Exemplo 2)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 33
Membros da classe definidos como static
• Cada objeto tem sua própria cópia de todas as variáveis de 
instância da classe.
• Em alguns casos, apenas uma cópia de uma variável particular 
dever ser compartilhada por todos os objetos de uma classe.
• Uma variável de classe definida com static faz com que todos os 
objetos criados/instanciados baseados na classe, compartilhem os 
mesmos dados desta variável. 
• Utilize uma variável static quando todos os objetos de uma classe 
precisarem utilizar a mesma cópia da variável.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 34
Membros da classe definidos como static
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 35
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 36
Membros da classe definidos como static
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 37
Membros da classe definidos como static
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 38
Membros da classe definidos como static
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 39
Membros da classe definidos como static
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 40
Membros da 
classe 
definidos como 
static
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 41
Exercício 1
Desenvolva um programa onde seja implementada uma 
classe “CProduto” contendo os atributos: código (int), 
nome (String) e preço do produto em R$ (double). 
Crie métodos para ler e escrever nos atributos acima. 
Na função principal, leia 5 produtos e imprima o mais caro 
e o mais barato. Os 5 produtos devem estar armazenados 
em um array de objetos da classe “CProduto”.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 42
Exercício 2
2 - Criar uma classe CCirculo tal que representa as características geométricas de uma 
figura e possui os seguintes campos/atributos:
• private double raio – valor do raio.
• private double circ – valor da circunferência dada em função do raio r por: C = 2 π r
• private double area – valor da área dada em função do raio r por: A = π r 2
A) Criar um construtor CCirculo(double r) que preenche os campos raio, circ e area de 
um objeto do tipo area.
B) Criar um método público void ExibeAtributosCirculo() que mostra os valores dos 
atributos de um objeto Circulo.
C) Criar métodos públicos set e get para cada um dos atributos da classe Circulo.
D) Criar os métodos privados void ModificaCirculo() e void ModificaArea() que 
realizam os cálculos e as modificações dos valores contidos nos campos circ e area 
toda vez que o método setRaio é utilizado para modificar o valor contido em no campo 
raio.
Exercício 2
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 43
Exercício 2
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 44
Exercício 3
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 45
Escreva uma classe que represente um país. Um país tem como atributos o seu
nome, o nome da capital, sua dimensão em Km2 e uma lista de países com os 
quais ele faz fronteira. Represente a classe e forneça os seguintes construtores e 
método:
a) Construtor que inicialize o nome, capital e a dimensão do país;
b) Métodos de acesso (set/get) para as propriedades indicadas no item (a);
c) Um método que permita verificar se dois países são iguais. Dois países são
iguais se tiverem o mesmo nome e a mesma capital. 
d) Um método que define quais outros países fazem fronteira (note que um 
país não pode fazer fronteira com ele mesmo);
e) Um método que retorne a lista de países que fazem fronteira;
f) Um método que receba um outro país como parâmetro e retorne uma lista de
vizinhos comuns aos dois países.
Exercício 4
• Crie uma classe para representar datas.
1. Represente uma data usando três atributos: o dia, o mês, e o ano.
2. Sua classe deve ter um construtor que inicializa os três atributos e verifica a validade dos 
valores fornecidos.
3. Forneça um construtor sem parâmetros que inicializa a data com a data atual fornecida pelo 
sistema operacional.
4. Forneça um métodos (set/get) para cada atributo.
5. Forneça o método para retornar uma representação da data como string. Considere que a data 
deve ser formatada mostrando o dia, o mês e o ano separados por barra (/).
6. Forneça uma operação para avançar uma data para o dia seguinte.
7. Escreva um aplicativo de teste que demonstra as capacidades da classe.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 46
Exercício 5
• A fim de representar empregados em uma firma, crie uma classe chamada 
Empregado que inclui as três informações a seguir como atributos:
– um primeiro nome,
– um sobrenome, e
– um salário mensal.
• Sua classe deve ter um construtor que inicializa os três atributos. 
• Forneça um método set e get para cada atributo. Se o salário mensal não for 
positivo, configure-o como 0.0f. 
• Escreva um aplicativo de teste que demonstra as capacidades da classe. Crie 
duas instâncias da classe e exiba o salário anual de cada instância.
• Então dê a cada empregado um aumento de 10% e exiba novamente o salário 
anual de cada empregado.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 47
Exercício 6
Classe Bomba de Combustível: Faça um programa completo utilizando classes e 
métodos que: 
a. Possua uma classe chamada CBombaCombustível, com no mínimo esses 
atributos: 
– string sTipoCombustivel. 
– float fValorLitro
– float fQuantidadeCombustivel
b.Possua no mínimo esses métodos: 
1. AbastecerPorValor( ) – método onde é informado o valor a ser abastecido e mostra a 
quantidade de litros que foi colocada no veículo.
2. AbastecerPorLitro( ) – método onde é informado a quantidade em litros de combustível e 
mostra o valor a ser pago pelo cliente. 
3. AlterarValor( ) – altera o valor do litro do combustível. 
4. AlterarCombustivel( ) – altera o tipo do combustível. 
5. AlterarQuantidadeCombustivel( ) – altera a quantidade de combustívelrestante na bomba. 
• OBS: Sempre que acontecer um abastecimento é necessário atualizar a 
quantidade de combustível total na bomba. 
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 48
Exercício 7
Classe Carro: Implemente uma classe chamada CCarro com as seguintes 
propriedades: 
a. Um veículo tem um certo consumo de combustível (medidos em km / litro) e uma certa 
quantidade de combustível no tanque. 
b. O consumo é especificado no construtor e o nível de combustível inicial é 0. 
c. Forneça um método andar( ) que simule o ato de dirigir o veículo por uma certa distância, 
reduzindo o nível de combustível no tanque de gasolina. 
d. Forneça um método obterGasolina( ), que retorna o nível atual de combustível. 
e. Forneça um método adicionarGasolina( ), para abastecer o tanque. Exemplo de uso: 
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 49
Herança
Herança
• A programação orientada a objetos é baseada em 3 princípios:
– A habilidade de controle de acesso (encapsulamento – membros public, 
private e protected);
– A habilidade de herdar atributos e métodos de outras classes (Herança);
– A habilidade de responder apropriadamente (Polimorfismo).
• A Herança é a palavra-chave no mundo da Orientação a Objetos.
• Usa-se Herança como uma ferramenta para evitar a repetição quando na 
definição de classes diferentes que possuem um número de 
características em comum e são claramente relacionadas umas com as 
outras.
• São classes diferentes do mesmo tipo, cada uma com suas 
características distintas, mas com outras em comum.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 51
Herança
• Imaginem uma classe chamada Humano.
• Todos nós herdamos alguns atributos da superclasse 
Humano, tais como: a habilidade de conversar, 
dependências por ar, comida.
• A classe Humano, por sua vez, herda suas dependências 
por ar, água, são vertebrados, possuem glâmdulas
mamárias, possuem pêlos... da classe Mamífero.
• A classe Mamífero herda dependências da classe Animal.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 52
Herança
• Herança é uma forma de reutilização de software 
na qual uma nova classe é criada, absorvendo 
membros da classe existente e, adicionando ou 
modificando novas capacidades.
• Ao criar uma classe, em vez de criar membros 
completamente novos, o programador pode 
designar que a nova classe deverá herdar 
membros de uma classe existente.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 53
Herança
• Esta classe existente é chamada de 
superclasse (classe mãe/base).
• A nova classe que herda membros da 
superclasse é chamada de subclasse (classe 
filha/derivada).
• Cada subclasse pode tornar-se a superclasse 
para futuras subclasses.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 54
Herança
• Uma subclasse normalmente adiciona seus 
próprios métodos e variáveis.
• Portanto, uma subclasse é mais específica que 
sua superclasse e representa um grupo mais 
especializado de objetos.
• Em geral, uma subclasse exibe os 
comportamentos de sua superclasse e 
comportamentos adicionais que são específicos 
à subclasse.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 55
Herança
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 56
CPessoal
CAluno CFuncionario
Classe CPessoal
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 57
Classe CPessoal
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 58
Classe CPessoal
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 59
Classe CAluno
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 60
Classe CAluno
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 61
Classe CAluno
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 62
Classe CAluno
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 63
Classe CAluno
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 64
Classe CFuncionario
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 65
Classe CFuncionario
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 66
Classe CFuncionario
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 67
Main
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 68
Exercício 8
• A empresa XPTO necessita desenvolver um sistema para catalogar itens 
colecionáveis (livros, CDs, DVDs e revistas). 
• O objetivo deste sistema é manter os itens colecionáveis, organizados por tipo. O 
sistema deve permitir cadastrar os dados comuns e os específicos de cada tipo de 
item.
• Os dados comuns são: identificação única, nome, data de aquisição, lista de 
autores. 
– Para os livros é importante manter também, o nome da editora e o ano de publicação. 
– Já para os CDs, é interessante manter o gênero musical e a identificação das faixas de áudio 
(nomes das músicas). 
– Para os DVDs é importante armazenar o tipo (musical, filme ou dados), e uma descrição geral 
sobre o item ou os extras, por exemplo. 
– Por fim, das revistas é interessante manter o ano de publicação, o volume, a editora e os 
principais assuntos tratados.
• Desenvolva um sistema que inclua e exclua os itens colecionáveis em uma Lista 
de Itens Colecionáveis.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 69
Membros protected
• Os membros public de uma classe são 
acessíveis onde quer que o programa tenha 
uma referência a um objeto dessa classe ou 
uma de suas subclasses.
• Os membros private de uma classe só são 
acessíveis dentro da própria classe que os 
declara. Ou seja, não são acessíveis fora do 
escopo da classe e nem nas subclasses.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 70
Membros protected
• Os membros declarados como protected oferecem um 
nível intermediário de acesso entre public e private.
• Os membros protected de uma superclasse podem ser 
acessados por membros dessa superclasse e por 
membros de suas subclasses.
• Todos os membros de superclasse public e protected
retêm seu modificador de acesso original quando se 
tornam membros da subclasse (isto é, membros public na 
superclasse tornam-se public também na subclasse. Idem 
para membros protected.)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 71
Membros protected
• Observação:
– Os métodos de uma subclasse não acessam 
membros private diretamente de sua superclasse.
– Uma subclasse pode alterar o estado de variáveis 
de instância private da superclasse somente por 
meio de métodos public ou protected fornecidos 
na superclasse e herdados pela subclasse.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 72
Sobrecarga de 
Métodos
Sobrecarga de Métodos 
• Quando em uma classe temos vários métodos 
com o mesmo nome, mas estes métodos 
contem parâmetros diferentes, chamamos isto 
de sobrecarga de métodos.
• Isto quer dizer que um único método pode ter 
mais de uma funcionalidade.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 74
Sobrecarga de Métodos 
• Quando se usa a sobrecarga de métodos alguns cuidados 
dever ser tomados. Veja alguns deles:
• Todos os métodos sobrecarregados devem ter o mesmo 
nome.
• Os métodos dever ser diferentes entre si em pelo menos 
um dos seguintes aspectos:
– Numero de parâmetros;
– Ordem de parâmetros;
– Tipos de dados dos parâmetros;
– O tipo de retorno (válido somente em conversões de 
operadores)*.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 75
Métodos Virtuais 
e Polimorfismo
Métodos Virtuais e Polimorfismo 
• Métodos Virtuais habilitam a chamada de 
diferentes versões do mesmo método, 
baseado no tipo do objeto, determinado 
dinamicamente em tempo de execução.• Este fenômeno é uma das formas de 
implementar o polimorfismo, que literalmente 
significa “muitas formas”.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 77
Regras para Métodos Virtuais e Polimorfismo 
• Existem algumas regras importantes que devem ser 
seguidas quando se está declarando métodos 
polimórficos, usando as palavras-chave virtual e 
override. 
• Não é permitido declarar um método private quando 
se está usando as palavras-chave virtual ou override. 
• As duas assinaturas dos métodos devem ser idênticas, 
ou seja, devem ter o mesmo nome de método, a 
mesma quantidade de parâmetros e o mesmo tipo de 
retorno. 
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 78
Regras para Métodos Virtuais e Polimorfismo 
• Os dois métodos deve possuir o mesmo nível de acesso. Por 
exemplo, se um dos dois métodos é public, o outro também dever 
ser public. (Métodos podem ser declarados também como 
protected). 
• Só é possível sobrescrever (override) um método declarado com a 
palavra-chave virtual na superclasse. 
• Se a subclasse não declara o método usando a palavra-chave 
override, o método virtual da superclasse não será sobrescrito. 
• Um método override é implicitamente virtual. Ele pode ser 
reescrito em uma outra classe derivada. 
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 79
Métodos Virtuais e Polimorfismo 
• Métodos virtuais podem ser declarados na 
superclasse e reescritos na subclasse, 
ocultando a implementação definida na 
superclasse.
• A nova implementação do método na 
subclasse pode chamar a implementação 
original do método na superclasse usando a 
palavra-chave base.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 80
Classe Base 
CVeiculo
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 81
Classe Derivada 
CAutomovel
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 82
Classe Derivada 
CAeronave
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 83
Main
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 84
Classes 
Abstratas
Classes Abstratas
• As classes abstratas são classes que não podem 
ser instanciadas pela aplicação. Ou seja, não é 
possível criar um objetos de uma classe abstrata.
• São úteis para serem usadas como classes base 
em uma hierarquia de herança.
• A principal finalidade de uma classe abstrata é 
ser uma classe base na qual outras classes 
poderão herdar seus atributos e métodos.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 86
Classes Abstratas
• Classes Abstratas podem constituir vários níveis de hierarquia de 
herança. Por exemplo: 
– a hierarquia de Shape (figura abaixo) começa com uma classe abstrata: 
Shape. 
– No nível seguinte, existem duas classes abstratas: TwoDimensionalShape e 
ThreeDimensionalShape. 
– No nível seguinte, estão as classes derivadas que são possíveis de serem 
instanciadas pela aplicação para criar objetos: (Circle, Square, Triangle, 
Sphere, Cube, Tetrahedron.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 87
Classes Abstratas
• A Classe Abstrata é declarada adicionando a 
palavra-chave abstract antes da declaração da 
classe base.
• Uma Classe Abstrata pode ou não conter 
métodos abstratos:
– Os métodos abstratos são implicitamente métodos 
virtuais e não devem ser implementados na classe 
base.
– Entretanto, TODOS os métodos abstratos devem ser 
implementados nas classes derivadas.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 88
Classes Abstratas
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 89
Classes Abstratas
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 90
Classes Abstratas
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 91
Palavras-Chave
• Abstract: Indica uma classe, método ou propriedade que não 
admite instâncias diretamente.
• Override: Indica uma redefinição numa classe derivada.
• Virtual: Indica um elemento da classe base que pode ser 
redefinido.
• This: Indica um elemento da própria classe.
• Base: Indica um elemento da classe base.
• Sealed: Indica uma classe que não permite derivação.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 92
Recursividade
Recursividade
• A recursividade é a definição de uma sub-
rotina (função ou método) que pode invocar a 
si mesma.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 94
Recursividade (Soma dos dígitos de um número)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 95
Recursividade 
(Converter Decimal para 
Binário)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 96
Recursividade (Série de Fibonacci)
• A Sequência de Fibonacci consiste em uma sucessão de 
números, tais que, definindo os dois primeiros números da 
sequência como 0 e 1, os números seguintes serão obtidos 
por meio da soma dos seus dois antecessores. 
• Portanto, os números são: 
0,1,1,2,3,5,8,13,21,34,55,89,144,233,...
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 97
Recursividade (Série de Fibonacci)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 98
Recursividade (Torre de Hanoi)
• Torre de Hanói é um "quebra-cabeça" que consiste em uma base 
contendo três pinos, em um dos quais são dispostos alguns discos uns 
sobre os outros, em ordem crescente de diâmetro, de cima para baixo. 
• O problema consiste em passar todos os discos de um pino para outro 
qualquer, usando um dos pinos como auxiliar, de maneira que um disco 
maior nunca fique em cima de outro menor em nenhuma situação. 
• O número de discos pode variar sendo que o mais simples contém 
apenas três.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 99
Recursividade (Torre de Hanoi)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 100
Recursividade (Fatorial)
• Na matemática, o fatorial de um número 
natural n, representado por n!, é o produto de 
todos os inteiros positivos menores ou iguais 
a n.
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 101
Recursividade (Fatorial)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 102
Recursividade (Fatorial)
15/03/2018 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 103

Continue navegando