Orientação a Objetos - Software Livre Brasil

Propaganda
Análise de Sistemas
Visão Geral - Orientação a Objetos
Prof. José Honorato Ferreira Nunes
[email protected]
Resumo:
VISÃO GERAL:
Modelagem
de sistemas de software
O paradigma da orientação a objetos
Evolução histórica da modelagem de
sistemas
A Linguagem de Modelagem Unificada
(UML)
Modelagem de Sistemas de Software
ESTUDO DE CASO
Estudo de Caso
Para exemplificar o uso de modelos em
tarefas comuns, consideremos o Restaurante
Caseiro Hipotético, que serve refeições por
quilo, e onde o gerente, que também é a
pessoa que fica na balança e no caixa, anota
os pesos dos pratos dos clientes e os
pedidos que os garçons trazem em um
quadro-branco. A figura seguinte mostra o
quadro-branco do Restaurante Caseiro
Hipotético.
Estudo de Caso
Estudo de Caso
O quadro-branco mostrado na figura contém
espaços para anotar o peso dos pratos e os
pedidos de cada mesa do restaurante. Quando os
itens dos pedidos são servidos, o gerente anota,
ao lado do item no quadro-branco, o número de
itens ou peso do prato. Quando o cliente pede a
conta, o gerente se refere ao quadro-branco para
calcular o valor devido. O quadro-branco é um
modelo do restaurante, representando de forma
simplificada as informações do restaurante que
são necessárias para a contabilização dos pedidos
feitos para os garçons e gerente.
Estudo de Caso
O quadro-branco mostrado na figura contém
espaços para anotar o peso dos pratos e os
pedidos de cada mesa do restaurante. Quando os
itens dos pedidos são servidos, o gerente anota,
ao lado do item no quadro-branco, o número de
itens ou peso do prato. Quando o cliente pede a
conta, o gerente se refere ao quadro-branco para
calcular o valor devido. O quadro-branco é um
modelo do restaurante, representando de forma
simplificada as informações do restaurante que
são necessárias para a contabilização dos pedidos
feitos para os garçons e gerente.
O PARADIGMA DA
ORIENTAÇÃO A OBJETOS
•Introdução
•Classes e Objetos
•Mensagens
•O papel da abstração na orientação
a objetos
O PARADIGMA DA
ORIENTAÇÃO A OBJETOS
Introdução
O paradigma da orientação a objetos
O termo “paradigma da orientação a
objetos” é uma forma de abordar um
problema. Há alguns anos, Alan Kay, um dos
pais do paradigma da orientação a objetos,
formulou a chamada “analogia biológica”.
Nessa analogia, ele imaginou como seria um
sistema de software que funcionasse como um
ser vivo. Nesse sistema, cada “célula”
interagiria com outras células através do envio
de mensagens para realizar um objetivo
comum. Adicionalmente, cada célula se
comportaria como uma unidade autônoma.
O paradigma da orientação a objetos
De uma forma geral, Key pensou em como
construir um sistema de software a partir de
agentes autônomos que interagem entre si. Ele,
então estabeleceu os seguintes princípios da
orientação a objetos:
1.Qualquer coisa é um objeto.
2.Objetos realizam tarefas através da requisição de
serviços a outros objetos.
3.Cada objeto pertence a uma determinada classe.
Uma classe agrupa objetos similares.
4.A classe é um repositório para comportamento
associado ao objeto.
5.Classes são organizadas em hierarquias.
O paradigma da orientação a objetos
Mas que o paradigma da
orientação a objetos tem a ver
com a modelagem de sistemas?
O paradigma da orientação a objetos
Antes da orientação a objetos, um outro
paradigma era utilizado na modelagem de
sistemas: o paradigma estruturado. Nesse
paradigma, os elementos são dados e
processos. Processos agem sobre dados para
que um objetivo seja alcançado.
Por outro lado, no paradigma da
orientação a objetos, uma unidade autônoma
que contém seus próprios dados que são
manipulados pelos processos definidos para o
objeto e que interage com outros objetos para
alcançar um objetivo.
O paradigma da orientação a objetos
É o paradigma da orientação a objetos
que os seres humanos utilizam no cotidiano
para a resolução de problemas. Uma pessoa
atende a mensagens (requisições) para
realizar um serviço; essa mesma pessoa envia
mensagens a outras para que estas realizem
serviços.
Por que não aplicar essa mesma forma
de pensar a modelagem de sistemas?
O paradigma da orientação a objetos
Pode-se concluir que a orientação a
objetos, como técnica para modelagem de
sistemas, diminui a diferença semântica entre
a realidade sendo modelada e os modelos
construídos.
Classes e objetos
Classes e objetos
Classes são estruturas das linguagens de
programação orientadas a objetos para conter, para
determinado modelo, os dados que devem ser
representados e as operações que devem ser
efetuadas com estes dados.
Cada classe deve ter um nome que seja
facilmente associável ao modelo que a classe
representa.
Classes e objetos
Classes são escritas com os recursos e
regras da linguagem de programação
orientada a objetos para implementação dos
modelos, mas em muitos dos casos as
classes são somente moldes ou formas que
representam os modelos abstratamente.
Para
representação
de
dados
específicos usando classes será necessária a
criação de objetos ou instâncias desta
classe.
Classes e objetos
Um objeto ou instância é uma
materialização da classe, e assim pode ser
usado para representar dados e executar
operações.
Para que os objetos ou instâncias
possam ser manipulados, é necessária a
criação de referências a estes objetos, que
são basicamente variáveis do tipo da classe.
Classes e objetos
Fazendo uma analogia, uma classe poderia
ser considerada como sendo uma planta de
prédio, que descreve o prédio mas não
corresponde fisicamente a ele, enquanto que os
prédios construídos de acordo com aquela planta
seriam as instâncias. Similarmente, uma ficha
de
matrícula
em
branco,
sem
conter
informações, seria uma classe enquanto que
várias
fichas
daquele
tipo,
preenchidas,
corresponderiam à instâncias daquela classe. O
nome ou número de cada um destes prédios
seria a referência às instâncias da planta do
prédio.
Classes e objetos
É importante notar que uma classe é uma
abstração das características de um grupo de
coisas do mundo real. Na maioria das vezes, as
coisas do mundo real são muito complexas para
que todas as suas características sejam
representadas em uma classe. Além disso, para
fins de modelagem de um sistema, somente um
subconjunto de características pode ser
relevante. Portanto, uma classe representa uma
abstração das características relevantes do
mundo real.
Mensagens
Mensagens
Objetos não executam suas operações
aleatoriamente. Para que uma operação em um
objeto seja executada, deve haver um estimulo
enviado a esse objeto.
Se um objeto for visto como uma entidade
ativa que representa uma abstração de algo do
mundo real, então faz sentido dizer que tal objeto
pode responder a estímulos a ele enviados (assim
como faz sentido dizer que seres vivos reagem a
estímulos que eles recebem).
Mensagens
Quando se diz na terminologia de
orientação a objetos que objetos de um
sistema estão trocando mensagens significa
que
esses
objetos
estão
enviando
mensagens uns aos outros com o objetivo de
realizar alguma tarefa dentro do sistema no
qual eles estão inseridos.
Mensagens
O papel da abstração na
orientação a objetos
O papel da abstração na orientação a objetos
Uma abstração é qualquer modelo que
inclui os aspectos mais importantes,
essenciais de alguma coisas, ao mesmo
tempo em que ignora os detalhes menos
importantes.
Abstrações
permitem
gerenciar
a
complexidade e concentrar a atenção nas
características essenciais de um objeto.
Uma abstração é dependente da
perspectiva: o que é importante em um
contexto pode não ser importante em outro.
O papel da abstração na orientação a objetos
O papel da abstração na orientação a objetos
Encapsulamento
Objetos possuem comportamento. O termo
comportamento diz respeito a operações realizadas
por um objeto e também ao modo pelo qual essas
operações são executadas. O mecanismo de
encapsulamento é uma forma de restringir o acesso
ao comportamento interno de um objeto. Um objeto
que precisa da colaboração de outro objeto para
realizar alguma tarefa simplesmente envia uma
mensagem a esse último. O método que o objeto
requisitado usa para realizar a tarefa não é
conhecido dos objetos requisitantes.
O papel da abstração na orientação a objetos
Encapsulamento
O objeto requisitante precisa conhecer quais
as tarefas que um outro objeto sabe fazer ou que
informação ele conhece. Para tanto, a classe de um
objeto descreve o seu comportamento. Na
terminologia da orientação a objetos, diz-se que um
objeto possui uma interface. Em termos bastantes
simples, a interface de um objeto é o que ele
conhece e o que ele sabe fazer, sem descrever
como o objeto conhece e faz. A interface de um
objeto define os serviços que ele pode realizar e
consequentemente as mensagens que ele recebe.
Uma interface pode ter varias formas de
implementação.
O papel da abstração na orientação a objetos
Encapsulamento
Através do encapsulamento, a única coisa que
um objeto precisa saber para pedir a colaboração de
outro objeto é conhecer sua interface. Isso contribui
para a autonomia dos objetos. Cada objeto envia
mensagens a outros objetos para realizar certas
tarefas, sem se preocupar em como as tarefas são
realizadas. A aplicação da abstração, neste caso,
está em esconder os detalhes de funcionamento
interno de um objeto.
O papel da abstração na orientação a objetos
Encapsulamento
O papel da abstração na orientação a objetos
Polimorfismo
O polimorfismo indica a capacidade de abstrair
várias implementações diferentes em uma única
interface.
CASO: Há algum tempo atrás, o controle remoto de
meu televisor quebrou. Um tempo depois, comprei um
videocassete do mesmo fabricante de meu televisor.
Para minha surpresa, o controle remoto do
videocassete também funcionava para o televisor!
Esse é um exemplo de aplicação do Princípio do
Polimorfismo. Note mais uma vez que a abstração
também é aplicada aqui: um objeto pode enviar a
mesma mensagem para objetos semelhantes, mas que
implementam a sua interface de formas diferentes.
O papel da abstração na orientação a objetos
Herança
A herança é outra forma de abstração utilizada
na orientação a objetos, ela pode ser vista como um
nível de abstração acima da encontrada entre classes
e objetos.
Na herança, classes semelhantes são agrupadas
em hierarquias. Cada nível de uma hierarquia pode
ser visto como um nível de abstração. Cada classe em
um nível da hierarquia herda as características das
classes nos níveis acima. Esse mecanismo facilita o
compartilhamento de comportamento comum entre
um conjunto de classes semelhantes. Além disso, as
diferenças ou variações de uma classe em particular
podem ser organizadas de forma mais clara.
O papel da abstração na orientação a objetos
Herança
EVOLUÇÃO HISTÓRICA DA
MODELAGEM DE SISTEMAS
*****Livro*****
A LINGUAGEM DE
MODELAGEM UNIFICADA
(UML)
UML - Unified Modeling Language
A UML é uma linguagem para especificar, visualizar, construir e documentar os
artefatos de sistema de software, bem como para modelar negócios e outros
sistemas que não sejam de software (OMG).
1.
ESPECIFICAR – construir modelos precisos, sem
ambiguidade e completos.
 Facilita comunicação

2.
Semântica – não é um “punhado” de gráficos
VISUALIZAR – representar os modelos em uma
linguagem gráfica de fácil entendimento.

“Um gráfico vale mais do que mil palavras”

Diversas perspectivas (caso de uso, classe, estado,…)
UML - Unified Modeling Language
A UML é uma linguagem para especificar, visualizar, construir e documentar os
artefatos de sistema de software, bem como para modelar negócios e outros
sistemas que não sejam de software (OMG).
3.
CONSTRUIR – mapear os modelos da UML em linguagem de
programação
 Geração de código automática a partir do modelo visual
 Geração do modelo visual a partir do código
3.
DOCUMENTAR – incorporar os documentos que descrevem o
sistema em várias perspectivas
 Artefatos para documentação do sistema podem ser
construídos através das representações gráficas da UML
 Ex: Requisitos mapeados através dos casos de uso
Visões de um Sistema
Visões de um Sistema
O desenvolvimento de um sistema de software
complexo demanda que seus desenvolvedores
tenham a possibilidade de examinar e estudar
esse sistema a partir de diversas perspectivas.
Um sistema pode ser descrito por cinco visões
interdependentes deste sistema.
Cada visão enfatiza aspectos diferentes do
sistema
Visões da UML
Visões da UML
• Visão de Casos de Uso - mostra a funcionalidade do sistema
comportamento do sistema através da ótica do cliente (usuário).
-
Visão Projeto - descreve o problema e a sua solução – define os aspectos
lógico e interno do sistema.
• Visão de Processo – trata a divisão do sistema em processos e
processadores – possui foco no desempenho e escalabilidade do sistema.
• Visão de Implementação - descreve a arquitetura física do sistema, em
termos de componentes de software e arquivos.
• Visão de Implantação – mostra a topologia do HW em que o sistema é
executado.
Visões da UML
Ao enfatizar um conjunto de aspectos do sistema, um modelo
dá uma visão do sistema.
A descrição completa do sistema pode exigir várias visões daí a necessidade de vários tipos de modelos.
Visões e a UML
• As visões são usadas em UML para descrever os diferentes
aspectos do sistema sendo modelado.
• Uma visão é uma abstração do sistema, formada por um
conjunto de diagramas.
• A partir de um conjunto de visões se chega a uma descrição
completa do sistema a ser construído
Os Diagramas da UML
Diagramas da UML
A UML prevê a utilização vários tipos de diagramas para
a modelagem de sistemas, descritos a seguir.
OBS: Nem todos os diagramas apresentados são de uso
obrigatório, sendo utilizados a depender da natureza do
projeto.
Diagramas propostos pela UML:
Diagrama de Classe
Esse diagrama define a estrutura das
classes utilizadas pelo sistema, determinando
os atributos e métodos possuídos por cada
classe, além de estabelecer como as classes se
relacionam e trocam informações entre si.
As Classes podem se relacionar com
outras
através
de
diversas
maneiras:
associação,
dependência,
especialização/generalização,
agregação
e
composição.
Diagrama de Classe
Diagrama de Classe
•
Notação: Exemplo
Diagrama de Objetos
É uma variação do diagrama de classes e
utiliza quase a mesma notação. A diferença é que o
diagrama de objetos mostra os objetos que foram
instanciados das classes, fornecendo uma visão dos
valores armazenados pelos objetos em um
determinado momento de sua execução.
Os diagramas de objetos não são tão
importantes como os diagramas de classes, mas
eles são muito úteis para exemplificar diagramas
complexos de classes ajudando muito em sua
compreensão.
Diagrama de Objetos
Diagrama de Sequência
Mostra a interação entre os vários objetos
de um sistema.
O mais importante aspecto deste diagrama
é que a partir dele percebe-se a sequência de
mensagens enviadas entre os objetos. As
mensagens enviadas por cada objeto são
simbolizadas por setas entre os objetos que se
relacionam.
O decorrer do tempo é visualizado
observando-se o diagrama no sentido vertical de
cima para baixo
Diagrama de Sequência
Diagrama de Caso de Uso
É utilizado para representar graficamente
os requisitos funcionais de um sistema.
Este diagrama pode ser usado em todas
as fases no desenvolvimento de um sistema,
desde a fase de levantamento de requisitos até
a fase de implantação.
Nele é encontrado os atores externos,
casos de uso e as associações entre eles.
Diagrama de Caso de Uso
Diagrama de Caso de Uso - Ator
Os atores representam o papel de uma
entidade externa ao sistema como um usuário,
um hardware, ou outro sistema que interage
com o sistema modelado. Os Atores são
representados como bonecos.
CLIENTE
ALUNO
Diagrama de Caso de Uso - Ator
•
ATOR:
– Várias pessoas podem ser representadas por um único ator:
Diagrama de Caso de Uso - Ator
•
ATOR:
– Uma pessoa pode atuar como mais de um ator:
Diagrama de Caso de Uso – Caso de Uso
O caso de uso se refere aos serviços,
tarefas ou funções que podem ser utilizados de
alguma maneira pelos usuários do sistema. No
diagrama ele é representado por uma elipse.
Representa quem faz o que (interage)
com o sistema, sem considerar o
comportamento interno do sistema.
Diagrama de Caso de Uso – Caso de Uso
•
CASO DE USO:
– Exemplos:
• Caso de uso de uma biblioteca: Emprestar Livro
• Caso de uso de um banco: Sacar Dinheiro
– Representação:
Emprestar
Livro
Sacar
Dinheiro
Diagrama de Caso de Uso – Caso de Uso
•
CASO DE USO:
Nomeando CASOS DE USO...
Nomeie o caso de uso segundo a perspectiva do ator
primário. Foque no objetivo deste ator.
Ex: Alugar filme X Registrar aluguel de filme.
Comece o nome do caso de uso com um verbo no infinitivo
(para indicar um processo ou ação). Ex: Sacar dinheiro
Utilize verbos concretos, fortes, ao invés de verbos genéricos
e fracos. Evite: processar, controlar, etc.
Diagrama de Caso de Uso – Caso de Uso
Diagrama de Caso de Uso - Relacionamento
Os relacionamentos representam:
as interações entre os atores que fazem parte
do diagrama
as interações entre os atores e os Casos de
Uso
as interações entre os Casos de Uso e outros
Casos de Uso
A associação entre um ator e um Caso de
Uso é representada por uma reta ligando o ator
ao Caso de Uso.
Diagrama de Caso de Uso - Relacionamento
•
Ex: Relacionamento de comunicação
Diagrama de Caso de Uso - Relacionamento
•
RELACIONAMENTO DE INCLUSÃO (INCLUDE):
– Inclusão
• Entre casos de uso
• Seqüência de interações em comum
• Um caso de uso (precisa de, é composto de) outro
Diagrama de Caso de Uso - Relacionamento
•
Ex: Relacionamento de INCLUSÃO (INCLUDE)
Diagrama de Caso de Uso - Relacionamento
•
RELACIONAMENTO DE EXTENSÃO (EXTEND):
– Extensão
• Entre casos de uso
• Indica que um caso de uso pode opcionalmente incluir outro
Diagrama de Caso de Uso - Relacionamento
•
Ex: Relacionamento de Extensão (EXTEND)
Porque a UML é composta por
tantos diagramas?
O objetivo disso é fornecer múltiplas visões
do sistema a ser modelado, analisando-o e
modelando-o sob diversos aspectos, procurando-se,
assim, atingir a completitude da modelagem,
permitindo que cada diagrama complemente os
outros.
Para auxiliar na construção dos diversos
diagramas oferecidos pela UML os profissionais
fazem uso de ferramenta Cases: Enterprise
Architect, VP-UML, Poseidon for UML, ArgoUML,
Rational Rose e Astah Professional.
Download