Ir para conteúdo

Arquivado

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

João Batista Neto

1.1 - Classes X Objetos

Recommended Posts

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.

Imagem Postada

 

 

Próximo :seta:

 

 

 

 

Índice :seta:

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótima explicação João. Irei indicar o artigo na sala de aula para alguns colegas lerem.. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 =\

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

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.