Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Cada vez mais a programação orientada a objetos tem se tornado popular entre os desenvolvedores e, cada vez mais, equívocos causados pela má compreensão ou pela ausência de informações em idioma português tem confundido o conceito e causado problemas durante o desenvolvimento.
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.
Segundo a Wikipedia, Orientação a objetos é:
A orientação a objetos, também conhecida como Programação Orientada a Objetos (POO), ou ainda em inglês Object-Oriented Programming (OOP) é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos.
Mas, o que isso realmente significa ?
Para se compreender programação orientada a objetos é fundamental se compreender o que é, de fato, um objeto.
Olhe a sua volta, o que vê ?
Para quem respondeu: "mesa, cadeira, computador, portas, janelas, etc, etc, etc..." está correto; Mas de uma forma mais simplista, tudo o que você vê a sua volta são coisas, e é justamente isso que são, objetos são coisas, coisas reais que têm funções e características reais no mundo real.
Programar orientado a objeto é trazer para a programação os aspectos reais das coisas reais, justamente da forma que elas estão do lado de fora, coexistindo em harmonia e colaborando umas com as outras.
Vamos pensar em uma porta:
1. É feita de madeira (a minha é).
2. Possui 2 metros e alguma coisa por 1.5 metros aproximadamente
3. A cor simula o mogno.
4. Possui em uma das extremidades uma fechadura, feita de ferro.
5. Possui na outra extremidade duas dobradiças que permitem que a porta seja aberta e fechada quando necessário.
Agora, uma pergunta: Uma porta tranca ?
Sim, é possível trancar uma porta, mas isso só é possível porque existe uma fechadura em uma das extremidades, então, na prática, usa-se as propriedades de resistência do ferro, que foi modelado como uma fechadura, para trancar a porta, não seria possível trancar a porta se não tivéssemos tal aparato.
Da mesma forma, a porta fecha ?
Sim, a porta abre e fecha, mas isso só é possível porque existe dobradiças na outra extremidade.
Proceduralmente falando:
"Fulano, destranque a porta, abra-a e passe para o outro lado"
Todo o foco do procedimento é a porta, não se leva em consideração tudo o que compõe a porta, quando programamos orientado a objetos deixamos que cada partícula tenha sua própria responsabilidade.
É claro que vamos, no final, simplesmente abrir a porta, mas deixaremos que a fechadura faça o trabalho dela e depois que as dobradiças permitam que a porta seja levada para frente e para trás.
No ambiente procedural, se qualquer coisa falha, todo o procedimento falha.
Na orientação a objetos, se a dobradiça emperra, trocamos-a por uma nova.
Agora que compreendemos o que são objetos, vamos pensar um pouco em o que é uma classe.
Olhando exclusivamente para a parte de madeira da nossa porta:
1. Antes era uma árvore.
2. Foi processada e virou madeira.
3. Foi processada e virou porta.
Apesar de ter sido transformada, nossa porta ainda possui características de quando era árvore, e também herda características de quando foi transformada em madeira, porém, não podemos colocar uma árvore para fechar nossa porta, tão pouco um pedaço de madeira.
Uma classe não é um objeto, uma classe define um conjunto de características que um conjunto de objetos possui.
Uma empresa precisa de um executivo para ocupar uma vaga específica:
Uma classe de Pessoas não atenderá a empresa, porque ela precisa de alguém jovem.
Uma classe de Jovens não atenderá a empresa, porque ela precisa de alguém formado em administração.
Uma classe de Formados não atenderá a empresa, porque ela precisa de alguém que já tenha trabalhado antes na mesma posição.
Uma classe de Profissionais atenderá essa empresa.
Como fica claro, a empresa precisa de Pessoas, Jovens, Formados e Profissionais para ocupar essa vaga, com essas características poderemos encontrar vários profissionais:
Fulano, Beltrano, Cicrano, etc...
Cada um desses Profissionais, em orientação a objetos, são de fato um objeto, da classe Profissionais..
Então, tão simples quanto: objetos são coisas, classes agrupam coisas segundo suas características.
Bom, por hora é só, no próximo artigo da série PHP Orientado a Objetos, vamos falar sobre como construir um objeto em PHP e um pouco sobre herança de classes.
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/wink.gif&key=0566fd943552bcff9cb1b879403ca34b5ff8f67befaac7fe4648006e9f764689" alt="Imagem Postada" class="bbc_emoticon">
boaa fera =] mestre joão como sempre esta de parabens !
Como sempre, explicações simples e de fácil compreensão.
João - o mestre da OO. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Carlos Eduardo
Boa introdução!
Ficarei ansioso para a proxima ^_^
Com a empolgação do Mestre João, em dar essas belas aulas, só não aprende quem realmente não quer.
Parabéns!!!!!!
>
Parabéns!!!!!!
;)
Não deixe de acompanhar os próximos.
Gostei, esse vou acompanhar.
O de Haskell não consegui! =/
>
O de Haskell não consegui! =/
Não deixem de fazer perguntas se houverem dúvidas, até aqui está tudo muito simples, mas logo, todos nós, estaremos fazendo coisas mais complexas, então é de fundamental importância que a base seja sólida para que não nos percamos lá na frente.
Não consegui pelo fato de que não estava entendendo, é porquê eu queria um compilador e não me deixaram instalar aqui no serviço.
E no pc de casa estou sem espaço no HD =\
Obrigado
Muito legal, o conceito do modo como descreveu.
Abs
Excelente! Parabéns!
Top de linha, quero mais PHP João!
Galera eu gostaria de saber o que é: error_reporting(E_ALL);
Se trata de um método? o que é exatamente!! by: Iniciante.
>
Top de linha, quero mais PHP João!
Galera eu gostaria de saber o que é: error_reporting(E_ALL);
Se trata de um método? o que é exatamente!! by: Iniciante.
error_reporting() é uma função para alterar em tempo de execução o valor da diretiva error_reporting presente no PHP.INI.
É sempre uma boa prática iniciar os códigos com uma chamada à essa função para que nenhum erro o prática de má programação (a.k.a POG) seja feita.
Porém, desde o PHP 5, em que E_STRICT foi introduzida e/ou deixou de fazer parte de E_ALL, o valor mais adequado para a função é a junção, com o pipe / barra vertical ( | ), dessas duas constantes pré-definidas
olha...... sem dúvida esse tutorial é excelente!!!
vou ler, ler, e reler :lol:
fico feliz de ter feito meu cadastro aqui no IM http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
obrigado pelo excelente tuto!
Parabéns pela aula João. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Exelente João! Simplismente maravilhoso.
Esse seu texto foi bem como um poema complexo mais de facíl entendimento.
Rico e limpo!
Estava na correria assistindo um curso em vídeo aulas de POO e em horas de curso não compriendi bem sobre objetos e classes.
Fiquei meio vooando sobre o sentido destes elementos e 10 minutos de leitura é tudo tão claro.
Grato!
>
Parabéns pela aula João. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Muito bom .. vlw msm . ajudou muito
Ótimo e bem esclarecedor ! Muito obrigado ! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
Parabéns pela aula, muito interessante ensina muito bem.
Parabéns destes forma ficou muito fácil entender.
Otimo João ..!! :joia:
Muito bom artigo!
Mais bem explicado impossível!
ola gostaria de uma ajuda estou começando agora com POO
estou com uma duvida sobre esse codigo
nocaso abaixo tenho uma classe que tem esse metodo dentro dela
gostaria de saber qual ea função do "parent::" no caso abaixo
class minha_classe {
public function metodo(){
parent::metodo();
}
}
Ótima explicação João. Irei indicar o artigo na sala de aula para alguns colegas lerem.. :)