Apresentação da Aula
Professor João Marcos
Livros Recomendados
Revisão de Orientada a Objetos
Introdução a Conceitos
Orientação a Objetos: Herança
Superposição de atributos e métodos
Herança e Generalização
Classes Abstratas
Exemplo Prático de Herança em Java
Exemplo Prático de Herança com Classe Abstrata em Java
Pensando um Pouco
Exercícios
Referências
Agradecimentos
Sanando Dúvidas
2. 19/03/2024 2
Programação Orientada a Objetos
Ementa da Aula
Apresentação da Aula
Professor João Marcos
Livros Recomendados
Revisão de Orientada a Objetos
Introdução a Conceitos
Orientação a Objetos: Herança
Superposição de atributos e métodos
Herança e Generalização
Classes Abstratas
Exemplo Prático de Herança em Java
Exemplo Prático de Herança com Classe
Abstrata em Java
Pensando um Pouco
Exercícios
Referências
Agradecimentos
Sanando Dúvidas
3. Professor João Marcos
3
Formação:
• Pós-graduação em Engenharia de
Software, Descomplica Faculdade
Digital Descomplica, Cursando.
• Pós-graduação em Redes e
Segurança de Sistemas de
Informação, Faculdade Sapiens,
2014 – 2015, Concluído.
• Pós-Graduação em Metodologia do
Ensino Superior, Faculdade
Sapiens, 2013 – 2014, Concluído.
• Tecnologia em Análise e
Desenvolvimento de Sistemas,
Universidade do Estado do
Amazonas, 2007 – 2011, Concluído.
Experiência Profissional:
• Fóton Informática S.A.
• Ilha Service Tecnologia e Serviços.
• Instituto Conecthus - Tecnologia e
Biotecnologia do Amazonas.
• Grupo Yamaha Brasil.
• Softplan Planejamento e Sistemas
lotado no TJAM.
• Patrimônio Tecnologia.
• Retta Consultoria em Tecnologia .
• Analista de Transmissão de Dados do
TER/RO.
• Escola SENAI Marechal Rondon ·
Tempo integral.
• Centro de Educação Tecnológica do
Amazonas – CETAM.
5. Orientada a Objetos
Revisão ...
• Programação Orientada a
Objetos é um paradigma de
programação centrado em
torno dos conceitos de classes
e objetos.
• Objetos são unidades de
programa que abstraem dados e
operações relacionados.
• Objetos possuem características
e comportamentos.
19/03/2024 5
Programação Orientada a Objetos
6. Orientação a Objetos
Revisão ...
• Ex. Bicicleta:
CARACTERÍSTICAS – atributos velocidade e marcha;
COMPORTAMENTO – exposto pelos métodos:
+ mudarMarcha,aumentarVelocidade.
19/03/2024 6
7. Orientação a Objetos
Revisão ...
Uma classe é uma
abstração de uma
coleção de objetos com
características e
comportamentos em
comum.
As características de
uma classe se
manifestam
computacionalmente na
forma de atributos.
19/03/2024 7
8. Orientação a Objetos
Revisão ...
Uma classe fornece um
esquema para construção de
objetos com caracterísicas
e comportamentos
semelhantes.
Um objeto é uma instância de
uma única classe.
19/03/2024 Programação Orientada a
Objetos
8
9. Orientação a Objetos
Revisão ...
Um programa OO é um
conjunto de objetos que
colaboram entre si para a
solução de um problema
Objetos colaboram através de
trocas de mensagens
A troca de mensagem é realizada
através da chamada de um
método
19/03/2024 Programação Orientada a Objetos 9
10. Orientação a Objetos
Revisão...
Encapsulamento:
Princípio pelo qual cada componente de
um programa deve agregar toda a
informação relevante para sua
manipulação.
Ocultação da Informação:
princípio pelo qual cada componente
deve manter oculta sob sua guarda uma
decisão de projeto única. Para a
utlização dessecomponente, apenas o
mínimo necessário para sua operação
deve ser revelado (tornado público).
10
12. Orientação a Objetos
Herança
Diferentes classes podem ter diversas semelhança
Duas ou mais classes poderão compartilhar os
mesmos atributos e/ou os mesmos métodos.
Herança: Permite a uma classe herdar o
estado (atributos) e o comportamento
(métodos) de outra classe.
– Superclasse
– Subclasse
– Ancestral
– Descendente
12
15. Orientação a Objetos
Herança
Professor
- nome: String
- idade: int
- formação: String
+definirNome(nome: String): void
+retornarNome(): String
+definirIdade(idade: int): void
+retornarIdade(): int
+definirFormacao(f: String): void
+retornarFormacao(): String
...
Aluno
- nome: String
- idade: int
- curso: String
+definirNome(nome: String): void
+retornarNome(): String
+definirIdade(idade: int): void
+retornarIdade(): int
+definirCurso(c: String): void
+retornarCurso(): String
...
15
16. Orientação a Objetos
Herança
16
Professor
- nome: String
- idade: int
- formação: String
+definirNome(nome: String): void
+retornarNome(): String
+definirIdade(idade: int): void
+retornarIdade(): int
+definirFormacao(f: String): void
+retornarFormacao(): String
...
Aluno
- nome: String
- idade: int
- curso: String
+definirNome(nome: String): void
+retornarNome(): String
+definirIdade(idade: int): void
+retornarIdade(): int
+definirCurso(c: String): void
+retornarCurso(): String
...
17. Orientação a Objetos
Herança
Aluno
- curso: String
Professor
- formação: String
+definirFormacao(f: String): void
+retornarFormacao(): String
+definirCurso(f: String): void
+retornarCurso(): String
19/03/2024 Programação Orientada a Objetos 17
Pessoa
- nome: String
- idade: int
+definirNome(nome: String): void
+retornarNome(): String
+definirIdade(idade: int): void
+retornarIdade(): int
18. Orientação a Objetos
Herança
Pessoa
- nome: String
- idade: int
+definirNome(nome: String): void
+retornarNome(): String
+definirIdade(idade: int): void
+retornarIdade(): int
Aluno
- curso: String
+definirCurso(f: String): void
+retornarCurso(): String
João
25
Sistemas de Informação
Instâncias de Aluno
Maria
20
Sistemas de Informação
18
19. Orientação a Objetos
Herança
//SuperClass.java public class
SuperClass
{
// Atributos e métodos
}
//SubClass.java
public class SubClass extends SuperClass
{
// Atributos e métodos
}
19
21. Orientação a Objetos
Herança
class Pessoa {
String nome;
int idade;
void definirNome(String valor) {
nome = valor;
}
String retornarNome() {
return nome;
}
void definirIdade(int valor) {
idade = valor;
}
int retornarIdade() {
return idade;
}
}
class Aluno extends Pessoa {
String curso;
void definirCurso(String valor) {
curso = valor;
}
String retornarCurso() {
return curso;
}
}
19/03/2024 Programação Orientada a Objetos 21
22. Orientação a Objetos
Herança
Aluno joao = new Aluno();
joao.definirNome(“João”);
joao.definirIdade(25);
joao.definirCurso(“Sistemas de
Informação”);
Aluno maria = new Aluno();
maria.definirNome(“Maria”);
maria.definirIdade(20);
maria.definirCurso(“Ciência da
Computação”);
João
25
Sistemas de Informação
Maria
20
Ciência da Computação
19/03/2024 Programação Orientada a Objetos 22
23. Orientação a Objetos
Herança
Eletrodoméstico Liquidificador
Voltagem
Garantia
Fabricante
Cor
Ligar
Desligar
Auto Limpeza
Velocidade
19/03/2024 Programação Orientada a Objetos 23
24. Orientação a Objetos
Superposição de atributos e métodos
public class Automovel extends VeiculoTerrestre {
public String licenca;
public Automovel(){
super.licenca="LAL1229";
}
}
19/03/2024 Programação Orientada a Objetos 24
Atributos com mesmo nome de atributos de superclasses
escondem o atributo da superclasse.
O acesso ao atributo da superclasse se faz com o uso do
operador super.
25. Orientação a Objetos
Herança e Generalização
Uma generalização é um relacionamento entre itens gerais
(superclasse) e itens mais específicos (subclasses).
É representada por uma linha sólida com um triângulo
vazado apontando para o item mais geral.
“é um”
“é um tipo de”
superclasse
subclasse
19/03/2024 Programação Orientada a Objetos 25
26. Orientação a Objetos
Classes Abstratas
São classes que existem apenas
conceitualmente para definir
conjuntos de métodos e
propriedades.
Uma classe abstrata é uma
classe que não tem
instâncias diretas.
Entretanto, suas classes
descendentes podem ter
instâncias diretas.
26
27. 27
Exemplo Prático
Exemplo Prático de Herança em Java
Considere um exemplo simples de uma hierarquia de classes para representar formas geométricas:
28. Orientação a Objetos
Herança
19/03/2024 Programação Orientada a Objetos 28
public abstract class Empregado {
public Empregado (String nome, double salario) {
this.numero = ++contador;
this.nome = nome;
this.salario = salario; }
public abstract void aumentaSalario(double percentual);
}
public class Vendedor extends Empregado{
public void aumentaSalario (double percentualDeAumento)
{ percComissao = percComissao * (1+percentualDeAumento/100);}
}
public class Gerente extends Empregado {
public void aumentaSalario(double percentual) {
double novoSalario = getSalario() * (1+2 * percentual/100);
setSalario(novoSalario);
}
}
Exemplo Prático de Herança com Classe Abstrata em Java
29. 29
Pensando um Pouco
Como os conceitos
de Herança do
paradigma da
Programação
Orientada a Objetos
estão presentes no
nosso dia a dia.
30. 19/03/2024 Programação Orientada a Objetos 30
Exercícios
1) Modifique a classe Carro do alugacar conforme ilustra a imagem abaixo.
2) Altere a aplicação alugacar para permitir a locação de outros veículos,
tais como: motos e ônibus.
3) Crie duas subclasses de Conta: ContaCorrente e ContaPoupanca.
31. 19/03/2024 Programação Orientada a Objetos 31
Referências
• DEITEL, H. M.; DEITEL, P. J. Java: como programar. 8. ed. São Paulo:
Prentice Hall Brasil, 2010.
• SANTOS, R. Introdução à Programação Orientada a Objetos Usando Java.
2. ed. Rio de Janeiro: Campus – Elsevier, 2013.
• SCHILDT, H. Java para iniciantes. 5. ed. Porto Alegre: Bookman, 2013.
• SIERRA, K.; BATES, B. Use a cabeça! Java. 2.ed. Rio de Janeiro, RJ: Alta
Books, 2010.
• TURINI, R. Desbravando Java e Orientação a Objetos: Um guia para o
iniciante da linguagem. São Paulo: Casa do Código, 2014.
• BARNES, D. J.; KÖLLING, M. Programação orientada a objetos com Java:
uma introdução prática usando o BlueJ. 4. ed. São Paulo, SP: Pearson
Prentice Hall, 2009. xxii, 455 p. ISBN 9788576051879.
32. 19/03/2024 Programação Orientada a Objetos 32
Referências
• BORATTI, I. C. Programação orientada a objetos em Java. Florianópolis:
Visual Books, 2007. 310 p. ISBN 978857502199-6.
• CARDOSO, C. Orientação a objetos na prática: aprendendo orientação a
objetos com Java. Rio de Janeiro: Ciência Moderna, 2006. 175 p. ISBN
8573935383.
• HORSTMANN, C. S.; CORNELL, G. Core Java. 8. ed. São Paulo, SP: Pearson,
2010. 400 p. ISBN 9788576053576.
• LARMAN, C. Utilizando UML e padrões: uma introdução à análise e ao
projeto orientados a objetos e ao desenvolvimento iterativo. 3. ed. Porto
Alegre: Bookman, 2007. 695 p. ISBN 85-363-0358-1.