Régis Simão 1/48
Projeto Orientado a Objetos
Projeto Orientado a Objetos
Projeto Orientado a Objetos
Agenda
Introdução
Objetos e classes de objetos
Processo de projeto orientado a objetos
Evolução de projeto
Régis Simão 3/48
Projeto Orientado a Objetos
Introdução
Objetivos
Explicar como um projeto de software pode ser representado como um
conjunto de objetos que interagem entre si, que gerenciam seus próprios estados e suas operações
Descrever as atividades mais importantes em um processo geral de
projeto orientado a objetos
Explicar os diferentes modelos que podem ser utilizados para
documentar um projeto orientado a objetos
Descrever a representação desses modelo em UML (Linguagem de
Projeto Orientado a Objetos
Introdução
Projetar sistemas usando objetos e classes auto-contidos. É a estratégia
de projeto onde se pensa em “coisas” (objetos), em vez de operações ou
funções
Características do Projeto Orientado a Objetos (POO)
Objetos são abstrações das entidades do sistema ou do mundo real Objetos são independentes e encapsulam estado das entidades A funcionalidade do sistema é expressa em termos de serviços de
objetos
Áreas de dados compartilhados são eliminadas. A comunicação de
objetos é através da passagem de mensagens
Objetos podem ser distribuídos e podem ser executados em seqüência
Régis Simão 5/48
Projeto Orientado a Objetos
Introdução
Projeto Orientado a Objetos
Introdução
Vantagens do POO
Manutenção mais fácil. Objetos podem ser entendidos como entidades
isoladas
Objetos são componentes reusáveis
Em alguns sistemas, pode existir um mapeamento óbvio das entidades
Régis Simão 7/48
Projeto Orientado a Objetos
Introdução
Desenvolvimento Orientado a Objetos
Análise, projeto e implementação orientados a objetos são etapas
relacionadas, mas distintas
A Análise Orientada a Objetos (AOO) compreende o desenvolvimento de
um modelo de objetos do domínio da aplicação
O Projeto Orientado a Objetos (POO) compreende o desenvolvimento de
um modelo de sistemas orientado a objetos que implementa os requisitos da aplicação
Implementação Orientada a Objetos (IOO) compreende a implementação
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Objetos são entidades em sistemas que representa instâncias das
entidades sistema ou do muito real
Classes de objetos são templates para os objetos. Eles podem ser
usados para criar objetos
Classes de objetos podem herdar atributos e serviços de outras classes
de objetos
Régis Simão 9/48
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Objetos
Um objeto é uma entidade que possui um estado e um conjunto definido
de operações que operam nesse estado. O estado é representado por um conjunto de atributos de objetos. As operações associadas com o objeto fornecem serviços para outros objetos (clientes), que requisitam esses serviços quando uma computação é necessária.
Os objetos são criados de acordo com uma definição de classe de
objetos, que serve como um template para criar objetos. Essa classe apresenta declarações de todos os atributos e operações que devem ser associados a um objeto dessa classe.
Projeto Orientado a Objetos
Objetos e Classes de Objetos
UML (Linguagem de Modelagem Unificada)
Várias notações diferentes para descrever projetos orientados a objetos
foram propostos entre 1980 e 2000
A UML é uma integração destas notações
A UML descreve notações para um número diferentes de modelos que
podem ser produzidos durante a análise e o projeto orientado a objetos
Régis Simão 11/48
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Comunicação de Objetos
Conceitualmente, objetos se comunicam pela passagem de mensagens
Mensagens
O nome do serviço solicitado na chamada de um objeto
Repassa a informação necessária para executar o serviço e o nomeia a
variável para o resultado do serviço
Na prática, mensagens são freqüentemente implementadas por
chamadas de métodos
Nome = nome do método
Régis Simão 13/48
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Objetos são membros de classes que definem atributos e operações
Classes podem ser organizadas em hierarquias, onde uma classe
(super-classe) é uma generalização de uma ou mais classes (sub-classes)
Uma sub-classe herda os atributos e operações de suas super-classe e
pode acrescentar novos métodos ou atributos
Generalização na UML é implementada como herança na linguagem de
programação OO
Régis Simão 15/48
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Vantagens da Herança
É uma mecanismo de abstração que pode ser usado para classificar
entidades
É um mecanismo de reutilização em nível de projeto e de programação O gráfico de hierarquia é uma fonte de conhecimento organizacional
sobre domínio e sistemas
Problemas com a Herança
Classes de objetos não são auto-contidos. Eles não podem ser
entendidos sem referenciar suas super-classes
Projetistas têm a tendência de reutilizar o gráfico de hierarquia criado
durante a análise, podendo acarretar uma ineficiência significante
O gráfico de hierarquia de análise, projeto e implementação têm
Régis Simão 17/48
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Hierarquia e o Projeto OO
Existem diferentes visões sobre a importância de herança em Projeto OO
Visão 1: Identificar uma hierarquia de herança é uma parte fundamental do projeto OO. Obviamente, só pode ser implementada em uma linguagem de programação OO
Visão 2: Herança é um conceito de implementação útil, que permite reuso das definições de atributos e operações. Identificando uma hierarquia de herança no projeto ajuda a minimizar restrições desnecessárias de implementação
Herança introduz complexidade e é indesejável, especialmente em sistemas críticos
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Associações na UML
Objetos e classes de objetos participam de relacionamentos com outros
objetos e classes de objetos
Na UML, o relacionamento comum é indicado por uma associação
Associações possuem informações que as descrevem
Associações são gerais, mas podem indicar que um atributo de um
objeto é um objeto associado ou que um método depende de um objeto associado
Régis Simão 19/48
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Projeto Orientado a Objetos
Objetos e Classes de Objetos
Objetos Concorrentes
A natureza de objetos como entidades auto-contidas faz dos objetos
adequados para implementação concorrente
O modelo de passagem de mensagem da comunicação de objetos pode
ser implementado diretamente mesmo que os objetos estejam sendo executados em processadores em separado em um sistema distribuído
Threads em JAVA
Threads em JAVA são construções simples para implementar objetos
concorrentes
Threads devem incluir um método chamado run() e este é iniciado pela
máquina virtual JAVA
Objetos ativos tipicamente incluem um laço infinito para execução
Régis Simão 21/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Define o contexto e os modos de uso do sistema
Projetam a arquitetura do sistema
Identificam os objetos principais do sistema
Desenvolvem os modelos de projeto
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Descrição do Sistema Metereológico
Um sistema de mapeamento metereológico é necessário para gerar
mapas metereológico regularmente, utilizando dados coletados a partir de estações metereológicas remotas, sem que seus funcionários estejam presentes, e de outras fontes de dados, como observadores de tempo, balões e satélites metereológicos. As estações metereológicas
transmitem seus dados ao computador da área em resposta a uma requisição dessa máquina
O sistema de computador da área valida os dados coletados e faz
integração dos dados a partir de diferentes fontes. Os dados integrados são arquivados e, com os dados desses e um banco de dados de mapas digitalizados, é criado um conjunto de mapas metereológicos locais. Os mapas podem ser impressos para distribuição em uma impressora
Régis Simão 23/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Descrição de uma Estação Metereológica
Uma estação metereológica é um pacote de instrumentos controlados
por software, que coleta dados, realiza algum processamento de dados e transmite estes dados para outros processos. Os instrumentos incluem termômetros de ar e terra, um barômetro e outros. Os dados são
coletados a cada cinco minutos
Quando um comando é solicitado para transmitir os dados
metereológicos, a estação metereológica processa e armazena os dados coletados. Os dados coletados são transmitidos para computador de mapeamento quando uma solicitação é recebida
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Régis Simão 25/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Contexto do Sistema e Modelo de Uso
Desenvolve um entendimento do relacionamento entro o software sendo
processado e seu ambiente externo
Contexto do Sistema
Um modelo estático que descreve outros sistemas no ambiente. Usa um
modelo de subsistema para mostrar outros sistemas. O slide seguinte mostra os sistemas em torno do sistema da estação metereológica
Modelo de uso do sistema
Um modelo dinâmico que descreve como o sistema interage com seu
ambiente. Usa-se Casos de Uso para mostrar as interações entre as entidades externas e o sistema
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Régis Simão 27/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Régis Simão 29/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Projeto de Arquitetura
Uma vez que as interações entre o sistema e seu ambiente tenha sido
entendido, você usa esta informação para projetar a arquitetura do sistema
Arquitetura em camadas é apropriada para estações metereológicas
Camada de interface para manipular comunicações
Camada de coleção de dados para gerenciar os instrumentos
Camada de instrumentos para coletar os dados
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Régis Simão 31/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Identificação dos Objetos
Identificar objetos é a parte mais difícil do projeto OO
Não existe mágica para identificação de objetos. É necessário ter
habilidade, experiência e conhecimento de domínio
A identificação de objetos é um processo iterativo. É incomum realizar
todo de uma única vez
Técnicas para identificação de objetos
Use a técnica gramatical baseada nas descrições do sistema em
linguagem natural
Baseie a identificação em coisas tangíveis do domínio da aplicação Use a técnica comportamental e identifique objetos baseados no que
participa em que comportamento
Use a análise baseada em cenários. Os objetos, atributos e métodos em
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Classes de Objetos da Estação Metereológica
Termômetro de solo, Anemômetro e Barômetro
Objetos do domínio da aplicação. Eles são objetos que representam
hardwares relacionados aos instrumentos do sistema
Estação Metereológica
A interface básica da estação metereológica com o ambiente. Ele reflete as interações identificadas no modelo de casos de uso
Dados Metereológico
Régis Simão 33/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Outros objetos e refinamentos
Usa-se o conhecimento do domínio para identificar mais objetos e
operações
Estações metereológicas deveriam ter um identificador único
Estações metereológicas são remotamente localizadas, de forma que as
falhas nos instrumentos deveriam ser informados automaticamente. Atributos e operações deveriam ser verificados automaticamente
Objetos ativos e passivos
Os objetos são passivos e coletam dados sob demanda. Isto introduz flexibilidade no uso do tempo de processamento do controlador
Régis Simão 35/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Modelos de projeto
Os modelos de projeto mostram os objetos e classes de objetos e os
relacionamentos entre eles
Modelos estáticos descrevem a estrutura estática do sistema em termos
de classes de objetos e relacionamentos
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Exemplos de Modelos de Projetos
Modelos de subsistemas mostram o agrupamento lógico dos objetos em
subsistemas coerentes
Modelos de seqüência mostram a seqüência de interações dos objetos
Modelos de máquina de estado mostram como objetos individuais
mudam seus estados em respostas a eventos
Outros modelos incluem modelos de casos de uso, modelos de
Régis Simão 37/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Modelos de Sistemas
Mostra como o projeto é organizado em grupos de objetos lógicos
Na UML, os subsistemas são mostrados usando-se pacotes. É um
modelo lógico. A organização real dos objetos em sistemas pode ser diferente
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Régis Simão 39/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Modelos de Seqüência
Modelos de seqüência mostram a seqüência de interações dos objetos
Objetos são organizados horizontalmente no topo
O tempo é apresentado verticalmente, assim modelos são lidos do topo para baixo
Interações são representadas por setas rotuladas. Diferentes estilos de setas representam diferentes tipos de interações
Um retângulo fino na linha de vida do objeto representa o tempo que o objeto leva para executar sua operação
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Régis Simão 41/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Diagrama de Estado
Mostra como os objetos respondem a diferentes solicitações de serviços
e as transições de estado solicitadas por estas solicitações
Se o estado do objeto é Desativado então estado responde a mensagem iniciar()
No estado Aguardando, o objeto está esperando por outras mensagens Se a mensagem relatarClima() é recebida, o sistema move-se para o estado
Resumindo
Se a mensagem calibrar() é recebida, o sistema move-se para o estado Calibrando
Quando um sinal de relógio é recebido, então sistema muda para o estado Coletando
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Régis Simão 43/48
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Especificação da Interface do Objeto
Interfaces de objetos têm que ser especificadas de forma que os objetos
e outros componentes pode ser projetos em paralelo
Objetos podem ter várias interfaces, os quais são pontos de vistas dos
métodos providos
A UML usa o diagrama de classes para especificação de interfaces, mas
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Régis Simão 45/48
Projeto Orientado a Objetos
Evolução do Projeto
Escondendo informação dentro de objetos significa que mudanças feitas
em um objeto não afeta outros objetos de modo não previsível
Assuma que as facilidades de monitoramento de poluição devem ser
adicionadas as estações metereológicas. Deve calcular a quantidade de
poluentes diferentes na atmosfera
As leituras da poluição são transmitidas juntamente com os dados
metereológicos
Mudanças requisitadas
Adicionar uma classe de objetos chamada de QualidadeDoAr Adicionar uma operação informarQualidadeDoAr() na classe
EstacaoMetereologica. Modificar o software de controle para coletar as leituras da poluição
Adicionar os objetos que representem os instrumentos que monitoram a
Projeto Orientado a Objetos
Processo de Projeto Orientado a Objetos
Régis Simão 47/48