12
Programação orientada a objectos Paulo Truta Escola Secundária da Trofa | Linguagens de Programação | Mod10 26-01-09

Programação Orientada A Objectos (Poo)

Embed Size (px)

Citation preview

Programação orientada a objectosPaulo Truta

Escola Secundária da Trofa | Linguagens de Programação | Mod10

26-01-09

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

Presenter
Presentation Notes
Programar Orientado a Objectos é pensar em como criar o código como pensamos na vida real. É abstrair os objectos da vida real e levá-los para as linhas de código como eles são – com as suas características, que são os atributos e as suas acções, que são os métodos. Todos os objectos têm características e acções (Atributos e métodos em POO).

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.

Os 4 pilares da POO

A POO tem 4 pilares que a sustenta, que são:

• Abstracção;

• Encapsulamento;

• Herança;

• Polimorfismo;

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.

Presenter
Presentation Notes
Programar Orientado a Objectos é fácil, o difícil é programar Orientado a Objectos BEM. Programando bem, é possível tirar proveito de todas as vantagens que a POO possui mas para se programar bem, a principal característica que o programador deve ter é uma boa abstracção do mundo real.

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.

Atributosprivados

Métodos Públicos

Presenter
Presentation Notes
Um objecto Cliente por exemplo, tem atributos como qualquer outro e estes não podem ser acedidos por qualquer outro objecto directamente. Existem dois tipos de atributos, os privados e os públicos. Em OO (orientação a objectos) é definido que para atributos privados usa-se o sinal de “-” antes do nome e para atributos públicos usa-se o sinal de “+” antes do nome. O atributo numBI deve sempre ter 11 números, e se o atributo não for privado, ele perde essa regra (11 números), pois alguém poderia aceder e colocar 12 ou 9 números tornando-o inválido. Como os atributos privados não podem ser acedidos directamente por outros objectos, existem os métodos públicos que são os responsáveis por aceder aos atributos e trazer ou levar algum dado para o objecto, respeitando as regras.

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.

Presenter
Presentation Notes
A partir dessa superclasse outras classes podem ser especificadas. Portanto uma subclasse que é uma classe herdada da superclasse e recebe sem codificação extra as características da superclasse. Ainda podemos adicionar elementos particulares a esta subclasse.

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 superclasseda 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;

Overriding• Esta unidade permite-nos escrever numa subclasse um ou

mais métodos presentes numa das superclasses podendo alterar o comportamento da mesma.

Presenter
Presentation Notes
Quando numa subclasse reescrevemos um método já existente numa superclasse, chamamos de sobre escrita de método ou reescrita de método mas o termo técnico é Method Overriding. Lembro também que a sobre escrita de métodos só é valida quando o método reescrito na subclasse tem exactamente a mesma identificação (nome, tipos, etc.) do método da superclasse.

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

Presenter
Presentation Notes
A sobrecarga de métodos é uma ferramenta poderosa, pois permite-nos criar vários métodos com o mesmo nome, e isso facilita o entendimento de problemas mais complexos, pois não é necessária a criação de nomes de funcionalidades sem sentido aparente.

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.

Presenter
Presentation Notes
Para o exemplo 1: Se fosse feita uma descrição para cada um, o sistema jamais iria funcionar.

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.