Trabalho I
Frameworks
Orientados a Objetos
Toacy C. de Oliveira
Toacy C. Oliveira - COPPE/UFRJ
1
Agenda

Apresentação de Exemplos
 xxxDraw
– Um desenhador de grafos

Formato do Trabalho

Entrega
Toacy C. Oliveira - COPPE/UFRJ
2
xxxDraw
Toacy C. Oliveira - COPPE/UFRJ
3
Fases
Fase I – Estudo do Framework e
Apresentação
 Fase II – Descrição de um Plano de
Reutilização
 Fase III – Documentação da Reutilização
 Fase IV – Sistema Executando

Toacy C. Oliveira - COPPE/UFRJ
4
Fase I – Estudo



Objetivo: Estudar um Framework (JHotDraw,
Demoseille, Eclipse.*, etc) e entender suas
principais características e seus pontos de
flexibilização.
Forma: Nesta fase não é necessário a utilização
de uma Linguagem Formal, ou seja, a
apresentação é informal podendo ser utilizada
qualquer notação.
Entrega: Apresentação em sala (15 min) e
impressa (entregue ao Professor).
Toacy C. Oliveira - COPPE/UFRJ
5
xxxDraw

xxxDraw é um nome fictício dado a uma
aplicação capaz de desenhar um grafo e
permitir alterações nas propriedades de
seus nós e arestas.
 DTFrame[Carvalho98]
 HotDraw
[Johnson92]
Toacy C. Oliveira - COPPE/UFRJ
6
Funcionalidade/Características
Toacy C. Oliveira - COPPE/UFRJ
7
Extensões
Novos tipos de figuras
 Novos atributos para figuras e seus
editores associados.

Toacy C. Oliveira - COPPE/UFRJ
8
Fase II – Plano de Reutilização



Objetivo: Entender e especificar o processo de
reutilização
Forma: Neste ponto é necessário a
apresentação o Plano de Reutilização utilizando
Linguagem Natural especificando quais pontos
serão estendidos e como/quando isto será feito.
Entrega: Impressão entregue ao professor.
Toacy C. Oliveira - COPPE/UFRJ
9
Classes
Toacy C. Oliveira - COPPE/UFRJ
10
Classes








Classe BMPFormat - Classe que faz a exportação do desenho em formato
Bitmap.
Classe Canvas - Tela onde as figuras são efetivamente desenhadas.
Classe DrawingTool - Classe principal da ferramenta de desenho. Contem
uma lista de janelas, um gerente de persistencia e um gerente de
exportação.
Classe DrawingWindow - Janela de Desenho
Classe ExportManager - Classe que gerencia todos os aspectos de
exportação.
Classe ExportTool - Classe que efetivamente faz a exportação.
Classe Figure -Classe abstrata que descreve o comportamento mínimo de
uma figura
Classe FigureAction - Classe que descreve as ações que podem ser feitas
em uma figura como: Apagar, MudarNome.
Toacy C. Oliveira - COPPE/UFRJ
11
Classes












Classe FigureData - Classe que descreve os dados da figura como : ID,
nome
Classe GIFFormat - Classe que faz a exportação do desenho em formato
GIF.
Classe MSSQLDB - Wrapper para banco de dados SQL Server.
Classe OODB - Wrapper para banco de dados OO.
Classe OracleDB -Wrapper para banco de dados Oracle.
Classe PersistencyManager - Classe que gerencia todos os aspectos de
persistência.
Classe PersistencyTool - Classe que efetivamente faz a persistência.
Interface Persistent - Interface que declara o protocolo de comunicação
para persistência.
Class RecDB - wrapper para banco de dados orientado a registro.
Classe RelDB - Wrapper para banco de dados relacional.
Classe ToolBar - Barra de ferramentas associada a uma janela de
Desenho.
Classe XMIDB - Wrapper para banco de dados em XMI.
Toacy C. Oliveira - COPPE/UFRJ
12
Reutilização (de Funcionalidade)

Novas Figuras


Persistência (Sim / Não)


A criação de novas figuras se dá por especialização da classe
Figure. Esta classe contem a funcionalidade básica de todas as
figuras que o DTFrame pode manipular.
Sendo uma característica opcional, o mecanismo de
persistência pode não aparecer no design final. Caso o
reutilizador não necessite de tal funcionalidade, ele deverá
ignorar o atributo DrawingTool.thePM. Caso contrário, o
reutilizador deverá especializar a classe PersistencyTool.
Exportação (Sim / Não)

A característica de exportação segue o apresentado para
persistência, sendo que o atributo opional é DrawingTool.theEM
e a classe para especialização é ExportTool.
Toacy C. Oliveira - COPPE/UFRJ
13
Processo de Reutilização




Para cada tipo figura presente na aplicação final, criar uma nova classe
herdando de Figure que especifique a nova figura. Criar também classes
que herdam de FigureData e FigureAction para especificar os dados e as
ações associados a esta figura.
Caso a aplicação do reutilizador necessite de persistência, redefinir a
operação save() para cada tipo figura criada. Esta operação deverá
especificar tuplas no formato <TIPO, NOME, VALOR> de cada atributo a
ser salvo.
Para especificar o aspecto de persistência, o reutilizador deverá escolher
uma subclasse concreta de PersistencyTool, e definir seu uso em
PersistencyManager.configPT(). Caso o tipo de banco de dados utilizado
pela aplicação final não esteja representado, criar uma subclasse de
PersistencyTool como encapsuladora do SGBD. Vale ressaltar que este
aspecto é opcional.
Para especificar o aspecto de exportação, o reutilizador deverá escolher
um conjunto de subclasses de ExportTool, e definir seu uso em
ExportManager.configET().Vale ressaltar que este aspecto é opcional.
Toacy C. Oliveira - COPPE/UFRJ
14
Fase III - Documentação da
Reutilização
Objetivo: Especificar o processo de
instanciação utilizando uma notação
formal.
 Forma: Diagramas (UML-FI)? e RDL
 Entrega : Documento impresso com os
diagramas e anotações complementares.

Toacy C. Oliveira - COPPE/UFRJ
15
UML-FI ?
Toacy C. Oliveira - COPPE/UFRJ
16
1.
2.
3.
RDL ?
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
COOKBOOK DTFrameCok
//=================================================
RECIPE FigureAspect;
LOOP
figClass = CLASS_EXTENSION (Figure);
figDataClass = CLASS_EXTENSION (FigureData);
figAction = CLASS_EXTENSION (FigureAction);
PATTERN_METHOD_EXTENSION (Figure, figClass, createData , Factory, (figClass,
createData, figDataClass);
PATTERN_METHOD_EXTENSION (Figure, figClass, createAction , Factory, (figClass,
createAction, figActionClass);
METHOD_EXTENSION (Figure, figClass,save) REQUIRES
(DrawingWindow.thePersistencyMan);
END_LOOP;
END_RECIPE;
//==============================================
RECIPE PersistencyAspect;
ELEMENT_CHOICE (DrawingWindow.thePersistencyMan);
SELECT_CLASS_EXTENSION (PersistencyTool) REQUIRES
(DrawingWindow.thePersistencyMan) #
CLASS_EXTENSION (PersistencyTool)REQUIRES (DrawingWindow.thePersistencyMan);
VALUE_SELECTION (DrawingTool , autoPersistencyRate, (0,5,10,30)) REQUIRES
(DrawingWindow.thePersistencyMan);
END_RECIPE;
//===============================================
RECIPE ExportAspect;
ELEMENT_CHOICE (DrawingWindow.theExportMan);
LOOP
SELECT_CLASS_EXTENSION (ExportTool) REQUIRES(DrawingWindow.theExportMan) #
CLASS_EXTENSION (ExportTool) REQUIRES(DrawingWindow.theExportMan);
END_LOOP;
END_RECIPE;
//====================================================
RECIPE MAIN;
PersistencyAspect || ExportAspect;
FigureAspect;
END_RECIPE;
END_COOKBOOK;
Toacy C. Oliveira - COPPE/UFRJ
17
Fase IV - Implementação
Objetivo: Implementar um sistema
utilizando um Framework.
 Forma: Código.
 Entrega : Sistema Executando.

Toacy C. Oliveira - COPPE/UFRJ
18
Teste de Aceitação

Na fase final haverá um teste de aceitação
que consistirá na execução do sistema
bem como na alteração de sua
funcionalidade (instanciação de acordo
com o plano).
Toacy C. Oliveira - COPPE/UFRJ
19
Rational Team Concert(RTC)

Será criada uma Área de Projeto por
grupo em https://reuse.cos.ufrj.br/jazz
 Login/Senha
= grupoX/grupoX
Cada grupo deverá manter suas
atividades atualizadas no sistema (há
como usar o repositório do RTC mas não
é necessário).
 Lembrem que há um plugin para Eclipse!!

Toacy C. Oliveira - COPPE/UFRJ
20
RTC

Podem colocar atividades como:
 Leitura
artigo XXX
 Implementação Classes XXX,YYY
 Teste Classes XXX
 Escrita documento XXX
 Ect.
Toacy C. Oliveira - COPPE/UFRJ
21
Entrega

Prazo final para Trabalho 1
Toacy C. Oliveira - COPPE/UFRJ
22
Ausências Programadas
SBES: 27-set à 01-out
 Petrobrás: 13-out e 14 out

Toacy C. Oliveira - COPPE/UFRJ
23
Download

Fase I