Programação Web Orientada a Objetos

Download Report

Transcript Programação Web Orientada a Objetos

Programação Web
Orientada a Objetos
Professor: Charles Jefferson
Plano de Ensino

Unidade Curricular: Programação Web Orientada a Objeto

Carga Horária: 120 Horas

Curso: Informática para Internet

Modalidade: Técnico Subsequente

PROFESSOR: Charles Jefferson R. Alves e Alves
Objetivo

Capacitar o aluno, de forma que seja capaz de compreender e implementar
os fundamentos da Programação Orientada a Objetos, bem como interpretar
artefatos de projeto, mapeando-os através da implementação no computador.

Analisar e projetar Sistemas Web baseado em objetos.

Implementar pequenas aplicações com interface gráfica utilizando objetos já
definidos no ambiente de desenvolvimento.
Habilidades

Aplicar os conceitos básicos de Orientação a Objetos.

Identificar as propriedades e as responsabilidades dos objetos.

Desenvolver sistemas Web, utilizando Orientação a Objetos baseados em
componentes.

Realizar a conexão com interface e base de dados;

Avaliar resultados de testes dos programas desenvolvidos;

Interpretar e analisar o resultado da modelagem de dados;

Estruturar algoritmos de permitam a representar regras de negócios;

Desenvolver aplicações Web em camadas.
Conteúdo Programático

Histórico da Programação Orientada a Objetos

Conceitos de Classe, Objeto, Herança, Polimorfismo, Abstração,Generalizações,
Superclasse e Subclasse.

Construtores e Destrutores.

Aplicações dos conceitos utilizando uma linguagem PHP.

Confecção e interpretação de diagramas UML.

Conceitos de Padrões de Projetos e Utilização do padrão MVC.

Funções avançadas.

Desevolvimento de um sistema web comercial
Metodologia

Aulas expositivas dialogadas e interativas

Pesquisas e debates informais

Trabalho em grupo e individual

Aula prática no laboratório
Avaliação

Presença e participação nas atividades em sala de aula – 1,0 ponto.

Apresentação de trabalhos – 9,0 pontos

Prova individual – 10,0 pontos.
Pré-requisitos

Lógica de Programação

Contrução de Algorítmos

HTML

Modelagem UML

Linguagem Orientada a Objetos: JAVA, C++, C#, VB.NET, PHP5

Noções básicas de Inglês
Bibliografia

PHP: Programando com Orientação a Objetos

ISBN: 978-85-7522-137-2 (1ed)
ISBN: 978-85-7522-200-3 (2ed)
Páginas: 574
Autor: Pablo Dall'Oglio
POO – Histórico

Com os problemas gerados pela crise de softares, surge a Engenharia de
Sofware (60).

Porém, as várias técnicas desenvolvidas nos anos 70 e 80 não resolveram
o problema de produtividade e qualidade nos softwares.

Lições da década de 80

Requisitos do usuário são mais importantes

Funções e dados tem grande importância, porém não podem estar separados
POO – Histórico

Realidade atual:

Sistemas de alta complexidade

Ferramentas de desenvolvimento drasticamente diferentes de 20 anos atrás.

Sistemas maiores, mais complexos e mais voláteis.

A mudança para alcançar a qualidade e produtividade está na REUTILIZAÇÃO.
POO – Técnicas de Programação

Programação Não-Estruturada

Programação Procedimental (ou Procedural)

Programação Estruturada (ou Modular)

Programação Orientada à Objetos
Programação Não-Estruturada

Programas simples e pequenos consistindo de apenas um programa principal.
– Ex. Cartão

“Programa” é uma seqüência de comandos ou instruções que modificam
dados “globais” durante toda a sua execução.

Como melhorar este modelo de programação ?
– Extração de seqüências (procedures)
Programação Procedimental (Procedural)

Um programa é visto como uma seqüência de procedimentos que se
“comunicam” através de dados locais, denominados parâmetros.

O fluxo destes dados pode ser ilustrado como um grafo hierárquico ou
uma árvore.

Um único programa que é dividido em pequenas partes, chamadas
“procedures”. Para permitir o uso de procedimentos genéricos ou grupo
de procedimentos em outros programas, precisamos separá-los e
disponibilizá-los.
Programação Estruturada (Modular)

Um programa não consiste mais de uma única parte em um único arquivo. É
agora dividido em várias pequenas partes chamados módulos, que interagem,
através de chamadas aos procedimentos, formando o programa.

Entretanto, só existe um estrutura por módulo e cada módulo só pode existir
uma única vez no programa.
Problema: E para se manipular mais de uma lista ?!?
Programação Estruturada (Modular)

Os códigos se interligam por meio de 3 mecanismos:
Programação Orientada a Objetos

Na Orientação a Objetos, a estrutura é organizada pelos dados.
Escolhe-se a representação dos dados que melhor se adequam aos
requisitos do problema.

Consequentemente, os programas ficam estruturados pelos dados e
não mais pelas operações.

Isto significa que os dados apenas especificarão operações válidas.
Agora os módulos serão agrupados por dados e suas representações,
denominadas classes.
Programação Orientada a Objetos

Cada objeto “implementa”seus próprios módulos e dados, permitindo
que várias estruturas coexistam.

Cada objeto é responsável por inicializar e destruir os seus dados.
Consequentemente, não existe mais a necessidade de explicitar uma
chamada aos procedimentos de criação e destruição.

Todo objeto possui as seguintes características:

Estado: conjunto de propriedades de um objeto (valores dos atributos).

Comportamento: conjunto de ações possíveis sobre o objeto (métodos da classe).

Unicidade: todo objeto é único (possui um endereço de memória).
POO – Objetivos

Produção de software mais confiável


Proteção aos dados: encapsulamento
Aumento da produtividade de software

Reutilização de código: classes

Extensão da biblioteca de classes:

definição de subclasses (herança)

implementação de novos métodos

redefinição de métodos (polimorfismo)
POO – Regras de Desenvolvimento
Decomposição
A partir de um problema geral, definir um
conjunto de subproblemas independentes que
podem ser tratados em separado.
Independência
A alteração de um módulo não incorre na
modificação de outros módulos.
Reutilização
Quanto mais um módulo for independente, maior
a chance dele poder ser reutilizado em outra
aplicação.
Auto
documentado
Todo módulo deve ser compreensível sem a
necessidade de verificar seu relacionamento com
os outros módulos.
POO

A orientação a objetos pode ser resumido como um estilo de
desenvolvimento baseado no conceito de objetos.

Em uma linguagem puramente orientada a objetos todas as
representações são realizadas por objetos.

Os objetos combinam dados e funções.

A orientação a objetos pode ser aplicada:

Análise;

Projeto;

Implementação de um sistema.
Por que Orientação a Objetos?

Aumento de Produtividade

Ganho de Qualidade

Ganho de Confiabilidade

Conhecimento adquirido podendo ser compartilhado

Manutenibilidade

Custos
Programação Estruturada


Pontos Positivos:

É fácil de entender

Ainda muito usada em cursos introdutórios de programação
Pontos Negativos:

Baixa reutilização de código

Códigos confusos: Dados “misturados” com comportamento
Programação Orientada a Objetos


Pontos Positivos:

Melhor organização do código

Bom reaproveitamento de código
Pontos Negativos:

Desempenho mais baixo que o paradigma estruturado

Exige um maior grau de abstração
Programação Estruturada x POO
Programação Orientada a Objetos

A Programação Orientada a Objetos (POO) é uma técnica
de programação que usa conceitos de Objetos e Classes
como elementos centrais para representar e processar
dados usados nos programas.
POO
Mensagens

Um programa é encarado como um conjunto de objetos
que interagem entre si, através de mensagens.
Objeto3
Objeto5
Objeto1
Objeto2
Objeto4
Objetos

Objetos são usados para representar entidades (coisas) do
mundo real ou computacional.

Concreto


Cão, Moto, Pessoa...
Abstrato

Conta bancária, Música...
Atributos e Métodos
Atributos e Métodos - Atividade

Identifique 2 objetos ao seu redor e descreva pelo menos
3 características e 2 comportamentos de cada um deles.
Classes

Conjunto de objetos que possuem características (atributos) e
comportamentos (métodos) comuns.

Cada classe funciona como um molde para a criação de objetos.

Os objetos são representações concretas (instâncias) de uma
classe.
Classes

Conjunto de objetos que possuem características (atributos) e
comportamentos (métodos) comuns.

Cada classe funciona como um molde para a criação de objetos.

Os objetos são representações concretas (instâncias) de uma
classe.
Classes
Exemplo de Classes

Entidades da Aplicação: Pessoa, conta, cliente, fornecedor...

Entidades de Interface: Janela, botão, painel, frame, barra...

Entidades Diversas: Conexão com o banco de dados, um arquivotexto, um arquivo XML, uma conexão SSH, uma conexão FTP, um
Web Service...
Representação Gráfica da Classe em UML
Nome da Classe
+ Atributo 1
+ Atributo 2
+ Atributo 3
Atributos
(Caracterísiticas)
+ Metodo1 ( )
+ Metodo2 (Valor1)
+ Metodo3 (Valor1,Valor2)
Métodos
(Comportamento)
Classe Pessoa
Representação gráfica da classe pessoa conforme o padrão UML:
Pessoa
+ Codigo
+ Nome
+ Altura
+ Idade
+ Nascimento
+ Escolaridade
+ Salario
+ Crescer(centimetros)
+ Formar(titulo)
+ Envelhecer(anos)
Classe e Objeto
Representação de 1 objeto da classe pessoa conforme o padrão UML:
Pessoa
+ Codigo = 10
+ Nome = Carlos da Silva
+ Altura = 1,85
+ Idade = 25
+ Nascimento = 10/04/1976
+ Escolaridade = Ensino Médio
+Salario = R$ 700,00
+Crescer(centimetros)
+Formar(ttulo)
+Envelhecer(anos)
Pacote

Pacote é um envoltório de classes, ou seja, guarda classes
e outros pacotes logicamente semelhantes ao pacote que
os contém.

Podemos visualizar os pacotes como diretórios ou pastas,
nos quais podemos guardar arquivos (classes) e outros
diretórios (pacotes) que tenham conteúdo relacionado
com o pacote que os contém.
Resumo

Aprendemos o que é POO.

Conhecemos os conceitos de Classes, Objetos, Atributos,
Métodos, Pacotes e Mensagens.

Começamos a observar o mundo a nossa volta sob o ponto
de vista da Programação Orientada a Objetos.
PHP Orientado a Objetos
A
partir da versão 5, a orientação à objetos do PHP ficou
praticamente completa, não deixando nada a desejar com relação
as linguagens de programação voltadas para desktop.
 Dentre
as funcionalidades que ela suporta, podemos citar
Sobrescrita de função, Sobrecarga de função, Herança,
Polimorfismo e Interfaces.
 Assim
como no Java, PHP OO não suporta herança múltipla. A
solução que os programadores fazem para compensar isso é a
utilização de interfaces.
PHP Orientado a Ojetos
A
orientação à objeto do PHP que será trabalhada, será:
 Criação
de classe
 Atributos
 Métodos construtor
 Encapsulamento
 Modificadores de acesso (Private, Public, Protected)
 Métodos Set
 Métodos Get
 Criação de objetos
 Chamada de métodos
 Herança
Criação de Classes
Exemplo de criação de classe usuário
class Usuario
{
//atributos da função
//métodos da função
...
...
}
Criação de Atributos
Exemplo de criação de atributos da classe usuário
class Usuario
{
}
$idusuario;
//atributo
$nome;
//atributo
$login;
//atributo
$senha;
//atributo
Encapsulamento

É um processo no qual se ocultam as características internas de um
objeto àqueles elementos que não têm porque conhece-las. Os
modificadores de acesso servem para indicar as permissões que
terão outros objetos para acessar a seus métodos e atributos

Modificadores de acesso em PHP:
 Public
 Private
 Protected
Encapsulamento

Public - É o modificador de acesso padrão, ou seja, quando não se
define o modificador de acesso de um método ou atributo, esse é
interpretado pelo PHP como public. É o modificador mais
permissivo, pois os métodos ou atributos public podem ser
acessados em qualquer parte do programa. Na UML seu símbolo é +

Private - É o modificador de acesso mais restritivo. Um atributo ou
método private, só pode ser acessado pelo próprio objeto. Na UML
seu símbolo é -

Protected - É um modificador de restrição média. Um atributo ou
método protected, pode ser acessado pelo próprio objeto e por
objetos das classes filhas (que o herdou). Na UML seu símbolo é #
Encapsulamento
class Usuario
{
public $nome;
//atributo public
private $login;
//atributo privado
protect $senha;
//atributo protegido
public function Calcular()
//método público
{
//métodos da função...
}
}
Criar Objetos
<?php
include_once “Usuario.class.php"; //inclui classe usuário
$objeto = new Usuario(); //cria objeto da classe pessoa
?>
Criar Métodos
<?php
include_once ‘Usuario.class.php’; //inclui classe usuario
$objeto = new Usuario();
//cria objeto da classe pessoa
$objeto->Nome = ‘Carlos Alves’; //chama método setNome
echo $objeto->MostrarNome() );
?>
//chama método getNome
Métodos Construtores
Em PHP, os métodos construtores podem ter dois possíveis nomes:
 Mesmo
nome da classe;
 __construct
Método SET
 Cada
atributo private de uma classe, deve possuir um método
public SET correspondente para que possam ser atribuidos valores
a ele através desse método.
Método SET
<?php
class Usuario
{
private $idUsuario; //atributo privado
private $Nome;
//atributo privado
public function __construct()
//criação do método construtor público
{
}
public function setNome($n)
{
$this->Nome = $n;
//atributo $Nome recebe o valor referente a $n
}
}
?>
Método GET
 Cada
atributo private de uma classe, deve possuir um método
public GET correspondente para que possam ser recuperados seus
valores através desse método.
Método GET
<?php
class Usuario
{
private $idUsuario; //atributo privado
private $Nome;
//atributo privado
public function __construct()
{
}
public function getNome()
{
return $this->nome;
}
}
?>
//criação do método construtor público
//retorna valor do atributo $nome
Herança
 Com
a Herança, as classes podem herdar as características (atributos e
métodos) de outras, de modo que se podem fazer classes especializadas,
baseadas em outras mais gerais
<?php
include_once “Usuario.class.php"; //código da classe pai deve ser incluido na filha
class Admin extends Usuario
//classe Admin herda da classe Usuario
{
private $setor;
public function __construct()
{
parent::__construct();
}
}
?>
//chama construtor da classe pai
Herança
 Exemplo
de chamada de métodos da classe admin que foram herdados da
classe usuario
<?php
//nome do arquivo cria_objeto_heranca.php
include_once “Admin.class.php"; //inclui classe Admin
$objeto = new Admin(); //cria objeto da classe admin
$aux = "Lucas Vegi";
//variável auxiliar recebe nome
$objeto->setNome($aux);
//chama método setNome
echo( $objeto->getNome() );
//chama método getNome
?>
Resumo de Conceitos
 Programação
Orientada a Objetos
É uma forma especial de analisar, projetar e programar, mais próximo de
como expressaríamos as coisas na vida real do que outros tipos diferentes
de programação.
 Linguagens
Orientadas a Objetos
Simula, Smalltalk, C++, Java, C#, Ruby, Python, PHP*, Javascript*, Perl*…
 Classe
Representa um conjunto de objetos semelhantes. É utilizada para
modelar entidades do mundo real.
Resumo de Conceitos
 Objeto
ou Instância
São representações do mundo real.
 Instanciar
Criar uma instância. Quando criamos um objeto dizemos que o
instanciamos a partir de uma classe.
 Atributos
Valores guardados por um objeto ou uma classe.
 Métodos
Procedimentos que um objeto ou classe realizam.
Resumo de Conceitos
 Construtor
Permite aos objetos serem “inicializados” quando é instanciado.
 Destrutor
Quando necessitamos que o objeto seja destruído. Por exemplo,
“desalocação” dinâmica de memória.
 Herança
Compartilhamento de atributos e métodos entre classes com base em
um relacionamento hierárquico.
 Polimorfismo
A mesma operação pode atuar de modos diversos em classes diferentes.
Resumo de Conceitos
 Abstração
Concentração nos aspectos essenciais, próprios, de uma entidade e
em ignorar suas propriedades acidentais.
 Encapsulamento
Mecanismo que provê a proteção de acesso aos membros internos de
uma classe. Para atingir, uma das formas é a visibilidade de acesso.
Public – Acesso público a todos (Default).
Protected – Acesso dentro da própria classe a classes herdeiros
Private – Acesso somente dentro da própria classe.
Resumo de Conceitos
 Classe
Abstrata
Classe modelo que deve ser seguida pelas classes filhas, nunca é
instanciado.
 Método
Abstrato
Método de uma classe abstrata que não possui implementação.
 Classe
Final
Não podem ser estendidas, ou seja, não pode ter subclasses.

Método Final
Método que não pode ser estendido e obviamente não pode ser abstrato
(métodos abstratos foram feitos para serem estendidos).
Resumo de Conceitos
 Métodos
Mágicos
Classe modelo que deve ser seguida pelas classes filhas, nunca é
instanciado.
Padrão MVC
Benefícios do uso do MVC
 Grande
aproveitamento de código;
 Facilita
a manutenção de códigos existentes e também a adição de
novos recursos nas camadas;
 Código
limpo;
 Divisão
de atividades dentro da equipe;
É
um padrão de projeto utilizado em todo o mundo;
 Existem
dezenas de frameworks utilizando esta tecnologia.
Método MVC