Programação Orientada a Objetos
Por: Kleber.Oliveira • 14/3/2018 • 803 Palavras (4 Páginas) • 433 Visualizações
...
Ex: professor é uma pessoa
aluno é uma pessoa
[pic 1]
[pic 2]
classe base
super classe[pic 3]
classe derivada [pic 4][pic 5][pic 6][pic 7][pic 8][pic 9][pic 10][pic 11][pic 12]
Uma classe derivada pode acrescentar novos atributos e métodos, e também modificar os métodos herdados, com o propósito de oferecer um comportamento mais especifico aos objetos da classe herdada.
um método modificado tem o mesmo nome e protocolo do herdado e sobrepoe-se coverride a versão herdada.
Class Pessoa{
string nome;
void apresentar(){
print (nome);
}
}
Class Aluno extends Pessoa{
int ra;
}
Pessoa p1 = new Pessoa()
p1.nome = "joao"// má pratica [encapsulamento]
p1.apresentar();
Aluno p2 = new Aluno();
p2.nome ="ana"
p2.ra = 12345;
p2.apresentar();
Herança simples
- unica classe pai
- arvore de derivação
[pic 13]
Heranca multipla
- n classes pai
- grafo de derivação
[pic 14]
O projeto de um sistema orientados a objetos começa pela definição de uma hierarquia de classes que descreve as relações dos conceitos envolvidos no domínio do problema.
classes abstratas
- não podem ser instanciadas
interfaces
- classes 100% abstratas
- não possuem atributos
Class Pessoa{
string nome;
void apresentar(){
apresentar();
}
}
Class aluno extends Pessoa{
int ra;
}
Pessoa p1 = New Pessaa();
aluno p2 = New aluno();
POLIMORFISMO
A classe-pai pode definir um método que será sobreposto por suas subclasses.
As operações definidas por tais métodos são similares mas devem ser personalizadas para cada classe da hierarquia.
Diferentes tipos de objetos podem responder a uma mensagem de maneiras diferentes.
Formas de polimorfismo.
- Redefinição (override) mesma função mas comportamentos distintos requer herança.
- Sobrecarga (overload) nome de uma função usado mais de uma vez, com parâmetros distintos não requer herança.
Vinculação dinâmica
A determinação do serviço chamado somente pode ser realizada em tempo de execução.
Class animal{
void expressar(){
print("generico");
}
}
Class cao extends animal{
void expressar(){
print("latido")
}
}
Class boi extends animal{
void expressar(){
print ("mugido")
}
}
animal x = new animal();
x.expressar();
boi b = new boi();
b.expressar();
modelo o.o puro
Tudo são classes, inclusive os tipos primitivos e operacoes aritmeticas.
Vantagens: uniformidade
Desvantagens: qualquer computação por mais simples, tem que ser realizada através de mensagens.
Ex:
Modelos alternativos
Mantém o modelo imperativo e adiciona o modelo objeto.
Vantagens: flexibilidade
Desvantagens: linguagem maior e mistura de tipos.
Ex: java c++, c, object, pascal.
C++
- Capacidade retrograda heranças multiplas
- Tipos primitivos e classes
- Procedural + orientadas a objetos
- Alocação de objetos estática e dinâmica (new)
- Deslocação explicita
Java
- Tipos primitivos
...