Professional Documents
Culture Documents
Programação
Orientada a Objectos
Antonio L. Bajuelos
B l
Departamento de Matemática
Universidade de Aveiro
1
Programação Orientada a Objectos
Histórico (cont …)
As técnicas de desenvolvimento estruturado tentavam oferecer
soluções para os problemas do desenvolvimento de sistemas a
partir dos seguintes princípios:
Princípio da abstracção
para resolver um problema, o analista deveria analisá-lo separadamente
dos demais, ou seja, abstrair os detalhes;
Princípio da formalidade
o analista deveria seguir um caminho rigoroso e metódico para
solucionar um problema;
Princípio de “dividir para reinar”
o analista deveria dividir o problema em partes menores, independentes
e com possibilidade de serem mais simples de entender e solucionar;
Princípio da disposição hierárquica
o analista deveria organizar os componentes da solução do problema na
forma de uma árvore com estrutura hierárquica.
O sistema seria entendido e construído nível a nível, onde cada novo nível
acrescentaria mais detalhes.
Linguagens e Ambientes de Programação Antonio L. Bajuelos
3
2
Programação Orientada a Objectos
Histórico (cont …)
3
Programação Orientada a Objectos
Os fundamentos da POO
A Enciclopédia Britânica afirma:
… as pessoas empregam constantemente três métodos
de organização…
I. Diferenciação de objetos particulares e seus atributos
II. Distinção entre objetos como um todo e entre suas partes
componentes
III. Formação de, e distinção entre, as diferentes classes de
objetos (por exemplo, quando formam uma classe de todas
as árvores, uma outra classe de todas as rochas e
distinguem-nas)
4
Programação Orientada a Objectos
Exemplo:
2ª (POO) substantivos
1º passo: identificar os objectos (o objecto navio, o objecto
porto e o objecto carga)
2º passo: definir o comportamento dos objectos
5
Programação Orientada a Objectos
Conceitos Gerais introduzidos pela POO
Objectos
Cl
Classes
Abstracção
Hierarquização
Encapsulamento
Herança
6
Programação Orientada a Objectos
Objectos
Exemplos:
Objecto
j físico: um carro,, uma p
pessoa,,
uma casa, etc.
Objecto conceitual: um organograma de
uma empresa
Objecto de software: um botão em uma
GUI
7
Programação Orientada a Objectos
Objectos…(métodos)
Os métodos são as funções que operam sobre o objecto
Exemplos:
com o objecto caneta podemos escrever
escre er e desenhar.
desenhar São estas as
funções oferecidas pelo objecto caneta.
Ao objecto fracção podemos associas os seguintes métodos:
simplificar, somar com outra fracção ou número, subtrair com outra
fracção, etc.
O comportamento do objecto será resultado da acção efectuada
sobre ele, e da função que esta acção chamou.
Exemplo:
Tanto o rádio quanto a TV possuem um botão para ligá-los. Quando
apertamos este botão (ou seja, efectuamos uma acção sobre este
objecto), o comportamento apresentado por ambos é diferente.
ligar o rádio significa emitir som;
ligar a TV significa emitir som e imagem.
8
Programação Orientada a Objectos
Objectos…(mensagens)
9
Programação Orientada a Objectos
Classes
Exemplo:
Círculo
Círculos
Raio: Real
R Abstracção x : Real Classe
(x, y) y : Real
Move(Δx, Δy)
Resize(ΔR)
Atributos
Operações
10
Programação Orientada a Objectos
Classes
Exemplos:
class Circulos
Circulos {
private:
Raio: Real
float x, y;
x : Real Em C++ fica
float R;
y : Real
public:
Move(Δx, Δy) void Move (float Delta_x, float Delta_y);
Resize(ΔR) void Resize (float Delta_R);
11
Programação Orientada a Objectos
Abstracção
Definição:
Abstracção é a capacidade de olhar apenas uma
parte de um todo, ou seja retirar da realidade
apenas as entidades e fenómenos considerados
essenciais
Exemplo:
Para entendermos o funcionamento das plantas, dividimo-las em três
partes básicas: raiz, caule e folhas.
Estudamos cada uma de suas partes, abstraindo as demais.
Para cada parte, identificamos funções diferentes e bem delimitadas.
A raiz é responsável pela absorção de água e sais minerais,
O caule transporta os materiais colectados para as folhas e estas, através
destes materiais fornecidos
A folhas produzem, através de fotossíntese, alimento para toda a
planta.
12
Programação Orientada a Objectos
Hierarquização
13
Programação Orientada a Objectos
Encapsulamento
Este mecanismo garante que a única forma de acesso aos dados é
através dos métodos disponíveis ao usuário (chamados públicos).
Os demais métodos e os atributos da classe ficam sendo
privados.
i
14
Programação Orientada a Objectos
Encapsulamento
Recomendações:
A menos que hajam razões muito fortes:
Os atributos de uma classe devem ser definidos
como private (encapsulamento)
Os métodos que são chamados de fora da classe
devem ser public (interface de acesso)
Os métodos que devem ser usados somente
dentro da própria classe, devem ser
especificados como private
15
Programação Orientada a Objectos
16
Programação Orientada a Objectos
Herança
Através do mecanismo de Herança, a classe mais
especializada
p herda todos os métodos e atributos da
classe mais geral
A superclasse descreve todos os atributos e métodos
herdados das suas subclasses em vez de estes se
repetirem num nível mais baixo
17
Programação Orientada a Objectos
Herança
Tipos de herança:
Herança entre classes (simples)
tipo de herança onde uma subclasse herda as propriedades
das suas superclasses
Herança múltipla
a classe pode pertencer a duas ou mais superclasses
18
Programação Orientada a Objectos
Polimorfismo
Outro Exemplo:
Três classes: os Complexos, os Vectores e os
R i
Racionais
i
Em cada classe podemos implementar, por exemplo
o método mod()
Para as três classe o resultado será sempre um
número racional positivo, mas a sua determinação é
diferente.
No programa no pode existir “confusão” já que
quando apliquemos o método temos que definir o
objecto envolvido.
Reutilização
Manutenção
Produtividade
19
Programação Orientada a Objectos
Continuidade
Um dos inconvenientes do desenvolvimento estruturado de
sistemas é o abismo que há entre as fases de desenvolvimento:
Análise - Projecto - Programação
Isto porque cada fase do desenvolvimento cria documentos
diferentes dificultando o entendimento da equipe de
desenvolvimento:
Analista / Projectista / Programador
Na metodologia da POO padroniza-se um documento que será
utilizado por todos os componentes da equipe: o Diagrama de
Classes
O uso de ambientes de POO permite que o próprio código seja
visto como documentação, por reflectir de forma quase completa o
Diagrama de Classes
20
Programação Orientada a Objectos
Reutilização
Exemplo:
21
Programação Orientada a Objectos
Productividade
É possível criar novos sistemas reutilizando colecções de classes
devidamente testadas
22