Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Funcionário quer ser cliente

Recommended Posts

Olá pessoal, gostaria de saber como me comportar diante do seguinte quadro em Herança.

 

Class Pessoa

Class Funcionario extends Pessoa

Class Cliente extends Pessoa

 

Funcionário quer ser cliente! E agora?

 

Como representar isso?

 

Não deve ser coerente ter dois cadastros para a mesma Pessoa!

 

Um Cliente e um Funcionário.

 

Nesse caso, o que fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em Java não se tem herança múltipla (odeio isso, mas fazer o quê...Decisões de projeto)
O que talvez seja a sua saída é definir interfaces ao invés de usar herança.
Exemplo:

Pessoa.java:

public class Pessoa {
  private String nome;
  private String CPF;
  private Date DOB; // Data de nascimento

  public Pessoa(String _nome, String _cpf, Date _dob) {...}
  // Defina outros métodos possíveis p/ pessoa.
}

ICliente.java

interface ICliente {
  void comprar();
  // Defina outras coisas aplicáveis aqui.
}

IFuncionario.java

interface IFuncionario {
  void registrarPonto();
  void registrarVenda();
  // Defina outras coisas aplicáveis.
}

Funcionario.java:

class Funcionario extends Pessoa implements IFuncionario,ICliente {
  // Escreva a implementação dos métodos de IFuncionario e ICliente
}

Cliente.java:

class Cliente extends Pessoa implements ICliente {
  // Escreva a implementação dos métodos de ICliente.
}

Quanto aos itens de venda, você não armazena eles dentro da pessoa, e sim numa outra classe, digamos RegistroVendas, que contém um ArrayList<Produto> ou quem sabe um map de produto e funcionário responsável pela venda do mesmo (no caso de uma funcionalidade de bônus).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não perdendo a piada , outra solução seria, venda caro e pague pouco ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

_isis_, minha preocupação é mais com o cadastro desse funcionário e não com a compra em si!

 

Se ele o funcionário comprou, e apenas clientes compram, e mais para frente desejo fazer uma lista de clientes que compraram, esse funcionário não sairá nessa lista entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sairá se vc incluir a referência ao objeto.
P/ verificar se o objeto implementa a interface no caso de existir um Diretor ou Presidente que não pode comprar na loja, por exemplo, você vai ter um ICliente.class.isAssignableFrom(objeto.class).

http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)

 

Nesse caso, você não terá uma lista de Funcionários, nem de Clientes, mas de Pessoas (um objeto mais genérico na hierarquia).

Compartilhar este post


Link para o post
Compartilhar em outros sites

_isis_ agora e ntendi. Mas fazendo com Pessoas não vai funcionar no eu caso. Vou pensar em outra coisa.

 

Mas, pode me ajudar em outro problema?

 

Onde estou errando?
Bom, instalei o Apache Tomcat aqui:
C:\Program Files\Apache Software Foundation\Tomcat 8.0\
Entrei na pasta
C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps\
e criei uma pasta "jsp" para dizer que dentro dela vou colocar meus projetos.
Daí pra frente a árvore de diretórios do meu projeto ficou assim:
imwsaogotardo.com.br (nome do site)
imwsaogotardo.com.br
                    grava.jsp
                    index.jsp
                    /ebd
                        /dao    
                            /banco
                                  Conexao.java
                            /pessoas      
                                  DAOPessoa.java
                                  DAOProfessor.java
                        /modelos
                            /perguntas
                                  Pergunta.java
                            /pessoas
                                  Pessoa.java
                                  Professor.java
                                  Usuario.java
                            /retornos
                                  Comentario.java
                                  Resposta.java
                                  Retorno.java
                            /salas
                                  Sala.java
O arquivo index.jsp esta assim:
 
<%@ page import="java.util.List" %>
<%@ page import="ebd.dao.pessoas*." %>
<%@ page import="ebd.dao.banco*." %>
<html>
  <head>
     <title>IMW Muriaé São Gotardo - EBD</title>
  <head>
  <body>
    EBD<br /><br /><br />
    <form action="grava.jsp" method="post">
      <input type="text" name="nome" id="nome"><br />
      <input type="text" name="nascimentoDia" id="nascimentoDia"><br />
      <input type="text" name="nascimentoMes" id="nascimentoMes"><br />
      <input type="text" name="nascimentoAno" id="nascimentoAno"><br />
      <input type="submit" value="Envia">
    </form><br />
 
<%@
 DaoPessoa pessoa = new DaoPessoa();
 outprint(pessoa.buscarTodos());
%>
  </body>
</html>
Eis o erro gerado:
HTTP Status 500 - java.lang.ClassNotFoundException: org.apache.jsp.imwsaogotardo_com_br.index_jsp
 
type Exception report
 
message java.lang.ClassNotFoundException: org.apache.jsp.imwsaogotardo_com_br.index_jsp
 
description The server encountered an internal error that prevented it from fulfilling this request.
 
exception
 
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.imwsaogotardo_com_br.index_jsp
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:176)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
 
java.lang.ClassNotFoundException: org.apache.jsp.imwsaogotardo_com_br.index_jsp
java.net.URLClassLoader.findClass(Unknown Source)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:131)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:62)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.22 logs.
 
Apache Tomcat/8.0.22
Quado dou f5, o erro muda para:
HTTP Status 500 - /imwsaogotardo.com.br/index.jsp (line: 19, column: 3) Invalid directive
 
type Exception report
 
message /imwsaogotardo.com.br/index.jsp (line: 19, column: 3) Invalid directive
 
description The server encountered an internal error that prevented it from fulfilling this request.
 
exception
 
org.apache.jasper.JasperException: /imwsaogotardo.com.br/index.jsp (line: 19, column: 3) Invalid directive
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:275)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:91)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)
org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1782)
org.apache.jasper.compiler.Parser.parse(Parser.java:136)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:227)
org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:117)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:194)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.22 logs.
 
Apache Tomcat/8.0.22
Me parece que estou errando na hora de fazer os includes.
Obs.: Não estou usando IDE alguma. Estou programando direto no Notepad++ a fim de aprender melhor a codificação.
Mas acontece que tenho arquivos .java no meu site mas a JVM não lê .java e sim .class.
Deve precisar primeiro compilar o .java.
Mas onde vou fazer isso? O Servidor Tomcat será que faz?
Senão, precisarei usar um compilador manual (javac) e sair compilado manualmente arquivo a arquivo .java ou uma IDE (NetBeans) para fazer a compilaçao de todo .java arquivos de uma só vez!
Nestes arquivos que fiz, o form do index.jsp é submetido corretamente e o grava.jsp recebe normalmente e imprime os campos do form.
Onde estou errando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que não iria funcionar? A princípio é indiferente p/ loja diferenciar clientes comuns de funcionários clientes.

public class CupomFiscal {
  private Pessoa cliente;
  private Funcionario vendedor;
  private ArrayList<Item> produtos;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é outro agora _isis_. Veja:

 

Me parece que estou errando na hora de fazer os includes.
Obs.: Não estou usando IDE alguma. Estou programando direto no Notepad++ a fim de aprender melhor a codificação.
Mas acontece que tenho arquivos .java no meu site mas a JVM não lê .java e sim .class.
Deve precisar primeiro compilar o .java.
Mas onde vou fazer isso? O Servidor Tomcat será que faz?
Senão, precisarei usar um compilador manual (javac) e sair compilado manualmente arquivo a arquivo .java ou uma IDE (NetBeans) para fazer a compilaçao de todo .java arquivos de uma só vez!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Site? Vc tá estudando Java web? Containers tem configurações específicas. Leia o manual do Tomcat.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.