Orientação a Objetos

Propaganda
Orientação a Objetos
Alcides Calsavara
[email protected]
Objetivo

Estudar técnicas e ferramentas para
análise, projeto e implementação de
sistemas orientados a objetos (OO)
Ementa


Conceituação de OO
Método para modelagem OO
– Modelagem de Objetos
– Modelagem Dinâmica
– Modelagem Funcional

Programação OO
Bibliografia Básica






James Rumbaugh et al. Modelagem e Projetos Baseados em
Objetos. Editora Campus, 1994. ISBN 85-7001-8410-X.
Grady Booch. Object-Oriented Analysis and Design with
Applications. Second Edition. Addison-Wesley, 1994. ISBN 08053-5340-2.
Ivar Jacobson. Object-Oriented Software Engineering - a Use
Case Driven approach. Addison-Wesley, 1996. ISBN 0-20154435-0.
Peter Coad. Objet Models - Strategies, Patterns & Applications.
Prentice-Hall, 1997. ISBN 0-13-840117-9.
Dennis de Champeaux. Object-Oriented Development Process
and Metrics. Prentice-Hall, 1997. ISBN 0-13-099755-2.
Gregory Satir and Doug Brown. C++ : The Core Language.
O’Reilly & Associates, 1995. ISBN 1-56592-116-X.
Bibliografia Complementar





Jag Sodhi and Prince Sodhi. Object-Oriented Methos for
Software Development. McGraw Hill, 1996. ISBN 0-07-0595747.
Chris Zimmermann (Ed). Advances in Object-Oriented
Metalevel Architectures and Reflection. CRC Pr, 1996. ISBN 084-932663-X.
Jonathan Pletzke. Advanced Smalltalk.. John Wiley & Sons,
1996. ISBN 0-47-116350-3.
Al Stevens. C++ Database Development. Mis Pr, 1994. ISBN 155-828357-9.
Grady Booch and Ed Eykholt (Eds). The Best of Booch:
Designing Strategies for Object Technology. Prentice-Hall, 1996.
ISBN 0-13-739616-3.
Grupo de Usuários da Tecnologia
de Objetos (GUTO)


Página WWW
http://www2.pucpr.br/guto/
Lista de discussões
Mensagem para:
[email protected]
Com conteúdo:
sub GUTO-L
Conceitos de OO
Modelagem de Objetos
Vantagens






Independência de implementação
Esconder detalhes
Flexibilidade
Clareza conceitual
Modularização
Reusabilidade
Áreas de aplicação










Linguagens de programação
Bancos de dados
Sistemas operacionais
Sistemas distribuídos
Interface gráfica
Métodos de modelagem de sistemas
Métodos formais: Z++
Empacotamento de software: classes, componentes
Integração de sistemas: CORBA, DCOM
Reflexão: tolerância a falhas, reconfiguração
Conceitos fundamentais







Objeto
Identidade
Encapsulamento
Classificação/Instanciação
Generalização/Especialização
Herança
Polimorfismo
Objeto




Um conceito, uma abstração, algo com
limites e significados definidos para o
problema em questão
Um objeto do mundo real
Um conjunto de atributos (estado) e
métodos (comportamento)
Uma instância de uma classe
Identidade


Característica peculiar de um objeto
que denota a existência em separado
do objeto, mesmo que ele tenha os
mesmos valores de atributos de outro
objeto
Uma identificação única de cada objeto
Encapsulamento


Técnica de modelagem e
implementação que separa os aspectos
externos de um objeto dos detalhes
internos de implementação do mesmo
objeto
Os atributos (estado) de objeto só é
modificável a partir de seus métodos
(interface)
Atributo



Propriedade denominada de uma
classe, que descreve o valor de um
dado contido por cada objeto da classe
Todo atributo tem um tipo e,
opcionalmente, um valor default inicial
Cada instância de uma classe possui
todos os atributos definidos pela classe
Método (ou Operação)



Função ou transformação que pode ser
aplicada aos objetos de uma classe
Todo método definido para uma classe
pode ser aplicado a qualquer instância
daquela classe
Um método tem um nome, uma lista de
argumentos, um tipo de retorno e uma
implementação
Classe


Descrição de um grupo de objetos com
propriedades semelhantes,
comportamento, relacionamentos e
semântica comuns
Instância: um objeto descrito por uma
classe
Generalização




Relacionamento entre uma classe e
uma ou mais versões refinadas ou
especializadas da classe
Especialização: relacionamento inverso
Superclasse: versão mais abstrata de
outra classe, a subclasse
Subclasse: versão mais refinada de
outra classe, a superclasse
Herança


Mecanismo baseado em objetos que
permite que as classes compartilhem
atributos e operações baseados em um
relacionamento, geralmente
generalização
Uma subclasse herda atributos e
métodos da superclasse
Polimorfismo




Assume muitas formas
A propriedade segundo a qual uma
operação (método) pode comportar-se
diferentemente em classes diferentes
A subclasse redefine a implementação
de um método herdado da superclasse
Onde se espera uma instância de um
certa classe pode aparecer uma
instância de qualquer subclasse
daquela classe
Exemplos/Exercícios




Componentes de uma interface gráfica:
botões, menus, barras, ...
Pessoas: aluno, professor, secretária,
reitor
Veículos: bicicleta, veleiro, carro,
caminhão, avião, planador, motocicleta,
cavalo
Habitações: tenda, caverna, barraco,
garagem, celeiro, casa, arranha-céu
Ligação




Uma conexão física ou conceitual entre
objetos
Exemplo: O país Brasil tem como
capital a cidade de Brasília.
Exemplo: O funcionário João trabalha
na empresa Transamérica S.A.
Exemplo: O artigo “OO Solutions” foi
publicado na conferencia OOPSLA’99.
Associação



Relacionamento entre instâncias de
duas ou mais classes descrevendo um
grupo de ligações com estrutura e
semântica comuns.
Exemplo: Um país tem como capital
uma cidade.
Exemplo: Um funcionário trabalha numa
empresa.
Agregação



Forma especial de associação, entre o
todo e suas partes, na qual o todo é
composto pelas partes
Também chamada de herança
horizontal
Exemplo: Um artigo é publicado em
uma conferência, isto é, o artigo faz
parte da conferência (ou dos anais da
conferência).
Multiplicidade e Papel


Multiplicidade: Número de instâncias
de uma classe que podem se relacionar
a uma única instância de um classe
associada (ou agregada).
Papel: nome que identifica
inequivocamente uma extremidade de
uma associação.
Atributo de Ligação



Um valor de dados presente em cada
ligação (nível de instâncias) de uma
associação (nível de classes)
Uma propriedade da ligação entre
objetos, e não dos objetos ligados,
propriamente ditos
Exemplos: permissão de acesso que
um usuário possui para a um arquivo; o
salário de uma pessoa em um emprego
em uma companhia
Associação como uma Classe





Cada ligação de uma associação é uma
instância de uma classe
Uma ligação é um objeto, com atributos
e métodos
Útil quando ligações podem participar
em associações com outros objetos
Útil quando ligações sofrem operações
Exemplo: autorização para usuários em
estações de trabalho
Associação Ternária




Representa ligações entre 3 objetos
Não pode ser dividida em associações
binárias sem que haja perda de informações
Associações de grau maior que 3 são raras e
devem ser evitadas devido a complexidade
de entendimento e implementação
Exemplo: pessoas que são programadoras
usam linguagens de programação em
projetos
Ordenação em Associações



Em alguns casos o conjunto de objetos
associados a um certo objeto apresenta
uma ordem
A palavra "ordenado" deve aparecer
junto à multiplicade "muitos" de uma
associação para indicar que existe uma
ordem entre os objetos ligados
Exemplos: as janelas visíveis em uma
tela possuem uma ordem; os vértices
de um polígono
Associação Qualificada




Relaciona dois objetos e um
qualificador
O qualificador reduz a multiplicidade
Exemplo: Um diretório contém muitos
arquivos, mas é o nome do arquivo
dentro do diretório que identifica o
arquivo (e identifica um único arquivo)
Maior precisão na informação!!
Uso de Agregação




Na dúvida, use associação!
Herança não representa o
relacionamento parte-todo
Agregados recursivos são frequentes
Agregação normalmente implica em
propagação de operações
Classes Abstratas e Concretas


Classe abstrata: classe que não pode ter
instâncias diretas, mas cujos descendentes
sim; organizam características comuns a
diversas classes; mecanismo para reutilizar
código; pode definir operações abstratas
(sem um correspondente método)
Classe concreta: classe que pode ter
instâncias diretas; não pode definir
operações abstratas
Cancelamento para extensão

A nova operação é igual à operação
herdada, exceto pelo fato de
acrescentar alguns detalhes de
comportamento, normalmente afetando
novos atributos da subclasse.
Cancelamento para restrição


A nova operação restringe o protocolo
(assinatura da operação), podendo
reduzir os tipos de argumentos.
A operação herdada fica fechada
(restrita) dentro de cada subclasse
específica.
Cancelamento para otimização


O novo método tem o mesmo protocolo
externo e apresenta o mesmos
resultados
A implementação do novo método
(algoritmo utilizado) pode ser
completamente diferente
Cancelamento por conveniência



Emprego adhoc de herança para
reutilizar classes.
Uma nova classe é tornada subclasse
de uma classe existente e substitui os
métodos inconvenientes.
Semanticamente errado e conduz a
problemas de manutenção; recomendase criar uma terceira classe
(superclasse das demais)
Herança Múltipla





Uma classe possui mais de uma
subclasse e herda características de
todos os seus ancestrais
Maior capacidade de especificação de
classes
Maior oportunidade de reutilização
Perda em simplicidade conceitual e de
implementação
Surgem classes de junção
Modelagem Dinâmica
Modelo Dinâmico


Representa os aspectos de um sistema
relativos ao tempo e às modificações de
estado
Abrangência:
– interações
– seqüência de operações
– fluxo de controle
Controle de um sistema

Descreve as seqüências de operações
que ocorrem em resposta a estímulos
externos, sem consideração ao que as
operações fazem, sobre o que elas
atuam ou como são implementadas.
Conceitos fundamentais


EVENTO: representa um estímulo externo;
conduz informação de um objeto para outro.
ESTADO: representa valores (atributos e
ligações) de um objeto; estado externo do
objeto.
MÁQUINA DE ESTADOS FINITOS
Permite especificação de controle
Diagrama de Estados




Representação gráfica de uma máquina de
estados finitos
Representa o padrão de eventos, estados e
transições de estados para uma classe
O modelo dinâmico de um sistema é
composto por um conjunto de diagramas de
estados, uma para cada classe.
Cada máquina de estado funciona de
maneira independente; são combinadas
através de eventos compartilhados.
Eventos


Um evento é algo que acontece
"instantaneamente", em um certo
momento.
Exemplos:
– pressionar um botão do mouse
– aparecer uma janela na tela
– partida de um avião
– chegada de um avião
– tocar um telefone
– atender ao telefone
Relacionamentos entre eventos

Causal: existe uma ordem entre os
eventos. Exemplo: O vôo 123 deve
partir de Chicago antes de chegar a
São Francisco.

Concorrente: ordem dos eventos é
irrelevante. Exemplo: O vôo 123 pode
partir antes ou depois que o vôo 456
parta de Roma. (Se fosse "para Roma",
deveríamos considerar se não usam a
mesma pista.)
Classes de eventos




Indicam estrutura e comportamentos
comuns a eventos.
Simplificam a construção de diagramas
de estados.
Exemplo: classe partidas de aviões,
com atributos linha aérea, número de
vôo, cidade de origem, cidade destino.
O momento ocorrência de um eventos é
um atributo implícito.
Cenário




Sequência de eventos que ocorrem
durante uma determinada execução do
sistema
Ilustra uma situação típica do sistema
Auxilia no entendimento do problema e
na condução para uma representação
geral (modelo dinâmico)
Diagrama de eventos: representação
gráfica de um cenário. Exemplo: uma
chamada telefônica.
Diagramas de Estados





Relaciona eventos e estados
Um objeto muda de estado dependendo
do evento e do estado atual.
Transição: modificação de estado
causada por um evento (mesmo
quando estado final e inicial coincidem).
Um evento pode ser irrelevante para
um objeto em um certo estado.
Exemplo: linha telefônica
Tipos de diagramas de estados



Diagrama de laço contínuo:
representa um ciclo de vida; sem
estado inicial ou final. Exemplo: linha
telefônica.
Diagrama de uma só passagem:
representa objetos com vida finita;
possuem um estado inicial (criação do
objeto) e um estado final (destruição do
objeto).
Exemplo: jogo de xadrez
Condições



Uma condição é uma função booleana
de valores, válida dentro de um
intervalo de tempo.
Condições funcionam como guardas
nas transições: uma transição só
dispara quando ocorre o evento e a
condição de guarda for verdadeira.
Exemplo: Pessoa com relação ao
atributo "estar de luvas".
Controle de Operações


Atividades e ações podem ser
vinculadas a estados e eventos a fim de
se especificar o que faz o objeto
quando está em um determinado
estado e o que faz em resposta a
estímulos externos.
Definem o comportamento do objeto!
Atividade





Está sempre vinculada a um estado
Consome tempo para se completar
É executada continuamente durante o tempo
em que o objeto está num certo estado
Notação:
faça: atividade
Exemplo: Um vendedor logo após ter
recebido dinheiro para pagamento do item
vendido deve calcular o troco.
faça: calcular troco
Ação




Está normalmente vinculada a um evento,
mas também pode estar vinculada a um
estado (ações de entrada, saída e internas)
É executada "instantaneamente"
Notação:
evento / ação
Exemplo: Exibir um menu quando o botão
direito do mouse é pressionado.
botão direito pressionado / exibir menu
Diagramas de Estados Nivelados



Permitem refinamentos sucessivos do
modelo dinâmico
Permitem uma descrição estruturada do
sistema
Pode-se expandir:
– um evento e sua correspondente ação
– uma atividade realizada em um certo
estado

Exemplo: Máquina de vender
Generalização de Estados




Os estados de um objeto podem ser
organizados de forma hierárquica, em superestados e sub-estados.
Um sub-estado é um refinamento de um superestado, ie, um sub-estado é um dos possíveis
estados do objeto dentro daquele super-estado.
Um sub-estado herda as transições do superestado; transições que se aplicam ao superestado também se aplicam ao sub-estado.
Exemplos: linha telefônica, transmissão
automática de um automóvel
Generalização de Eventos





Os eventos que ocorrem em um sistema
podem ser organizados de forma hierárquica,
em super-eventos e sub-eventos.
Um sub-evento herda atributos do superevento.
Onde um evento é descrito qualquer subevento seu é implicitamente descrito.
A generalização de eventos facilita a
abstração e permite concisão na
representação de diagramas.
Exemplo: Entrada do usuário.
Concorrência de Agregação




O estado de um objeto composto (um agregado) é
determinado pelos estados dos objetos que o
compõem.
Exemplo: O estado de um carro é determinado pelo
estado da ignição, da transmissão, do freio, do
acelerador, do motor, ...
Os componentes de um agregado normalmente
interagem entre si: a mudança de estado de um
componente pode disparar uma transição em outro
componente.
A interação entre diagramas de estados de
componentes é representada através de eventos
compartilhados e/ou condições de guarda.
Concorrência Interna de Objetos




O diagrama de estados de um objeto
pode ser particionado de acordo com
atributos e ligações em sub-diagramas.
O estado do objeto compreende um
estado de cada sub-diagrama.
Um mesmo evento pode causar
transições em mais de um subdiagrama.
Exemplo: Jogo de bridge rubber.
Transição Automática



Disparada quando a atividade vinculada
a um estado termina
O "evento" que causa a transição é o
término da atividade
Exemplo: Máquina de vender no estado
correspondente a atividade testar item e
calcular troco pode disparar uma de
quatro transições automáticas.
Ações de Entrada e de Saída



Ações vinculadas ao ato de entrar ou
sair de um estado
Não adicionam poder de expressão,
mas permitem uma representação mais
concisa
Exemplo: Controle de uma porta de
garagem
Envio de Eventos



Uma ação pode ser especificada como enviar
um certo evento para outro objeto.
Notação:
enviar E (atributos)
(palavra enviar pode ser omitida)
Exemplo: Uma linha telefônica envia o evento
ligar(número-de-telefone) para o comutador
quando um número completo é discado.
número completo / ligar(número-de-telefone)
Sincronização de Eventos
Concorrentes



Um objeto pode executar várias
atividades de forma concorrente
(paralela).
As atividades não são necessariamente
sincronizadas, mas todas devem
terminar para que ocorra transição de
estado.
Exemplo: Caixa automática.
Download