Post on 11-Nov-2018
Programação Orientada a Objetos
Curso Profissional de Gestão e Programação de Sistemas Informáticos
Disciplina: Programação e Sistemas de Informação
Módulos 9/10/11 – POO
2016/2017
História
A OO surgiu no final da década de 60, quando dois cientistasdinamarqueses criaram a linguagem Simula.
O termo POO foi introduzido com a linguagem Smalltalk (1983)
No final dos anos 80 surgiu o Paradigma de Orientação a Objetos.
HistóriaLinguagens orientadas a objetos:
• Smalltalk (1972)
• ADA (1983)
• Eiffel (1985)
• Object Pascal (1986)
• Common Lisp (1986)
• C++ (1986)
• Java (1990)
• Python (1990)
• Perl 5 (2005)
Mundo RealVisão do Mundo orientada por Objetos
vivemos num mundo de objetos
estes objetos existem na natureza◦ feitos pelo homem
◦ como produtos que usamos ..
podem ser◦ criados
◦ categorizados
◦ descritos
◦ organizados
◦ combinados
◦ manipulados
Noção de ObjetoA noção de Objeto na Engenharia de SW OO
Baseia-se nas propriedades fundamentais:
◦ independência de contexto => reutilização
◦ abstração de dados => abstração
◦ encapsulamento => abstração e proteção
◦ modularidade => desenvolvimento feito por composição de partes simples
Um Objeto é o módulo computacional básico e único que corresponde
à representação abstrata de uma entidade autónoma
Noção de ObjetoUm Objeto é constituído por:
um identificador único
um conjunto privado de atributos (estado interno)◦ variáveis de instância
um conjunto de operações◦ métodos de instância
são as únicas a poderem aceder aoestado interno e que no seu conjuntodefinem o comportamento do objeto
As operações podem ser:◦ públicas - constituem a sua interface (API)◦ privadas - apenas podem ser usadas por
operações internas(não são visíveis do exterior)
Objeto Triangulo
Variáveis de InstânciaPonto p1 = (10,2)
Ponto p2 = (0,5)
Ponto p3 = (3,7)
Métodos de Instância
void desenha()
void roda(int x)
int perimetro()
boolean equilatero()
Objetos, Instâncias e ClassesClasse – entidade que tem dois objetivos
◦ contem a descrição da estrutura e comportamento de objetos da mesma “família”
(mesmas variáveis de instância e métodos)
◦ cria esses objetos (todos com a mesma estrutura e comportamento)
Instâncias são os objetos criados pelas classes
◦ Um objeto é instância de uma única classe
◦ Um objeto apenas pode ser criado por uma única classe
◦ Uma classe pode ter (criar) várias instâncias
◦ Instâncias da mesma classe
◦ têm igual estrutura e comportamento
◦ diferem nos valores que estão nas variáveis de instância
CLASSE Triangulo
Variáveis de Instância
Ponto p1
Ponto p2
Ponto p3
Métodos de Instânciavoid desenha()
void roda(int x)
int perimetro()
boolean equilatero()
p1
p2
p3
(10,2)
(0,5)
(3,7)
void desenha()
void roda(int x)
int perimetro()
boolean equilatero()
triang1
Objeto
Classe
instância
Instanciação – processo que cria um objeto a partir de uma classe
Instância – objeto resultante do processo de instanciação
CLASSE Triangulo
Variáveis de Instância
Ponto p1
Ponto p2
Ponto p3
Métodos de Instânciavoid desenha()
void roda(int x)
int perimetro()
boolean equilatero()
p1
p2
p3
(10,2)
(0,5)
(3,7)
void desenha()
void roda(int x)
int perimetro()
boolean equilatero()
triang1
p1
p2
p3
(1,1)
(3,5)
(-4,0)
void desenha()
void roda(int x)
int perimetro()
boolean equilatero()
triang2
p1
p2
p3
(1,2)
(0,5)
(3,7)
void desenha()
void roda(int x)
int perimetro()
boolean equilatero()
triang3
Objeto
Classe
Objeto
Objeto
instância
instância
instância
MétodosOs métodos são as ações que a classe pode realizar.
É cada uma das operações (subprogramas) aplicadas ao objeto. Num programa, um método é a implementação de uma função.
Método Construtor - Método utilizado para iniciar automaticamente osdados das instâncias de uma classe. Possui o mesmo nome da classe.Não possui retorno e é chamado no momento que a instância é criada.
Método Destrutor - Método utilizado para destruir automaticamenteos dados das instâncias de uma classe. Possui o mesmo nome da classe,precedido de ~. Não possui retorno e é chamado no momento que ainstância é liberada.
InterfaceA interface é o contacto entre a Classe e o mundo externo, assim sendoquando uma classe implementa uma interface está comprometida afornecer o comportamento publicado pela interface
POO – O PARADIGMA
HerançaAs classes relacionam-se entre si de modo a partilharem e enriquecerem
as definições das estruturas e comportamentos das suas instâncias
Objetivo – reutilização◦ definir uma vez e reutilizar n vezes
Formas de reutilização
◦ Herança simples
◦ Herança Múltipla
◦ Delegação
superclasse
subclasse
HerançaUma classe:
- é criada como subclasse de uma superclasse herdando as especificações (estado e comportamento) desta última
- pode acrescentar estado e comportamento ao herdado da sua superclasse bem como alterar o comportamento que herda
classe: mobília
custo
dimensões
peso
cor
compra
vende
move
classe: cadeira
custo
dimensões
peso
cor
pernas
compra
vende
move
forra
a classe cadeira
herda (é subclasse)
da classe mobília
e pode definir
atributos e
operações
próprias
HerançaHerança simples
uma classe herda a estrutura
e comportamento definido
na sua superclasse e acrescenta à
estrutura e comportamento com
as suas próprias definições
Sistema Hierárquico de classes
Hierarquia de Classes
mobilia
mesa cadeira armário
armário de WC armário de sala
uma classe
apenas tem
uma superclasse
HerançaHerança Múltipla
• idêntica à herança simples
com a diferença de que
uma classe pode herdar
de várias superclasses
em simultâneo
veículos
terrestres aquáticos aéreos
hovercrafts
uma classe
pode ter mais do que
uma superclasse
Herança e Classes DerivadasClasse-base – classe que serve de base à criação de outra classe;
Classe-derivada – classe que é criada a partir de outra classe.
Derivação de classes – criação de classes a partir de outras.
Herança – uma classe derivada herda, em princípio, todos os membros(variáveis ou atributos e funções ou métodos) da sua classe base.
Uma classe derivada, para ter razão de ser, deverá ter os seus elementospróprios, a nível de atributos e métodos (variáveis e funções), nuns casos,inteiramente novos, noutros casos, readaptados da classe-base.
Uma classe derivada também pode servir de classe-base de uma outraclasse, logo podemos construir uma estrutura com vários níveis dehierarquia entre classes-base e derivadas – hierarquia de classes.
Derivação de Classes
A derivação de classes com herança das classes-base e com as suas
características próprias, juntamente com a possibilidade de criarmos e
utilizarmos objetos de todas essas classes constitui, em traços gerais, a
essência da programação orientada para objetos.
Abstração
O termo “abstração”, aplicado em programação significa “a grossomodo”, ou seja, só deve ser representado o que vai ser utilizado.
EncapsulamentoUm objeto é uma cápsula que contém dados e métodos. Os dados apenas podem ser manipulados pelos seus métodos (públicos ou privados)
Os seus métodos privados, tal como os dados, estão fechados dentro da mesma cápsula, não sendo visíveis do exterior
Este conceito permite atingir◦ a independência do contexto
◦ a facilidade de reutilização
◦ a facilidade de deteção de erros
◦ modularidade
Estrutura de dados privada
método público 1
método público 2
método público 3
método privado 1
EncapsulamentoÉ um dos princípios da O.O., no qual a estrutura de um objeto só é acessível através demensagens enviadas ao objeto. Assim, encapsular significa esconder a estrutura de dados.O encapsulamento determina que uma classe consiste em duas partes:
Parte Invisível ou Privativa: formada pelas variáveis de instâncias e implementação dosmétodos (em C++ a parte privada é especificada pela palavra reservada private).
Parte Visível ou Pública: formada pelas assinaturas dos métodos. (em C++ a parte publicaé especificada pela palavra reservada public).
POO – O PARADIGMA
MensagensOs objetos interagem entre si através de um mecanismo de envio e receção de mensagens
Uma mensagem é:
◦ uma invocação de um método público do objeto recetor da mensagem
◦ esta invocação é feita através da indicação do nome do método e de parâmetros adicionais para
a sua execução
◦ o emissor passa o controlo de execução ao recetor da mensagem
◦ o resultado da execução deste método é retornado ao objeto emissor da
mensagem
◦ o recetor devolve o controlo de execução ao emissor da mensagem
MensagensComunicação por mensagens
através de mensagens um objeto
ativa métodos, envia dados e recebe
dados de outros objetos
o envio de uma mensagem
implica a transferência de controlo
Sequência:
1- o emissor envia mensagem ao recetor
◦ o emissor pára, à espera que o recetor
lhe devolva o resultado da execução
2- o recetor executa o método associado à mensagem
3- quando termina a execução do método,
o recetor devolve o resultado e o controlo ao emissor
◦ o emissor pode então continuar a executar
1
3
2
Noção de Programa em POOUm Programa em POO é o resultado da computação gerada pela interação
(troca de mensagens) entre os vários objetos que o constituem.
Um programa OO é constituído apenas por objetos, que por sua vez são
criados a partir de classes.
Um programa OO é construído com base:
◦ nas classes que irão criar os objetos que o constituem
◦ numa mensagem inicial, a ser enviada a uma classe, que irá desencadear todo o
processo de construção dos objetos que o constituem
Processo de explosão