Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo de Andrade

[Resolvido] sobre POO

Recommended Posts

Olá pessoal, continuo estudando sobre POO e dúvidas não param de aparecer... precisando de uma forcinha :D

 

é o seguinte, estou a utilizar uma classe para conectar ao DB que usa o padrão singleton... não entendo ainda sobre isso mas to tentando, e tenho uma outra classe que utilizo para consultar o BD e exibir o resultado :

<?php
/**
* @author Marcelo
*/
include 'SKDatabase.php';

class Post {

   public $id;
   public $title;
   public $body;
   public $views;
   public $created_date;

   public $sk;

   public function __construct(){
     $this->sk = SKDatabase::getInstance();
   }

   public function totalReg () {
       $t = $this->sk;
       $totalReg = $t->query("SELECT * FROM posts");
       echo mysql_num_rows($totalReg);
   }

   public function lastReg ($param) {
       $l = $this->sk;
       $lastReg = $l->find("SELECT title, body FROM posts ORDER BY created_date DESC LIMIT $param");

       foreach($lastReg as $row) {
           echo '<pre style="border: 1px solid #000">';
           echo "<strong>".$row['title']."</strong>";
           echo "<p>".$row['body']."</p>";
           echo '</pre>';
       }
   }

   public function search($param) {
       $s = $this->sk;
       $search = $s->find("SELECT title, body FROM posts WHERE title LIKE '%".$param."%' ORDER BY created_date DESC");

       foreach($search as $result) {
           echo '<pre style="border: 1px solid #000">';
           echo "<strong>".$result['title']."</strong>";
           echo '</pre>';
       } 
   }



}
?>

 

Esse script é parte de um "teste" que estou fazendo, e foi me passado que eu deveria ter os atributos mas não tenho idéia de como posso usar eles, os atributos tem os mesmos nomes de campos na tabela do DB.

 

uma segunda dúvida é : como eu poderia não repetir a chamada da variável $this->sk ? está correto a forma que estou utilizando ela ?

 

 

obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estude mais sobre OOP, e entenda os conceitos, boas praticas e metodos estabelecidos por convenção

 

por exemplo essa classe que voce esta tentando fazer, nao tem nada haver e esta tudo errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estude mais sobre OOP, e entenda os conceitos, boas praticas e metodos estabelecidos por convenção

 

por exemplo essa classe que voce esta tentando fazer, nao tem nada haver e esta tudo errado.

 

Eu não diria que está tudo errado, @Fabyo.

 

Orientação a objetos é um assunto muito complexo, mas quem está aprendendo costuma misturar os padrões de projeto aos conceitos nativos da orientação a objetos e fazer meleca mesmo.

 

Mas só pelo fato de ele ter feito uma classe como essa, já demonstra a qualidade que ele tem de estudar e, principalmente, arriscar.

 

@topic

 

Se eu fosse você, estudaria melhor a orientação a objetos por si só antes de entrar nos padrões, como Singleton.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não diria que está tudo errado, @Fabyo.

 

Olha Daniel, vou fazer um quote do primeiro tópico que abri sobre OOP:

 

Constantemente vemos códigos inteiros escritos dentro da estrutura de linguagem class {} e desenvolvedores afirmando que se trata de orientação a objetos, o fato é não se trata, orientação a objetos está diretamente ligada a modelagem, distribuição de responsabilidades e reutilização.

 

Dessa forma, concordo totalmente com o Fabyo, veja:

 

1. Falta modelagem. (está tudo misturado com tudo)

2. Não existe distribuição de responsabilidades.

3. Não é reutilizável.

 

Exatamente por isso, sugeri a leitura dos tópicos, ficará mais fácil ajudá-lo , se os conceitos básicos tiverem sido assimilados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha amigo concordo com os demais, agora uma coisa é fato tutorias na net existem de quilos, e 99% estão incompletos ou seja muitos começam mas abandonam por críticas "construtivas" que ao meu ver são destrutivas, imaginem pra que esta começando a enteder os primeiros conceitos já vem um descendo o sarrafo na explicação. Quem começa acaba desistindo.

 

Por isso deixo aqui um site onde contém do básico ao avançado sobre POO mais é pago e que vale a pena!

 

schoolofnet

 

Tirando os tutorias do Fábio que são 100%, o restante que encontrei na net até agora ta longe de serem finalizados pelos seus autores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha amigo concordo com os demais, agora uma coisa é fato tutorias na net existem de quilos, e 99% estão incompletos ou seja muitos começam mas abandonam por críticas "construtivas" que ao meu ver são destrutivas, imaginem pra que esta começando a enteder os primeiros conceitos já vem um descendo o sarrafo na explicação. Quem começa acaba desistindo.

 

Por isso deixo aqui um site onde contém do básico ao avançado sobre POO mais é pago e que vale a pena!

 

schoolofnet

 

Tirando os tutorias do Fábio que são 100%, o restante que encontrei na net até agora ta longe de serem finalizados pelos seus autores.

 

Justamente por isso que, acima, eu disse que não declararia o trabalho do colega como 'totalmente errado'.

 

Muitas vezes só uma frase pode fazer com que a pessoa desanime e nunca mais volte a tocar no assunto.

 

É claro que isso seria falta de vontade dela mesma, afinal, as críticas servem pra fazê-la crescer e aprender cada vez mais com seus erros.

 

Mas, realmente está tudo errado.

 

Só acho que deveríamos incentivar mais... hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom só pra deixar claro, em momento algum quiz desanimar o nosso colega, é que eu penso assim se a pessoa aprender errado fica mais dificil dela consertar, é legal a pessoal aprender do jeito certo, nem se for pra dar um "Hello World" simples, e ir crescendo com o codigo, doque fazer muita coisa errada e ter que reaprender o que achava que tava certo.

 

bom nao adianta só criticar, vou dar umas dicas

 

Pode parecer besteira, mas é muito importante o nome que voce da para a classe e metodos

nao misture nomes em portugues, e ingles, defina um ou outro.

 

* classe Post, pergunte pra voce mesmo o que é "Post"?, pra que serve "Post" ?

 

* Voce definiu tudo como public, precisa entender o que é isso e pra que serve

 

 

Num sistema realmente orientado a objeto, tudo é um objeto. você pode pensar que eles são coisas que interagem entre sí.

 

Se você tem um sitema de locadora, e diz que tem um funcionario que entra no sistema, coloca o numero do cliente e depois a fita, você ja tem 3 objetos: Funcionario, Cliente e Fita. Cada um é um objeto separado.

 

Cliente->Alugar($fita); // por exemplo, onde $fita é uma instancia de

uma classe Fita

 

O que importa é que o seu modelo esteja coerente com alguma ideia. O que não pode é criar por exemplo um objeto "Conexao" e colocar um método "inserir" por exemplo, porque conexão não insere nada.

Mas pode executar... Então muitas vezes é questão de você repensar como você está nomeando algo.

 

A jogada da orientação a objetos é que uma vez que você define o que realmente é um objeto, fica fácil adicionar recursos ao sistema. Por exemplo, hoje na sua locadora um cliente pode alugar fitas.

Amanha você quer que ele alugue DVDs... Se você tem uma classe Locadora com um método "AlugarFita", tudo que precisa fazer é adicionar a nova funcionalidade "AlugarDVD", futuramente um "ComprarFilme"... o objeto continua sendo um Locadora, esse conceito não muda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem eu ja ia comentar isso mas pelo jeito o topico volto ao foco..

esse papo estresado e dramatico sobre oque é certo e errado não estava agregando valor nenhum ao topico.. apenas estava fugindo do assunto ..

 

dúvida é : como eu poderia não repetir a chamada da variável $this->sk ? está correto a forma que estou utilizando ela ?

no mais o post do fabyo agora explica bem a ideia :) relaxa man isso não é o tipo de coisa que se aprende do dia pra noite .. precisa de experiencia ^^

 

mas estamos no caminho .. um dia chegamos la ! *tambem to estudando oop a um tempo.. :P

 

valww

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Estude mais sobre OOP, e entenda os conceitos, boas praticas e metodos estabelecidos por convenção

 

por exemplo essa classe que voce esta tentando fazer, nao tem nada haver e esta tudo errado.

 

Eu não diria que está tudo errado, @Fabyo.

 

Orientação a objetos é um assunto muito complexo, mas quem está aprendendo costuma misturar os padrões de projeto aos conceitos nativos da orientação a objetos e fazer meleca mesmo.

 

Mas só pelo fato de ele ter feito uma classe como essa, já demonstra a qualidade que ele tem de estudar e, principalmente, arriscar.

 

@topic

 

Se eu fosse você, estudaria melhor a orientação a objetos por si só antes de entrar nos padrões, como Singleton.

 

@Fabyo

eu sei que tem coisa errada e que falta muito para que eu diga que sei POO, e acho que seja bastante comum misturar OO com estruturado, não é ?

 

@Daniel

Sim, estou a estudar OO básico, o padrão singleton estava na classe para conexão com o DB pois foi algo que me pasaram para tentar estudar.

 

Bom só pra deixar claro, em momento algum quiz desanimar o nosso colega, é que eu penso assim se a pessoa aprender errado fica mais dificil dela consertar, é legal a pessoal aprender do jeito certo, nem se for pra dar um "Hello World" simples, e ir crescendo com o codigo, doque fazer muita coisa errada e ter que reaprender o que achava que tava certo.

 

bom nao adianta só criticar, vou dar umas dicas

 

Pode parecer besteira, mas é muito importante o nome que voce da para a classe e metodos

nao misture nomes em portugues, e ingles, defina um ou outro.

 

* classe Post, pergunte pra voce mesmo o que é "Post"?, pra que serve "Post" ?

 

* Voce definiu tudo como public, precisa entender o que é isso e pra que serve

 

 

Num sistema realmente orientado a objeto, tudo é um objeto. você pode pensar que eles são coisas que interagem entre sí.

 

Se você tem um sitema de locadora, e diz que tem um funcionario que entra no sistema, coloca o numero do cliente e depois a fita, você ja tem 3 objetos: Funcionario, Cliente e Fita. Cada um é um objeto separado.

 

Cliente->Alugar($fita); // por exemplo, onde $fita é uma instancia de

uma classe Fita

 

O que importa é que o seu modelo esteja coerente com alguma ideia. O que não pode é criar por exemplo um objeto "Conexao" e colocar um método "inserir" por exemplo, porque conexão não insere nada.

Mas pode executar... Então muitas vezes é questão de você repensar como você está nomeando algo.

 

A jogada da orientação a objetos é que uma vez que você define o que realmente é um objeto, fica fácil adicionar recursos ao sistema. Por exemplo, hoje na sua locadora um cliente pode alugar fitas.

Amanha você quer que ele alugue DVDs... Se você tem uma classe Locadora com um método "AlugarFita", tudo que precisa fazer é adicionar a nova funcionalidade "AlugarDVD", futuramente um "ComprarFilme"... o objeto continua sendo um Locadora, esse conceito não muda.

 

@Fabyo

Obrigado pelas dicas e pelo exemplo.

 

 

 

@topic

Relaxem, ninguém me desanimou com nenhum dos comentários. Eu postei justamente pra ter a opnião de quem já sabe, e sim, eu sei que está errado meu code e quase nada é OO e está uma bagunça mesmo, quero aprender com o que eu erro.

 

Se perceberam, defini os atributos todos como public e nem sequer utilizei eles pois não sabia o que fazer praticamente ...

 

Obrigado pelas dicas, continuarei estudando @.@

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Fabyo

eu sei que tem coisa errada e que falta muito para que eu diga que sei POO, e acho que seja bastante comum misturar OO com estruturado, não é ?

 

Amigo, se não se importa, apesar de direcionada ao Fabyo, vou responder essa:

 

Sim, é muito comum para quem está iniciando com orientação a objetos, por ainda não compreender os conceitos, misturar as coisas.

 

Relaxem, ninguém me desanimou com nenhum dos comentários. Eu postei justamente pra ter a opnião de quem já sabe, e sim, eu sei que está errado meu code e quase nada é OO e está uma bagunça mesmo, quero aprender com o que eu erro.

 

Se perceberam, defini os atributos todos como public e nem sequer utilizei eles pois não sabia o que fazer praticamente ...

 

Nos tópicos de PHP Orientado a Objetos, existe um tópico sobre encapsulamento, que tenta explicar sobre visibilidade e ocultação de informações.

 

Veja amigo, ainda estou escrevendo esses tópicos e, diversas vezes, disse que responderei toda e qualquer dúvida sobre o tópico que for feita, então, se não compreendeu algum dos tópicos, poste a dúvida lá, tenha certeza que você não é o único que tem dúvidas e, muito provavelmente, sua dúvida é a dúvida de muitos.

 

Então, não deixe de postar lá, tentarei responder todas as suas dúvidas lá, até que você consiga compreender todos os conceitos da orientação a objetos.

 

;)

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.