Skip to content

Latest commit

 

History

History
44 lines (36 loc) · 2.71 KB

exercicios1.adoc

File metadata and controls

44 lines (36 loc) · 2.71 KB
  • Definir atributos para as classes

  • Criar funcionalidades básicas, incluindo getters e setters

    • Cliente: validar email, validar CPF, validar attributos nos setters

    • Funcionário

    • Produto: adicionar estoque, remover estoque

    • Filial: validar CNPJ.

  • Criar relacionamentos

    • Empresa --→ Gerente

  • Criar relacionamento de Funcionario → Empresa e mostrar como fica uma navegação dupla.

  • Mostrar que, se um funcionário trabalha numa empresa A e ele for definido como gerente de uma empresa B, ele vai continuar registrado como se estivesse na empresa A. Alterar o construtor da empresa que recebe um gerente para definir tal gerente como funcionário da empresa a qual ele vai gerenciar.

  • Mostrar que se usarmos o setGerente na Empresa, o funcionário da empresa A que passou a gerenciar a empresa B vai continuar como se trabalhasse na empresa A.

  • Mostrar que se for usado o setEmpresa no funcionário para alterar a empresa de A para B e tal funcionário era gerente da empresa A, ele vai passar a trabalhar para B mas vai continuar como gerente de A. Neste caso, algumas opções seriam possíveis. Uma delas seria impedir que um funcionário que é gerente da uma empresa seja diretamente alterado para outra empresa. Neste caso, primeiro poderíamos deixar a empresa A sem gerente. Assim, o funcionário estaria livre para ir para qualquer outra empresa.

  • Adicionar cidade como String no cliente e mostrar os problemas de usar String para isso. Criar novos relacionamentos:

    • Cliente --→ Cidade

    • Empresa --→ Cidade

  • Alterar outros campos de String para classes:

    • Produto --→ Marca

    • Cidade --→ Estado

  • Introdução à encapsulamento (visibilidade)

    • Criar classe Venda de forma simplificada, contendo um atributo Produto + quantidade, um cliente e um vendedor

    • mostrar que os atributos são acessíveis dentro de qualquer lugar da classe: criar um método valorTotal na venda para mostrar isso

    • Criar um método salvar() na venda que vai reduzir o estoque do produto, acessando os atributos diretamente

    • apresentar os modificadores de acesso público e privado e como o código acessando atributos diretamente de fora da classe produto param de funcionar.

  • Alterar a venda para permitir incluir vários itens

  • Mostrar em detalhes os relacionamentos 1..n

  • Mostrar o problema de NullPointerException e como resolver, criando instancias dos relacionamentos no construtor.

  • Exercícios

    • no setter do produto na classe Venda, verificar se o produto informado tem estoque maior que zero para poder atribuir o produto à venda. Caso o estoque seja zero ou negativo, exibir a mensagem "O produto informado não possui estoque e não pode ser vendido".