Ir para conteúdo

POWERED BY:

Arquivado

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

Douglas

Classes PHP

Recommended Posts

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

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. Imagem Postada

 

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

Bem... vou tentar ser claro. Imagem Postada

 

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

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á Imagem Postada , pergunte que tentarei lhe explicar minha idéia. Imagem Postada

 

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 ?! Imagem Postada

 

Muito obrigado por sua ajuda e mais alguma coisa, só pedir. Imagem Postada

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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. Imagem Postada

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

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!??? Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

O post esta confuso, mas eu entendi onde você quer chegar.

Que bom, porque eu reli e nem eu entendi .... Imagem Postada

 

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. Imagem Postada

 

Novamente, muito obrigado. Não sabe o quanto me ajudou. :thumbsup:

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

×

Informação importante

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