Primeiro dos artigos da Zona Visual Basic, esta virada para a parte teórica, onde de estuda o paradigma das linguagens orientadas a objectos (POO), antes de se iniciar com a programação em Visual Basic.
1. Programação orientada a objectos
Paulo Truta
Escola Secundária da Trofa | Linguagens de Programação | Mod10
26-01-09
2. Programação orientada a objectos
É a programação centrada na ideia em que o programa é composto por um
conjunto de entidades (objectos e eventos), capazes de se inter-
relacionarem .
Motor
Portas
Pneus
Carroçaria
Ligar
Acelerar
Travar
Carro
3. O que é um objecto?
Exemplo: Um Jaguar é um objecto. Tem como características a
cor, peso, quantidade de portas, modelo, ano, etc. Também
tem acções como travar, buzinar, acelerar, abrir os vidros,
mudar as mudanças, etc. Portanto programar Orientado a
Objectos é fazer essa abstracção do mundo real e transforma-
la em código.
4. Os 4 pilares da POO
A POO tem 4 pilares que a sustenta, que são:
• Abstracção;
• Encapsulamento;
• Herança;
• Polimorfismo;
5. Abstracção
• É a capacidade de pensar nos objectos da vida real e classificá-los. É o
processo pelo qual modelamos sistemas reais ou imaginários, extraindo
do seu contexto os seus principais elementos “Objectos”, e descrevemos
cada objecto, com suas principais “características” de dados e
funcionalidades.
• Um Ferrari por exemplo tem as mesmas características do objecto Jaguar
citado no exemplo anterior, e possui até mais, mas eles têm algo em
comum, ou seja, ambos são carros, logo pertencem à classe carro. A
Ferrari é um tipo de carro e o Jaguar também, mas cada um com as suas
características e acções particulares e comuns.
6. Encapsulamento
• Os objectos como dito atrás contém atributos e métodos. O
encapsulamento trata de dar alguma segurança a esses mesmos objectos:
Cliente : Cliente
-------
Propriedades privadas
- nome : string
- endereco : string
- telefone : int
- numBI: int
- numeroDoCliente : int
--------
Métodos Públicos
+ alterarNome(nome)
+ gerarNumeroCliente()
Para que o encapsulamento exista é preciso
definir os atributos privados e os métodos
públicos, assim está a garantir que os
valores atribuídos aos atributos serão
sempre respeitados pelas regras existentes.
Atributos
privados
Métodos
Públicos
7. Herança
• O que torna a orientação a objectos única é o conceito de herança que no
inglês significa inheritence.
Herança é um mecanismo que permite que
características comuns a diversas classes
com comportamentos comuns ou parecidos,
sejam abstraídas e centralizadas numa
classe base, ou superclasse. Tem uma
relação “É um”.
Um Jaguar “é um” carro. Logo ele foi herdado
da classe carro, pois contém as características
comuns dum carro.
8. Polimorfismo
• Analisando a palavra Polimorfismo, significa muitas formas. Ou seja, para
uma árvore de herança, temos muitas formas de objectos e métodos a
partir de uma superclasse e das suas subclasses.
Polimorfismo é o princípio pelo
qual se usam objectos
construídos a partir de uma
árvore de herança, através de
referências do tipo superclasse
da hierarquia. Existem três
formas de polimorfismo
(unidades do polimorfismo),
que iremos visualizar nos
próximos diapositivos.
Formas de polimorfismo:
1. Subclasses;
2. Overriding;
3. Overloading;
9. Overriding
• Esta unidade permite-nos escrever numa subclasse um ou
mais métodos presentes numa das superclasses podendo
alterar o comportamento da mesma.
10. Overloading
• O Polimorfismo ainda permite que numa mesma classe
tenhamos métodos com o mesmo nome, desde que o
número ou tipos de parâmetros passados sejam
diferentes.
carro : Carro
-Nome : String
- ano : int
- modelo : String
- arCondicionado : boolean
+ getNome() : String
+ getAno() : int
+ getModelo() : String
+ ligaDesligaArCondicionado() : boolean
jaguar : Carro
-Aquecedor : Boolean
- airbags : int
- tetodeabrir: boolean
- turbo : int
+ ligaDesligaAquecedor() : boolean
+ abreFechaTetodeabrir() : int
+ activarDesactivarTurbo() : int
+ activarDesactivarTurbo(int qtd): int
11. Classes
• Entendidos todos os conceitos atrás referidos é mais fácil entender o que
é uma classe. Como na vida real existem diversos objectos do mesmo tipo,
nos softwares acontece o mesmo.
Imagine o sistema de gestão de
veículos da PSP-BT. Quantos
objectos do tipo carro este sistema
deve manipular por dia?
É possível descrever um mesmo tipo de
objectos uma única vez e cada vez que um
novo objecto precise ser criado, é só utilizar a
mesma forma. Esta forma é chamada classe.
Numa padaria, quando escolhemos um bolo, deparamo-nos com muitos bolos
parecidos. Seria o padeiro capaz de produzir tantos bolos com a mesma forma usando
apenas as mãos? NÃO! Ele usou uma forma para fazer estes bolos, a forma foi o molde
que ele escolheu para seus bolos. Com os objectos não é diferente, as classes são os
moldes (modelos, formas, plantas) para criação dos objectos enquanto os programas
estão a ser executados.
Concluindo, uma classe é a descrição de um conjunto de objectos que possuem os
mesmos atributos, operação e semântica. Dizemos que um objecto é uma instância de
uma classe, quando ele é criado a partir dela, seguindo a sua especificação.
12. Abstracção e instância
• A abstracção denota a essência ideal de uma coisa; a instância denota
uma manifestação concreta.
• Pode também dizer-se que, na codificação existem apenas as classes, não
os objectos. Já em tempo de execução, o que existe são os objectos e não
as classes. Também dizemos que uma variável é de um determinado tipo
(inteiro, booleano, real, etc.) numa linguagem de programação, então
dizemos que um objecto é de uma determinada classe.
• Uma classe é a reunião de objectos idênticos por meio de atributos e
métodos.
• Existem muitas possibilidades de assuntos mais profundos, mas os pontos
principais do POO são os mencionados nesta apresentação.