Escolar Documentos
Profissional Documentos
Cultura Documentos
com
Introdução à
1.1 Orientação a Objetos
Anotações
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
2
Objetivos da Aula
Anotações
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
3
Paradigma de Programação Orientada a
Objetos
POLIMORFISMO HERANÇA
POO
ABSTRAÇÃO ENCAPSULAMENTO
Abstração
Abstrair um elemento do mundo real, representá-lo como um objeto, consiste em
considerarmos apenas suas propriedades mais relevantes de acordo com a aplicação. Dessa forma,
temos uma representação mais abrangente.
É necessário dar uma identidade ao objeto, identificar suas características mais relevantes
que se tornarão propriedades do objeto e, por fim, identificarmos as ações que o objeto executará,
que serão traduzidas como métodos.
Um exemplo simples:
Imagine a abstração de um carro. Quais características nosso objeto carro possuiria? Cor,
quantidade de portas, potência do motor, modelo, combustível, etc.
E quais ações o carro executa? Dar partida no motor, acelerar, frear, trocar de marcha…
Encapsulamento
Encapsulamento é um conceito de programação orientada a objetos que associa os dados
às funções que manipulam os dados, mantendo ambos seguros contra interferência externa e má
utilização.
Alguns dados são resultado de operações complexas e não podem ser simplesmente
atribuídos. Imagine, por exemplo, o saldo de uma conta corrente, que é o resultado das diversas
entradas e saídas de dinheiro da conta. Não podemos simplesmente atribuir um valor a esta
propriedade, ela deve ser protegida.
Métodos podem ser definidos para conter regras sobre como atribuir corretamente o valor
das propriedades. Tais métodos são conhecidos como getters e setters, pois sua função é
justamente obter e definir o valor de uma propriedade.
Herança
A herança é uma característica muito interessante da programação orientada a objetos, pois
permite que façamos reuso de código. Um objeto herda todas as características de seu “ancestral”,
podendo fazer uso das propriedades e métodos herdados.
Podemos ter um objeto Pessoa com propriedades que representam características comuns
como nome, sobrenome, data de nascimento. E podemos ter um objeto Aluno que herda as
características de Pessoa e, ainda, acrescenta dados específicos como graduação, notas e cursos
que frequenta. Da mesma forma, podemos ter um Professor que também herda de Pessoa, mas
possui dados diferentes de Aluno, como as disciplinas que ensina.
Polimorfismo
O termo polimorfismo é originário do grego e significa "muitas formas" (poli = muitas,
morphos = formas). Um dos tipos de polimorfismo é a possibilidade de sobrescrever métodos
herdados.
Imagine uma situação em que você tem um objeto Conta que possui um método depositar.
Esse método simplesmente recebe um valor como parâmetro e o soma ao saldo da conta. Em
tipos diferentes de conta o depósito pode ser um processo mais complexo. Nesse caso, se
tivermos uma ContaPoupanca que herda de Conta, poderíamos alterar o método depositar de
ContaPoupanca, para que se adeque às necessidades.
Documento produzido pela 4Linux
4
Rodrigo Silva Luz / rodrigosilvaluz3@gmail.com
5
Boas Práticas de Desenvolvimento
Boas Práticas
Apesar de todas as ferramentas que existem para auxiliar o trabalho e agilizar todo o
processo, é necessário que saibamos trabalhar com boas práticas, para que o projeto corra bem e
de forma eficiente, principalmente quando lidamos com um trabalho em grupo.
Há diversos princípios comuns de design que, assim como os design patterns, se tornaram
boas práticas através dos anos e ajudaram na formação de uma base sobre a qual softwares de
fácil manutenção e nível empresarial podem ser construídos. Abaixo, apresentamos um resumo dos
princípios mais conhecidos:
Se este conceito for aplicado, a modificação de uma parte do sistema não leva a modificações
em outras partes não relacionadas. Adicionalmente, todos os elementos relacionados mudam de
forma previsível e uniforme, mantendo-se, portanto, sincronizados.
You Ain't Gonna Need It (YAGNI) – Você não vai precisar disso
É um princípio que sugere aos programadores que não adicionem funcionalidades ao código
fonte de um programa até que elas sejam realmente necessárias. Sempre se deve implementar
coisas que sejam realmente necessárias, nunca o que se prevê que possa ser um dia.
Classes e Objetos
Propriedades e Métodos
1.2 Constantes de Objeto
Anotações
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
8
Objetivos da Aula
Anotações
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
9
Classes e Objetos
Classes e Objetos
Uma vez que temos a classe definida, podemos criar um objeto. É importante compreender
bem os dois conceitos (Classe e Objeto).
Um objeto é a instância de uma classe, voltando à analogia da casa, se a classe é como a
planta de uma casa o objeto é a casa construída, o objeto é construído na memória do
computador e, a partir daí, suas propriedades e métodos podem ser utilizados.
Trabalhamos então com dois contextos, o de classe, onde definimos os recursos
necessários e o de objeto, onde temos as definições em execução.
Para criarmos um objeto (instância da classe) usamos a palavra-chave new, a não ser que
você tenha definido um método construtor que dispare um exceção em caso de erro, um objeto
sempre será criado.
É comum atribuir a uma variável a referência de um objeto, veja abaixo:
Se tivermos uma string com o nome da classe (em uma variável, por exemplo) e passarmos
essa string para o new, uma nova instância da classe será criada:
11
Propriedades e Métodos
Propriedades Métodos
Quantidade de cômodos
Medidas dos cômodos Trancar a portas
Tamanho do terreno Fechar as janelas
Cor das paredes Acender as luzes
Tipo de piso Abrir a torneira
Pé direito Ligar o ar condicionado
Número da casa
Propriedades e métodos
Um método nada mais é do que uma função definida dentro de uma classe. Para definir um
método usamos as palavras-chave public, protected ou private, assim como a propriedade. O nome
do método também segue as mesmas regras do nome de propriedade.
Um método pode ou não conter parâmetros e retornar valores. Também podemos definir o
type hinting de parâmetros e de retorno.
Exemplo de definição simples de um método:
12
Constantes de Objeto
Propriedades
Constantes de Objeto
Podemos definir constantes em uma classe. Por padrão, elas têm visibilidade pública. O valor
deve ser uma expressão constante, não podendo ser, por exemplo, uma variável, uma propriedade,
ou uma chamada a uma função. As constantes de classe são alocadas (carregadas na memória) por
classe, e não em cada instância da classe.
Para acessarmos uma propriedade ou método usamos o operador de acesso ->. As constantes
de classe são membros estáticos. Portanto, para acessá-las, utilizamos o operador de resolução de
escopo ::, conhecido como Paamayim Nekudotayim, que significa dois pontos duplos em Hebreu.
13
Carregando Classes automaticamente
(autoloading)
Função __autoload()
15
Clonando Objetos
1.3
Anotações
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
16
Objetivos da Aula
Anotações
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
__________________________________
17
Clonagem de objetos utilizando a palavra-
chave clone
$objeto 1 $objeto 1
$objeto 2 $objeto 2
Atribuir o valor de
uma variável à outra
NÃO É clonagem!
Clonando objetos
Para criarmos um novo objeto, utilizamos a palavra-chave new e uma atribuição à uma
variável, como demonstrado abaixo:
Fica fácil imaginar que se quisermos uma “cópia” deste objeto basta criarmos uma nova
variável “copiando” a primeira:
19
Método mágico __clone()
Método __clone()
É possível usar o método __clone() para qualquer tipo de operação que deva ser feita nos
clones, logo após a clonagem.
Saída do script após as alterações: