Fabyo 66 Denunciar post Postado Abril 5, 2006 você pode gerar um log de erros o trow retorna varias informações exemplo $mensagem = $exception->getMessage(); $codigo = $exception->getCode(); $arquivo = $exception->getFile(); $trace = $exception->getTraceAsString(); Compartilhar este post Link para o post Compartilhar em outros sites
Epyllion 0 Denunciar post Postado Abril 12, 2006 Certa vez, eu li, não lembro onde, um texto sobre OOP que falava mais ou menos assim: "Entender o conceito de OOP, talvez seja mais difícil do programar em OOP". Para mim, esse é realmente o grande problema, já li vários tutoriais, exemplos, enfim, porém não consigo entender 100% a lógica de como a coisa funciona. Pode ser por inexperiência ou burrice mesmo. Então gostaria, por favor, que alguém me ajudasse a montar a estrutura de um exemplo em OOP, mais parecido como nosso "dia-a-dia". Tomemos por exemplo um sistema assim, mais ou menos, como o site do Imasters: - Banco de dados: --Conectar; --Executar query; --Desconectar; - Tutoriais: --Inserir; --Exibir; --Editar; --Deletar; - Noticias: --Inserir; --Exibir; --Editar; --Deletar; - Sub-Administradores: --Todos os métodos de notícias e tutoriais; - Postadores de tutoriais: --Só os metódos de tutoriais; - Administrador: --Inserir usuário; --Excluir usuário; --Editar dados de usuário; - Sub-administrador, Postadores, Administradores: --Logar; --Deslogar; Como ficaria isso em classes ? Qual método pertenceria ao quê ? Como é feita a ligação entre o método de inserir a notícia e o método do usuário de postar a notícia ? Isso que me deixa confuso, dividir os métodos e relacioná-los com os demais métodos dos outros objetos (usuário X notícia, usuário X tutoriais). Se puderem me dar "uma luz" agradeço muito. Desde já agradeço as dicas dados nesse tópico, foram muito úteis pra mim. Muito obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Abril 13, 2006 Bem... vou tentar ser claro. Por enquanto, não vou modelar ou falar sobre suas classes propriamente ditas, gostaria que você montasse pra mim um conjunto de classes mais simples que você sugeriu. Veja bem, vou te dar 2 conjuntos de 3 classes e você vai monta-las (modelar) para mim, informando caracteristicas desta classe (propriedades) e comportamentos que ela pode ter (métodos), de acordo com oq você leu e entendeu nos seus estudos até então, independente desta analogia estar certa ou errada... ok?! (Conjunto 1) Classe Pessoa, Classe Homem e Classe Mulher (Conjunto 2) Classe Motor, Classe Carro e Classe Caminhão Dependendo de como você vai se sair deste teste, passamos para um nível mais alto. Se quiser usar uma ferramenta gráfica para modelar suas classes, sugiro o ArgoUML ( http://argouml.tigris.org/ ). Caso tenha dúvidas sobre algum termo utilizado, pode dar uma lida nesses documentos: http://www.dca.fee.unicamp.br/cursos/PooJa...undamentos.html http://www.dca.fee.unicamp.br/cursos/PooJa...s/objintro.html http://www.dca.fee.unicamp.br/cursos/PooJa...s/clsintro.html http://www.dca.fee.unicamp.br/cursos/PooJa...anca/index.html Compartilhar este post Link para o post Compartilhar em outros sites
Epyllion 0 Denunciar post Postado Abril 17, 2006 Prog, bom dia. Muito obrigado por sua ajuda. Não entendo muita coisa de UML, aliás, esse é o primeiro "UML" que fiz. Não usei o programa que você indicou, pois não estou podendo instalar nada atualmente aqui, mas quando puder, vou instalá-lo, obrigado pela indicação. Se o meu "UML" estiver muito confuso, acho inclusive que está , pergunte que tentarei lhe explicar minha idéia. Está aí: http://www.picfury.com/r/prog2-1.html http://www.picfury.com/r/prog1-1.html Algumas observações: - As classes Mulher e Homem são extensões da classe Pessoa. - A classe Carro e a classe Caminhao recebem em seus métodos Ligar() um objeto motor proveniente da classe Motor. - O método Desligar() da classe Carro e da classe Caminhao, usam esse mesmo objeto motor->Desligar(). - Pensei em usar propriedades (cor, modelo, ano) na classe Carro e na classe Caminhao, porém isso deveria estar em uma outra classe chamada Veículo, certo ? Essas observações que fiz, foi por não saber como representar isso no meu "UML", desculpe. Espero que esteja certo, pois como disse, não entendo muita coisa, aliás quase nada de OOP, portanto não vale me xingar, ok ?! Muito obrigado por sua ajuda e mais alguma coisa, só pedir. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Abril 17, 2006 Cara, sua modelagem esta beleza... Não queria nada "perfeito", o teste foi apenas para medir o que você já sabe até agora e como você faria para modelar. Eu fiz uma leitura do seu outro post, e, de acordo com a sua modelagem, não entendo o pq das dúvidas. Todas as dúvidas foram tiradas com os links indicados? Surgiram novas dúvidas? Compartilhar este post Link para o post Compartilhar em outros sites
Epyllion 0 Denunciar post Postado Abril 17, 2006 Prog, boa tarde. A dúvida que ficou é que alguns programadores usam OOP de forma diferente uns dos outros. Explicando melhor, tendo uma classe Colunistas e uma classe Artigos: - Forma 1 : Temos os métodos da classe Colunistas [InserirColunista(), EditarColunista(), ExcluirColunista()] e os métodos da classe Artigos [InserirArtigo(), EditarArtigo(), ExcluirArtigo()] . Usando dessa forma, temos os métodos referente à classe Colunistas na classe Colunistas, e para a execução dos métodos da classe Artigos, passaríamos como parâmetro um objeto, ou uma variável (por exemplo, o id), com os dados necessários para a execução dos métodos. Dessa forma, a classe Colunistas que ficaria responsável por verificar se o usuário é realmente um colunista e posteriormente a classe Artigos, só executaria seus métodos (com a informação que ela recebe da classe Colunista já tratada, ou seja, ela não verifica nada quanto aos dados vindos da classe Colunistas). - Forma 2 : Do mesmo jeito da forma anterior, porém com a única diferença que a classe Artigos ficaria responsável por tratar os dados que ela recebe da classe Colunistas e assim, decidir se o usuário pode realmente executar seus métodos. - Forma 3: A classe Colunistas conteria todos os métodos que esse tipo de usuário pode fazer [InserirColunista(), EditarColunista(), ExcluirColunista(), InserirArtigo(), EditarArtigo(), ExcluirArtigo()]. Embora tenho visto outras formas, essas três foram as que achei mais "corretas". Na minha modesta opinião, acho que a Forma 1 é a mais correta, porém não tenho certeza. E a Forma 3 , a mais incorreta, pois quebra todas as regras de poliformismo, herança, enfim ... Muito obrigado pela ajuda, mais uma vez. Até mais. ------Editado------- Desculpe por tanta repetição. Se estiver confuso o post, por favor diga, que tentarei me expressar melhor. Obrigado. ------------------- Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Abril 17, 2006 O post esta confuso, mas eu entendi onde você quer chegar. Certamente, você vai encontrar aplicações modeladas de inumeras maneiras, se a gente parar pra pensar um pouco mais, podemos encontrar mais uma ou duas formas, estão certas? Erradas? Isto vai depender um pouco dos resultados que você deseja obter com a sua aplicação. Em POO, diz-se que o compotamento de cada objeto deve ser vinculado ao mesmo, veja o exemplo: Classe Conta - conta; - saldo; Classe Usuario - nome; - cpf; Então, eu lhe pergunto... Onde você acha que ficaria mais coerente colocar um método criarConta()??? Se a gente parar para pensar, bem... quem cria a conta, é o usuário e é o usuário quem usa a conta, mas poxa, faz algum sentido tem métodos como criarConta(), transferirValor(), getNumeroConta(), setNumeroConta() e fecharConta() na classe Usuário? Até agora você não veio com nenhum dúvida, tudo oq você disse até agora, você já sabia... qual é a dúvida!??? Compartilhar este post Link para o post Compartilhar em outros sites
Epyllion 0 Denunciar post Postado Abril 17, 2006 O post esta confuso, mas eu entendi onde você quer chegar.Que bom, porque eu reli e nem eu entendi .... Certamente, você vai encontrar aplicações modeladas de inumeras maneiras, se a gente parar pra pensar um pouco mais, podemos encontrar mais uma ou duas formas, estão certas? Erradas? Isto vai depender um pouco dos resultados que você deseja obter com a sua aplicação.Interessante isso, obrigado pela dica. :thumbsup: Em POO, diz-se que o compotamento de cada objeto deve ser vinculado ao mesmo, veja o exemplo: Classe Conta - conta; - saldo; Classe Usuario - nome; - cpf; Então, eu lhe pergunto... Onde você acha que ficaria mais coerente colocar um método criarConta()??? Se a gente parar para pensar, bem... quem cria a conta, é o usuário e é o usuário quem usa a conta, mas poxa, faz algum sentido tem métodos como criarConta(), transferirValor(), getNumeroConta(), setNumeroConta() e fecharConta() na classe Usuário? Prog, muito obrigado. Esse era realmente o grande problema : O agente que executa a ação X A classe responsável pela execução das ações. Finalmente consegui compreender, como disse, achei que estava pensando da forma correta, no entanto, essa forma de usar (o agente como ator principal de tudo) me deixou confuso. Obrigado. :thumbsup: Até agora você não veio com nenhum dúvida, tudo oq você disse até agora, você já sabia... qual é a dúvida!???Na verdade as dúvidas eram várias, porém conforme foi se "desenrolando" esse post, fui lendo as referências que você me passou, pesquisando em outras, pensando nas coisas que você disse e de repente começou a fazer sentido. Novamente, muito obrigado. Não sabe o quanto me ajudou. :thumbsup: Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Perfect Lion 10 Denunciar post Postado Abril 19, 2006 Galera agora a minha duvida tou quebrando a cabeça aqui com a classe e me perdi todo. Eu estou tentando fazer uma classe de login e verificar na pagina protegida se o kra está logado mais estou apanhando.. eu tinha feito uma vez mais num com class e recolvi fazer com classe. Podem me ajudar? Veja como estou fazendo tenho certeza que não deve ser assim. Ajuda ai ^^ <?session_start();require("conexao.php");class usuario{ var $logado; // vai receber valor boleano var $nome; // recupera o nome do fulano var $sexo; // recupera o sexo var $id_user; var $select; // function logar($user,$pass){ $this->select = mysql_query("select * from tbuser where upper(user) = '".strtoupper($user)."' and pass = '$pass'"); if(mysql_num_rows($this->select)){ $_SESSION["logado"] = true; $this->logado = true; $this->valoresDB(); // recupera valores do DB return true; }else{ $this->logado = false; $_SESSION["logado"] = false; } } function valoresDB(){ // Recupera valores do DB $l = mysql_fetch_row($this->select); $this->id_user = $l["id_user"]; $this->nome = $l["user"]; $this->sexo = $l["sexo"]; } }$usuario = new usuario();if($_SESSION["dadosLogin"] != false){ $dadosLogin = unserialize($_SESSION["dadosLogin"]); $logando = $usuario->logar($dadosLogin[0],$dadosLogin[1]);}else{ $logando = $usuario->logar("erick","pass");}if($logando){ $_SESSION["dadosLogin"] = serialize(array("erick","pass")); echo "Seja Bem Vindo ".$usuario->nome;}else{ echo "usuario ou senha invalido"; $_SESSION["dadosLogin"] = false;}?> Compartilhar este post Link para o post Compartilhar em outros sites