Resumo:
O objetivo não se aplica a este post.
Uma vez que o conteúdo total desta série foi dividido em partes, deve-se considerar absoluto o resumo da primeira postagem até o momento presente.
Este tema da série Programação Orientada a Objetos com C# irá demandar mais publicações. Sendo assim, a numeração sequencial desta parte da série passou de 7.6 para 7.7 (vide título) e assim seguirá (7.8, 7.9…) mediante a necessidade de conclusão.
Palavras-chaves:
Interface, Encapsulamento, Herança, Polimorfismo, Propriedades, Classe.
Texto:
Mãos a Obra
Com a alteração da classe UnicoComum corrigindo erros anteriormente indicados pelo compilador, o próximo passo na Programação Orientada a Objetos com C# será dar continuidade a estes assuntos e suas variantes, vistas até o momento presente.
Adendo
Para realização do Post foram utilizados os seguintes Programas:
- Windows 10 Pro;
- Microsoft Visual Studio 2010 Ultimate SP1 (Service Pack 1).
A única configuração realizada após a instalação dos programas acima, foi manter o Microsoft Visual Studio sendo executado como usuário Administrador do Sistema Operacional, a fim de evitar maiores problemas.
Alterando a classe UnicoEstudante
Partindo da classe UnicoEstudante, pode-se visualizar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication { public class UnicoEstudante : Bilhete, IBilhete { private decimal saldo = 100.00m; public decimal Saldo() { return saldo; } private DateTime dataPrimeiraPassagem; public DateTime DataPrimeiraPassagem { get { return dataPrimeiraPassagem; } set { dataPrimeiraPassagem = value; } } private decimal tarifa; public override decimal CobraTarifa() { TimeSpan diferencaHora = dataPrimeiraPassagem - DateTime.Now; tarifa = base.CobraTarifa(); if (diferencaHora.Hours <= 2) { tarifa = tarifa / 2; } return tarifa; } public void Debita() { saldo = saldo - tarifa; } } } |
Tela:

Microsoft Visual Studio 2010 Ultimate – Tela da Classe
Deve-se modificar a área da classe, alterando-a para o seguinte código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace linksinergia.metro.bilhete { public class UnicoEstudante : Bilhete, IBilhete { private decimal saldo = 100.00m; public decimal Saldo() { return saldo; } private DateTime dataPrimeiraPassagem; public DateTime DataPrimeiraPassagem { get { return dataPrimeiraPassagem; } set { dataPrimeiraPassagem = value; } } private decimal tarifa; public override decimal CobraTarifa() { TimeSpan diferencaHora = dataPrimeiraPassagem - DateTime.Now; tarifa = base.CobraTarifa(); if (diferencaHora.Hours <= 2) { tarifa = tarifa / 2; } return tarifa; } public void Debita() { saldo = saldo - tarifa; } } } |
Detalhes da modificação da Interface:
- O Namespace antes não havia sido alterado (mantinha-se o padrão ConsoleApplication), agora por obrigatoriedade, a classe Bilhete e a interface IBilhete definem a necessidade da classe UnicoEstudante declarar-se sobre o mesmo Namespace que as primeiras citadas, remediando os erros antes exibidos pelo compilador referente a classe UnicoEstudante.
Tela ao colar o código:

Microsoft Visual Studio 2010 Ultimate – Tela após Alteração da Classe
Por fim, deve-se salvar a classe UnicoEstudante e suas alterações clicando no botão Salvar. Tela com a confirmação positiva (ver rodapé da janela) ao clicar no botão Salvar:

Microsoft Visual Studio 2010 Ultimate – Tela após Salvar o Projeto
Finalizando o exemplo, resta apenas executar a Aplicação, deve-se então clicar no botão Start Debugging (F5):

Microsoft Visual Studio 2010 Ultimate – Execução da Aplicação
Surgirá uma janela de confirmação, clicar no botão Yes:

Microsoft Visual Studio 2010 Ultimate – Execução da Aplicação
Tela ao clicar no botão Yes:

Microsoft Visual Studio 2010 Ultimate – Execução da Aplicação
No resultado da execução, o Microsoft Visual Studio se encarregou de apresentar uma nova listagem de erros com a seguinte descrição:
- “Error 1 The type or namespace name ‘Bilhete’ could not be found (are you missing a using directive or an assembly reference?) “.
Esta mensagem de erro ocorreu em razão da tentativa de execução da aplicação, com a classe Unitario, Bilhete, interface IBilhete, também as classes UnicoComum e UnicoEstudante utilizando-se de um Namespace diferenciado comparado a Classe EspecialDesempregado (a coluna File da listagem de erros complementa a descrição deste), não respeitando um escopo em comum.
Considerações Finais:
Esta publicação visa alterar a Classe UnicoEstudante garantindo o ajuste correto para execução da Aplicação, porém uma vez que o Namespace da classe UnicoEstudante fora modificado igualmente as classes Unitario, Bilhete, interface IBilhete e classe UnicoComum, apenas estes cinco elementos estabelecem-se como corrigidos. Todas as outras Classes que herdam da classe Bilhete e referenciam-se com a Interface IBilhete, permanecem acusando erros no compilador, no caso a única faltante é a classe EspecialDesempregado.
É importante ressaltar que, a medida que os posts forem evoluindo, com apresentações teóricas somadas as práticas, a tendência é que o leitor vá sanando suas dúvidas e dificuldades de entendimento.
Na próxima publicação, ainda sétima parte da série: Programação Orientada a Objetos com C# será apresentado o oitavo post sobre Namespace, o leitor irá conferir a continuidade do tema entre outros aspectos relevantes a este assunto.
Referências Bibliográficas:
As referências bibliográficas serão apresentadas no último post desta série.