Skip to content

Instantly share code, notes, and snippets.

@charlenopires
Last active March 14, 2025 18:39
Show Gist options
  • Save charlenopires/2febe2d160084b89fe35833ead7e9062 to your computer and use it in GitHub Desktop.
Save charlenopires/2febe2d160084b89fe35833ead7e9062 to your computer and use it in GitHub Desktop.
Descrição da 2a Avaliação - TADs

Avaliação Prática de Programação Orientada a Objetos com TypeScript

Instruções

Nesta avaliação, você deverá implementar um sistema simples de gerenciamento de biblioteca utilizando TypeScript e os conceitos de Programação Orientada a Objetos. Crie os arquivos necessários para implementar as classes e interfaces solicitadas, seguindo os requisitos abaixo.

Requisitos

Parte 1: Modelagem Básica (30 pontos)

Crie uma classe abstrata Item com as seguintes características:

Propriedades: id (number), titulo (string), ano (number) Método abstrato: exibirDetalhes(): string

Crie duas classes que herdam de Item:

Livro: com propriedades adicionais como autor (string), editora (string), numeroPaginas (number) Revista: com propriedades adicionais como edicao (number), periodicidade (string)

Implemente o método exibirDetalhes() em ambas as classes de forma específica.

Parte 2: Encapsulamento e Modificadores de Acesso (20 pontos)

Crie uma classe Usuario com:

  • Propriedades privadas: _id (number), _nome (string), _email (string), _telefone (string), _itensEmprestados (Item[])
  • Getters e setters adequados para todas as propriedades, com validação no setter de email
  • Método para emprestar um item emprestarItem(item: Item): boolean
  • Método para devolver um item devolverItem(id: number): boolean

Parte 3: Interfaces e Polimorfismo (20 pontos)

Crie uma interface Pesquisavel com:

Método pesquisar(termo: string): boolean

Implemente a interface Pesquisavel nas classes Livro e Revista.

Crie uma classe Biblioteca que:

  • Mantém um array de itens (Item[])
  • Implementa um método que utilize polimorfismo: buscarItens(termo: string): Item[] que retorna todos os itens que correspondem ao termo de busca

Parte 4: Herança e Especialização (15 pontos)

Crie uma classe LivroDigital que herda de Livro:

  • Propriedades adicionais: formato (string), tamanhoMB (number), linkDownload (string)
  • Sobrescreva o método exibirDetalhes() para incluir as informações específicas

Parte 5: Criação e Uso (15 pontos)

No arquivo principal (index.ts):

  • Crie instâncias de pelo menos 2 livros, 1 revista e 1 livro digital
  • Crie 2 usuários
  • Realize operações de empréstimo e devolução
  • Demonstre o polimorfismo usando o método de busca da biblioteca

Entrega

Organize seu código em arquivos separados:

  • Item.ts - Para a classe abstrata Item
  • Livro.ts e Revista.ts - Para as classes que herdam de Item
  • LivroDigital.ts - Para a classe que herda de Livro
  • Usuario.ts - Para a classe Usuario
  • Biblioteca.ts - Para a classe Biblioteca
  • index.ts - Arquivo principal para demonstrar o funcionamento

Critérios de Avaliação

  • Implementação correta de abstração (10%)
  • Uso adequado de herança (10%)
  • Encapsulamento correto (15%)
  • Aplicação de polimorfismo (15%)
  • Uso adequado de interfaces (10%)
  • Implementação dos métodos solicitados (20%)
  • Funcionamento correto do sistema (10%)
  • Organização e clareza do código (10%)

Boa sorte!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment