Poliformismo

Posted by Paulo Ramos & João Martins | Posted in | Posted on 07:49

0

O termo polimorfismo é originário do grego e significa "muitas formas"  (poli=muitas,morphos=formas).   


Na programação orientada a objetos, o polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam.
Assim, um mesmo método pode apresentar várias formas, de acordo com seu contexto.



O polimorfismo é importante pois permite que a semântica de uma interface seja efetivamente separada da implementação que a representa.
 
 
O autor Deitel, no livro "Programando em Java", diz que "quando utilizamos a herança para criar uma classe a partir da classe existente, a nova classe herda os atributos e comportamentos dessa classe existente, podendo adicionar atributos e comportamentos para solucionar nossas necessidades".
O polimorfismo condiz com a reutilização de código: é um facto que ocorrem funções semelhantes em várias partes do software; então definimos estas funções numa biblioteca, e todas as outras funções que dela precisarem poderão chamá-la sem a necessidade de reescrevê-la.


 
 
 

Matéria de PSI

Posted by Paulo Ramos & João Martins | Posted in | Posted on 07:44

0

¢No programa anterior declaramos uma variável do tipo da classe cliente, no entanto não foi criado nenhum objecto dessa classe.
¢Depois criamos um objecto da classe Clientemor.
¢Depois atribuímos a variável cli o mesmo objecto da variável cliM.
¢Como a variável cli é do tipo cliente apenas se poderá ter acesso aos elementos existentes nessa classe.
¢Note-se ainda que sempre que alteremos o valor da propriedade nome em cli, este valor também é alterado em CliM.
 
 
 
 ¢Redefinição de métodos (Overriding)
—Existem classes que derivam de outras através de herança.
—Em POO, nessas classes pode-se redefinir os seus métodos, ou seja pode-se alterar o método da classe principal.
—Regras:
Public Overridable Sub escrever()
Devemos escrever overridable no método que queremos alterar.
Na classe derivada devemos usar a palavra Overrides
Public Overrides Sub escrever(ByVal a As String)




¢O polimorfismo permite ter vários métodos com o mesmo nome (identificador), mas com assinaturas diferentes, ou seja com parâmetros distintos, quer em tipo de dados quer em quantidade.
—Regras:
—Devemos utilizar a palavra reservada Overloads  antes do nome do método.
Public Overloads Sub escrever(ByVal a As String)
 
 

Matéria de PSI

Posted by Paulo Ramos & João Martins | Posted in | Posted on 07:42

0

¢Um exemplo de como usar a herança em VB.net
Class Cliente
        Public nome As String
        Sub Mostrar()
            Console.WriteLine("O nome do Cliente: {0}", nome)
        End Sub
    End Class
    Class ClienteMor
        Inherits Cliente
        Public idade As Decimal
    End Class
—Podemos observar que a subclasse clientemor herda todas as propriedades  e métodos da classe cliente.
 
 
 
¢Agora vamos ver como poderemos usar o polimorfismo.
Sub Main()
Dim cli  As Cliente
Dim cliM  As New ClienteMor ()
cliM.Nome = "Pepe"
cliM.idade= 30
cli = cliM
Console.WriteLine("Usando Mostrar da classe Cliente")
cli.Mostrar()
Console.WriteLine("Usando Mostrar da classe ClienteMor")
cliM.Mostrar()
Console.WriteLine(“A idade do Cliente mor é : {0}", cliM.idade)
Console.ReadLine()
End Sub


 
 

Matéria de PSI

Posted by Paulo Ramos & João Martins | Posted in | Posted on 07:41

0

¢Como já falamos anteriormente os três principais pilares da programação por objectos são:
—Herança
—Polimorfismo
—Encapsulação
¢Criar uma classe:
—Da maneira como existem formas de definir uma variável também existem formas de definir classes.
—Usando a palavra Class seguida do nome que a identificará:
Class cliente
   aqui colocaremos os elementos da classe.
End Class



¢Definir os membros de uma classe
Class Cliente
Public Nome As String
Sub Mostrar()
Console.WriteLine(“O nome do Cliente: {0}", Nome)
End Sub
End Class
—Neste caso a linha Public Nome As String  ficaria definido como uma propriedade da classe com acesso público, ou seja pode ser acedida através de outras classes.
  
¢O método Mostrar() é outro elemento da classe que permite visualizar o conteúdo da propriedade nome. 
¢Esta é a forma mais simples de definir uma classe e é assim que sempre iremos fazer.
 
  
¢Criar Objectos a partir de classes:
—Para  a criação de objectos de classes usamos a palavra reservada new()
Dim cli As New Cliente()
—Desta forma é criado em memória um objecto do tipo cliente.  
 
¢Para aceder ao elementos de uma classe:
cli.Nome = “Travassos”
—Desta forma colocamos um valor no elemento nome do objecto cli que pertence à classe cliente.
¢Para acedermos ao método da classe faríamos da seguinte forma:
Cli.mostrar()
 
 
 

Matéria de PSI

Posted by Paulo Ramos & João Martins | Posted in | Posted on 07:38

0

¢A Encapsulação
—A Encapsulação é a capacidade de separar a implementação da interface de uma classe, do código que torna possível essa implementação.
—Isto realmente seria uma espécie de abstracção, não nos interessa como está implementada uma classe, mas sim, como ela funciona.
—Quando falamos em implementação falamos dos elementos dessa classe, nomeadamente os métodos, as propriedades e os eventos.




¢Objectos em Visual Basic .Net
—Visual Basic.NET é uma linguagem de programação totalmente orientada a objectos e com suporte total a UML, criada pela Microsoft e distribuída com o Visual Studio .NET (Versão seguinte ao Visual Basic 6.0), embora hoje já haja o Visual Basic 2008.
—O Visual Basic.NET é um produto extremamente diferente do antigo Visual Basic 6.0, não podendo ser considerada uma versão seguinte.
—Não apenas a maneira de programar foi alterada, mas todo conceito de orientação a objectos trouxe poder para a linguagem. 



¢A Microsoft simplesmente descontinuou o antigo Visual Basic 6.0 tornando o produto parecido com as demais linguagens do Visual Studio, parecido em questões de recursos e portabilidade pois o Visual Basic.NET ainda é muito diferentes de linguagens como o Visual C++, C#, etc.
¢Porém esta nova versão aproximou o Visual Basic.NET das grandes linguagens de programação, aumentando a aceitação dos programadores Java e até mesmo C++, embora programadores Java caso tenham que migrar para plataforma Microsoft preferem o C#. 
 
 
¢Apesar da linguagem ser parecida com o antigo Visual Basic 6.0 a migração destes programadores para a nova plataforma e utilização do Visual Basic.NET é mais fácil para programadores que utilizam linguagens orientada a objecto por causa da grande diferença.
¢Os programadores do antigo Visual Basic 6.0 acostumados com a orientação a eventos encontram algumas dificuldades para utilizar o Visual Basic.NET.
¢Mas que vamos conseguir superar !

 
 

Matéria de PSI

Posted by Paulo Ramos & João Martins | Posted in | Posted on 07:36

0

¢Polimorfismo
—Um dos conceitos mais complicados de se entender, e também um dos mais importantes, é o Polimorfismo.
—O termo polimorfismo é originário do grego e significa "muitas formas".
—Na orientação a objectos, isto significa que um mesmo tipo de objecto, sob certas condições, pode realizar acções diferentes ao receber uma mesma mensagem.
Ou seja, apenas olhando o código fonte não sabemos exactamente qual será a acção tomada pelo sistema, sendo que o próprio sistema é que decide qual o método que será executado, dependendo do contexto durante a execução do programa.



¢Desta forma, a mensagem "fale" enviada a um objecto da classe Animal pode ser interpretada de formas diferentes, dependendo do objecto em questão.
¢Para que isto ocorra, é necessário que duas condições sejam satisfeitas:
1.Exista herança de uma classe abstracta.
2.E o casting.
3Herança já definimos previamente, mas o que é uma classe abstracta? E o que é o casting?
Uma classe abstracta é uma classe que representa uma colecção de características presentes em vários tipos de objectos, mas que não existe e não pode existir isoladamente.



¢Por exemplo, podemos criar uma classe abstracta chamada Animal.
¢Um Animal tem diversas características (atributos) e podem realizar diversas acções (métodos) mas não existe a possibilidade de criarmos objectos do tipo Animal.
¢O que existem são objectos das classes Cachorro, Gato, Papagaio, etc. Essas classes, estendem a classe Animal herdando todas as suas características, e adicionando algumas coisas a mais. "Animal" é só uma entidade abstracta, apenas um conjunto de características em comum, nada mais.
 
¢Podemos olhar para um objecto da classe Cachorro e falar "isto é um animal, pois estende a classe Animal", mas nunca vamos ver um objecto que seja apenas da classe Animal, pois isso não existe!
¢É como olharmos para uma pessoa e dizer "você é um objecto da classe SerVivo".
 Essa afirmação está correcta, mas na verdade é um objecto da classe SerHumano, que por sua vez herda todas as características da classe SerVivo (que por sua vez é uma classe abstracta, já que não podemos criar algo que seja apenas classificado como "SerVivo“.


¢Resumindo:
—Uma classe abstracta é um conjunto de informações a respeito de uma colecção de outras classes.
—Uma classe abstracta sozinha é completamente inútil, já que não podemos instanciar um objecto desta classe, apenas podemos instanciar objectos de classes que estendem a classe abstracta inicial.
—Ela serve apenas para simplificar o sistema, juntando num único local diversas características que são comuns a um grupo de classes.
—Não esquecer : Nunca poderemos criar um objecto do tipo de uma classe abstracta.
—Crie sempre objectos das classes que estendem esta classe abstracta.

Matéria de PSI

Posted by Paulo Ramos & João Martins | Posted in | Posted on 07:34

0

—A classe PessoaFisica pode ter por exemplo o atributo RG enquanto a classe PessoaJuridica poderia ter o atributo CNPJ.
¢Dessa forma, todos os objecto da classe PessoaFisica terá como atributos:
¢Nome
¢Idade
¢RG
¢E todos os objectos da classe PessoaJuridica terão os seguintes atributos:
¢Nome
¢Idade
¢CNPJ

 

¢Os métodos são análogos:
—Poderíamos criar alguns métodos na classe Pessoa e criar mais alguns métodos nas classes PessoaJuridica e PessoaFisica.
—No final, todos os objectos teriam os métodos especificados na classe Pessoa, mas só os objectos do tipo PessoaJuridica teriam os métodos especificados dentro da classe PessoaJuridica, e objectos do tipo PessoaFisica teriam os métodos especificados na classe PessoaFisica.