unibratec – ensino superior e técnico em informática 1 quarta-feira, 3 de fevereiro de 2010...
TRANSCRIPT
UNIBRATEC – Ensino Superior e Técnico em Informática
1 quarta-feira, 3 de fevereiro de 2010Desenvolvimento de Sistemas
Orientação Objeto
Marcely Dias [email protected]
terça-feira, 11 de abril de 20232
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Análise Orientada a Objeto – AOO - Cenário Mudança do enfoque das funções para os dados
Preocupação em modelar de forma mais detalhada o sistema Análise mais próxima da realidade Facilidade na comunicação com o usuário
Objetos como entidades do mundo real Objetos com estrutura e comportamento e que se
comunicam Dificuldades em fazer alterações nas estruturas de dados nas
abordagens tradicionais “Se eu alterar a definição desse dado, quais programas serão
afetados?”
terça-feira, 11 de abril de 20233
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Trabalha com conceitos já conhecidos - Modularidade, Abstração, Encapsulamento, etc
Orientação a objetos apesar de antiga não era utilizada por falta de pessoas treinadas, interesse em manter a cultura adquirida, ferramentas imaturas. Isso começa a se resolver.
O mundo real é composto por objetos. Cada objeto tem propriedades e
comportamentos. Então porquê não desenvolver programas que
simulem no computador os objetos do mundo real com suas
propriedades e comportamentos?
AOO - Cenário
terça-feira, 11 de abril de 20234
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Segundo Yourdon, “Um sistema construído usando um método Orientado a Objetos é aquele cujos componentes são partes encapsuladas de dados e funções, que podem herdar atributos e comportamentos de outros componentes da mesma natureza, e cujos componentes comunicam-se entre si por meio de mensagens.”
Objetivo: Encontrar os objetos, organizá-los, descrever como interagem através de mensagens, definir operações de seus comportamentos.
AOO
terça-feira, 11 de abril de 20235
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Nos métodos tradicionais de análise, o comportamento do sistema e seus dados eram considerados separadamente. Com orientação a objetos, comportamento e dados são integrados, assim encapsulando detalhes internos de um objeto dos demais.
Análise
Estruturadae Essencial
Orientada aObjetos
Enfoque
Conjunto de programas que executam processosSobre dados
Conjunto de “entidades” que têm características e Comportamentos próprios
Foco
Sistema
Objeto
AOO
terça-feira, 11 de abril de 20236
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
terça-feira, 11 de abril de 20237
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
• Concentra-se nos aspectos essenciais do objeto sem detalhamento, focando em suas características e o que ele faz;
• Impede que um sistema se torne tão interdependente que uma pequena alteração ou implementação resulte em grandes alterações em sua estrutura;
• Combina estrutura (dados) e comportamento (funções) em um único objeto;
• Compartilha elementos estruturais e de comportamento com objetos de níveis inferiores;
• Enfatiza a estrutura de objetos ao invés da estrutura de procedimentos, ou seja, o que o objeto é e não como ele é utilizado.
AOO
terça-feira, 11 de abril de 20238
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Por que usar Orientação a Objetos?
• Atualmente temos ferramentas completas para sua utilização (integrando especificação e implementação)
• Praticamente todas as ferramentas novas de programação permitem suporte a sua utilização
• Qualidade melhor do software (se usada corretamente)• Produtividade em função do reuso (não é imediata)• Produção de códigos mais fáceis de serem entendido (se for bom)• Adequada para a construção de sistemas distribuídos e para aplicações
voltadas a Internet• Permite acesso controlado às informações
terça-feira, 11 de abril de 20239
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
• Dificuldade:• Usuário não pensam seus problemas de forma orientada a
objetos• Requisitos não são orientados a objetos
Requisitos de usuários são funcionais
AOO
terça-feira, 11 de abril de 202310
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
• Com o rápido crescimento surgiram várias metodologias principalmente ente 1989-1994
• Metodologias (processo OO e linguagem de modelagem própria). As mais significativas foram:• OMT, Rumbaugh • COAD/YOURDON, Coad-Yourdon, • OOSE, Jacobson, • SHLAER/MELLOR, Shlaer-Mellor, • BOOCH, Grady Booch
AOO
terça-feira, 11 de abril de 202311
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
• Como os métodos Booch e o OMT estavam sendo largamente utilizados, seus autores juntaram forças para fazer um método unificado, com uma linguagem padrão. Posteriormente Jacobson juntou-se a equipe.
• Linguagem de modelagem proposta por Booch, Rumbaugh e Jacobson • UML (Unified Modeling Language)• Padronizada pela OMG (Object Management Group)• Conta atualmente com o apoio de vários autores e várias
empresas
• O RUP (Rational Unified Process) foi proposto como uma metodologia para desenvolvimento de sistemas, orientada a objetos, utilizando UML
AOO
terça-feira, 11 de abril de 202312
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Histórico da Análise Requisitos Casos de Uso Casos de uso são orientados a objeto ?!
Não estamos fazendo análise orientada a objetos; Pode se utilizado em qualquer projeto como forma de
documentar os requisitos; São fundamentais para as atividades clássicas de A / POO.
Para Análise de Projetos só existe a abordagem OO ? OO. Estruturada; Essencial;
terça-feira, 11 de abril de 202313
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Análise e Projeto Orientado a Objetos Qual o objetivo da Análise ?
Encontrar e descrever os objetos ou conceitos no domínio do problema; Biblioteca: Livro, Biblioteca e Usuário.
Qual o objetivo do Projeto ? Ênfase na definição dos objetos de software; Colaboração entre eles para a satisfação dos requisitos.
Livro
títuloconceito dodomínio
visualização de conceito de domínio
representação em uma linguagem oo
Public class Livro{Private String titulo;
Public Capitulo obterCapitulo(int) {...}
}
terça-feira, 11 de abril de 202314
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Um Exemplo Um jogo de dados no qual um jogador lança dois dados. Se
o total for sete, ele vence; caso contrário, perde. A análise de requisitos pode incluir uma descrição dos
processos do domínio relacionados; estes podem ser descritos como casos de uso.
Passos: Definir casos de uso; Definir modelo de domínio; Definir diagramas de interação; Definir diagramas de classes de projeto.
terça-feira, 11 de abril de 202315
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Caso de uso & Modelo de Domínio Versão simplificada do Caso de uso:
Caso de uso: Jogar um Jogo de Dados: Um jogador pega e lança os dados. Se a soma do valor das
faces dos dados totalizar sete, ele vence; caso contrário, perde.
Modelo de domínio
Jogador
nome
Dado
valorDaFace*1
JogoDeDados
1
1
1
*1
1
1 *
1
*
terça-feira, 11 de abril de 202316
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Definir diagrama de Interação Diagrama de interação: diagrama de seqüência
:JogoDeDados dado1:Dado dado2:Dado
lancar()
vf1 = obterValorDaFace()
lancar()
vf2 = obterValorDaFace()
jogar ()
terça-feira, 11 de abril de 202317
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Definir diagrama de Classes de Projeto Classes de Software
JogoDeDados
jogar()
Dado
valorDaFace : Integer
obterValorDaFace() : Integerlancar()
1 11 1
111 1
terça-feira, 11 de abril de 202318
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Paradigma de Orientação a ObjetosParadigma é uma forma de pensar e perceber o mundo real e determina o que escolhemos como significativo e o que descartamos ao compreender ou descrever o que existe ou ocorre no mundo em torno de nós.A mudança de paradigma é uma oportunidade de encontrar novas interpretações para antigas questões, bem como, para rever soluções tidas como definitivas.
terça-feira, 11 de abril de 202319
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Orientação a objetos constitui um novo paradigma computacional pois representa uma mudança na forma de pensar e conceber sistemas e programas de computador.
A estratégia de O-O para modelagem de sistemas baseia-se na identificação dos objetos (que desempenham ou sofrem ações no domínio do problema) e dos padrões de cooperação e interação entre estes objetos.
Paradigma de Orientação a Objetos
terça-feira, 11 de abril de 202320
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Princípios Orientação a Objetos
Abstração Encapsulamento Modularidade Herança Polimorfismo
terça-feira, 11 de abril de 202321
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Abstração Permite ignorar os aspectos de um assunto não relevantes para o
propósito Concentração nas características essenciais, gerenciando
complexidade Construção de um modelo para representação de uma realidade
Forte, Forte, Veloz, ...Veloz, ...
Coração,Coração,Rim, Rim,
Peso, ...Peso, ...
terça-feira, 11 de abril de 202322
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Abstração
terça-feira, 11 de abril de 202323
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Abstração
Pessoa
NomeSexoData Nascimento
solicitaPedido ()efetuaPagamento ()
Abstração de DadosAbstração de Dados
Abstração de ProcedimentosAbstração de Procedimentos
terça-feira, 11 de abril de 202324
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Encapsulamento Restringir o escopo ou visibilidade da informação
Obter melhor manutenibilidade e reutilização
Ocultar detalhes de implementação É o processo de compartimentalização dos elementos de uma
abstração Nenhuma parte de um sistema complexo deve depender de
detalhes internos de qualquer outra parte
Máquina de Refrigeranteem lata
Coloque umaColoque umamoedamoeda
Receba a LataReceba a Lata
terça-feira, 11 de abril de 202325
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Modularidade Decomposição de um problema em
pequenos pedaços, para gerenciar complexidade (Dividir para conquistar)
Cada conceito independente deve ser representado por um módulo
Construção de módulos desacoplados Módulos são dependentes uns dos outros, o
que leva a uma relação de acoplamento
terça-feira, 11 de abril de 202326
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Modularidade
terça-feira, 11 de abril de 202327
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Herança Mecanismo para expressar a similaridade entre classes Representa generalização e especialização Permite representar membros comuns uma só vez; Especialização pode incluir novos métodos e atributos
Pessoa
Professor Aluno
terça-feira, 11 de abril de 202328
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Polimorfismo
O conceito de polimorfismo está associado a herança;
Redeclaração de métodos previamente herdados de uma classe;
Os métodos herdados da super-classe são reimplementados na sub-classe
terça-feira, 11 de abril de 202329
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Exemplos Suponha a seguinte classe escrita em Java:public abstract class OperacaoMatematica { public abstract
double calcular(double x, double y);}
Esta é uma classe abstrata que representa qualquer operação matemática. Podemos imaginar diversas operações que se encaixam na sua interface, como soma, subtração, multiplicação ou divisão, entre outras. Note que, mesmo que a natureza do cálculo mude, a semântica do método calcular não muda, ou seja, ele sempre calculará o resultado da operação matemática que está sendo trabalhada.
terça-feira, 11 de abril de 202330
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Definamos então, duas subclasses, Soma e Subtracao, que implementam a classe OperacaoMatematica:
public class Soma extends OperacaoMatematica { public double calcular(double x, double y) {
return x+y; }
}
public class Subtracao extends OperacaoMatematica { public double calcular(double x, double y) {
return x-y; }
}
Exemplos
terça-feira, 11 de abril de 202331
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
O seguinte trecho de código demonstra o uso do polimorfismo:public class Contas {
public static void mostrarCalculo(OperacaoMatematica operacao, double x, double y) {
system.out.println("O resultado é: " + operacao.calcular(x, y)); }
public static void main(String args[]) { //Primeiro calculamos uma soma Contas.mostrarCalculo(new Soma(), 5, 5); //Imprime o resultado é:
10 Contas.mostrarCalculo(new Subtracao(), 5, 5); //Imprime o
resultado é: 0 }
}
Note que, embora o método calcular tenha sido chamado duas vezes no interior de mostrarCalculo, o comportamento apresentado variou de acordo com a classe ao qual ele representava no momento. É comum definir sobrecarga de métodos ou simplesmente sobrecarga como uma forma de polimorfismo embora esta definição deixe lacunas conceituais.
Exemplos
terça-feira, 11 de abril de 202332
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Conceitos Básicos de Orientação a Objetos
Objeto e Classe Atributo
Propriedades de um objeto Armazenam estados dos objetos
Operação Modelam o comportamento das classes Serviços que os objetos oferecem a outros objetos
Pacote e Subsistemas: Elementos de Agrupamento
Relacionamento Associação (Simples, Agregação e Composição) e Generalização
Cargo
nome : Stringsalario : Currency
inserir()alterar()excluir()consultar()
Pessoa
nome : Stringsexo : StringdataNascimento : Date
inserir()alterar()excluir()consultar()
+ cargo
Classe
Atributos
Operação/Métodos
Estado
Comportamento
Relacionamento
terça-feira, 11 de abril de 202333
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Objeto Identidade: Todo objeto é único e pode ser
distinguido de outros objetos Estado: Determinado pelos dados contidos
no objeto Comportamento: Definido pelos
serviços/operações que ele oferece
terça-feira, 11 de abril de 202334
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Classes Descrições de objetos com propriedades e comportamento
comuns Abstração que enfatiza o que é relevante Objetos são instâncias de Classes
terça-feira, 11 de abril de 202335
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Relacionamento Associação:
Simples: Relação estrutural entre classes Agregação: Relacionamento todo-parte. O todo possui um
nível de abstração maior que a parte Composição: Relação de posse mais forte. O todo é
responsável pela criação da parte
Exemplos: Dependente e Funcionário? Pedido e Item do pedido? Funcionário e Cartão de ponto?
terça-feira, 11 de abril de 202336
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Relacionamento Generalização
Relacionamento entre classes onde uma classe compartilha a estrutura (atributos e relacionamentos) e comportamento (operações) de outras classes
Define uma hierarquia de abstrações
Relacionamento “é um tipo de” Uma subclasse pode:
Adicionar Atributos, operações e relacionamentos; Redefinir operações herdadas
Tipos de Herança: Simples e Múltipla Classe herdando de apenas uma classe; Classe herdando de mais de uma classe;
terça-feira, 11 de abril de 202337
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Testezinho
Dia 10/08/2011 – 2º horário Assunto: Análise OO e Conceitos Orientação
Objeto
terça-feira, 11 de abril de 202338
APS – Análise e Projeto de Sistemas Profa. Marcely Dias
Desenvolvimento de Sistemas
Dúvidas ?