Programação C# + ASP.NET

Documentos relacionados
Programação C# + ASP.NET

Classes e Objetos. Sintaxe de classe em Java

Programação Orientada a Objetos para Redes de Computadores

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Linguagens de Programação

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Laboratório de programação II

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Conceitos de Programação Orientada a Objetos

Linguagem de Programação III

COMPORTAMENTOS - Observações

Linguagem de Programação III

Java para Desktop. Programação Orientada à Objetos 2 JSE

Introdução ao Java. Prof. Herbert Rausch Fernandes

Classes, Métodos e Propriedades

Visibilidade e Encapsulamento

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

C com introdução a OO

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

POO29004 Programação Orientada a Objetos

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Linguagem de Programação III

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

Namespaces, Classes e Métodos.

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

Linguagens de Programação Aula 12

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Programação em Linguagem C++

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

Orientação a Objetos AULA 06

Programação Orienta a Objetos

Linguagem de Programação I Apresentação da Disciplina

Introdução a classes e objetos. Copyright 2006 by Pearson Education

POO29004 Programação Orientada a Objetos

Introdução à Programação. Encapsulamento e Herança

Programação Orientada a Objetos para Redes de Computadores. Polimorfismo com Hierarquias de Herança. Exemplo: Hierarquia Animal

Programação Orientada a Objetos JAVA - NETBEANS

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda.

Programação I Curso: Sistemas de Informação. Prof.: José Ronaldo Leles Júnior .:

Instituto de Informática Estrutura de Dados II

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

Linguagem de programação Programação Orientada a objetos

Herança Tiago Eugenio de Melo

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Classe Abstrata e Interface

Curso Profissional de Gestão e Programação de Sistemas Informáticos

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Linguagem de Programação II Implementação

Classes e Objetos. Prof. Leonardo Barreto Campos 1

Interfaces e Classes Abstratas

Programação por Objectos. Java

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Disciplina: Programação Orientada a Objetos

9 Classes Abstractas e Interfaces

UNIFEI Disciplina Professor

Programação Orientada a Objetos II

Programação Orientada a Objetos

Introdução à Programação Orientada a Objetos em C++

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

Orientação a objetos Disciplina: Linguagens de Programação. Prof. Alexandre Cassimiro Andreani

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Computação Eletrônica. Aula 08 Estruturas de Dados. Prof: Luciano Barbosa. CIn.ufpe.br

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Notas de Aula 04: Herança e polimorfismo.

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Conceitos Básicos da Programação OO

Programação Java (nível intermediário) 4. Polimorfismo

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016.

Laboratório de Programação. Aula 2 Java 5COP088. Aula 2 Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Programação Orientada a Objetos para Redes de Computadores

Linguagem de programação métodos/funções

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri

O PARADIGMA ORIENTADO POR OBJETOS

Curso: Técnico em Informática Integrado Disciplina: POO Carga horária: 60h Período: 2º Ano Professor: Edmilson Barbalho Campos Neto LISTA 02.

Programação Orientada a Objetos

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Técnicas de Programação:

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Transcrição:

Programação C# + ASP.NET Prof. MSc. Daniel Menin Tortelli e-mail: danielmenintortelli@gmail.com Site: http://sites.google.com/site/danielmenintortelli/home 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 1

Tratamento de Exceções 09/11/2015 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. 09/11/2015 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 4

09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 5

try catch Tratamento de Exceções 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 6

try finally Tratamento de Exceções 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 7

09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 8

Estrutura de dados (Structs) 09/11/2015 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: 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 10

Introdução 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 11

09/11/2015 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. 09/11/2015 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 14

Classes 09/11/2015 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. 09/11/2015 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. 09/11/2015 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 18

Criando uma Classe em C# 1 2 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 19

Criando uma Classe em C# 3 4 5 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 20 6

Criando a Classe CContaCorrente 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 21

Criando a Classe CContaCorrente 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 22

Instanciando objetos da classe CContaCorrente 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 23

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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 24

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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 25

Variáveis de Instância e Métodos Set e Get Os métodos get 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 26

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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 27

Criando a Classe CAlunos 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 28

Criando a Classe CAlunos 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 29

Instanciando objetos da classe CAlunos (Exemplo 1) 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 30

Instanciando objetos da classe CAlunos (Exemplo 1) 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 31

Instanciando objetos da classe CAlunos (Exemplo 2) 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 32

Instanciando objetos da classe CAlunos (Exemplo 2) 09/11/2015 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 34

Membros da classe definidos como static 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 35

Membros da classe definidos como static 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 36

Membros da classe definidos como static 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 37

Membros da classe definidos como static 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 38

Membros da classe definidos como static 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 39

Membros da classe definidos como static 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 40

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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 41

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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 42

Exercício 2 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 43

Exercício 2 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 44

Exercício 3 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 45

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. 09/11/2015 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. 09/11/2015 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ível restante na bomba. OBS: Sempre que acontecer um abastecimento é necessário atualizar a quantidade de combustível total na bomba. 09/11/2015 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: 09/11/2015 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. 09/11/2015 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. 09/11/2015 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. 09/11/2015 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. 09/11/2015 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 55

Herança CPessoal CAluno CFuncionario 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 56

Classe CPessoal 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 57

Classe CPessoal 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 58

Classe CPessoal 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 59

Classe CAluno 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 60

Classe CAluno 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 61

Classe CAluno 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 62

Classe CAluno 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 63

Classe CAluno 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 64

Classe CFuncionario 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 65

Classe CFuncionario 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 66

Classe CFuncionario 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 67

Main 09/11/2015 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. 09/11/2015 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. 09/11/2015 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.) 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 71

Observação: Membros protected 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. 09/11/2015 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. 09/11/2015 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)*. 09/11/2015 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. 09/11/2015 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. 09/11/2015 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. 09/11/2015 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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 80

Classe Base CVeiculo 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 81

Classe Derivada CAutomovel 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 82

Classe Derivada CAeronave 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 83

Main 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 84

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. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 85

Recursividade

Recursividade A recursividade é a definição de uma subrotina (função ou método) que pode invocar a si mesma. 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 87

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,... 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 88

Recursividade (Série de Fibonacci) 09/11/2015 Programação C# ASP.NET - Prof. MSc. Daniel Menin Tortelli 89