A seguir, é apresentado um código na linguagem de programaçã...

Próximas questões
Com base no mesmo assunto
Q2432598 Programação

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 é:

Alternativas

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