NOME DURAÇÃO
Curso PHP
Abertura do Curso de PHP
Visão Geral do PHP
Ambiente de Desenvolvimento PHP
Servidor Web PHP
Como instalar o WAMP no Windows - Curso de PHP
Instalando PHPStorm no Windows
URL e Apache com PHP
Hello World em PHP
Executando Scripts PHP
TAG PHP
Montagem do HTML com PHP
Montagem do HTML com PHP II
Comentários em PHP
Definições da Linguagem PHP
Variáveis em PHP
Variáveis em PHP II
Nomenclatura de Variáveis em PHP
Operadores Aritméticos em PHP
Tipos de Dados do PHP
Módulo da Divisão em PHP
Tomada de Decisão em PHP
Tomada de Decisão - Estrutura else
Ambiente para Estudo PHP
Números Pares e Ímpares em PHP
A instrução elseif
Operadores Relacionais em PHP
Operadores Relacionais Parte II
Operadores Lógicos em PHP
Tela de Login e Senha com PHP
Introdução às Estruturas de Repetição em PHP
Instrução While em PHP
Introdução do-while em PHP
do-while - caso de uso com PHP
Script em Looping em PHP
Atribuição vs Comparação vs Identico em PHP
Operadores de Atribuição Compostos em PHP
Operadores de Incremento e Decremento em PHP
Estrutura de Repetição for do PHP
Estrutura de Repetição for do PHP (parte II)
Tabuada em PHP
Instrução break em PHP
Instrução continue em PHP
Operação Ternária em PHP
Operação Ternária em PHP (parte II)
Estrutura de Seleção Múltipla switch em PHP
Estrutura de Seleção Múltipla switch em PHP (parte II)
Precedência e Associatividade de Operadores em PHP
Constantes em PHP
Variáveis Variáveis em PHP
Introdução aos Arrays em PHP
Arrays Indexados em PHP
Definindo, Incluindo, Alterando e Excluindo elementos em PHP
Função range() em PHP
Iterando Arrays em PHP
Estrutura foreach em PHP
O foreach em PHP - Como usar?
Estrutura foreach - alterando valores internos
Arrays Associativos em PHP
Arrays Multidimensionais em PHP
Manipulação de Arrays em PHP
Introdução às Funções em PHP
Definindo parâmetros em PHP
Parâmetros default com PHP
Lista de Parâmetros em PHP
Lista de Parâmetros em PHP II
Funções variádicas em PHP
Retorno de Valores pela função em PHP
Funções e Escopo de Variáveis em PHP
Parâmetros por Referência em PHP
Parâmetros por Referência em PHP II
Parâmetros Tipados em PHP
Valores de retornos de funções tipados em PHP
Null Coalescing Operator em PHP
Operador SpaceShift em PHP
Importação: include() e require() do PHP
Introdução às Funções Anônimas em PHP
Escopo de nomes das funções anônimas em PHP
Funções Anônimas na Prática com PHP
Funções Anônimas e Arrays com PHP
Introdução às Strings em PHP
Aspas Duplas vs Aspas Simples em PHP
String Aspas Duplas em PHP
String heredoc e nowdoc em PHP
Funções para Manipulação de Strings em PHP
Introdução às Requisições Web em PHP
Método GET em PHP
Formulários HTML e PHP
Método POST com PHP
Variáveis superglobais do PHP
A Orientação a Objetos em PHP
Primeira Classe em PHP
Membros de Classe em PHP
Criação de Objetos em PHP
Acessando Membros de Classe em PHP
Implementando Comportamentos de Classe com PHP
Pseudo-variável $this em PHP
Gerenciando Atributos de Classe em PHP
Construtores em PHP
Construtores Personalizados em PHP
Destrutores em PHP
Encapsulamento em PHP
Encapsulamento em PHP (parte II)
Herança em PHP
Herança com PHP II
Modificadores de Acesso em PHP
Visibilidade das Funções em PHP
Funções Modificadoras em PHP
Sobrescrita de Funções em PHP

Nesta aula teremos uma introdução à Programação Orientada a Objeto e, estudaremos os principais conceitos relacionados.

INTRODUÇÃO

A Orientação a Objetos é uma paradigma de programação, isto é, uma metodologia para o desenvolvimento de software. A definição de orientação, utilizando a definição como sendo um Verbo transitivo direto e indireto, significa, determinar a posição, orientar, indicar o rumo, guiar, dirigir, nortear. Objeto, por sua vez, é tudo que pode ser manipulado, possui características e desempenha funcionalidades.

Podemos aferir que o termo Orientação é o modelo utilizado, o que norteará tudo e, objeto, a definição de cada parte do modelo.

Segundo a análise das definições acima a respeito de orientação e de objeto, podemos aferir também que o Paradigma Orientado a Objetos é o modelo de projeto onde todas as informações serão definidas e utilizadas como sendo objetos, isto é, entidades representativas, ou então, podemos dizer que tudo tornar-se-á objetos e poderá ser manipulado como sendo uma entidade.

A FILOSOFIA E A ORIENTAÇÃO A OBJETOS

O estudo teórico da orientação a objeto está recheado de conceitos filosóficos e suas definições. A primeira, evidentemente, é o conceito da natureza do objeto. Comumente, diz-se que objeto é tudo que é físico e que pode ser visto ou então, segurado nas mãos. Porém, se falarmos sobre empresas, no plural, temos que o conceito é ou não é um objeto?

Para a filosofia clássica, o plural é um conceito abstrato e que só existirá se houver, antes de tudo, alguma empresa fisicamente. A programação orientada a objetos analisa, geralmente, o conceito de empresa abstrato. Da mesma forma podemos perguntar o que é uma floresta? Floresta é a observação de arvores independentes observadas como pertences a um conjunto, no caso - a floresta.

OBJETO

Em nosso mundo, objeto é tudo que é físico e portanto, que pode ser manipulado. Tudo que é físico possui, por definição do termo físico características e portanto, pode desempenhar atividades.

Se tomarmos como exemplo uma pedra, temos que está é um objeto, existe fisicamente, possui propriedades e, pode desempenhar alguma função. Toda pedra desempenha uma função? Não sei lhe dizer, mas garanto que podemos decidir que determinada pedra desempenha alguma funcionalidade. Quais as funcionalidades que uma pedrão pode desempenhar? Tudo que as suas características nos fornecerem como uma forma de utiliza-la.

Toda objeto, ou melhor, todas as pedras possuem características, como por exemplo, peso, dimensão, coloração, densidade, propriedades fisico-químicas e etc. Toda característica pode ser explorada, isto é, servir para algum fim. O peso da pedra, por exemplo, pode ser utilizado para travar uma porta. A coloração de uma pedra pode ser utilizada como decoração de muros e paredes. As propriedades físico-químicas podem ser utilizadas para ativar ou desativar uma reação e assim por diante.

O que precisamos entender nesse momento é que todo objeto possui propriedades e todo objeto possui funcionalidades.

PROPRIEDADES

Propriedade é toda e qualquer característica dos objetos. É importante saber que propriedade, característica e atributo são, na orientação a objetos, sinônimos.

A afirmação de que todo objeto possui propriedades é verdadeira e, aquele que disser o contrário, que demonstre o objeto que não existe, até porque, existir é a primeira propriedade de TODO objeto que, também pode ser considerado uma funcionalidade.

FUNÇÃO

A função é aquilo que o objeto desempenha. Nem todo objeto terá definido funções explicitamente, até porque, há objetos cuja funcionalidade é guardar valores, ou seja, guardar propriedades.

Todo objeto pode desempenhar 2 tipos de funcionalidades: interna e externa. Um objeto pode, por exemplo, alterar suas propriedades sem interagir com o meio em que está contido. Da mesma forma que um objeto pode alterar suas propriedades pela interação com o meio.

INFORMAÇÃO vs PROPRIEDADE

Já estudamos que todo objeto possui propriedades, agora, vamos estudar o que são realmente as propriedades.

É correto dizer que os objetos físicos possuem cor. Logo, todo objeto físico deve ter a propriedade cor, porém, se analisarmos com atenção, objetos não possuem propriedades e sim uma cor propriamente dita. Parece simples e até idiota a análise, no entanto, vejamos que, o projeto de todo objeto possui propriedades, enquanto que os objetos, em sua definição, possuem por exemplo, uma cor e não uma propriedade.

O que temos de entender do conceito exposto é, que a orientação a objetos, inicialmente, trabalha com o projeto de como será cada objeto, em seguida, quando houver um objeto criado através do projeto, teremos algo físico que possui características que, iremos chamar de propriedades, mesmo sabendo que somente o projeto é que possui a definição de propriedade.

Podemos resumir todo o exposto pela análise do conjunto e da unidade. A POO faz com que criemos entidades representativas e, nos obriga a definir as propriedades e funcionalidades dessas entidades. Podemos dizer então, que num primeiro momento estaremos trabalhando com o conjunto, isto é, definimos as características e funcionalidades que todos objetos criados terão. Em seguida, após definir o projeto, escreveremos que desejamos que seja criado um objeto e que este possua determinados valores segundo as propriedades anteriormente definidas. Assim, temos que entender as 2 fases da POO, onde a primeira será a definição do projeto e a segunda a utilização propriamente dita.

OBJETOS ESPECIALIZADOS

Especialização é o aprimoramento de determinada característica. Se estudarmos as frutas, inicialmente iremos definir o conceito de fruta propriamente dito. Em seguida, iremos por exemplo, estudar as melancias que são, antes de mais nada frutas, porém, possuem características únicas.

A análise de frutas de maneira geral é o projeto pelo qual todas as frutas são baseadas, logo, é correto dizer que, todas as frutas possuem um conjunto de características e funcionalidades iguais. Assim, quando formos definir o projeto da melancia iremos utilizar como base o projeto das frutas, do contrário, teremos projetos redundantes.

O projeto das melancias terá definições que toda melancia possui, logo, quando criarmos uma melancia através deste projeto, teremos um objeto que é, ao mesmo tempo uma fruta e uma melancia. Isso porque, a melancia foi projetada se valendo do projeto das frutas, logo, toda melancia é uma fruta, mas nem toda fruta será uma melancia.

DEFINIÇÃO DE OBJETOS QUE NÃO SÃO OBJETOS

O estudo filosófico da OO é sem dúvida intrigante, até porque, o mesmo nos orienta a representar toda e qualquer informação como sendo entidades isoladas. Porém, muitas serão as entidades que precisaremos criar uma representação física, porém, no mundo real, a mesma possui uma definição abstrata.

Tomemos por exemplo o setor de RH e a necessidade de informatizar o mesmo. Para isso, nossa primeira atividade será, o estudo de como o setor funciona. Vamos criar uma situação hipotética para facilitar o estudo.

Observamos que o setor de RH faz o cadastro dos colaboradores. O RH também gerencia aqueles que desejam se tornar colaboradores. O RH define o salário e a função de cada colaborador e, conforme a função definida pelo RH para determinado colaborador, este terá acesso as várias partes do nosso programa.

Então, concluimos que, o setor de RH precisa, num primeiro momento de um cadastro de colaboradores e de um cadastro daqueles que desejam tornar-se colaboradores. Logo, desenhamos num papel que:

Colaboradores * Nome * Idade * Cargo * Ativo/Demitido * Data admissão

Acabamos de definir algumas propriedades dos colaboradores, e coloca-mo-as numa espécie de lista. Assim, temos as propriedades, agora, quais seriam as funções desses colaboradores? Nesse momento vamos deixar essa resposta em aberto.

Vamos supor que tenhamos programado um cadastro que contenha a lista de informações elucidadas para os Colaboradores. Esse cadastro nos forneceu a capacidade de Incluir, Alterar e Excluir Colaboradores. Até esse momento, o nosso trabalho foi a implementação de algo que ocorre fisicamente, isto é, quando não há um sistema informatizado, há papeis, formulários físicos que são utilizados para este fim.

Agora vamos supor que um Colaborar tenha sido demitido, logo, vamos marcar o campo Ativo como sendo igual a Falso, até porque, o Colaborador não está ativo. Agora, vamos supor que 2 anos depois o Colaborador foi re-contratado pela empresa, logo, quando o RH for fazer o cadastro, o mesmo não poderá cadastrar alguém que já possui cadastrado, correto? Então, num primeiro momento concluímos que, o RH marque o cadastro do Colaborador como sendo ativo e num primeiro momento, passamos a acreditar que tudo está funcionando normalmente.

Em um determinado dia, um chefe resolve analisar os lucros da empresa e, para isso, o mesmo utilizará o nosso sistema. Logo, o mesmo gera um relatório que contém toda a receita da empresa no ano passado menos o valor das despesas. A primeira pergunta a ser feita é: o Colaborador que teve o seu cadastrado recém ativado estará ou não no cálculo das despesas do ano que passou? Se o nosso sistema funcionar segundo a definição que acabamos de estudar, o colaborador será considerado uma despesa caso a data de admissão seja igual a data da sua primeira contratação. Porém, se alterarmos a data de admissão, este problema está resolvido! Mas, se o chefe quiser um relatório de lucro de 2 anos atrás, isto é, da época em que este colaborador estava ativo, o mesmo não entrará no relatório, até porque, a sua data de admissão foi alterada!

Deste problema concluímos que, além do cadastro de colaboradores, é necessário um cadastro do período trabalhado. Agora, após a análise do problema, acabamos por ter uma informação que é totalmente abstrata e, o pior de tudo, a mesma nem possui um nome propriamente dito e a mesma nem existia na época em que não havia o nosso sistema! Obviamente que, o nosso programa irá criar uma entidade, isto é, um objeto para representar esse fenômeno, porém, na prática, a contratação e a demissão são objetos ou simplesmente ações?

A moral da análise anterior é que com a POO, tudo tornar-se-á objetos, que possuirá identificador, propriedades e funcionalidades, porém, o paradoxo é que no mundo físico não há objeto de admissão e demissão, mas, no mundo virtual, onde não existem objetos físicos, haverá um objeto que conterá a definição de contratado, demitido, e em qual período ocorreu... o objeto ou a ação?



Tags curso, php, programação orientada a objetos, poo

Comentários

comments powered by Disqus