Sunteți pe pagina 1din 168

Tecnologias de

Desenvolvimento para Internet II


Prof. Fábio Junior Alves
E-mail: faguanil@gmail.com
Bibliografias Básica e Complementar

• SILVA, M. S. Construindo Sites com CSS e (X)HTML.


Novatec, 2007.

• SILVA, M. S. HTML5, A linguagem de marcação que


revolucionou a web. Novatec, 2011.

• BEIGHLEY, L; MORRISON, M. Use a Cabeça! PHP &


MySQL. Alta Books, 2010.

• FREEMAN, E; FREEMAN, E. Use a Cabeça HTML


com CSS e XHTML. 2. ed. Alta Books, 2008.
Bibliografias Recomendadas

• Manual do PHP:
– http://www.php.net/manual/pt_BR/
Sites de Consulta PHP OO

• http://excript.com/curso-php.html

• https://www.youtube.com/watch?
v=KlIL63MeyMY&list=PLHz_AreHm4dmGuLII3tsvryMMD
7VgcT7x

• http://cafeesoftware.com/curso-de-php-orientado-a-
objetos/

• http://www.cpscetec.com.br/adistancia/poo_php/intro.htm
l
Instalação e Configurações Iniciais

• Para desenvolver programas em PHP, são


necessário:

– Servidor Web instalado e ativado;


– PHP ativado no servidor Web ;
– MySQL para interação com Banco de Dados;
Sugestão de Ambientes de
Desenvolvimento PHP
• Site: http://www.wampserver.com/en/

• Site: https://www.apachefriends.org/pt_br/index.html
WampServer
Ferramenta para Desenvolvimento

• Editores de Texto de Código Fonte

• Integrated Development Environment (IDE)


NetBeans Configurando o Serv
idor
NetBeans Configurando o Servidor
NetBeans Configurando o Servidor
Criando o Primeiro Projeto
Criando o Primeiro Projeto
Criando o Primeiro Projeto
Introdução a Programação Estruturada

• A programação estruturada introduziu conceitos


importantes na engenharia de software em sua época;

• É baseada fortemente na modularização;

• A ideia da modularização é dividir o programa em


unidades menores conhecidas por procedimentos ou
funções, que são construídas para desempenhar uma
tarefa específica;
Introdução a Orientação a Objetos

• A orientação a objetos tem sua origem nos anos 60 na Noruega, com


Kristen Nygaard e Ole-Johan Dahl, no Centro Norueguês de
Computação. Por meio da linguagem Simula 67, foram introduzidos os
conceitos de classe e herança.

• A orientação a objetos foi mais bem conceituada no laboratório da


Xerox, em Palo Alto, sendo refinada numa sequência de protótipos da
linguagem Smalltalk. O líder desse projeto foi Alan Curtis Kay,
considerado um dos criadores do termo “Programação Orientada a
Objetos”.
Introdução a Orientação a Objetos

• Entretanto, a popularização da POO só se deu ao


longo da década de 80 e 90, com as linguagens C++
e Java.

• Atualmente o PHP5 oferece um suporte muito rico


em termos de OO. Com o PHP5 o PHP ganhou uma
completa infraestrutura de orientação a objetos.
Introdução a Orientação a Objetos

• A Programação Orientada a Objetos (POO) é um


paradigma de programação de computadores que usa
os conceitos de Objetos e Classes como elementos
centrais para representar e processar dados usados nos
programas.

Segundo o dicionário Houaiss, paradigma significa modelo,


padrão, exemplo. Assim um paradigma de POO é a maneira
como pensamos e iremos fazer nossos programas.
Introdução a Orientação a Objetos

• Na programação estruturada, um programa é construído por meio de


funções e procedimentos.

• Na programação OO, a forma de pensar é diferente. Um programa é visto


como um conjunto de objetos que se comunicam através de mensagens.

• Dessa forma, um sistema (programa de computador) desenvolvido usando


a POO possui objetos que colaboram entre si, executando tarefas
específicas em busca de um objetivo comum.
Introdução a Orientação a Objetos

• Siglas
– OO: Orientação a Objetos;
– LOO: Linguagem Orientada a Objetos;
– POO: Programação Orientada a Objetos;

• Características
– Códigos pertencem a classes;
– Classes possuem propriedades próprias;
– Classes possuem funcionalidades próprias;
– Classes interagem com outras classes;
Pilares da Programação Orientada a
Objetos
• Abstração;
• Herança;
• Polimorfismo;
• Encapsulamento.
Objeto

• Na modelagem de sistemas, um objeto é qualquer coisa


existente no mundo real, em formato concreto ou
abstrato, ou seja, que exista fisicamente ou apenas
conceitualmente.

• Ou seja, os objetos são usados para representar


aqueles elementos e abstrações que fazem parte da
solução do programa que estamos desenvolvendo.

• São exemplos de objetos: aluno, professor, mesa,


cadeira, caneta, automóvel, disciplina, estoque, etc.
Objeto - Atributos

• Os objetos possuem características ou propriedades que


são seus atributos.

• Esses atributos identificam o estado de um objeto.


Objeto – Operações/Métodos

• Além dos atributos, os objetos possuem


comportamentos que modificam seu estado ou prestam
serviços a outros objetos. Nesse caso, estamos falando
de suas operações ou métodos.

• Se um funcionário possui o atributo Salário, este deve


ser atualizado por operações do tipo Reajustar Salário.
Objeto - Operações/Métodos
Objeto – Exemplo de Atributos e Métodos
Classe

• Quando identificamos características e operações similares em


objetos distintos, estamos realizando sua classificação, ou seja,
identificando classes.

• Uma classe é a representação de um conjunto de objetos que


compartilham a mesma estrutura de atributos, operações e
relacionamentos, dentro de um mesmo contexto.

• Abstração define as características que a classe vai possuir.

Assim, uma classe especifica a estrutura de um objeto sem


informar quais serão seus valores
Classe

• Cada classe funciona no fundo como um molde para a


criação de um dado objeto.

• Os objetos são vistos como representações concretas


(instâncias) das classes.

• Uma classe pode ter qualquer número de atributos ou


mesmo nenhum atributo. Da mesma forma, pode ter
qualquer número de operações ou mesmo nenhum
método.
Classe

• Para exemplificar, pense num formulário de inscrição.

• A secretária de uma empresa cuidadosamente desenha


esse formulário para ser preenchido pelos clientes,
criando uma matriz. Todavia, o que lhes é entregue é
uma xerox dessa matriz e não a original.
Classe

• Outro exemplo seria: a coluna Documento define a


classe (especificação) enquanto as colunas Documento
1 e Documento 2 são os objetos desta forma, cada
documento particular terá um valor diferente para os
atributos definidos na especificação.
Classe e Objeto

• Exemplo:
Classe e Objeto

• Exemplo:
Classe e Objeto

• Exemplo:
Classe e Objeto

• Exemplo:
Classe e Objeto

• Exemplo:

Objeto Atributos:
• Raça
• Latido
• Velocidade

Métodos:
• Alimentar
• Correr
• Atacar
Classe e Objeto

• Exemplo:

Objeto Atributos:
• Cor
• Marca
• Combustível

Métodos:
• Andar
• Parar
• Ligar
Anatomia de uma Classe Java
Definindo Classe e Método

• Exemplo:
Criando um Objeto

• Operador new;
• Cria uma instância a partir de uma classe;
• Exemplo:
Criando um Objeto - Exemplo
Criando um Objeto - Exemplo
Pseudo-Variável $this

• Usa-se o $this para fazer uma diferenciação entre


atributos de instância e parâmetros de métodos.

• Ou seja, o $this acesso os membros (Atributos e


Métodos) da própria classe.

• Assim, torna-se possível usar o mesmo nome de


variável para parâmetro de método e atributo de
instância, obtendo um código mais legível e amigável.
Pseudo-Variável $this

• Para acessar um membro de classe, utilizamos a pseudo-


variável $this, em seguida utilizamos o -> operador seta e por
fim, o nome do membro definido pela classe.

• Exemplo:
Dúvidas
Construtores

• São blocos de instrução, semelhante a um método(porém,


não o são) utilizados para inicializar os objetos.

• Toda vez que um objeto é criado, um construtor da classe


correspondente deve ser chamado.

• Mesmo quando nenhum construtor for definido


explicitamente, há um construtor padrão que será inserido.

• O construtor padrão não recebe parâmetros e será inserido


sempre que o desenvolvedor não definir pelo menos um
construtor explicitamente.
Construtores

• O construtor é um bloco de código que será invocado só e


somente só na criação de novas instâncias.

• Quando usamos a palavra chave new, estamos construindo um


objeto. Sempre quando o new é chamado, ele executa o construtor
da classe.

• Dessa forma, se você adicionar um construtor com parâmetros


então não poderá utilizar o comando new sem passar argumentos,
pois um erro de compilação ocorrerá.

• O construtor se resume a isso! Dar possibilidades ou obrigar uma


classe a passar argumentos para o objeto durante o processo de
criação do mesmo.
Definição

• O nome do construtor de todas as classes sempre será


__construct().

• Dessa forma, é fácil identificarmos o construtor da


classe, até porque, todas utilizarão o padrão.
Construtores – Exemplo 1
Construtores – Exemplo 2
Construtores – Exemplo 3
Destrutores

• Os destrutores são funções que se encarregam de realizar


as tarefas que se necessita executar quando um objeto
deixa de existir.

• Quando um objeto já não está referenciado por nenhuma


variável, deixa de ter sentido que esteja armazenado na
memória, portanto, o objeto deve ser destruído para liberar
seu espaço.

• A função que destruirá a instância e removerás qualquer valor


associado possui o nome de __destruct().
Garbage Collector

• O coletor de lixo, ou então, o Garbage Collector é uma


entidade especializada em remover os dados da
memória que não estão mais sendo utilizados.

• O coletor de lixo como o agente responsável em liberar


toda e qualquer informação que não esteja mais em uso
e principalmente, fazer todo esse trabalho de
gerenciamento e averiguação de quais instâncias não
estão mais em uso num bloco de instrução.
Destrutores – Exemplo 1
Construtores – Exemplo 2
Construtores – Exemplo 3
Dúvidas
Encapsulamento

• Ocultar partes independentes da implementação, permitindo construir


partes invisíveis ao mundo exterior.

• Mecanismo que provê proteção de acesso aos membros


internos de um objeto.
Encapsulamento

• Lembre-se que uma classe possui responsabilidade sobre os


atributos que contém.

• Dessa forma, existem certos atributos de uma classe que


devem ser tratados exclusivamente por métodos dela
mesma, que são implementações projetadas para manipular
esses atributos de forma correta.

• Os atributos não devem ser acessadas diretamente de


fora do escopo de uma classe, pois dessa forma a classe
não fornece mais garantias sobre os atributos que contém,
perdendo, assim, a responsabilidade sobre eles.
Encapsulamento

• A figura abaixo demonstra que os métodos devem ser


projetados de forma a protegerem seus atributos,
fornecendo interfaces para a manipulação destas.
Encapsulamento

• Para atingir o encapsulamento, uma das formas é definir a


visibilidade dos atributos e dos métodos de um objeto.

• A visibilidade define a forma como esses atributos ou


métodos devem ser acessados.

• Esta visibilidade é atingida pelos modificadores de acesso.

• É comum dizer que os modificadores de acesso alteram a


visibilidade dos membros de classe, até porque, cada
modificador define o nível de visibilidade e assim, temos
membros visíveis em diferentes partes de um código.
Modificadores de Acesso

• A linguagem PHP, disponibiliza 3 modificadores de acesso:

+Public: membros declarados como public poderão ser acessados


livremente a partir da própria classe em que foram declarados, a partir de
classes descendentes e a partir do programa que faz uso dessa classe.

#Protected: membros declarados como protected somente podem ser


acessados dentro da própria classe em que foram declarados e a partir de
classes descendentes, mas não poderão ser acessados a partir do
programa que faz uso dessa classe.

-Private: membros declarados como private somente podem ser


acessados dentro da própria classe em que foram declarados. Não
poderão ser acessados a partir de classes descendentes nem a partir do
programa que faz uso dessa classe.
Modificadores de Acesso –
Exemplo 1
Modificadores de Acesso –
Exemplo 2
Modificadores de Acesso –
Exemplo 3
Modificadores de Acesso –
Exemplo 4
Modificadores de Acesso –
Exemplo 5
Modificadores de Acesso –
Exemplo 6
Modificadores de Acesso –
Exemplo 7
Modificadores de Acesso

Geralmente utilizados da
seguinte forma:
– Atributos são
declarados como
private;

– Métodos são
declarados como
public;

– Métodos auxiliares
são declarados
como private;
Dúvidas
Getters e Setters

• Permitem interagir com os atributos;

• Get: método que retorna o atributo, é sempre composto pela


palavra get[nome do atributo].
– Método assessor, utilizado para acessar o valor de um atributo,
mantendo a segurança de acesso ao atributo;

• Set: método que atribui/modifica o valor de um atributo, é


sempre composto pela palavra set[nome do atributo] e o
parâmetro do mesmo tipo do atributo.
– Método modificador, utilizado para modificar o valor de um
atributo, mantendo a segurança de acesso ao atributo.
Necessita de um parâmetro para trabalhar.
Getters e Setters – Exemplo 1
Getters e Setters – Exemplo 2
Dúvidas
Revisão do Conteúdo

• Revisão 1 • Revisão 3

• Revisão 2
Hora de Praticar

Primeira Lista de Exercícios


Data da Entrega: 12/02/18
Forma de Entregar: Postar no site
Interfaces

• Na etapa de projeto do sistema, podemos definir


conjuntos de métodos que determinadas classes do
nosso sistema deverão implementar incondicionalmente.

• Tais conjuntos de métodos são as Interfaces, as quais


contêm a declaração de métodos de forma prototipada,
sem qualquer implementação.

• Interface implementa uma lista de serviços fornecidos


por um componente. É o contato com o mundo exterior,
que define o que pode ser feito com um objeto dessa
classe.
Interfaces

Interfaces
Interfaces

• Interfaces permitem a criação de códigos que


especificam quais métodos uma classe deve
implementar, sem definir como esses métodos serão
tratados.

• Interfaces são definidas da mesma forma que classes,


mas com a palavra-chave interface substituindo class e
com nenhum dos métodos tendo seu conteúdo definido.

• Todos os métodos declarados em uma interface devem


ser públicos, essa é a natureza de uma interface.
Interfaces

• Para implementar uma interface, o


operador implements é utilizado.

• Toda classe que implementar uma interface deverá


obrigatoriamente possuir os métodos predefinidos
na interface; caso contrário, resultará em erro.

• Classes podem implementar mais de uma interface se


assim for desejado, separando cada interface com uma
vírgula.
Interfaces – Exemplo 1
Interfaces – Exemplo 2
Diagrama da UML
Interfaces – Exemplo 3
Interfaces – Exemplo 4
Dúvidas
Associação, Agregação e
Composição
Associação

• Associação é a relação mais comum entre dois objetos,


de modo que um possui uma referência à posição da
memória onde o outro se encontra, podendo visualizar
seus atributos ou mesmo acionar um dos seus métodos.

• A forma mais comum de implementar uma associação é


ter um objeto como atributo de outro.
Diagrama da UML
Associação – Exemplo 1
Diagrama da UML
Associação – Exemplo 2
Agregação

• A agregação indica que uma das classes do


relacionamento é uma parte, ou está contida em outra
classe.

• É um tipo especial de associação onde tenta-se


demonstrar que as informações de um objeto (chamado
objeto-todo) precisam ser complementados pelas
informações contidas em um ou mais objetos de outra
classe (chamados objetos-parte).

• Conhecemos como todo/parte.


Agregação

• Para agregar muitas instâncias, a forma mais simples é


utilizando arrays. Criamos um array como atributo da
classe, sendo que o papel deste array é armazenar
inúmeras instâncias de uma outra classe.

• Um exemplo muito falado sobre esse tipo de relação, é


quanto ao carrinho de compras e seus produtos. A
classe carrinho de compras (Todo) precisa da classe
produtos (Parte) para executar suas ações.
Diagrama da UML
Agregação – Exemplo 1
Agregação – Exemplo 1
Agregação – Exemplo 1
Diagrama da UML
Agregação – Exemplo 2
Agregação – Exemplo 2
Agregação – Exemplo 2
Agregação – Exemplo 2
Composição

• Composição também é uma relação que demonstra uma


relação todo/parte.

• A diferença da composição para a agregação é que


quando o objeto “todo” é destruído, suas partes também
são, exatamente por terem sido criadas pelo objeto “todo”.

• O objeto pai realmente “possui” a(s) instância(s) de suas


partes.

• Diferentemente da agregação, na qual as instâncias do


“todo” e das “partes” são independentes.
Diagrama da UML
Composição – Exemplo 1
Composição – Exemplo 1
Diagrama da UML
Composição – Exemplo 2
Composição – Exemplo 2
Dúvidas
Hora de Praticar

Segunda Lista de Exercícios


Data da Entrega: 12/02/18
Forma de Entregar: Postar no site
Herança

• A herança é um princípio da POO que permite a criação de novas classes


a partir de outras previamente criadas.

• Essas novas classes são chamadas de subclasses, ou classes derivadas;


e as classes já existentes, que deram origem às subclasses, são chamadas
de superclasses, ou classes base.

• Deste modo é possível criar uma hierarquia dessas classes, tornando,


assim, classes mais amplas e classes mais específicas.

• Uma subclasse herda todos os métodos e atributos de sua superclasse;


apesar disso, pode escrevê-los novamente para uma forma mais específica
de representar o comportamento do método herdado.
Herança

• Na literatura, são encontrados diversos termos para


nomear tanto as classes que fornecem a herança quanto
as classes que herdam de alguma outra.
Herança Benefícios

• Um dos benefícios da utilização de herança é a


reutilização do código da classe base. Ou seja, a ideia
é reaproveitar o máximo do código já criado.

• Essa ideia está diretamente relacionada ao conceito


Don’t Repeat Yourself.

• O aumento da produtividade e a diminuição do custo de


manutenção são as principais motivações do DRY.
Extends

• Para estender uma nova classe (chamaremos de


subclasse), utilizamos a palavra reservada extends. 
Diagrama da UML
Herança – Exemplo 1
Herança – Exemplo 1
Herança – Exemplo 1
Herança – Exemplo 1
Herança – Exemplo 1
Diagrama da UML
Herança – Exemplo 2
Herança – Exemplo 2
Herança – Exemplo 2
Herança – Exemplo 2
Diagrama da UML
Herança – Exemplo 3
Herança – Exemplo 3
Herança – Exemplo 3
Herança – Exemplo 3
Herança – Exemplo 3
Dúvidas
Classe e Métodos Abstratos

• Uma classe abstrata é uma classe que não pode ser


instanciada como um objeto diretamente. Ela tem que ser
estendida por alguma classe filha (concreta), e quando um
objeto desta classe for criado, ele herdará métodos e
atributos da classe abstrata.

• Métodos abstratos, não podem ser implementados nas


classes abstratas, deve ser definido somente a assinatura do
método e deve obrigatoriamente, ser implementado na
integra pela classe filha que o estender. Em suma, um
método abstrato é definido em uma classe abstrata, mas
deve conter somente sua assinatura, o “corpo” do método fica
por conta das classes filhas.
Classe Abstrata – Exemplo 1
Classe Abstrata – Exemplo 1
Classe Abstrata – Exemplo 1
Classe e Método Abstrato –
Exemplo 1
Classe e Método Abstrato –
Exemplo 1
Classe e Método Abstrato –
Exemplo 1
Classes e Métodos Finais

• Classes finais podem ser definidas como classes que não


podem ser estendidas ou seja, não pode ser uma
superclasse. Uma classe é definida como final quando
colocamos a palavra reservada final antes da palavra class.

• Assim como classes finais, um método final não pode ser


estendido e obviamente não pode ser abstrato, pois
métodos abstratos foram feitos para serem estendidos e
declarados na classe filha. Para declarar um método como
final basta usar a palavra reservada final antes da palavra
function.
Classes Finais – Exemplo 1
Classes Finais – Exemplo 1
Classes Finais – Exemplo 1
Classes Finais – Exemplo 2
Classes Finais – Exemplo 2
Classes Finais – Exemplo 2
Métodos Finais – Exemplo 1
Métodos Finais – Exemplo 1
Métodos Finais – Exemplo 1
Dúvidas
Polimorfismo

• O significado da palavra polimorfismo nos remete a “muitas


formas”.

• Polimorfismo em Orientação a Objetos é o princípio que permite


que subclasses, tenham métodos que possuem a mesma
assinatura (com a mesma nomenclatura e
parâmetros(quantidade e tipo)) de uma superclasse, mas
comportamentos diferentes, redefinidos em cada uma das
subclasses.

• Exemplos:
Polimorfismo - Exemplo

• Um dono de uma fábrica de brinquedos solicitou que


seus engenheiros criassem um mesmo controle remoto
para todos os brinquedos de sua fábrica.

• O controle remoto teria vários botões, sendo que todos


eles seriam úteis para todos os brinquedos.

• Assim, quando o usuário clicasse no botão mover, o


controle enviaria o sinal MOVER para todos os
brinquedos
Polimorfismo - Exemplo

• Assim quando o brinquedo recebe o sinal MOVER, ele se move de acordo


com a sua função. Para o avião, mover significa VOAR, para o barco
significa NAVEGAR, e para o automóvel CORRER.

Observe que os brinquedos respondem ao mesmo sinal de formas


diferentes.
Tipos de Polimorfismo

• O Polimorfismo pode ser classificado:

– Polimorfismo de Sobreposição: acontece quando


substituímos um método de uma superclasse na sua
subclasse, usando a mesma assinatura.
– Polimorfismo de Sobrecarga: quando uma classe possui
dois ou mais métodos que possuem a mesma assinatura,
porém com atributos diferentes.

A linguagem PHP não tem suporte a sobrecarga de


métodos
Extends e Parent

• Para estender uma nova classe (chamaremos de


subclasse), utilizamos a palavra reservada extends. 

• Para acessar os métodos sobrescritos ou membros


estáticos da superclasse, utilizamos a palavra
reservada parente - Overriding(substituição). 
–É importante destacar que somente os
métodos protect e public podem ser reescritos.
Diagrama da UML
Polimorfismo – Exemplo 1
Polimorfismo – Exemplo 1
Polimorfismo – Exemplo 1
Diagrama da UML
Polimorfismo – Exemplo 2
Polimorfismo – Exemplo 2
Polimorfismo – Exemplo 2
Polimorfismo – Exemplo 2
Polimorfismo – Exemplo 2
Dúvidas

S-ar putea să vă placă și