paradigmas de linguagens de programação: conceitos de php

84
Paradigmas de Linguagens de Programação Linguagem - PHP André Nakamura Andrey Menezes Fábio Leal Jonathan Brilhante

Upload: fabio-leal

Post on 23-Jun-2015

10.600 views

Category:

Technology


0 download

DESCRIPTION

Slides apresentando os conceitos da Linguagem de Programação PHP .

TRANSCRIPT

Page 1: Paradigmas de Linguagens de Programação: Conceitos de PHP

Paradigmas de Linguagens de Programação

Linguagem - PHP

André NakamuraAndrey Menezes

Fábio LealJonathan Brilhante

Page 2: Paradigmas de Linguagens de Programação: Conceitos de PHP

Agenda

•••••••••• Introdução

Valores e TiposArmazenamentoAssociaçõesAbstraçõesUnidades de ProgramaSistemas de TiposSequenciadoresConcorrênciaConclusão

Page 3: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Introdução

Page 4: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

O que é?

• "PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML". (php.net)

Linguagem de script paradigma híbrido (Orientado a Objetos + Imperativo).

Desenvolvimento Web.

• Linguagem pertencente à 4ª geração de LP's ("Boom" da Web). Rasmus Lerdof

Page 5: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Sintaxe e Semântica

••

• Sintaxe descrita pelo meta-modelo fornecido pelo projeto "PHP_UML", mantido pela PEAR.

Case sensitive para variáveis.

Case Insensitive para keywords da linguagem.

Semântica Operacional.A Semântica operacional descreve como um programa válido é interpretado como uma sequência de passos computacionais.

Page 6: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Processador da Linguagem

• Interpretador da linguagem (PHP CGI).

Temos também a opção de ir executando um programa (interpretando comandos) através de um "shell", como na linguagem Python (PHP CLI).

Page 7: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

IDE

Page 8: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Ambiente de Execução• PHP necessita de um Servidor Web para

disponibilizar suas aplicações online.

Page 9: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

...Um pouco mais sobre PHP...

••••

• "Enquanto .NET e Java brigam, fazendo muito barulho... PHP se mantém como a tecnologia número 1 da Web." (Felipe Ribeiro)

Linguagem é limitada? Cloud ComputingSaaSSOAWeb Services

Quem Usa?

Page 10: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Vamos, então, aos conceitos!

Page 11: Paradigmas de Linguagens de Programação: Conceitos de PHP

Valores e Tipos

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 12: Paradigmas de Linguagens de Programação: Conceitos de PHP

Valores & Tipos

•••••••

• Valores suportados por PHP: ArraysInteirosReaisObjetosBooleansStringsAbstrações de funções e procedimentos

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

••

• Tipos suportados por PHP:PrimitivosCompostos

Page 13: Paradigmas de Linguagens de Programação: Conceitos de PHP

Valores

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Abstração de Função

ReaisObjetoArray

Abstrações de funções e procedimentos são valores de segunda classe em PHP.

Page 14: Paradigmas de Linguagens de Programação: Conceitos de PHP

Tipos Primitivos

••

••

• Os tipos primitivos em PHP são:Integer: Representação binária na memóriaFloat: Difere de double apenas no tamanho do intervalo dos reaisDouble: Números Reais.Boolean: Dois valores possíveis, True ou False

Strings são tratados como arrays de caracteres!

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 15: Paradigmas de Linguagens de Programação: Conceitos de PHP

Tipos Compostos• Produto cartesiano: Integer X String

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Valor do tipo Integer

Valor do tipo String

Representação utilizando um objeto com dois atributos distintos.

Page 16: Paradigmas de Linguagens de Programação: Conceitos de PHP

Tipos Compostos

• União disjunta: Pode ser simulada através de uma herança.

Quando tivermos uma instância de Peca, a mesma poderá ser tratada como Peca ou como PecaAbstrata.

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

A classe Peca "guarda um

marcador" de PecaAbstrata, pois herda da mesma.

Page 17: Paradigmas de Linguagens de Programação: Conceitos de PHP

Tipos Compostos• Mapeamentos podem ocorrer através de Arrays ou de

Funções.

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Mapeamento através de um array bidimensional

Mapeamento através de uma função

Page 18: Paradigmas de Linguagens de Programação: Conceitos de PHP

Tipos Compostos

• Conjunto Potência não ocorre em PHP.

Recursivo: Um exemplo é uma classe com atributo de seu próprio tipo.

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Atributo recursivo é setado para um valor de seu próprio tipo

Representação utilizando uma classe com atributos de seu próprio tipo

Page 19: Paradigmas de Linguagens de Programação: Conceitos de PHP

Checagem de tipos• PHP é uma linguagem dinamicamente e fracamente tipada,

e sua checagem de tipos também é dinâmica.

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Não é preciso declarar tipos de variáveis, o interpretador tentará realizar qualquer conversão entre tipos, ou como no caso do exemplo acima, recuperar o tipo de uma variável

Page 20: Paradigmas de Linguagens de Programação: Conceitos de PHP

Equivalência de Tipos

• PHP adota a equivalência de nome na checagem de tipos.

A equivalência estrutural de tipos não é suportada

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 21: Paradigmas de Linguagens de Programação: Conceitos de PHP

Princípio da completude de tipo

• PHP viola o princípio da completude de tipo, pois uma construção de um arquivo permanente é limitada. Para lidarmos com arquivos persistentes é necessário que trabalhemos com o tipo "File".

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 22: Paradigmas de Linguagens de Programação: Conceitos de PHP

Armazenamento

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 23: Paradigmas de Linguagens de Programação: Conceitos de PHP

Variáveis e Atualização

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Os valores armazenáveis em PHP são apenas os primitivos (Integer, Float, Double, Boolean).

• Variáveis Temporárias: Todas as variáveis exceto as do tipo File.

Variáveis Persistentes: São do tipo "File" em PHP.

Variável do tipo File

Page 24: Paradigmas de Linguagens de Programação: Conceitos de PHP

Variáveis e Atualização

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Atualização Seletiva é suportada por PHP.

Atualização Seletiva.

Page 25: Paradigmas de Linguagens de Programação: Conceitos de PHP

Variáveis e Atualização

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Atualização Total ocorre em PHP.

Atualização total

Page 26: Paradigmas de Linguagens de Programação: Conceitos de PHP

Arrays• Em PHP arrays são do tipo Flexível.

Não definimos nada sobre o array.

O conjunto de índice não é fixo, funciona como uma "lista".

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 27: Paradigmas de Linguagens de Programação: Conceitos de PHP

Semântica de Cópia x Semântica de Referência

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Por default, semântica de cópia pra valores primitivos, os quais já foram apresentados.

Por default, semântica de Referência pra valores compostos, os quais já foram apresentados.

Podemos colocar o caractere & na definição de alguma variável e essa assumirá semântica de referência.

Adotada a semântica de referência para $z.

Page 28: Paradigmas de Linguagens de Programação: Conceitos de PHP

Variáveis Locais e Globais

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Variáveis Locais

Page 29: Paradigmas de Linguagens de Programação: Conceitos de PHP

Variáveis Locais e Globais• Variável Global.

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Variáveis Globais

global, indicação do uso das variáveis globais.

Resultado vai ser 3.

Page 30: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Variáveis Heap

• Em PHP temos o New como inicializador de uma variável Heap.

Podemos destruir uma variável com uso do unset().

Apontadores não são suportados por PHP, variáveis Heap são acessadas através de sua referência.

Variável Heap

Page 31: Paradigmas de Linguagens de Programação: Conceitos de PHP

Tipos de Comandos

••••••• Skip

AtribuiçãoChamada de ProcedimentoComando SequencialComando ColateralComando CondicionalComando Iterativo

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 32: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Skip • Em PHP um Skip pode ser representado por um simples ";".

O ponto e vírgula representa um skip.

Page 33: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Atribuição

• PHP não dá suporte a atribuições múltiplas nem simultâneas.

PHP só dá suporte a atribuições de um único modo: $var = valor;

É permitida a atribuição com o açúcar sintático "+=".

AçúcarSintático

Page 34: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Chamada de ProcedimentosProcedimentoChamada de

procedimento

Page 35: Paradigmas de Linguagens de Programação: Conceitos de PHP

Comando Sequencial e Colateral

• Em PHP os comandos sequenciais são separados pelo " ; " e executados um após o outro.

Em PHP os comandos Colaterais não são suportados. Introdução Valores e Tipos Armazenamento Associações

Abstrações Unidades de Programa Sistemas de Tipos Sequenciadores Concorrência Conclusão

Comando 1

Comando 2

Page 36: Paradigmas de Linguagens de Programação: Conceitos de PHP

Comando Condicional

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Uso do comando condicional em PHP.

O if vem seguido de comandos.

Page 37: Paradigmas de Linguagens de Programação: Conceitos de PHP

Comando Iterativo

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Comando Iterativo Definido Definimos o número de iterações.

• Comando Iterativo Indefinido A iteração dura

enquanto a condição for válida

não se define a quantidade.

Page 38: Paradigmas de Linguagens de Programação: Conceitos de PHP

Expressões com efeitos colaterais

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Em PHP temos expressões com efeitos colaterais.

Para retornar a expressão correspondente temos que atualizar a variável $linha

como efeito colateral.

Page 39: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Associações

Page 40: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Estrutura de blocos• Estrutura de blocos aninhados: Característica predominante nas

linguagens mais recentes.

EXEMPLO

1 2 3

Page 41: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Escopo

• Presença de escopo com associação estática em PHP.

O exemplo imprime o valor 2, pois na linha 6 há uma chamada ao escopo global de $var. Se comentássemos essa linha, a saída seria 3.O corpo de um bloco é avaliado no ambiente que foi definido, e não no ambiente do bloco que o chama.

Variável de escopo Global

Função que imprime a $var.Variável de escopo LocalImpressão da variável.

Page 42: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Visibilidade • Visibilidade: Três tipos característicos de visibilidade (OO):

Private, Protected e Public.

Atributos Privados da Classe

Att. protegidos (herdáveis) Atributos públicos. (Remove encapsulamento)

Page 43: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Visibilidade em blocos• Visibilidade: Se temos uma variável declarada em um escopo mais "interno", essa

variável não estará visível a um bloco de escopo mais externo.

$Peca só será visível das linhas 262 a 266. Se tentarmos acessar essa variável fora de seu escopo, PHP assume valor nulo para ela. (Tipagem)

Page 44: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Entidades Associáveis

• Em PHP podemos produzir associações através de Constantes, variáveis, procedimentos, Funções e tipos.

Entidades associáveis em PHP: Valores primitivos, valores compostos, abstrações de funções e procedimentos, variáveis, tipos...

"Jogador" estará associado a uma classe, assim como "cor" e "tipo" a variáveis internas da classe. Associamos ainda "play" a um método da classe.

Page 45: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Declarações • Declarações em PHP: Definições, Declaração de tipo, de variáveis,

sequenciais e recursivas.

Definição de constantes em PHP.

Declaraçãode um novo tipo

Page 46: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Declarações • PHP não dá suporte a declarações colaterais. No entanto, suporta

declarações sequenciais e recursivas.

Declarações sequenciais.

Page 47: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Declarações • Declarações Recursivas podem ser obtidas através da declaração de

um Método Recursivo ou Objeto Recursivo.

Procedimento recursivo

Classe com atributo

"recursivo"

Page 48: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Comando Bloco• Comandos Bloco são suportados por PHP.

Declarações necessárias paraexecutar o comando.

Método que executará o comando (encapsulado).

Page 49: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Expressões Bloco• Expressões Bloco são suportadas por PHP.

Declaração necessária paraavaliar a expressão de

retorno.

Expressão final avaliada.

Page 50: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Princípio da Qualificação

• PHP não fere o princípio da qualificação, uma vez que podemos realizar qualquer computação, inclusive a simples declaração de uma variável, dentro de um bloco.

Podemos realizar qualquer computação dentro de um bloco.

Page 51: Paradigmas de Linguagens de Programação: Conceitos de PHP

Abstrações

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 52: Paradigmas de Linguagens de Programação: Conceitos de PHP

Abstração de Função

• PHP suporta abstrações de funções.

Quando declarando, usamos da keyword "function" para especificar o corpo e da keyword "return" para especificar o retorno.

Parâmetros Uso de uma abstração de função

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 53: Paradigmas de Linguagens de Programação: Conceitos de PHP

Abstração de Procedimento

• PHP suporta abstrações de procedimentos.

É dado de forma similar às abstrações de funções , declarando-se com o uso da keyword "function". A diferença excêncial deve-se ao fato que não deve haver "return".

Uso de uma abstração de procedimento

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 54: Paradigmas de Linguagens de Programação: Conceitos de PHP

Parâmetros

• PHP dá suporte a funções de alta ordem.

Passagem de parâmetros por cópia ou referência. Para especificar o uso da referência , usamos "&".

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 55: Paradigmas de Linguagens de Programação: Conceitos de PHP

Parâmetros• Para passagem de parâmetro por cópia, PHP assume a semântica

de cópia valor.

Output

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 56: Paradigmas de Linguagens de Programação: Conceitos de PHP

Ordem de Avaliação• PHP utiliza Eager Evaluation como ordem de avaliação dos

parâmetros nas chamadas de suas abstrações de funções/procedimentos

Alteramos manualmente o arquivo enquanto o programa está em "sleep".Independente da alteração ainda será impresso: " Relatório de PLP! "

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 57: Paradigmas de Linguagens de Programação: Conceitos de PHP

Princípio da Abstração

• PHP não viola o princípio da abstração , pois para qualquer trecho de código que realize uma computação , podemos encapsula-lo numa abstração de procedimento sem parâmetros.

Podemos encapsular qualquer construção sintática em abstrações

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 58: Paradigmas de Linguagens de Programação: Conceitos de PHP

Princípio da Correspondência

• PHP não viola o princípio da correspondência, uma vez que existe uma declaração/definição de variável correspondente a cada operação de passagem de parâmetro, seja ela por referência (Constante ou Variável) e por cópia/valor .

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 59: Paradigmas de Linguagens de Programação: Conceitos de PHP

Unidades de Programa

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 60: Paradigmas de Linguagens de Programação: Conceitos de PHP

Pacotes

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Abstrações de Funções e procedimentos já foram detalhados na seção de Abstrações.

Em PHP não existe nenhuma keyword especifica para pacotes, porém a existência dos mesmos pode ser simulada.

Importando Classes extenas

Page 61: Paradigmas de Linguagens de Programação: Conceitos de PHP

Tipos abstratos de dados (TAD's)

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

•• TAD's podem ser simulados através de Classes de PHP.

Exemplo: Fila. Exemplo de TAD por uma Fila.

Page 62: Paradigmas de Linguagens de Programação: Conceitos de PHP

Objetos e Classes

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Objetos e classes são peças fundamentais para o conceito de orientação a objetos.

Classe

Construtor

Page 63: Paradigmas de Linguagens de Programação: Conceitos de PHP

Pacotes

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• Uma curiosidade em PHP é o conceito de namespaces.

criando um namespace

Utilizando namespace

Page 64: Paradigmas de Linguagens de Programação: Conceitos de PHP

Unidades Genéricas

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

• PHP não dá suporte a unidades genéricas.

Page 65: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Sistemas de Tipos

Page 66: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Monomorfismo & Chegagem de tipos

• PHP não é uma linguagem monomórfica.

Checagem de tipos dinâmica, realizada em tempo de execução.

Não há declaração de tipos.

Page 67: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Sobrecarga

• PHP não dá suporte à sobrecarga dependente de contexto.

PHP não dá suporte à sobrecarga independente de contexto.

Não há declaração de parâmetros. (Impossível

realizar sobrecarga independente de

contexto). Assim como a dependente de contexto

p/ o tipo de retorno.

Page 68: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Sobrecarga• No entanto, pode haver sobrecarga de alguns métodos Built-in.

Método (Built-in) que pode ser sobrecarregado de acordo com os seus parâmetros.

Page 69: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Sobrescrita• PHP dá suporte à sobrescrita.

Sobrescrita de método Built-in.

Método Sobrescrito.

Método da classe mãe.

Page 70: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Polimorfismo

• PHP dá suporte ao polimorfismo paramétrico e por inclusão.

O polimorfismo por inclusão ocorre de maneira semelhante. Os métodos que são válidos para um supertipo também são válidos para seus subtipos.

Exemplo de Polimorfismo Paramétrico.

Método Polimórfico.

Page 71: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Coerção

• Pelo fato de ser uma linguagem fracamente tipada, a coerção é uma das características marcantes de PHP.

Existe, também, a função settype() para evitar a coerção.

PHP converterá sem necessidade de "cast" explícito.

Page 72: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Subtipos & Herança

• PHP dá suporte a subtipos e Herança. Classes e Interfaces definem tipos.

Herança simples e implementação de interfaces múltipla.

Def. de tipo por Interface.

Definem novos tipos.

Page 73: Paradigmas de Linguagens de Programação: Conceitos de PHP

Sequenciadores

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 74: Paradigmas de Linguagens de Programação: Conceitos de PHP

Desvios Incondicionais

• PHP suporta desvios incondicionais : Apartir da versão 5.3 . Usando a sintaxe "goto" semelhante a outras linguagens.

Só podemos fazer desvios incondicionais dentro do escopo da abstração de função/procedimento. (Não podemos ir para pontos mais externos do programa).

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Especificação do ponto "Desvio"

Designação do Salto parao ponto "desvio".

Page 75: Paradigmas de Linguagens de Programação: Conceitos de PHP

Escapes

••

•••

• PHP dá suporte a escapes através de "break" e "return". Existe também a função exit(), que finaliza o script.

"break" : Escape usado para quebrar o condicional switch e a execução de laços.

"return" : Escape usado para saida do escopo de métodos.

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 76: Paradigmas de Linguagens de Programação: Conceitos de PHP

Exceções•

PHP dá suporte a exceções da seguinte forma:Lançar Exceções : " Throw "

"Lançando uma nova exceção que é um Objeto da classe PecaException "

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 77: Paradigmas de Linguagens de Programação: Conceitos de PHP

Exceções

• Tratamento de Exceções : "Try/Catch"

"Try : Exceuta um bloco esperando uma exceção" "Catch: Intercepta a exceção especificada e trata "

Criação de Exceções : "extends Exception"

"Para criar um novo tipo de exceção basta criar uma nova classe que herde de Exception"

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 78: Paradigmas de Linguagens de Programação: Conceitos de PHP

Concorrência

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 79: Paradigmas de Linguagens de Programação: Conceitos de PHP

Concorrência• PHP não suporta concorrência nativamente. Foi

desenvolvida uma biblioteca, PCNTL (disponível apenas em ambientes Unix), que simula algumas features de concorrência. Algumass de suas funções são:

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Page 80: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Conclusão

Page 81: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Campo Minadohttp://gmf.ufcg.edu.br/~fabiosl/CampoMinado/Menu.php

Page 82: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Damashttp://gmf.ufcg.edu.br/~fabiosl/CampoMinado/Menu.php

Page 83: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Links Interessantes

•••••• http://php.net/index.php - Site Oficial

http://pear.php.net - Site de Módulos para PHP

http://pear.php.net/package/php_uml - Metamodelo

http://www.zend.com/en - Zend Studio IDE

http://www.apache.org - Apache Server

http://www.xoops.org - XOOPS Server

http://php-pb.net - Lista de discussão de PHP da PB

Page 84: Paradigmas de Linguagens de Programação: Conceitos de PHP

Introdução Valores e Tipos Armazenamento Associações Abstrações Unidades de Programa Sistemas de Tipos

Sequenciadores Concorrência Conclusão

Dúvidas?