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