A seguir, é apresentado um código na linguagem de programaçã...
A seguir, é apresentado um código na linguagem de programação Java.
Livro.java
public class Livro {
private String nome;
protected double valor;
public Livro(String nome, double valor) {
this.nome = nome;
this.valor = valor;
}
public String getNome() {
return nome;
}
}
Impresso.java
public class Impresso extends Livro {
private int paginas;
public Impresso(String nome, double valor, int paginas) {
super (nome, valor);
this.paginas = paginas;
}
public int getPaginas( ) {
return paginas;
}
public double getValor ( ) {
return valor + 0.05 * paginas;
}
}
Ebook. java
public class Ebook extends Livro {
private int bytes;
public Ebook(String nome, double valor, int bytes) {
super (nome, valor);
this.bytes = bytes;
}
public int getBytes() {
return bytes;
}
public double getValor() {
return valor;
}
}
Utilizando a engenharia reversa nesse trecho de código, o diagrama de classes da UML corresponde é:
Comentários
Veja os comentários dos nossos alunos
## Explicação do Código Java: Modelagem de Livros
O código apresentado define três classes que modelam diferentes tipos de livros: `Livro`, `Impresso` e `Ebook`.
**1. Classe Livro (Livro.java):**
* **Classe base:** Esta classe serve como base para as classes `Impresso` e `Ebook`.
* **Atributos privados:**
* `nome` (String): Armazena o nome do livro.
* `valor` (double): Armazena o valor base do livro.
* **Construtor:**
* `Livro(String nome, double valor)`: Inicializa o nome e o valor do livro.
* **Métodos getters:**
* `getNome()`: Retorna o nome do livro.
**2. Classe Impresso (Impresso.java):**
* **Herança:** Esta classe **herda** da classe `Livro`.
* **Atributo adicional:**
* `paginas` (int): Armazena a quantidade de páginas do livro impresso.
* **Construtor:**
* `Impresso(String nome, double valor, int paginas)`:
* Chama o construtor da classe `Livro` através de `super(nome, valor)` para inicializar o nome e o valor.
* Inicializa o atributo `paginas`.
* **Método adicional:**
* `getPaginas()`: Retorna a quantidade de páginas do livro impresso.
* **Sobrescrita de método:**
* `getValor()`:
* Calcula o valor final do livro impresso, adicionando 5% do valor do livro base (`valor`) por página (`paginas`).
* Redefine o comportamento herdado do método `getValor()` da classe `Livro`.
**3. Classe Ebook (Ebook.java):**
* **Herança:** Esta classe também **herda** da classe `Livro`.
* **Atributo adicional:**
* `bytes` (int): Armazena o tamanho do ebook em bytes.
* **Construtor:**
* `Ebook(String nome, double valor, int bytes)`:
* Chama o construtor da classe `Livro` através de `super(nome, valor)` para inicializar o nome e o valor.
* Inicializa o atributo `bytes`.
* **Método adicional:**
* `getBytes()`: Retorna o tamanho do ebook em bytes.
**Observações:**
* A classe `Livro` define a estrutura básica de um livro, com nome e valor.
* As classes `Impresso` e `Ebook` herdam da classe `Livro` e adicionam atributos e comportamentos específicos para cada tipo de livro.
* A classe `Impresso` sobrescreve o método `getValor()` para calcular o preço final considerando o número de páginas.
* A classe `Ebook` não modifica o método `getValor()` herdado, pois o ebook não tem um custo adicional baseado em tamanho.
**Em resumo:**
Este código demonstra o uso de herança e polimorfismo para modelar diferentes tipos de livros com características e comportamentos próprios, mantendo uma estrutura base comum na classe `Livro`.
Fonte: Gemini
não perde tempo, mata a questão olhando os modificadores
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo