segunda-feira, 31 de janeiro de 2011

UML - Diagrama de Classes Continuação 4...

entre a classe Professor e a classe disciplina (um professor ministra uma
disciplina) significa que uma instância de Professor (um professor específico) vai ter uma associação com uma instância de Disciplina.
Esta relação significa que as instâncias das classes são conectadas, seja
fisicamente ou conceptualmente.[Nicolas Anquetil]
 Dependência - São relacionamentos de utilização no qual uma mudança na
especificação de um elemento pode alterar a especificação do elemento
dependente. A dependência entre classes indica que os objectos de uma
classe usam serviços dos objectos de outra classe.

 Generalização (herança : simples ou composta) - Relacionamento entre um elemento mais geral e um
mais específico. Onde o elemento mais específico herda as propriedades e métodos do elemento mais
geral. A relação de generalização também é conhecida como herança no modelo a objectos.
Como a relação de dependência, ela existe só entre as classes. Um objecto particular não é um caso geral de um outro objecto, só conceitos (classes no modelo a objectos) são generalização de outros conceitos.

 Agregação Regular - tipo de associação ( é parte de , todo/parte) onde o objecto parte é um atributo do
todo ; onde os objectos partes somente são criados se o todo ao qual estão agregados seja criado. Pedidos
é composto por itens de pedidos.
 Composição - Relacionamento entre um elemento ( o todo) e outros elementos (as partes) onde as parte
só podem pertencer ao todo e são criadas e destruídas com ele.
O diagrama de de classes lista todos os conceitos do domínio que serão implementados no sistema e as relações entre os conceitos. Ele é muito importante pois define a estrutura do sistema a desenvolver.
O diagrama de classes não surge do nada ele é consequência do prévio levantamento de requisitos , definição de casos de usos e classes. Como exemplo vamos supor que você tivesse que desenvolver um sistema para
automatizar um consultório dentário. As etapas básicas envolvidas seriam:
 Levantamento e análise de requisitos do sistema a ser desenvolvido. Entrevista com o dentista(s) e com as
pessoas que trabalham no consultório
 Definição dos objectos do sistema : Paciente , agenda , dentista , serviço , contrato , consulta ,
pagamento , etc..
 Definição dos actores do sistema : paciente, dentista , secretária
 Definição e de talhamento dos casos de uso: marcar consulta , confirmar consulta , cadastrar paciente ,
cadastrar serviços , etc.
 Definição das classes : paciente , dentista , exame , agenda , serviço
 Definir os atributos e métodos das classes :
Após toda esta análise você chega no diagrama de classes do sistema (representado abaixo a título de exemplo ilustrativo) entre a classe Professor e a classe disciplina (um professor dá uma
disciplina) significa que uma instância de Professor (um professor específico) vai ter uma associação com uma instância de Disciplina. 
Esta relação significa que as instâncias das classes são conectadas, seja
fisicamente ou conceitualmente.[Nicolas Anquetil]
 Dependência - São relacionamentos de utilização no qual uma mudança na
especificação de um elemento pode alterar a especificação do elemento dependente. 
A dependência entre classes indica que os objectos de uma classe usam serviços dos objectos de outra classe.

Relacionamento Entre Classes

Os objectos tem relações entre eles: um professor de uma disciplina para alunos numa sala, um cliente faz
uma reserva de alguns lugares para uma data, etc. Essas relações são representadas também no diagrama de
classe. [Nicolas Anquetil]
A UML reconhece três tipos mais importantes de relações: dependência, associação e generalização (ou
herança).
Geralmente as classes não estão sós e se relacionam entre si. O relacionamento e a comunicação entre as
classes definem responsabilidades , temos 3 tipos :
1. Associações : Agregação e composição
2. Generalização (herança)
3. Dependências

As representações usam a seguinte notação :
Aqui temos que Bilu é um objecto da classe
Cachorro.
Em termos de POO acabamos de criar uma instância da classe Cachorro e a chamamos Bilu.
Quando criamos uma nova instância de uma classe
dizemos que estamos instanciando a classe.
 nome
 atributos
 métodos
 Associação : São relacionamentos estruturais entre instâncias e
especificam que objetos de uma classe estão ligados a objetos de outras
classes. Podemos ter associação uniária , binária , etc.
A associação pode existir entre classes ou entre objetos.

UML - Diagrama de Classes Continuação...

UML - Diagrama de Classes Cont..

Temos aqui a representação de um objeto , no caso o meu cachorro Bilu , que
possui as seguintes propriedades e métodos:
Propriedades : Cor do corpo : castanha cor dos olhos : preto altura: 18
cm comprimento: 38 cm largura : 24 cm
Métodos : balançar o rabo , latir , deitar , sentar

Em termos de POO para poder tratar os objectos começamos a criar classes , neste caso irei criar a classe
chamada Cachorro.
"Uma classe representa um conjunto de objecto que possuem comportamentos e características comuns".
"Na UML o nome de uma classe é um texto contendo letras e dígitos e algumas marcas de pontuação. 

Na realidade, é melhor guardar os nomes curtos com apenas letras e dígitos. UML sugere capitalizar todas as
primeiras letras de cada palavra no nome (ex.: ``Lugar'', ``DataReserva''). É melhor também manter nomes de classes no singular, classes por default ``contem'' mais de um objecto, o plural é implícito.". [Nicolas Anquetil]
Uma classe descreve como certos tipos de objectos a parecerem do ponto de vista da programação , pois quando definimos uma classe precisamos definir duas coisas:


1. Propriedades: Informações específicas relacionadas a uma classe de objecto. São as características dos
objectos que as classes representam. Ex Cor , altura , tamanho , largura , etc...
2. Métodos: São acções que os objectos numa classe podem realizar. Ex: Latir , correr , sentar , comer, etc.

Pode pensar numa classe com um modelo para criar quantos objectos deseja de um tipo particular.
 

UML - Diagrama de Classes

Poderia-se começar a dar de cara a definição do que é um diagrama de classes , mas creio que é preciso falar sobre o conceito de classes , mas para isto é preciso falar sobre o que são objetos...
Estou a falar para programadores e analistas , certo !!! Então o foco e área de actuação será a
Programação Orientada a Objectos. (POO)
Em POO , os problemas de programação são pensados em termos de objetos , nada de funções , rotinas , nada disto , o assunto são os objetos , propriedades e métodos.
Nota: A preocupação da programação estruturada estava em procurar os processos que envolviam o
problema e não os objectos que o compunham.
Desta forma quando é colocado o problema de desenvolver um sistema para locadoras , por exemplo , devemos pensar como dividir o problema em objetos. Para este caso podemos ter os seguintes objetos : Clientes , CDs e Fitas , etc..
A melhor maneira de conceituar estes termos é considerar um objeto do mundo real e mostrar como podemos representá-lo em termos conceitos para POO.
Começando com as definições : "Um objeto é um termo que usamos para representar uma entidade do mundo real" (Fazemos isto através de um exercício de abstração.)
Vou usar como exemplo o meu cachorro Bilu. Posso descrever o Bilu em termos de seus atributos físicos: é
pequeno , sua cor principal é castanha , olhos pretos , orelhas pequenas e caídas, rabo pequeno , patas
brancas.
Posso também descrever algumas ações que ele faz (temos aqui os métodos) : balança o rabo quando chega
a casa , foge e deita-se o mando-o sair debaixo da mesa, ladra quando ouve um barulho ou vê um cão ou
gato,  e corre quando o chamo pelo  nome. Temos abaixo a representação do Bilu.

domingo, 23 de janeiro de 2011

Java definições:


Método; Capacidades do objecto de onde se salientam as formas de comunicação do mesmo. Os métodos podem ser de instância, na medida em que afectam apenas o objecto sobre o qual se invocou o método ou de classe afectando todas as instâncias da classe presentes.

Herança; Processo pelo qual os objectos ganham caracteristicas dos seus pais. Mas uma subclasse pode e deve introduzir comportamento e características próprias. Uma classe em Java é sempre subclasse de outra, por defeito da classe Object.
Encapsulamento; Conceito que permite esconder os detalhes de implementação de determinada classe. Os métodos e atributos de uma classe podem ser públicos, protegidos[1] ou privados dependendo se estão disponíveis para todas as outras classes, apenas subclasses, ou apenas na própria classe, respectivamente.Caso não seja especificado o tipo de acesso de determinado atributo/método, o Java assume que ele se encontra acessivel à própria classe e a classes no mesmo package.

Polimorfismo; Polimorfismo é a capacidade de um objecto redefinir o comportamento herdado provendo assim o aparecimento de duas classes que respondem de formas diferentes à mesma mensagem. Isto é, a classe Object possui um método chamado toString que transforma em String o nome da classe e alguns outros parâmetros. Ao criar a classe MeuObjeto posso redifinir o método para que apresente qualquer texto que eu queira. Ao ser invocado o método nos dois objectos, a mesma mensagem, produz efeitos diferentes.

O que é o Java?


Java é uma linguagem apoiada por um paradigama de programação chamado Programação Orientada a Objectos, sem o qual não é possível programar em Java. Como não espero que leiam os textos que indiquei, farei um pequeno resumo...

O que é isso de POO?

Conceito geral de Programação Orientada a Objectos
A Programação Orientada a Objectos consiste em ver um programa como um conjunto de entidades, os objectos, que interagem entre si através do uso de mensagens.
Cada objecto é definido por um grupo de atributos e por métodos que disponibiliza para o exterior.
Podem assim ser considerados pequenas caixas pretas cuja implementação não interessa para os outros objectos, apenas a forma como podem comunicar é importante.
Em
POO traduzir um problema real para programação torna-se mais fácil e natural uma vez que os objectos possuem muitas vezes semelhanças com objectos reais.
Java não é, no entanto, uma linguagem orientada a objectos pura uma vez que possui tipos de dados primitivos que não são objectos.

Para que todos falemos a mesma língua.

Package; Forma de organizar as classes ou outros recursos do programa, como imagens e ficheiros, por semelhanças, seja por categorias, funcionalidades ou outras.
Um package pode conter outros dentro e por convenção o seu nome é em minúsculas.

Classe; Abstracção que define um objecto. Consideremos uma classe como um molde. Uma classe é normalmente definida num ficheiro mas um ficheiro pode ter outras classes definidas, que se chamam Classes Anónimas e Classes Internas. Estes últimos dois nomes são traduzidos de "Nested Class" e de "Inner Class" e por isso podem ver outras traduções.

Objecto ou instância; Resultado do molde ou classe ao qual foram aplicados valores. A classe String define um conjunto de caracteristas que qualquer 'string' possui. Em contrapartida "Knitter" pode ser o objecto resultante da classe String. Um objecto ou instância possui valores específicos, memória associada, referência, etc.


Java Virtual Machine

O “coração” da plataforma Java é o conceito de um processador "virtual", que executa os programas formados por bytecodes Java. Este bytecode é o mesmo independentemente do hardware ou sistema operativo em que o programa é executado. A plataforma Java disponibiliza a JVM, que traduz, em tempo de execução, o bytecode para instruções nativas do processador. Isto permite que uma mesma aplicação seja executada em qualquer plataforma que possua uma implementação da máquina virtual.

Desde a versão 1.2 da JRE, a implementação da Sun da JVM inclui um compilador just-in-time (JIT). Com este compilador a totalidade do bytecode de um programa é transformado em instruções nativas e carregado na máquina virtual numa única operação, permitindo um ganho no desempenho superior a implementação anterior, onde as instruções em bytecode eram interpretadas uma a uma. O compilador JIT pode ser projectado de acordo com a plataforma ou hardware de destino, e o código que ele gera pode ser optimizado com base na observação de padrões de comportamento dos programas. 
A plataforma Java não é a primeira plataforma baseada numa máquina virtual, mas é de longe a mais conhecida e a que alcançou maior sucesso. Anteriormente esta tecnologia era utilizada na criação de emuladores para auxílio a projectos de hardware ou de sistemas operativos. A plataforma Java foi desenhada para ser totalmente implementada em software, permitindo assim a sua migração de uma forma fácil para todos os tipos  de plataformas e de hardware.
 

Java algumas noções cont.


A plataforma Java é constituída por um grande número de tecnologias, cada uma contém uma parte distinta de todo o ambiente de desenvolvimento e execução de software. Os utilizadores finais, interagem com a máquina virtual Java (Java Virtual Machine, ou JVM) e um conjunto padrão de bibliotecas de classe.

Existe uma grande variedade de formas de utilizar uma aplicação Java, incluindo applets embutidas em páginas web, aplicações para utilização em computadores, aplicações em telemóveis e em servidores de Internet.

Java algumas noções:


A plataforma Java é o nome dado ao ambiente computacional, ou plataforma, da empresa norte-americana “Sun Microsystems”. O programador cria aplicações para este ambiente através da linguagem de programação Java e de um conjunto de ferramentas de desenvolvimento. Neste caso, a plataforma não se refere a um sistema operativo ou hardware específico, mas a um programa chamado de máquina virtual, e um conjunto de bibliotecas que disponibilizam funcionalidades comuns.

A plataforma Java é formada por outras três plataformas que foram criadas para segmentos específicos de aplicações: 
 
Java SE (Java Platform, Standard Edition).
 
É a base da plataforma; inclui o ambiente de execução e as bibliotecas comuns.
 

Java EE (Java Plataform, Enterprise Edition).
 
A edição voltada para o desenvolvimento de aplicações empresariais.
 

Java ME (Java Platform, Micro Edition).
 
A edição para o desenvolvimento de aplicações para dispositivos móveis.
 

Java a história cont2.


A tecnologia Java tinha sido projectada para mover-se através de redes de dispositivos heterogéneos, redes como a Internet. Agora aplicações poderiam ser executadas dentro dos Browsers nos Applets Java e tudo seria disponibilizado pela Internet instantaneamente. Foi o estático HTML dos Browsers que promoveu a rápida disseminação da dinâmica tecnologia Java. A velocidade dos acontecimentos seguintes foi assustadora, o número de utilizadores cresceu rapidamente, grandes empresas, como a IBM anunciaram suporte para a tecnologia Java.
 
Desde o seu lançamento, em Maio de 1995, a plataforma Java foi adoptada com uma rapidez superior a todas as outras linguagens de programação na história da computação.
Em 2003 Java atingiu a marca de 4 milhões de programadores em todo mundo. Java continuou e continua a crescer e hoje écom certeza um padrão para o mercado oferecendo qualidade, desempenho e segurança ainda sem nenhum rival a altura.
Java tornou-se popular pelo seu uso na Internet e hoje possui um ambiente de execução em web browsers, mainframes, SOs, telemóveis, entre outros.
 

Java a história cont.


O *7 tinha a possibilidade de controlar diversos dispositivos e aplicações. “James Gosling” especificou uma nova linguagem de programação para o *7. “Gosling” decidiu denominá-la de “Oak”.
 
O próximo passo era encontrar um mercado para o *7. A equipa achava que uma boa ideia seria controlar televisões e filmes. Eles construíram um demo a que deram o nome “MovieWood”, mas infelizmente era muito cedo para que os filmes por encomenda assim como as empresas de TV por cabo pudessem rentabilizar o negócio. A ideia que o *7 tentava vender naquela altura, é hoje realidade em programas interactivos e também na televisão digital. 
 
Permitir ao telespectador interagir com a programação numa grande rede por cabo, era algo muito visionário e estava muito longe do que as empresas de TV por cabo tinham capacidade de entender e comprar. A ideia certa, na época errada.
 
A sorte é que o boom da Internet aconteceu, e rapidamente estabeleceu-se uma grande rede interactiva. Era este tipo de rede interactiva que a equipa do *7 estava a tentar vender ás empresas de TV por cabo. Deixou então de ser necessário construir uma infra-estrutura para rede. “Gosling” foi incumbido a tarefa de adaptar o “Oak” para a Internet e em Janeiro de 1995 foi lançada uma nova versão do “Oak” que foi redenominada de Java.

Java a história


Em 1991, a Sun Microsystems, iniciou o “Green Project”, o ponto de partida de uma linguagem de programação orientada a objectos denominada “Java”.
   
Os mentores do projecto eram “Patrick Naughton”, “Mike Sheridan”, e “James Gosling”
 
O objectivo do projecto não era a criação de uma nova linguagem de programação, mas antecipar e planear a “próxima era” do mundo digital. Eles acreditavam que no futuro iria existir  uma convergência dos computadores com os equipamentos e electrodomésticos usados pelas pessoas no seu dia-a-dia.
 
O protótipo chamava-se      7 (“StarSeven”), um controlo remoto com uma interface gráfica “touchscreen”. Para o     7 foi criado uma mascote, hoje amplamente conhecido no mundo Java, o “Duke”.
O trabalho do “Duke” no     7 era ser um guia virtual ajudando e ensinando o utilizador a utilizar o equipamento.
 

Conceito Polimorfismo


ž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.
 

Composição


Composição pode não ser considerado por alguns autores como sendo uma das bases de POO, no entanto é importante que seja mencionada.
Composição não é mais que a criação de classes usando como base outras classes. Criamos assim uma relação entre objectos em que um determinado objecto contém no seu interior outros objectos que criamos. 
 
De uma forma genérica poderemos pensar que estamos sempre a trabalhar com composição, afinal, todas as classes que criamos contém no seu interior alguma outra classe, mas o termo aplica-se mais quando estamos a falar de classes criadas por nós no domínio do problema que estamos a tentar resolver e não às classes que constituem a base da plataforma Java.
 
Composição aparece frequentemente associada a herança, surgindo em discussões de Herança Vs. Composição. A questão é que o mecanismo de herança, apesar de extremamente útil e poderoso, acarreta pequenos problemas, nomeadamente questões de performance. Embora a questão da performance não seja a única, é de longe a mais invocada nas comparações.
 

Polimorfismo [poo]!!!


Polimorfismo é a capacidade de um objecto redefinir o comportamento herdado, alterando assim a forma de responder à mensagem que o seu pai definiu mas sem alterar a interface de comunicação.
O polimorfismo, juntamente com a herança, possibilita a reutilização e redefinição de código por parte de classes filhas mantendo ao mesmo tempo o contracto que os seus pais definiram. 
 
Usamos polimorfismo quando, através de uma relação de herança, um descendente implementa de forma diferente, um comportamento que herdou de um pai.
 

Encapsulamento



Tal como na vida real em que a maioria de nós não sabe que uma lâmpada de halogéneo contém no seu interior um filamento de tungsténico selado num invólucro compacto e transparente, cheio com um gás inerte, como por exemplo o bromo, também aos objectos não interessa saber a forma como outros objectos são construídos. 
Por encapsulamento consideramos o processo de manter como privada a estrutura interna dos nossos objectos. Não se trata de esconder o código que constituí as nossas classes de outros programadores, trata-se sim, de não dar acesso aos estados internos do objecto a outros objectos diferentes.
O encapsulamento é conseguido através dos modificadores de acesso private, protected, default e public. Estes modificadores, do mais restrito para o mais permissivo, permitem restringir o acesso ao comportamento ou característica no qual são aplicados.
 
Assim, objectos que não possuam relações de herança só podem comunicar através de métodos públicos, quando existem relações de herança, é possível aos descendentes acederem aos métodos e atributos protegidos. Elementos definidos como privados apenas podem ser acedidos pelo próprio objecto. 


O encapsulamento tem também o efeito de impedir que um programador mais preguiçoso baseie a sua implementação no conhecimento que tem de outro objecto, isto porque é possível, com um bom esquema de encapsulamento, definir apenas o comportamento importante para o exterior como visível e esconder outros pormenores que não sejam tão importantes. Iremos ver um exemplo desta situação quando aplicarmos POO ao Java na secção seguinte.

Herança !!


A herança, tal como na vida real, é o processo pelo qual as classes ganham características dos seus pais. 
Embora, tal como na vida real, uma classe deva sempre introduzir comportamento e características próprias. Através do mecanismo de herança é possível criar relações entre diferentes classes e reutilizar código, é um mecanismo muito importante em linguagens POO.

Objecto ou Instância


Objecto ou instância é o mesmo, obtém-se uma lâmpada através do processo de instanciação, daí poder-se dizer que o que tem é um objecto ou uma instância da classe Lâmpada.
É aconselhável, para não causar confusão, usar sempre “objecto” para referir a um elemento com estado, que existe em memória no computador durante a execução da aplicação. Evitar  usar a palavra instância. 
 

Conceitos em Base POO

Apesar de se falar sempre em objectos, e de se pensar em objectos, ao programar-se e desenhar-se o nosso sistema, usam-se classes, que embora estejam intimamente ligadas aos objectos, não significam a mesma coisa. Esta distinção pode ser algo estranha de perceber. 
Chama-se a uma classe a representação, o esquema, a planta ou até, o molde do objecto. A classe define o comportamento do objecto, os seus atributos, a relações que estabelece com outros objectos, mas é apenas uma representação.
 
Pode-se ver isso como o molde de uma lâmpada, embora o molde dê forma à lâmpada, não é uma lâmpada. Usam-se as lâmpadas no dia a dia, não os seus moldes, mas precisa-se de um molde para criar todas as lâmpadas que se compram. 
 
Ao programar está a fazer-se o mesmo processo, defini-se um objecto através da construção da classe, essa construção é feita através de código, onde dizemos que uma lâmpada pode ter uma cor, pode ter um método que permita acender, etc. 
Um objecto, em contrapartida, existe em memória, contém valores no seus atributos, exprime um estado no nosso sistema. Não se pode dizer se a classe Lâmpada está acesa, mas pode-se dizer se o objecto lampada1 está aceso, e podemos até enviar-lhe uma mensagem para que se desligue.
 

POO


A Programação Orientada a Objectos pretende modelar os problemas aproximando-os da vida real e dos objectos que vemos no dia a dia, consiste em ver um programa como um conjunto de entidades, que interagem entre si através do uso de mensagens.
Cada objecto é definido por um grupo de atributos e por métodos que disponibiliza para o exterior, estes métodos definem o seu comportamento. Se pensarmos numa lâmpada eléctrica, o seu comportamento mais simples será o de ligar e desligar e o seu atributo será o estado, que pode ser “ligado” ou “desligado”. 
 
Estes objectos podem assim ser considerados pequenas caixas pretas cuja implementação não interessa para os outros objectos, apenas a forma como podem comunicar é importante, pegando na nossa lâmpada, não interessa saber que é a passagem de corrente eléctrica pelo filamento metálico no interior que provoca a sua incandescência e a luz associada, apenas que ao dizermos à lâmpada para se ligar, ela produz luz.
Em POO traduzir um problema real para programação torna-se mais fácil e natural uma vez que os objectos possuem muitas vezes semelhanças com objectos reais.
 

Diagramas de Clases


¢Os Diagramas de Classes
Estes diagramas servem para representar sistemas informáticos ou de outro tipo de uma forma gráfica.
¢


Polimorfismo !!


¢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)
 
 
Module Module1
    'este é um exemplo de Polimorfismo de classes
    Class classe_base  ' Esta é a classe principal
        Public Sub escrever()
            Console.WriteLine("Mensagem da classe principal")
        End Sub
    End Class
    Class Classderivada1 'esta é a aclasse que redefine o método escrever
        Inherits classe_base
        Public Overloads Sub escrever(ByVal a As String)
            Console.WriteLine(a)
        End Sub 
 
 Public Overloads Sub escrever(ByVal a As String, ByVal b As Integer)
         Console.WriteLine(a & b)
        End Sub
  End Class
    Sub Main() ‘ programa principal
        Dim a As New classe_base()
        Dim b As New Classderivada1()
        Dim c As New classe_base()
        a.escrever()
        b.escrever()
        b.escrever("Escrever  algo da classe derivada")
        b.escrever("é o numero", 5)
        c.escrever()
        Console.ReadKey()
    End Sub
End Module
 

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)
 
Module Module1
    'este é um exemplo de overriding ou redefinição de  métodos
    Class classe_base ' Esta é a classe principal
        Public Overridable Sub escrever()
            Console.WriteLine("Mensagem da classe principal")
        End Sub
    End Class
    Class Classderivada1 'esta é a aclasse que redefine o método escrever
        Inherits classe_base
        Public Overrides Sub escrever()
            Console.WriteLine("mensagem da classe que redefiniu o metodo")
        End Sub
       End Class
 
    Class Classderivada2 'esta é uma classe que deriva da principal
        Inherits classe_base
    End Class
    Sub Main()
        Dim a As New classe_base()
        Dim b As New Classderivada1()
        Dim c As New Classderivada2()
        a.escrever()
        b.escrever()
        c.escrever()
        Console.ReadKey()
    End Sub
End Module

Como 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 
 
 
¢No programa 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.

Criação de 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()
 

Pilares da programação!


¢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.

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 J !