LINGUAGEM DE PROGRAMAÇÃO WEB

Tamanho: px
Começar a partir da página:

Download "LINGUAGEM DE PROGRAMAÇÃO WEB"

Transcrição

1 LINGUAGEM DE PROGRAMAÇÃO WEB GABRIELA TREVISAN

2 Ambiente de Desenvolvimento Após instalar o Wamp Server, inicie o servidor. Um ícone aparecerá na SystemTray. A cor do ícone indica seu estado: Verde: servidor carregou todos os serviços e está ok. Laranja: reiniciando. Vermelho: algum serviço não pode ser carregado e o servidor pode não funcionar corretamente. Para testar o servidor, abra o navegador de sua preferência e digite: Se o servidor estiver funcionando corretamente, aparecerá a página padrão do Wamp:

3 Ambiente de Desenvolvimento o O endereço localhost aponta para a pasta www" que fica na pasta de instalação do Wamp. o O local padrão é C:/Wamp, porém ao instalar você pode mudar o diretório para outra unidade de disco.

4 Criando Aliases o Criar um alias é uma forma de fazer com que o servidor reconheça um diretório fora do diretório padrão www ; o Para criar um alias no servidor, clique no ícone do Wamp-> Apache- >Diretórios de Alias->Adicionar um alias. Um prompt aparecerá, solicitando o nome do alias.

5 Criando Aliases o Digite o nome do alias, evitando espaços e caracteres especiais. Aqui o nome utilizado foi exemplo. Em seguida, pressione enter.

6 Criando Aliases o O prompt solicita o caminho da pasta, digite o caminho corretamente e pressione enter. o Se o caminho estiver correto, o prompt exibirá a mensagem Alias Created. o Para testar se seu alias funcionou, abra seu navegador e acesse o endereço seguido do nome de seu alias, conforme exemplo: o Em caso de sucesso, o navegador exibirá o diretório.

7 o Após abrir o DW, acesse o menu Site -> New Site. o Nesta janela que abre, preencha um nome para seu site, para reconhecimento futuro. Configurando um site no DreamWeaver CS3

8 Configurando um site no DreamWeaver CS3 o Na próxima tela, marque a opção Yes e escolha PHP e MySQL. o Na tela seguinte, marque a primeira opção, que diz Editar e testar localmente, e selecione a pasta onde você salvará seus arquivos; o Na próxima tela, marque a opção não, pois nosso servidor será local e não remoto; o Clique em Next. A próxima tela exibe um resumo, clique em Done para concluir. o Na tela do DW, no lado direito, a aba Files exibe a árvore de diretórios, por enquanto vazia. Nela é possível mover, copiar, criar, renomear e excluir arquivos e diretórios.

9 Configurando um site no DreamWeaver CS3 o Após salvar o arquivo, use o atalho F12 para rodar o script no servidor, ou abra seu navegador e acesse o localhost seguido de seu alias caso ele exista, conforme o exemplo: ose a frase aparecer no navegador, seu script passou pelo servidor, foi interpretado pelo PHP e gerou uma página HTML com o conteúdo inserido em echo.

10 Introdução ao PHP Sobre o PHP PHP (Pré-processador de hipertexto) é uma linguagem de programação de uso geral especialmente indicada para desenvolver aplicações para web. É um script server-side É open-source É uma linguagem interpretada Suporta diversos bancos de dados: MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL,Generic ODBC, entre outros.

11 Sobre o PHP É livre para download e uso É multiplataforma: roda em ambiente Windows, Linux, Mac OS X, etc. Compatível com os mais populares servidores web: Apache, IIS, etc. Suporta programação orientada a objetos Trabalha com diversos protocolos de rede: LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (em Windows) entre outros.

12 Para testar scripts PHP Para executar um script PHP você precisa de um servidor web e o interpretador PHP. Você pode configurar um servidor local (no seu próprio computador) usando pacotes de instalação pré-configurados, por exemplo, o WAMP. Você pode utilizar um servidor em uma rede local Você pode usar um serviço de hospedagem com suporte a PHP

13 PHP no Windows o O Wamp Server é um pacote de instalação que contem servidor Apache, Interpretador PHP e banco de dados MySQL para ambiente Windows. o O download é gratuito pelo site

14 Sintaxe básica do PHP Observações Todo script PHP deve iniciar com <?php e fechar com?> Todo arquivo que conter script PHP deve ter a extensão *.php As instruções são finalizadas com: ;

15 Variáveis o A definição dos tipos de dados no PHP é dinâmica, ou seja, o interpretador PHP define o melhor tipo para cada variável. o No entanto, a variável deve possuir um identificador iniciando com o caractere $. Exemplo: $nome, $idade. o A variável é criada automaticamente na primeira vez que você a utiliza. otipos String são identificados através de aspas, conforme exemplo: $nome = João ;

16 Variáveis Regras de nomenclatura: Devem iniciar com letra ou _ Só devem conter caracteres alfanuméricos ou _ Não podem conter espaço

17 Comentários Comentário de linha: //meu comentário Comentário de bloco: /* Meu comentário */

18 Mostrando dados na página o Para exibir mensagens na página, utilizam-se os comandos: echo, print ou printf, sendo o primeiro mais comum e mais rápido. o A sintaxe para echo e print é a mesma, e ambos servem para imprimir um texto no HTML. <?php echo <p>isto é um texto gerado pelo PHP com echo</p> ; print <p>isto é outro texto gerado pelo PHP com print</p> ;?>

19 Exibindo textos com variáveis: <?php $nome = Adamastor ; echo <p>bem vindo $nome</p> ;?>

20 Exibindo valores numéricos formatados o O comando printf permite que se formate um determinado valor no momento da exibição, arredondando casas decimais, por exemplo. o O exemplo a seguir mostra um valor arredondado para 02 casas decimais em formato de moeda brasileira: <?php $valor = 10; $formato = "R$ %.2f"; printf($formato, $valor);?> O resultado na página seria: R$ 10.00

21 Exercício Quais são os valores das variáveis $a, $b, $c, $x, $y e $z após a execução do seguinte programa: $a=2; $b=4; $c=6; $x= -$c + $b; $y= $b + $a; $z= $a - $b;

22 Operadores

23 Operadores

24 Operadores

25 Operadores

26 Exercício 1. Faça a verificação se determinado número é par ou ímpar. 2. Calcule o fatorial de determinado número.

27 Exercício 3. O cálculo para definir a nota de um aluno é $nota = ($N1 + 2*$N2)/3; Se nota for maior que 9,5 mostre na tela aprovado por excelência: (valor da nota) Se nota for menor que 9,5 e maior que 7 aprovado: (valor da nota) Se nota for menor que 7 e maior que 4 Em Substituição: (valor da nota) Se nota for menor que 4 Reprovado: (valor da nota) BOM TRABALHO!

28 Exercício <?php /* $n1 = 23; $resp = $n1%2; if($resp == 1){ echo 'impar'; }else{echo 'par';}*/ $n=3; $aux=1; for($i=1; $i<=$n; $i++){ $aux*=$i; } echo $aux;

29 Exercício O cálculo para definir a nota de um aluno é $nota = ($N1 + 2*$N2)/3; if ( $nota > 9.5 ) $resultado = Aprovado com distinção ; elseif ( ($nota >= 8) and ($nota <= 9.5) ) $resultado = Aprovado plenamente ; elseif ( ($nota >= 6) and ($nota <= 7.9) ) $resultado = Aprovado ; else $resultado = Reprovado ; echo Você foi $resultado em seu TCC ;

30 AULA 2 Classes

31 Classes Um Classe contem as especificações básicas de um objeto, tais como: Características (atributos) e Ações (métodos). No php as classes são automaticamente definidas com visibilidade pública, não necessitando inserir a visibilidade antes do sufixo class. Os atributos no php admitem 3 possíveis visibilidades, são elas: o public Acessível de qualquer arquivo o protected Acessível em classes herdadas (herança - extends) o private Acessível somente na Classe de origem.

32 Classes Para definir uma classe, utilizamos a palavra reservada class. <?php class Cliente{ //comandos; }?>

33 Classes Os atributos são definidos no início da classe, precedidos pelo tipo de visibilidade que será aplicado a ele. <?php class Cliente{ private $nomecliente; private $rg; }?> Em seguida, já podemos inserir os métodos da classe, por exemplo, os getters e setters. Em PHP, para criar um método, seja com ou sem retorno, utiliza-se a palavra reservada function.

34 Sintaxe para declarar Métodos (Funções) em php <<visibilidade>> function nomefuncao($argumento1, $argumento2){ //comandos; } o Os argumentos são opcionais, e assim como a visibilidade, que se não for especificada é definida automaticamente como public.

35 Sintaxe para declarar Métodos (Funções) em php Para acessar qualquer atributo ou método da classe, usa-se a pseudo-variável $this, com a seguinte sintaxe: $this->nomedoatributo ou $this->nomedafuncao()

36 Sintaxe para declarar Métodos (Funções) em php O uso do $this dentro da classe é obrigatório. Exemplo Cliente, conforme o diagrama de Classes abaixo:

37 Classe Cliente implementada em linguagem php. Sem o Construtor. <?php class Cliente{ //Atributos da classe Cliente private $idcliente; private $nome; private $rg; //Construtor da Classe Cliente public function Cliente(){ }

38 Classe Cliente implementada em linguagem php //Métodos acessores Classe Cliente public function getidcliente(){ return $this->idcliente; } public function setidcliente($idcliente){ $this->idcliente = $idcliente; } public function getnome(){ return $this->nome; } public function setnome($nome){ $this->nome = $nome; }

39 Classe Cliente implementada em linguagem php public function getrg(){ return $this->rg; } public function setrg($rg){ $this->rg = $rg; } }?>

40 Comandos de inclusão Note que para utilizar a classe Cliente.class.php nós precisamos incluir ela no arquivo ClienteControle.php. Para incluir uma Classe no php podemos utilizar 4 comandos, são eles: include() require() include_once() require_once() Aconselho sempre incluir os arquivos que vamos utilizar no início do código, isso deixa o script php mais organizado. Lembre-se, devemos incluir o arquivo antes de instanciar um objeto.

41 Comandos de inclusão include() O include tenta incluir um arquivo, se por ventura ele não conseguir ocorrerá um erro no script e retornará um aviso do tipo WARNING. Ele continua executando a aplicação.

42 Comandos de inclusão require() O require assim como o include tenta incluir um arquivo, porém caso ocorra um erro no seu código haverá um "FATAL ERROR", erro fatal. Quando ocorrem erros fatais todo o seu script será interrompido. Obs: O require faz mais verificações que o método include, logo o sistema pode perder um pouco de desempenho na interpretação do código.

43 Comandos de inclusão include_once() e require_once() Funcionam da mesma forma que os comuns, porém o _once (que em inglês significa uma vez) é para evitar dupla chamada de um determinado arquivo. Caso você tente chamar duas vezes o mesmo arquivo o primeiro será chamado normalmente e o segundo apenas retornará false.

44 Instaciando a Classe Para receber e buscar os valores da memória foram utilizados os métodos gets() e sets(). Em um arquivo ClienteControle.php Chame as classes criadas no arquivo anterior da seguinte maneira: include_once 'Cliente.class.php';

45 Instaciando a Classe /* Instanciando um objeto chamado $cli a partir da classe Cliente. Note que não foi utilizado passagem de parametros através do método Construtor */ $cli = new Cliente();

46 Instaciando a Classe //Recebendo valores através dos métodos sets() $cli->setidcliente(1); $cli->setnome( Gabriela '); $cli->setrg( ');

47 Instaciando a Classe //1ª maneira para exibição. Utilizando 3 echos. echo '<p>código do cliente: '. $cli->getidcliente(). '<br />' ; echo 'Nome: '. $cli->getnome(). '<br />' ; echo 'rg: '. $cli->getrg(). '</p>' ;

48 Instaciando a Classe //2ª maneira para exibição. Utilizando apenas 1 echo. echo '<p>código do cliente: '. $cli->getidcliente(). '<br />'. 'Nome: '. $cli->getnome(). '<br />'. 'rg: '. $cli->getrg(). '</p>' ;?>

49 Classe Cliente implementada em linguagem php. Com o método construtor. <?php class Cliente{ //Atributos da classe Cliente private $idcliente; private $nome; private $rg; //Construtor da Classe Cliente public function Cliente($idCliente, $nome, $rg){ $this->idcliente = $idcliente; $this->nome = $nome; $this->rg = $rg; }

50 Como ficaria o script ClienteControle.php com a utilização de Construtor. <?php include_once 'Cliente.class.php'; /* Instanciando um objeto chamado $cli a partir da classe Cliente. Note que foi utilizado passagem de parametros através do método Construtor */ $cli = new Cliente('1', Gabriela', '); //Exibindo valores na tela. echo '<p>código do cliente: '. $cli->getidcliente(). '<br />'. 'Nome: '. $cli->getnome(). '<br />'. 'rg: '. $cli->getrg(). '</p>' ;?>

51 Exercícios VALE 2 PONTOS 1. Construa sua Calculadora com os principais operadores *, /, -, Você deverá construir a primeira vez uma calculadora sem o construtor e a segunda vez com construtor; 3. Você terá que usar 4 arquivos dois pro primeiro caso e dois pro segundo caso. 4. A partir disso tente entender a importância da organização do seu código com o uso do construtor. 5. E por fim Construa um arquivo no word mostrando a diferença com um comparativo dos dois desenvolvimentos. BOM TRABALHO!

52 Formulários e Aula 3 Relembrando HTML 5

53 Tag Form o Utilizada para marcar a região do formulário. o Os atributos mais importantes são o method e o action. o O primeiro indica qual arquivo deverá processar os dados do formulário, e o segundo indica de que forma o navegador enviará os dados para o servidor.

54 Tag Form Abaixo segue uma breve explicação de cada elemento do nosso formulário: action= No action definimos a página que receberá os dados do formulário. Geralmente enviamos para uma página php. method= O atributo method definimos se vamos enviar as informações do formulário via método get ou post. name= O atributo name define o nome do formulário.

55 Get e Post Get: envia os dados pela URL (fica visível pela barra de endereço no navegador) Post: envia os dados dentro da requisição (não fica visível para o usuário) <form action= exe.php name= form1 id= form1 method= post > </form> É importante que cada elemento do formulário tenha um identificador usando os atributos id e name.

56 As tags FieldSet e Legend Serve para criar agrupamento de campos no formulário. Funciona em conjunto com a tag Legend, que serve para dar um título ao agrupamento. <form action= exe.php name= form1 id= form1 method= post > <fieldset><legend>dados</legend> </fieldset> </form>

57 As tags Label e Input A primeira serve para adicionar rótulos aos campos e a segunda para inserir uma das opções abaixo, através do atributo type. Caixa de texto ou de senha (type= text ou type= password ) Botão (type= submit ) Radio (type= radio ) CheckBox (type= checkbox )

58 Inserindo uma caixa de texto <form action= exe.php name= form1 id= form1 method= post > <fieldset><legend>dados</legend> <label>nome:<input type= text id= txtnome name= txtnome /></label> </fieldset> </form>

59 Buscando valores provenientes de um formulário HTML Uma característica da linguagem de programação PHP é a possibilidade de conseguir resgatar dados provenientes de formulários HTML. Podemos criar um formulário html e submeter (enviar) os dados que o usuário digitar para uma página em PHP. Mas como isso ocorre? Após digitar os dados no formulário html o usuário clicará em um botão, geralmente chamado de "cadastrar" ou "enviar", os dados do formulário serão guardados em uma variável de coleção, ou seja, em um array.

60 $_GET[] Quando o formulário envia as informações pelo método "get" os dados são passados através da url dinâmica, ficando visível para os usuários que estão utilizando o site/sistema. Para receber as informações na página php utilizamos o array $_GET[], sendo que acessamos as informações através do nome da variável do formulário html.

61 $_POST[] Quando o formulário submeter os dados via método "post" os dados passam para a página codificados, só o navegador e o servidor web conhecem tais informações. Para receber as informações na página php utilizamos o array $_POST[], sendo que acessamos as informações através do nome da variável do formulário html.

62 $_REQUEST[] O $_request é um array genérico, ou seja, ele verifica qualquer entrada. Se você fizer uma página html e utilizar $_get ou $_post para enviar as informações, o $_request aceitará os dados da mesma forma. Ele testará se foi utilizado um ou outro.

63 Exemplo de formulário: Para exemplificar a passagem das informações via get e post vamos utilizar o formulário. Este formulário recebe apenas duas informações: Nome e sexo.

64 Exemplo de formulário Quando o usuário clicar no botão Cadastrar as informações serão enviadas para o script php chamado: ClienteControle.php. O script php receberá as informações através do array $_POST[' '].

65 Exemplo de formulário As Informações passadas via POST são enviadas codificadas. Elas são entendidas somente pelo navegador e o servidor web. Se o formulário passar as informações digitadas via get, quando o usuário clicar no botão Cadastrar, o script php receberá as informações através do array $_GET[' ']

66 Exemplo de formulário As informações passadas via GET são enviadas através da url, ou seja, podem ser vistas no endereço da página.

67 Exemplo de formulário Para receber as informações no script php podemos utilizar uma 3ª maneira genérica utilizando o array de coleção chamado $_REQUEST[' ']. A diferença do request para o $_POST[' ']e o $_GET[' '] é que o $_REQUEST[' '] recebe as informações enviadas por um formulário submetendo tanto via get e post. O request testa ambas possibilidades.

68 Exemplo de formulário

69 Trabalho parte 2 vale 1 A partir da Calculadora que criaste construa: -> passo 1 : Crie em Html um menu para que o usuário seja direcionado a conta que ele deseja; -> passo 2: Crie o Html para que seja possível o usuário digitar os números desejados para o cálculo; -> Retorne os valores aos usuários.

70 Aula 4 Imagine a seguinte situação: Precisamos trafegar valores de uma página PHP para outra, porém não temos formulários entre essas páginas. Como fazer isso? A resposta é simples, podemos utilizar o header(location:) para redirecionar para outra página passando valores via $_GET[].

71 Header(location:) O comando header permite redirecionar uma página para outra página, como por exemplo: header('location: Nesse exemplo o header está redirecionando para o site do terra. Vamos fazer isso no nosso código!

72 Header (location:) Vamos imaginar que estamos na página Pessoa e desejamos exibir os dados recebidos da Pessoa em uma página chamada Resposta. Nos exemplos anteriores estávamos imprimindo diretamente da classe Pessoa, o que é errado. A classe Pessoa não pode ter interação com o usuário. Então vamos redirecionar via header(location:url) enviando variáveis via GET para a página de destino, no caso a Resposta.

73 Header (location:) Para enviar uma variável via $_GET[] utilizamos após a URL o sinal de interrogação? seguido do nome da variável e o seu valor, como por exemplo: header("location:resposta.php?nome=$nome"); Vamos verificar somente o código em negrito:?nome=$nome

74 Header (Location) A interrogação indica que vamos passar valores via $_GET[]. Após a interrogação temos o nome da variável, no caso o nome da variável é nome. O sinal de igual = serve para informar qual valor será atribuido a variável nome, no caso é um valor vindo de um atributo do objeto aluno. ATENÇÃO: Note que tudo entre os parênteses do comando header estão entre aspas, isso devido ao fato que o conteúdo deve ser interpretado pelo PHP, pois temos objetos e atributos.

75 Passando 2 valores Podemos passar mais de um valor via $_GET[] na URL. Mas como fazer isso? Para passar 2 ou mais valores basta separar através de E comercial &, como por exemplo: header("location:resposta.php?nome=$nome&idade=$idade"); Neste caso estamos passando duas variáveis, são elas: nome e idade.

76 Passando 3 valores Vamos passar 3 variáveis, como por exemplo: header("location:resposta.php?nome=$idade=$ idade&media=$media");

77 Passando 2 valores Neste caso estamos passando as variáveis: nome, idade. O código do controle fica: include 'pessoa.class.php'; //Recebendo valores através do array $_POST[] $nome = $_POST['txtnome']; $idade = $_POST['txtidade']; $pessoa = new Pessoa($nome,$idade);

78 Passando 2 valores //Antes estávamos imprimindo direto da classe Controle. ERRADO!!! //echo $pessoa; //Agora vamos direcionar para a página Resposta.php passando variáveis através da URL utilizando o array GET. header("location:resposta.php?nome=$nome&idade=$idade");?>

79 Resgatando valores na Resposta.php Para buscar os valores na outra página necessitamos que a mesma tenha a extensão *.php, caso contrário não funcionará. A página de resposta geralmente terá código html. O código html pode ser simples, porém dentro da tag body vamos abrir um script em PHP e vamos resgatar os valores através do $_GET[];

80 Resgatando valores na resposta.php <body> <h1>dados informados</h1> </body> <?php echo '<p>nome: '.$_GET['nome']. <br />idade: '.$_GET['idade'].'</p>';?>

81 Visualizando as variáveis na URL

82 Métodos mágicos do PHP Os métodos mágicos servem para nos auxiliar na programação. Todos os métodos mágicos tem uma característica em comum, eles iniciam com dois underlines antes do nome, como por exemplo: construct(). Não devemos colocar nome de método precedido de dois underlines

83 Métodos mágicos do PHP construct() destruct() get() set() tostring()

84 Utilização Vamos supor uma classe Pessoa onde tenhamos três atributos, são eles: nome, sexo e idade. No construtor mágico passaremos somente nome e sexo. Mas porque isso? Passando só 2 atributos para o terceiro possa ser enviado via setmágico. Assim você entenderá como passar por construtor ou através do set mágico.

85 Programando... <?php class Pessoa{ private $nome; private $idade; //construtor public function construct($nome){ $this->nome = $nome; }

86 Programando... public function get($atributo){ return $this->$atributo; } public function set($atributo, $valor){ $this->$atributo = $valor; } public function tostring(){ return '<p>nome: '.$this->nome. '<br />idade: '.$this->idade.'</p>'; } }?>

87 Programando... Agora vamos supor a classe ControlePessoa.php onde instanciaremos um objeto da classe Pessoa. <?php include 'Pessoa.class.php'; //Recebendo valores através do array $_POST[] $nome = $_POST['txtnome']; $idade = $_POST['txtidade'];

88 Programando... //Passando nome e sexo através do construtor. $pessoa = new Pessoa($nome); //Passando a variável idade através do set mágico. $pessoa->idade = $idade;

89 Programando... /* Imprimindo todos atributos da classe Pessoa através do tostring. Para chamar o método tostring basta solicitar a impressão do objeto conforme exemplo: */ echo $pessoa;/* 2ª maneira: imprimindo via get Mágico. echo '<p>nome: '.$pessoa->nome. '<br />idade: '.$pessoa->idade.'</p>'; */?>

90 Expressões Regulares Aula 6 e Métodos Estáticos

91 Utilizando as Expressões no PHP Para utilizar as expressões regulares na linguagem php temos várias opções de funções que aceitam expressões, porém o exemplo utilizará a função preg_match(). A função preg_match() recebe 2 valores, são eles: a expressão regular e o valor a ser testado.

92 Exemplo O método recebe dois valores: $expressao, $valor e devolve uma mensagem informando se o valor foi validado ou não. Classe: <?php class Validacao{ public static function testaexpressaoregular($expressao, $valor){ if(preg_match($expressao,$valor)){ return 'valor validado com sucesso!'; }else{return 'valor incorreto!';} } }?>

93 Exemplo Código que chamará o método testaexpressaoregular(): <?php include 'Validacao.class.php'; $expressao = '/^[a-z]{2,5}$/'; $valor = 'ag'; echo 'Resultado teste: '.Validacao::testaExpressaoRegular($expressao,$valor);?>

94 Métodos Estáticos no PHP No php assim como entre outras linguagens podemos utilizar métodos estáticos. Os métodos estáticos podem ser acessados a partir do nome da Classe, não necessitando instanciar a classe para obter acesso aos atributos e métodos. Para definir um método como estático é só inserir a palavra static após a visibilidade.

95 Declaração da Classe Validacao.class.php <?php class Validacao{ public static function testaexpressaoregular($valor){ //implementação do método } }?>

96 Acessando métodos Estáticos Para acessar métodos estáticos não precisamos instanciar a classe, apenas incluímos o arquivo da Classe que gostariamos de utilizar e após, acessamos através do nome da Classe seguido de ::. O script PHP a seguir acessa o método que testa a Expressão Regular.

97 Acessando métodos Estáticos <?php include 'Validacao.class.php'; $valor = 'ag'; echo 'Resultado teste: '.Validacao::testaExpressaoRegular($valor);?>

98 Exercícios 1) Preciso validar um campo de CPF, RG, idade, nome e data dentro de um input como deve ser feito? Não esqueça de sugerir ao usuário ao lado do campo qual é o formato que ele deve utilizar dentro do campo. A resposta de Validado com sucesso ou ERRO deve ser enviada para um arquivo resposta. Utilize métodos estáticos se preferir.