Escolar Documentos
Profissional Documentos
Cultura Documentos
Às vezes a solução para uma tarefa muito simples pode ser implementada com
um programa procedural (estruturado), porque a criação de classes pode deixar a
solução mais complicada. Porém, qualquer aplicação onde seja necessário
representar conjuntos de dados dependentes ou interligados entre si – por
exemplo, datas, registros de alunos, contas bancárias, etc. –, podem se beneficiar
da orientação a objetos. Qualquer aplicação pode ser implementada tanto com
orientação a objetos, como de forma estruturada.
Herança
Vamos supor que procuramos modelar uma classe para um aluno de ensino
médio como RegistroEscolar. Porém, um aluno de um curso superior não
poderia ser representado apenas por esses dados porque também precisamos
modelar os dados do TCC e orientador. Embora os dois tipos de alunos tenham
características comuns, não seria prático representar os dois com a mesma
classe pois eles tem características diferentes. Assim, se um aluno do ensino
médio for modelado por essa classe, dois atributos não seriam utilizados. O que é
um desperdício e causa confusão. A solução para a OO é criar duas classes:
RegistroEscolar e RegistroAcademico. A última contém os atributos e
métodos do RegistroEscolar e os atributos adicionais.
A Herança permite criar uma classe com base em outra, permitindo reutilizar os
métodos e atributos que não são privados da classe base. Toda vez que duas ou
mais classes fazem parte de um mesmo tipo (uma relação é-um-tipo-de),
podemos utilizar a herança. Por exemplo, o RegistroAcademico é um tipo de
RegistroEscolar. Quando dizemos que uma ou mais classes são do tipo,
significa que elas herdam da classe menos especializada, mas genérica. Dizemos
que as classes mais específicas herdam características. Se quisermos criar outro
registro, como o de pós-graduação, poderemos criar uma classe que herda as
características de RegistroEscolar. As relações de herança na UML são
representadas por uma seta fechada e sem preenchimento direcionada à classe
mais genérica.
// Getters e Setters
}
public class RegistroEscolar {
// Getters e Setters
}
public class RegistroAcademico extends RegistroEscolar {
// Getters e Setters
}
Construtores
Os construtores são um tipo de método especial. A função do construtor é
inicializar os atributos do objeto assim que criamos uma instância com a palavra
new. O método construtor tem, obrigatoriamente, o mesmo nome da classe e não
tem um tipo de retorno. Por exemplo:
public class Pessoa {
public Pessoa() {
// Getters e Setters
}
Enumeradores
Existe um outro tipo de classes em Java: os enumeradores (palavra-chave enum).
O enumerador contém constantes e métodos para representar alguns tipos de
dados. Por exemplo, se quiséssemos declarar três tipos de situação do registro
acadêmico: matriculado, formado e trancado, poderíamos criar um enumerador
com a descrição do estado e um código de estado.
public enum SituacaoRegistro {
// Consrutor:
private SituacaoRegistro(String d, int c) {
descricao = d;
codigo = (byte) c;
}
// Getters e Setters
}
// Getters e Setters
}
Referências:
Cardoso, Caíque. Orientação a Objetos na Prática - Aprendendo Orientação a
Objetos na Prática. Rio de Janeiro: Editora Ciência Moderna Ltda., 2006.
Santos, Rafael. Introdução à Programação Orientada a Objetos Usando Java. Rio
de Janeiro: Elsevier. 2 ed. 2013.
Lista de Exercícios
Resolva esta lista de exercícios com base nos conhecimentos apresentados,
desenhe os modelos de classe nesta instrução e depois implemente os códigos das
classes em Java seguindo os padrões de nomenclatura e correta identação do
código.
Q.18: Crie uma classe "Pessoa" que possua os atributos "nome" e "sobrenome".
Crie as classes "Funcionario" e "Cliente", que herdam da classe "Pessoa".
- A classe "Funcionario" deve possuir o atributo "salario";
- A classe "Cliente" deve possuir o atributo "cpf".
- Crie objetos de cada uma das classes e imprima os valores dos tributos de
cada uma.
Q.19: Crie uma classe "Veiculo" que possua os atributos "marca", "modelo", "ano",
"cor" e "velocidade". Crie as classes "Carro" e "Moto", que herdam da classe
"Veiculo".
- A classe "Carro" deve possuir os atributos "potencia" e "numPortas";
- A classe "Moto" deve possuir o atributo "cilindradas";
- Crie objetos de cada uma das classes e imprima os atributos
correspondentes.
Q.20: Crie uma classe "Animal" que possua os atributos "nome" e "idade" e que
possua os métodos "comer" e "dormir". Cada método deve apenas imprimir um texto
indicando o que ele faz.
- Crie uma classe "Gato", que herda da classe "Animal". A classe "Gato" deve
possuir um método "miar";
- Crie uma classe "Cachorro" que herde da classe "Animal". A classe
"Cachorro" deve possuir um método "latir";
- Crie uma classe "Cavalo" que herde da classe "Animal" e possua um novo
atributo "raca";
- Crie as classes "Mamifero", "Ave" e "Reptil", que herdam da classe "Animal".
A classe "Mamifero" deve possuir o método "amamentar". A classe "Ave"
deve possuir o método "voar". A classe "Reptil" deve possuir o método
"rastejar".
- Crie objetos de cada uma das classes e chame os métodos correspondentes.
Q.23: Crie uma classe "Produto" que possua os atributos "codigo", "descricao" e
"preco".
- Crie as classes "ProdutoDuravel" e "ProdutoNaoDuravel", que herdam da
classe "Produto";
- A classe "ProdutoDuravel" deve possuir o atributo "tempoGarantia" e o
método "calcularDesconto";
- A classe "ProdutoNaoDuravel" deve possuir o atributo "dataValidade" e o
método "verificarValidade";
- Crie objetos de cada uma das classes e chame os métodos correspondentes.