Escolar Documentos
Profissional Documentos
Cultura Documentos
JUIZ DE FORA
2005
1
ORIENTADOR:
Prof. Marco Antônio Pereira Araújo, M.Sc.
CO-ORIENTADORA:
Profa. Alessandreia Marta de Oliveira
Julio, M.Sc.
JUIZ DE FORA
2005
2
AGRADECIMENTOS
Juiz de Fora
2005
5
LISTA DE FIGURAS
LISTA DE TABELAS
SUMÁRIO
1 INTRODUÇÃO ...................................................................................14
4 FRAMEWORKS DE PERSISTÊNCIA................................................28
4.1 Delphi Persistent Objects ................................................................................28
11
BIBLIOGRAFIA...................................................................................117
13
RESUMO
1 INTRODUÇÃO
Com o avanço e fundamentação das técnicas do paradigma orientado a objetos,
cada vez mais empresas e desenvolvedores desenvolvem suas aplicações com esta
metodologia, buscando alcançar todos os benefícios difundidos pela orientação a objetos,
como reutilização de código, processo bem definido de desenvolvimento, documentação,
manutenabilidade, entre outros.
Entretanto, as empresas e desenvolvedores passam dificuldades quando têm
que optar pela estratégia de armazenamento de dados, uma vez que os sistemas
gerenciadores de banco de dados orientadas a objetos não são maduros o suficiente
quando comparados aos sistemas gerenciadores de banco de dados relacionais.
O modelo relacional esta muito bem fundamentado e ainda é o padrão para o
armazenamento de informações, sendo o modelo mais utilizado pela Engenharia de
Software e encontrado nos principais bancos de dados das empresas, inclusive muito
abordado no meio acadêmico. O modelo é baseado na relação entre linhas (tuplas) e
colunas (atributos), o que gera um problema no desenvolvimento orientado a objetos, uma
vez que estes podem possuir estruturas complexas, diferente das utilizadas no modelo
relacional (integer, date, varchar, dentre outras).
É necessário então um esforço maior de programação para adequar os objetos
ao modelo relacional, a isso é dado o nome de mapeamento objeto-relacional. Uma das
soluções para este problema é a utilização de uma camada de persistência entre a
aplicação e o banco de dados, um framework. Esta camada é responsável pelo controle e
manipulação dos objetos, além de servir de comunicação entre o banco de dados e a
aplicação.
A persistência de objetos se faz necessária quando é preciso guardar as
informações dos atributos dos objetos em um banco de dados, ou em outra estratégia de
armazenamento, para que se possa recuperá-lo posteriormente. No escopo deste trabalho é
analisada somente a persistência de objetos em banco de dados relacional (SGBDR).
Este trabalho tem então como objetivo conceituar mapeamento objeto-relacional,
exemplificando as principais técnicas existentes. Apresentar os conceitos e estratégias de
camadas de persistência, além de definir e exemplificar o uso de frameworks de persistência
objeto-relacional opensource disponíveis para o ambiente de desenvolvimento Delphi.
No segundo capítulo são apresentados os conceitos e estratégias de
mapeamento objeto-relacional. É definido como mapear as classes e relacionamentos do
modelo orientado a objetos para o as tabelas e atributos do modelo relacional. No terceiro
capítulo são definidos os conceitos de camadas de persistência e suas estratégias (camada
15
2 MAPEAMENTO OBJETO-RELACIONAL
2.1 Introdução
Um dos principais passos para se persistir um objeto em um banco de dados
relacional é o mapeamento. Neste passo são definidas quais as classes do domínio viram
tabelas e quais atributos da classe viram campos no modelo relacional, além de ser feito o
mapeamento dos relacionamentos entre as classes.
É importante destacar a escolha o OID (Object Identification), que será a chave
primária no modelo relacional. Uma definição formal, bem como as estratégias de escolha
de OIDs são apresentadas no item 2.2.
Como mostrado na Figura 2.1, para se mapear um modelo orientado a objetos
para o modelo relacional, basicamente deve-se (AMBLER, 2000):
mapear classes para tabelas;
mapear atributos para colunas;
mapear os relacionamentos: um-para-um, um-para-muitos, muitos-para-
muitos, agregação, composição e herança.
Tabelas
Classes
Figura 2.1. Mapeamento Objeto-Relacional.
e exclusivo, para que não ocorra redundância no banco de dados relacional. Existem alguns
detalhes que requerem atenção antes da escolha (AMBLER, 2000):
não se deve utilizar atributos da modelagem de negócios para OID’s: Ao
utilizar esses atributos a mudança de alguma regra de negócio ou até mesmo
o modelo, pode causar problemas na manutenção dos dados já existentes no
banco. Lembrando que as chaves primárias têm grandes chances de ser
chaves estrangeiras em outras tabelas, aumentando assim o problema, como
informações relativas ao CPF e CNPJ;
um OID deve ser único para toda a hierarquia de classes: É muito comum
utilizar um campo de auto incremento para ser utilizado como chave primária
em um banco de dados relacional, mas em um modelo orientado a objetos,
onde existe toda uma hierarquia entre classes e relacionamento entre elas,
existe uma facilidade de existir duplicidade de chave primária no banco,
gerando problemas de inconsistência de dados. Um OID deve ser único e
exclusivo para todos os objetos, consequentemente único também no modelo
relacional.
Dentre as estratégias para a escolha de um OID, destaca-se (AMBLER, 2000):
manter uma tabela com valores de OID’s: Esta estratégia consiste em criar
uma tabela onde são armazenados os OID’s. Antes de persistir qualquer
objeto, a aplicação acessa o banco e executa a função MAX() na tabela de
OID’s, buscando assim o maior valor de OID inserido. Após, soma-se mais
um a este valor obtido, persiste-se o objeto na sua tabela determinada pelo
mapeamento e insere o OID do objeto na tabela de OID’s. Esta estratégia
causa depreciação na desempenho da aplicação, uma vez que é necessário
mais um acesso ao banco para realizar a operação;
GUIDs/UUIDs: Estratégia que gera uma string de 128bits que é calculada em
tempo de execução com base no hashing dos valores do endereço físico da
placa de rede e no dia e hora atual do computador. Esta estratégia garante
um OID único para todos os objetos;
recurso de alguns SGBDs para geração de valores únicos: Alguns SGBDs,
como o ORACLE, possuem recursos de geração de valores únicos que
podem ser utilizados como OID. A desvantagem desta estratégia é que
ocorrerá uma dependência do banco de dados.
18
2.3 Mapeamento
Existem algumas estratégias para o mapeamento objeto-relacional que buscam
minimizar os esforços de organização dos dados no banco de dados relacional. Estas
estratégias tratam não somente dos atributos e classes, mas também como estes podem se
relacionar com as tabelas no modelo relacional.
uma tabela por hierarquia: Mapear toda a hierarquia de classes para uma
tabela, onde todos os atributos das classes da hierarquia serão armazenados
nesta única tabela. A desvantagem desta estratégia é que toda vez que um
objeto da hierarquia for persistido no banco, é necessário persistir também os
valores da classe irmã vazios, causando uma grande quantidade de campos
vazios. Entretanto o acesso ao banco para a manipulação dos dados é mais
rápido, uma vez que todos os dados estão em somente uma tabela. É
adicionada uma coluna na tabela que referencia qual o tipo de objeto, ou seja,
de qual classe aqueles dados pertencem;
uma tabela por classe concreta: Cada classe concreta mapeada vira uma
tabela com todos os atributos herdados das super classes abstratas. A
vantagem desta estratégia é a facilidade de manipulação de dados, uma vez
que todos os dados de cada classe estão em apenas uma única tabela. Como
desvantagem, destaca-se: Quando se modifica uma classe abstrata, é
necessário modificar todas as tabelas geradas pelas classes filhas no modelo
relacional;
uma tabela por classe: Cada classe é mapeada para uma tabela, onde a
chave primária da classe abstrata é a chave primária da classe concreta.
Para que isso ocorra é necessário que o relacionamento seja também mapeado,
para que a aplicação ao manipular o objeto já persistido possa saber suas referências ou a
quem o referencia.
2.4 Conclusão
Este capítulo teve como objetivo apresentar, conceituar e exemplificar as
estratégias existentes atualmente para mapeamento objeto-relacional.
As estratégias de mapeamento objeto-relacional mostram-se interessantes para
efetivamente utilizar os sistemas gerenciadores de banco de dados relacional (SGBDR) na
persistência de objetos, uma vez que as estratégias de armazenamento puramente
orientadas a objetos não estão maduras o suficiente.
Com isso, unem-se a maturidade e rapidez dos bancos de dados relacionais,
com os benefícios da orientação a objetos.
22
3 CAMADA DE PERSISTÊNCIA
3.1 Introdução
Camada de persistência refere-se a uma estrutura responsável por manipular
objetos em alguma forma de armazenamento, ou seja, faz com que uma informação
solicitada uma vez, esteja disponível outras vezes na aplicação, ou até mesmo para outra
aplicação.
Deve prover os serviços de criar, recuperar, atualizar e excluir um objeto (CRUD
– Create, Retrieve, Update e Delete) (AMBLER, 2000). Estes serviços são os responsáveis
por manter a persistência e manipulação de objetos dentro da aplicação.
Existem 3 estratégias de camadas de persistência responsáveis por persistir
objetos no banco de dados relacional (AMBLER, 2000):
camada SQL;
camada de classes para acesso aos dados;
camada de persistência.
SQL
SGBDR
Classes de Domínio
Este tipo proporciona uma rapidez na codificação das classes e do sistema, mas
em contra partida não as deixa reutilizáveis nem portáveis.
23
SQL
SGBDR
Classes de
Classes de Domínio Acesso a Dados
SQL
Camada
de SGBDR
Persistência
Classes de Domínio
3.4 Conclusão
Este capítulo mostrou as estratégias de persistência de objetos a nível de
sistema, além de definir formalmente camada de persistência, que é uma camada
27
4 FRAMEWORKS DE PERSISTÊNCIA
Um framework de Persistência é um conjunto de ferramentas e classes que
facilitam uma aplicação a desempenhar o papel de persistir e manipular objetos.
O objetivo deste capítulo é analisar os frameworks de persistência de código
fonte livre (opensource) disponíveis para o ambiente Delphi. São apresentados os seguintes
frameworks:
DePO (Delphi Persistent Objects);
IO (Instant Objects);
TIOPF (TechInside Object Persistent Framework).
Propriedade Descrição
AttributeName Define o nome do atributo que está na seção published, que será
persistido
AttributesMapping Declara todos os atributos da classe que serão persistidos
Bindings Define qual atributo resolverá o relacionamento
Cardinality Define a cardinalidade do relacionamento
ClassObject Declara a classe a ser mapeada
ColumnName Declara o nome da coluna no modelo relacional
IndexType Indica a criação de índice e tipo de índice
IsOid Identifica se o atributo é o identificador da classe
MasterAttribute Define o atributo responsável pelo relacionamento
RelatedClass Declara a classe com a qual é feito o relacionamento
RelatedObject Declara o objeto com o qual é feito o relacionamento
RelationshipsMapping Declara todos os relacionamentos da classe
Required Indica se o atributo é campo obrigatório na tabela
Retrieve Função que recupera o objeto da base de dados
Retrieved Função que verifica se o objeto foi recuperado
Size Define o tamanho do campo na tabela
StorageName Declara a tabela onde os objetos serão persistidos
TPessoa = class(TdpoPersistentObject)
private
FCodigo: Integer;
FNome: String;
published
property Codigo: Integer read FCodigo write FCodigo;
property Nome: String read FNome write FNome;
end;
TProfessor = class(TPessoa)
private
FCPF: Integer;
published
property CPF: Integer read FCPF write FCPF;
end;
TAluno = class(TPessoa)
private
FMatricula: Integer;
published
property Matricula: Integer read FMatricula write FMatricula;
end;
4.1.3 Relacionamentos
Existem duas estratégias de se definir um relacionamento: utilizar os métodos,
classes e propriedades disponibilizados pelo DePO, ou defini-los manualmente (gerenciando
os relacionamentos de forma manual, sem auxílio do framework).
O DePO implementa todos os recursos necessários para a definição de
relacionamentos. Dentre as características principais são citadas (DAIBERT, JULIO e
ARAUJO, 2005):
tipo responsável por resolver um relacionamento através do mapeamento:
TdpoRelationshipResolver;
propriedade RelatedObject, responsável por retornar os objetos relacionados
de uma classe;
método Bindings.Add, adiciona um atributo na classe referenciada. Este
atributo guarda informações referentes ao objeto referenciado, funcionando
como uma chave estrangeira no modelo relacional;
método RelationshipsMapping.Add, responsável por definir o mapeamento
objeto-relacional dos relacionamentos.
especialmente útil quando temos um relacionamento entre objetos em que uma instância
pode referenciar-se a várias outras instâncias.
A criação de uma estrutura de coleção de objetos se faz necessária para que
possa manter a navegabilidade bidirecional. Esta estrutura pode ser traduzida no modelo
relacional para uma tabela navegacional.
Para isso, é necessário criar uma nova classe, herdando de uma superclasse
chamada TdpoPersistentObjectList, responsável por intermediar o acesso aos objetos que
compõe a lista.
AttributeName := 'Nome';
IsOid := False;
ColumnName := 'Nome';
Required := True;
Size := 100;
end;
end;
with dpoDBMappingManager.Classes.Add do
begin
ClassObject := TAluno;
InheritsMappingFrom := TPessoa;
StorageName := 'Aluno';
with AttributesMapping.add do
begin
AttributeName := 'Codigo';
IsOid := True;
ColumnName := 'Codigo';
IndexType := idxUnique;
Required := True;
end;
with AttributesMapping.add do
begin
AttributeName := 'Matricula';
IsOid := False;
ColumnName := 'Matricula';
Required := True;
end;
end;
with dpoDBMappingManager.Classes.Add do
begin
ClassObject := TProfessor;
InheritsMappingFrom := TPessoa;
StorageName := 'Professor';
with AttributesMapping.add do
begin
AttributeName := 'Codigo';
IsOid := True;
ColumnName := 'Codigo';
IndexType := idxUnique;
Required := True;
end;
with AttributesMapping.add do
begin
AttributeName := 'CPF';
IsOid := False;
ColumnName := 'CPF';
Required := True;
end;
end;
end;
métodos que sincronizam as tabelas da base de dados com o modelo mapeado. Caso não
exista a tabela na base de dados, o DePO fará esta sincronização, criando a tabela. O
método ApplySchemaInfo do TdpoCustomMechanism, criará as instruções SQL
necessárias para esta sincronização. É disponibilizado junto com os códigos fontes do
framework classes com diversos métodos utilitários. É o caso do método
__InitializeDatabase(dpoDBXMechanism), que ao ser invocado faz a leitura do
mapeamento e gera automaticamente as tabelas na base de dados relacional.
TPessoa = class(TInstantObject)
{IOMETADATA stored;
Nome: String(100) default; }
_Nome: TInstantString;
private
function GetNome: string;
procedure SetNome(const Value: string);
published
property Nome: string read GetNome write SetNome;
end;
TAluno = class(TPessoa)
{IOMETADATA stored;
Matricula: Integer default; }
_Matricula: TInstantInteger;
private
function GetMatricula: Integer;
procedure SetMatricula(Value: Integer);
published
property Matricula: Integer read GetMatricula write SetMatricula;
end;
TProfessor = class(TPessoa)
{IOMETADATA stored;
CPF: Integer default; }
_CPF: TInstantInteger;
private
function GetCPF: Integer;
procedure SetCPF(Value: Integer);
40
published
property CPF: Integer read GetCPF write SetCPF;
end;
Com isso, as tabelas são criadas no banco de dados relacional e prontas para
persistirem as informações dos objetos, diferentemente do framework DePO, onde as
tabelas são criadas na execução do programa.
4.2.3 Relacionamentos
O Instant Objects possui uma estrutura especializada para a definição de
relacionamentos entre classes. Todos os relacionamentos são definidos através de escolha
de atributos chaves. Essa funcionalidade pode ser explorada no Model Explorer, quando se
define os atributos. A Figura 4.7 exemplifica o uso do tipo referencia (Reference) para o
atributo. O tipo referência é utilizando quando um objeto de classe referencia um único outro
objeto, como nos relacionamentos do tipo 1:1 e 1:n. Na Figura 4.7 pode-se observar o
relacionamento entre as classes TCurso e TDisciplina (uma disciplina é de um curso e um
curso pode ter várias disciplinas – Associação do tipo 1:n). Já a Figura 4.8 está sendo
exemplificado o uso do tipo referências (References) do atributo. Este tipo é utilizado
quando um objeto de classe referencia vários outros, como nos relacionamentos do tipo n:n.
É exemplificado na figura o relacionamento entre as classes TCurso e TAluno (um curso
pode ter vários aluno e um aluno pode cursar vários cursos – associação do tipo n:n).
Observa-se que para este tipo é requerido o nome para a tabela navegacional (External
Storage Name), que manterá a navegabilidade entre os objetos referenciados.
dados. Lembrando que para acessar estes métodos do framework é necessário dar uses
nas units do TiOPF que gerenciam as conexões: tiPersist, tiDBConnectionPool e
tiPerAwareCtrls.
TAluno = class(TPessoa)
private
FMatricula : Integer;
published
property Matricula : Integer read FMatricula write FMatricula ;
end;
4.3.3 Relacionamentos
O TiOPF não dispõe de nenhuma estrutura especialista para gerenciar
relacionamentos, como os demais frameworks apresentados. Os mesmos devem ser feitos
de forma manual. O único auxílio que o framework presta para esta tarefa é a criação
automática do campo de ligação das tabelas no modelo relacional quando um objeto
referencia outro objeto, como exemplificado na Listagem 4.17.
Veja que a classe TProfessor possui um atributo do tipo TDisciplina. Quando isto
acontece, o TiOPF cria automaticamente um campo no modelo relacional que referencia o
OID de TDisciplina, criando então o conceito de chave estrangeira.
TDisciplina = class(TPerObjAbs)
private
FNome : String;
FEmenta : String;
published
property Nome : String read FNome write FNome;
property Ementa : String read FEmenta write FEmenta;
end;
4.4 Conclusão
Este capítulo apresentou três frameworks opensource de persistência e
manipulação de objetos em sistemas gerenciadores de banco de dados relacionais para o
ambiente de desenvolvimento Delphi.
O primeiro apresentado foi o DePO (Delphi Persistent Objects). Este framework
possui toda uma estrutura para adequar o modelo orientado a objetos para o modelo
relacional. Foram apresentados exemplos da sua utilização, desde criação das classes
persistentes, até a manipulação de objetos (criar, recuperar, atualizar e excluir).
O Instant Objects foi o segundo a ser apresentado. Ele possui uma interface de
configuração chamada Model Explorer, que praticamente anula o esforço de programação
existente para adequar o modelo orientado a objetos para o modelo relacional. Esta
interface visual facilita o trabalho do desenvolvedor, além de minimizar os problemas que
por ventura podem ocorrer quando a configuração é feita via código fonte.
Ao final, foi apresentado o framework TiOPF (TechInside Object Persistent
Framework). Este, de aprendizado mais difícil, não possui nenhum recurso visual de
configuração. Toda a configuração é realizada via código fonte. Ele obriga o desenvolvedor
a utilizar seus componentes data-aware para a manipulação dos objetos, o que implica que
as aplicações tenham sempre as mesma interfaces, além de restringir o desenvolvedor a
sempre utilizar estes componentes.
Na Tabela 4.2 abaixo, é apresentado um comparativo entre os frameworks,
considerando os requisitos desejáveis de uma camada de persistência. Cada framework
52
comparado esta disposto em uma coluna que é relacionada com os requisitos que estão
apresentados nas linhas da tabela. Os requisitos de uma camada de persistência foram
apresentados e conceituados no item 3.2.3.1 deste trabalho.
Requisitos Framework
DePO InstantObjects TiOPF
Diversos tipos de mecanismos de persistência X
Encapsulamento da camada de dados X X X
Ações com multi-objetos X X X
Transações X X
Extensibilidade X X X
Geração de identificadores de objetos X X
Cursores e proxies
Registros X X X
Múltiplas Arquiteturas X X X
Diversas versões de banco de dados X X X
Múltiplas conexões X X
Consultas SQL X X
Controle de concorrência X X X
53
5 ESTUDO DE CASO
5.1 Introdução
O estudo de caso proposto neste trabalho baseia-se no estudo de caso utilizado
no projeto de iniciação científica “Estratégia de Persistência de Software Orientado a Objeto”
da faculdade Metodista Granbery, no qual o discente é participante.
Vislumbrando o estudo de diversas estratégias de persistência em software
orientado a objetos dentro do contexto do projeto de iniciação científica, este estudo de caso
foi escolhido por abordar de forma singular as principais características da orientação a
objetos.
O sistema escolhido para estudo de caso foi o “Sistema de Controle Acadêmico”,
abordado na cadeira de Laboratório de Programação III da Faculdade Metodista Granbery
(ARAUJO, 2004). Esta cadeira tem como objetivo capacitar os discentes para o
desenvolvimento de aplicações no ambiente de desenvolvimento Delphi. No entanto, a
aplicação toda foi desenvolvida com o paradigma estruturado. Coube aos membros do
projeto de iniciação científica fazer uma reengenharia do sistema, transformando-o em um
sistema orientado a objetos.
objetos, compatível com o ambiente Delphi. Ao final foi realizado uma comparação entre as
abordagens estudadas.
5.4 Implementação
5.4.1 Introdução
Buscando explicar e exemplificar a implementação do estudo de caso
apresentado neste trabalho é usado um fragmento do Sistema de Controle Acadêmico. Este
fragmento consiste na manutenção de cursos que compõe a inclusão, alteração, consulta e
exclusão dos dados persistidos pelo framework de persistência DePO.
O objetivo deste tópico é apresentar as interfaces de interação com o usuário e a
implementação das funcionalidades e chamadas do modelo MVC. São apresentados os
diagramas de seqüência com a interação dos fluxos de manutenção de cadastro de curso e,
56
Pessoa
Turma Professor
0..* 1
0..* 1
0..*
0..*
0..*
0..* Aluno TurmaAluno
1
1..*
Coordena
0..1 Aloca
Avaliacao
0..*
1
Disciplina Curso
1..*
0..* 1
1
Ator Principal:
Secretaria
Sumário:
Este caso de uso é iniciado pela secretaria quando ela requisita ao sistema um
cadastro de curso, selecionando a opção a partir de uma interface de pesquisa de curso,
informando os dados do mesmo. O objetivo deste caso de uso é possibilitar que ocorra a
inclusão de cursos no sistema, a consulta, a alteração ou a exclusão daqueles já existentes.
Pré-Condições:
Não Aplicável.
Fluxo Principal:
1. A secretaria solicita ao sistema o cadastro de cursos;
2. O sistema exibe uma lista com os cursos cadastrados, contendo código e descrição
do curso, ordenada alfabeticamente pela descrição do curso;
3. O sistema solicita a opção de inclusão de um novo curso ou alteração, exclusão ou
consulta de um curso selecionado;
59
Fluxos Alternativos:
1. A secretaria pode modificar a ordenação da lista de disciplinas cadastradas, podendo
ordenar pela descrição do curso ou pela descrição da disciplina;
2. A secretaria pode efetuar uma pesquisa na lista de disciplinas cadastradas, podendo
pesquisar pela descrição da disciplina ou pela descrição do curso. A pesquisa não
necessita ser exata, sendo feita a partir do início do campo pesquisado. A pesquisa
deve ignorar letras maiúsculas e minúsculas;
3. A secretaria pode filtrar as disciplinas exibidas selecionando o curso desejado
através de sua descrição;
4. A secretaria pode cancelar a operação de cadastramento, fechando a interface.
Fluxos Alternativos:
61
Fluxos de Exceção:
1. O código do curso não foi preenchido. Sistema exibe uma mensagem e retorna a
entrada ao campo código do curso;
2. A descrição do curso não foi preenchida. Sistema exibe uma mensagem e retorna a
entrada ao campo descrição do curso;
3. Registro duplicado. Sistema exibe uma mensagem informando que já existe um
registro com a mesma identificação informada;
4. Violação de integridade referencial. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando a violação de integridade que foi
causada;
5. Alteração de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
6. Alteração de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
7. Exclusão de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
8. Exclusão de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação.
Requisitos de interface:
Pós-condições:
62
Não aplicável.
Regras de Negócio:
Professor = Class(Pessoa)
private
FMatriculaProfessor : Integer;
FDataAdmissao : string ;
FTitulacao : Integer;
FTipoContrato : Integer;
FValeTransporte : string;
FValeAlimentacao : string;
public
class function Criar : Professor;
class function RecuperaObjeto(pProfessorID : String) : Professor;
class function RecuperaObjetos(vDados: TClientDataSet) : TClientDataSet;
published
property matriculaprofessor : Integer read FMatriculaProfessor write
FMatriculaProfessor;
property dataadmissao : string read FDataAdmissao write FDataAdmissao;
property titulacao : Integer read FTitulacao write FTitulacao;
property tipocontrato : Integer read FTipoContrato write FTipoContrato;
property valetransporte : string read FValeTransporte write FValeTransporte;
property valealimentacao : string read FValeAlimentacao write
FValeAlimentacao;
end;
AttributeName := 'quantidadeperiodo';
IsOid := False;
ColumnName := 'quantidadeperiodo';
Required := false;
end;
with AttributesMapping.add do
begin
AttributeName := 'tipo';
IsOid := False;
ColumnName := 'tipo';
Required := false;
end;
with AttributesMapping.add do
begin
AttributeName := 'idprofessorresponsavel';
IsOid := False;
ColumnName := 'idprofessorresponsavel';
Required := false;
Size := 38;
end;
end;
//Professor
with MappingManager.Classes.Add do
begin
ClassObject := Professor;
StorageName := 'Professor';
InheritsMappingFrom := Pessoa;
with AttributesMapping.add do
begin
AttributeName := 'id';
IsOid := True;
ColumnName := 'id';
IndexType := idxUnique;
Required := True;
Size := 38;
end;
with AttributesMapping.add do
begin
AttributeName := 'matriculaprofessor';
IsOid := False;
ColumnName := 'matriculaprofessor';
Required := false;
end;
with AttributesMapping.add do
begin
AttributeName := 'dataadmissao';
IsOid := False;
ColumnName := 'dataadmissao';
Required := false;
Size := 50;
end;
with AttributesMapping.add do
begin
AttributeName := 'titulacao';
IsOid := False;
ColumnName := 'titulacao';
Required := false;
end;
with AttributesMapping.add do
begin
AttributeName := 'tipocontrato';
IsOid := False;
ColumnName := 'tipocontrato';
Required := false;
end;
65
with AttributesMapping.add do
begin
AttributeName := 'valetransporte';
IsOid := False;
ColumnName := 'valetransporte';
Required := false;
Size := 50;
end;
with AttributesMapping.add do
begin
AttributeName := 'valealimentacao';
IsOid := False;
ColumnName := 'valealimentacao';
Required := false;
Size := 50;
end;
end;
end;
Persistir() da classe curso, definido na Listagem 5.7, que tem como objetivo salvar o objeto
na base de dados. O método GravarCampos(TClientDataSet) é usado tanto para a
persistência de um novo curso, quando para a atualização de um já existente. É efetuado
um teste que verifica se a operação solicitada é de atualização ou de criação.
Feito isso a tela de inclusão é fechada para o usuário e o sistema exibe
novamente a tela de pesquisa já com o novo curso inserido.
Após o usuário efetuar suas alterações no curso recuperado, ele clica no botão
Alterar da interface. Este aciona o método GravarRegistro do formulário de cadastro de
curso (View), que invoca o método GravarCampos(TClientDataSet) do
GerenteCadastroCurso, passando como parâmetro um ClientDataSet com os dados do
objeto alterado. O GravarCampos verifica se existe um objeto na memória e o atualiza com
os dados passados por parâmetro invocando o método persistir da classe curso, como
apresentado na Listagem 5.11.
0
if self.Retrieve then
begin
self.Delete;
self.Save;
result := true;
end
else
begin
result := false;
end;
end;
5.5 Conclusão
Este capítulo teve como objetivo exemplificar o uso da abordagem de
mapeamento objeto-relacional para persistência em software orientado a objetos, além da
utilização do framework de persistência DePO (Delphi Persistent Objects).
Foi utilizado um sistema de controle acadêmico como estudo de caso para este
trabalho e para este capítulo foi apresentado somente um fragmento dele: Manutenção de
Cursos.
Este estudo de caso serviu também para o aprendizado e implementação de
padrões de projeto, que são soluções genéricas e reutilizáveis, aplicáveis em classes de
problemas bem conhecidos.
Foi possível também apresentar na prática as estratégias dispostas neste
trabalho, bem como sua firmação como estratégia eficiente o suficiente para dar suporte em
ambientes de desenvolvimento de grande porte.
78
6 CONSIDERAÇÕES FINAIS
Este trabalho monográfico baseou-se na análise e estudo das estratégias de
persistência de objetos para sistema gerenciadores de banco de dados relacionais
(SGBDR). Foi apresentada inicialmente uma conceituação de mapeamento objeto-relacional
e suas abordagens, além dos conceitos, aplicações e estratégias de camadas de
persistência.
Após, foi realizado um estudo exploratório sobre alguns frameworks de
persistência opensource disponíveis para o ambiente de desenvolvimento Delphi. Nele
foram apresentados os frameworks DePO (Delphi Persistent Objects), IO (Instant Objects) e
TiOPF (TechInside Object Persistent Framework). Foi observado que nenhum dos
frameworks apresentados possuem documentação sólida, muito provavelmente por se tratar
de programas de código fonte aberto (opensource).
Para finalizar este trabalho, foi proposto um estudo de caso que está inserido no
contexto do projeto de iniciação científica “Estratégias de Persistência de Software
Orientado a Objetos” da Faculdade Metodista Granbery. Projeto este que desenvolveu um
estudo sobre as técnicas de persistência de objetos, seja através de banco orientado a
objetos, camadas de persistências para armazenamento em banco de dados relacionais e
banco de dados objeto relacionais.
Este estudo de caso foi resultado de uma reengenharia de um sistema de
controle acadêmico que foi desenvolvido utilizando o paradigma estruturado. O sistema foi
re-modelado e implementado utilizando o paradigma orientado a objetos. Para o
desenvolvimento do sistema foi usado o padrão de projeto MVC (Model-View-Controller) que
busca facilitar o reuso de código fonte e substituição de estratégias de persistência, uma vez
que o sistema será base para teste de diversas estratégias.
Este trabalho também teve como objetivo a divulgação dos resultados obtidos
nas pesquisas para toda a comunidade acadêmica. A documentação completa do sistema
acadêmico pode ser vista no Anexo A deste trabalho. No CD em anexo a este trabalho é
disponibilizado o executável e o código fonte do sistema acadêmico abordado no estudo de
caso.
Como sugestão para trabalhos futuros, é sugerido um estudo exploratório e
analítico das abordagens proprietárias dos frameworks de persistência para Delphi, da
mesma forma que foi realizado neste trabalho com as abordagens opensource. Como
exemplo das abordagens proprietárias é destacado o ECO (Enterprise Core Objects), ECO
II e Bold.
Como resultados obtidos neste trabalho é destacado:
79
Juiz de Fora
2005
81
SCA
82
1. Introdução:
1.1. Propósito:
1.2. Escopo:
2. Descrição Geral:
• O SCA é independente.
• O sistema utilizará uma camada de persistência que irá interagir entre o produto e
o banco de dados.
2.3.Funções do Produto:
• Cadastro de Cursos
• Cadastro de Disciplinas
• Cadastro de Professores
• Cadastro de Alunos
• Cadastro de Turmas
• Matrícula de Alunos
• Cadastro de Avaliações de Alunos
• Emissão de Relatório de Alunos por Turma
• Emissão de Relatório de Disciplinas por Curso
• Emissão de Histórico Escolar
84
3. Requisitos Específicos:
Requisito não funcional 9: O sistema deve apresentar uma tela que exibe os
dados sobre o desenvolvimento do sistema. Os dados serão: nome do sistema,
número da versão atual, data da versão atual, nome do autor e e-mail para contato;
Requisito não funcional 10: O sistema deve apresentar, em sua tela principal,
a data atual, o nome do autor e a hora atual, num painel encontrado no rodapé dessa
interface.
87
Casos de Uso
SCA
88
Cadastrar Alunos
Aluno
Matricular Alunos
Cadastrar Professor
Lançar Avaliações
Professor
Emitir Relatório de Aluno por
Turma
Cadastrar Cursos
Cadastrar Disciplina
Secretaria
Cadastrar Turmas
Ator Principal:
Secretaria
Sumário:
Este caso de uso é iniciado pela secretaria quando ela requisita ao sistema um
cadastro de curso, selecionando a opção a partir de uma interface de pesquisa de curso,
informando os dados do mesmo. O objetivo deste caso de uso é possibilitar que ocorra a
inclusão de cursos no sistema, a consulta, a alteração ou a exclusão daqueles já existentes.
Pré-Condições:
Não Aplicável.
Fluxo Principal:
1. A secretaria solicita ao sistema o cadastro de cursos;
2. O sistema exibe uma lista com os cursos cadastrados, contendo código e descrição
do curso, ordenada alfabeticamente pela descrição do curso;
3. O sistema solicita a opção de inclusão de um novo curso ou alteração, exclusão ou
consulta de um curso selecionado;
4. A secretaria informa a opção desejada;
5. O sistema executa o subfluxo correspondente ao tipo de operação recebido (Incluir,
Alterar, Excluir ou Consultar).
Fluxos Alternativos:
1. A secretaria pode modificar a ordenação da lista de disciplinas cadastradas, podendo
ordenar pela descrição do curso ou pela descrição da disciplina;
2. A secretaria pode efetuar uma pesquisa na lista de disciplinas cadastradas, podendo
pesquisar pela descrição da disciplina ou pela descrição do curso. A pesquisa não
necessita ser exata, sendo feita a partir do início do campo pesquisado. A pesquisa
deve ignorar letras maiúsculas e minúsculas;
3. A secretaria pode filtrar as disciplinas exibidas selecionando o curso desejado
através de sua descrição;
4. A secretaria pode cancelar a operação de cadastramento, fechando a interface.
Fluxos Alternativos:
1. A secretaria cancela a operação de inclusão. O sistema exibe novamente todos os
campos de entrada vazios;
2. A secretaria cancela a operação de alteração. O sistema exibe novamente os dados
originais do registro;
3. A secretaria fecha a interface durante as operações de inclusão ou alteração. Caso
tenham ocorrido modificações de informações, o sistema avisa da possibilidade de
perda de dados.
Fluxos de Exceção:
1. O código do curso não foi preenchido. Sistema exibe uma mensagem e retorna a
entrada ao campo código do curso;
2. A descrição do curso não foi preenchida. Sistema exibe uma mensagem e retorna a
entrada ao campo descrição do curso;
3. Registro duplicado. Sistema exibe uma mensagem informando que já existe um
registro com a mesma identificação informada;
91
Requisitos de interface:
1. O professor coordenador deve ser exibido através de uma caixa de combinação
contendo todos os professores cadastrados;
2. A quantidade de períodos deve possibilitar o incremento e decremento do número de
períodos através de componente apropriado;
3. O tipo do curso deve ser selecionado através de botões de rádio.
Pós-condições:
Possibilitar o cadastro de disciplinas.
Possibilitar o cadastro de alunos.
Possibilitar o cadastro de turmas.
Regras de Negócio:
RN1: Os campos obrigatórios são: código e descrição do curso;
RN2: Os tipos de curso são: Graduação, Especialização “Lato Sensu”, Mestrado e
Doutorado;
RN3: Um curso pode ter de 1 a 10 períodos letivos.
Ator Principal:
Secretaria
Sumário:
Este caso de uso é iniciado pela secretaria quando ela requisita ao sistema um
cadastro de disciplinas, selecionando a opção a partir da interface contém uma listagem de
disciplinas cadastradas e, posteriormente, informando os dados da mesma. O objetivo deste
caso de uso é possibilitar que ocorra a inclusão de disciplinas no sistema, a consulta, a
alteração ou a exclusão daquelas já existentes.
Pré-Condições:
Curso cadastrado.
Fluxo Principal:
1. A secretaria solicita ao sistema o cadastro de disciplinas;
2. O sistema exibe uma lista com as disciplinas cadastradas, contendo descrição do
curso e descrição da disciplina, ordenada, crescentemente, pela descrição do curso;
92
Fluxos Alternativos:
1. A secretaria pode modificar a ordenação da lista de disciplinas cadastradas, podendo
ordenar pelo código ou pela descrição da mesma.
2. A secretaria pode efetuar uma pesquisa na lista de disciplinas cadastradas, podendo
pesquisar pelo código ou pela descrição da disciplina. A pesquisa não necessita ser
exata, sendo feita a partir do início do campo pesquisado. A pesquisa deve ignorar
letras maiúsculas e minúsculas.
3. A secretaria pode cancelar a operação de cadastramento, fechando a interface.
Fluxos Alternativos:
1. A secretaria cancela a operação de inclusão. O sistema exibe novamente todos os
campos de entrada vazios;
2. A secretaria cancela a operação de alteração. O sistema exibe novamente os dados
originais do registro;
3. A secretaria fecha a interface durante as operações de inclusão ou alteração. Caso
tenham ocorrido modificações de informações, o sistema avisa da possibilidade de
perda de dados.
Fluxos de Exceção:
1. O código da disciplina não foi preenchido. O sistema exibe uma mensagem e retorna
a entrada ao campo código do curso;
2. A descrição da disciplina não foi preenchida. O sistema exibe uma mensagem e
retorna a entrada ao campo descrição da disciplina;
3. O curso da disciplina não foi selecionado. O sistema exibe uma mensagem e retorna
a entrada ao respectivo campo;
4. Registro duplicado. Sistema exibe uma mensagem informando que já existe um
registro com a mesma identificação informada;
5. Violação de integridade referencial. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando a violação de integridade que foi
causada;
6. Alteração de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
7. Alteração de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
8. Exclusão de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
9. Exclusão de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação.
Requisitos de interface:
1. O curso deve ser exibido através de uma caixa de combinação contendo todos os
cursos cadastrados;
2. O campo de período da disciplina deve possibilitar o incremento e decremento do
valor do mesmo através de componente apropriado;
3. A ementa da disciplina deve ter sua entrada a partir de um controle para digitar
textos em mais de uma linha;
4. A bibliografia da disciplina deve ter sua entrada a partir de um controle para digitar
textos em mais de uma linha.
Pós-condições:
Possibilitar o cadastro de turmas;
Possibilitar emissão do relatório disciplinas por curso.
94
Regras de Negócio:
RN1: Os campos obrigatórios são: código e descrição da disciplina, curso, período,
número de aulas e ementa;
RN2: O período da disciplina deve ser no mínimo 1 e no máximo o total de períodos do
curso selecionado.
Ator Principal:
Professor
Sumário:
Este caso de uso é iniciado pelo professor quando ele requisita ao sistema um
cadastro de professor, informando todos os dados, selecionando a opção correspondente a
partir da interface, exibida previamente, que contém uma listagem dos professores
cadastrados. O objetivo deste caso de uso é possibilitar que ocorra a inclusão de
professores no sistema, a consulta, a alteração ou a exclusão daqueles já existentes.
Pré-Condições:
Não aplicável.
Fluxo Principal:
1. O professor solicita ao sistema o cadastro de professores;
2. O sistema exibe uma lista com os professores cadastrados, contendo matrícula e
nome do mesmo, ordenada, crescentemente, pela matrícula do professor;
3. O sistema solicita a opção de inclusão de um novo professor, alteração, exclusão ou
consulta de um professor selecionado na lista;
4. O professor informa a opção desejada.
5. O sistema executa o subfluxo correspondente ao tipo de operação escolhido (Incluir,
Alterar, Excluir, Consultar).
Fluxos Alternativos:
1. O professor pode modificar a ordenação da lista de professores cadastrados,
podendo ordenar pela matrícula ou pelo nome do mesmo.
2. O professor pode efetuar uma pesquisa na lista de professores cadastrados,
podendo pesquisar pela matrícula ou pelo nome do professor. A pesquisa não
necessita ser exata, sendo feita a partir do início do campo pesquisado. A pesquisa
deve ignorar letras maiúsculas e minúsculas.
3. O professor pode cancelar a operação de cadastramento, fechando a interface.
(vale transporte e/ou vale alimentação) e alocação das disciplinas lecionadas pelo
professor (selecionadas pela descrição e representadas pelos respectivos código);
4. O professor fecha a interface.
Fluxos Alternativos:
1. O professor cancela a operação de inclusão. O sistema exibe novamente todos os
campos de entrada vazios;
2. O professor cancela a operação de alteração. O sistema exibe novamente os dados
originais do registro;
3. O professor fecha a interface durante as operações de inclusão ou alteração. Caso
tenham ocorrido modificações de informações, o sistema avisa da possibilidade de
perda de dados.
Fluxos de Exceção:
1. A matrícula do professor não foi preenchida. O sistema exibe uma mensagem e
retorna a entrada ao campo código do curso;
2. O nome do professor não foi preenchido. O sistema exibe uma mensagem e retorna
a entrada ao campo nome do professor;
3. Registro duplicado. Sistema exibe uma mensagem informando que já existe um
registro com a mesma identificação informada;
4. Violação de integridade referencial. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando a violação de integridade que foi
causada;
5. Alteração de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
6. Alteração de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
7. Exclusão de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
8. Exclusão de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação.
Requisitos de interface:
1. Os dados data de nascimento, data de admissão e data de expedição devem estar
dispostos em controles de texto apropriados para utilização de máscara de data
“__/__/____”;
2. Os dados de telefone residencial, comercial e celular devem estar dispostos em
controles de texto apropriados para aplicação de máscara para número de telefone
“(__)____-____”;
3. CEP deve estar disposto em controle de texto que possibilite a implementação da
máscara “_____-___”;
4. CPF do professor deve estar disposto em controle de texto apropriado para a
aplicação da máscara “_________-__”;
5. Os cursos disponíveis devem estar dispostos num controle de lista para exibição da
sua descrição;
6. Os cursos em que o professor leciona devem estar dispostos num controle de lista
para exibição de sua descrição;
7. A alocação ou remoção de alocação de cursos para um professor devem se dar por
meio de comando de botão, para execução da ação apropriada, após selecionar a
lista; ou, então, através da técnica de arrastar a linha selecionada de uma lista para a
outra lista;
8. A foto do professor deve ser exibida em componente apropriado para exibição de
imagens;
97
Pós-condições:
Possibilitar o cadastro de turmas;
Possibilitar emissão do relatório disciplinas por curso.
Regras de Negócio:
RN1: Os campos obrigatórios são: matrícula e nome do professor;
RN2: Quanto à titulação do professor, devem ser respeitados os seguintes aspectos:
• Caso a titulação seja graduação, o professor poderá exercer apenas do tipo de
contrato substituto sem direito a benefícios;
• Caso a titulação seja especialização, o professor poderá exercer os tipos de
contrato substituto e auxiliar, podendo, ainda, gozar do benefício do vale
transporte;
• Caso a titulação seja mestrado, o professor poderá exercer os tipos de contrato
substituto, auxiliar e assistente e, ainda, gozar do benefício de vale alimentação;
• Caso a titulação seja doutorado, o professor poderá exercer os tipos de contrato
substituto, auxiliar, assistente e adjunto e gozar dos benefícios vale transporte e
vale refeição.
Ator Principal:
Aluno
Sumário:
Este caso de uso é iniciado pelo aluno quando ele requisita ao sistema um cadastro
de aluno, informando todos os dados, selecionando a opção correspondente a partir da
interface, exibida previamente, que contém uma listagem dos alunos cadastrados. O
objetivo deste caso de uso é possibilitar que ocorra a inclusão de alunos no sistema, a
consulta, a alteração ou a exclusão daqueles já existentes.
Pré-Condições:
Não aplicável.
Fluxo Principal:
1. O aluno solicita ao sistema o cadastro de alunos;
2. O sistema exibe uma lista com os alunos cadastrados, contendo matrícula e nome
do mesmo, ordenada, crescentemente, pelo nome do aluno;
3. O sistema solicita a opção de inclusão de um novo aluno, alteração, exclusão ou
consulta de um aluno selecionado na lista;
4. O aluno informa a opção desejada;
98
Fluxos Alternativos:
1. O aluno pode modificar a ordenação da lista de alunos cadastrados, podendo
ordenar, crescentemente, pela matrícula ou pelo nome do mesmo.
2. O aluno pode efetuar uma pesquisa na lista de alunos cadastrados, podendo
pesquisar pela matrícula ou pelo nome do aluno. A pesquisa não necessita ser
exata, sendo feita a partir do início do campo pesquisado. A pesquisa deve ignorar
letras maiúsculas e minúsculas.
3. O aluno pode cancelar a operação de cadastramento, fechando a interface.
Fluxos Alternativos:
1. O aluno cancela a operação de inclusão. O sistema exibe novamente todos os
campos de entrada vazios;
2. O aluno cancela a operação de alteração. O sistema exibe novamente os dados
originais do registro;
3. O aluno fecha a interface durante as operações de inclusão ou alteração. Caso
tenham ocorrido modificações de informações, o sistema avisa da possibilidade de
perda de dados.
Fluxos de Exceção:
1. A matrícula do aluno não foi preenchida. O sistema exibe uma mensagem e retorna
a entrada ao campo código do curso;
2. O nome do aluno não foi preenchido. O sistema exibe uma mensagem e retorna a
entrada ao campo nome do aluno;
3. Registro duplicado. Sistema exibe uma mensagem informando que já existe um
registro com a mesma identificação informada;
4. Violação de integridade referencial. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando a violação de integridade que foi
causada;
5. Alteração de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
6. Alteração de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
7. Exclusão de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
8. Exclusão de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação.
Requisitos de interface:
1. Os dados data de nascimento e data de expedição devem estar dispostos em
controles de texto apropriados para utilização de máscara de data “__/__/____”;
2. Os dados de telefone residencial, comercial e celular devem estar dispostos em
controles de texto apropriados para aplicação de máscara para número de telefone
“(__)____-____”;
3. O CEP deve estar disposto em controle de texto que possibilite a implementação da
máscara “_____-___”;
4. O CPF do professor deve estar disposto em controle de texto apropriado para a
aplicação da máscara “_________-__”;
100
Pós-condições:
Possibilitar matrícula de alunos;
Possibilitar emissão do relatório de histórico escolar;
Possibilitar emissão do relatório de alunos por turma.
Regras de Negócio:
RN1: Os campos obrigatórios são: matrícula e nome do aluno;
RN2: Caso seja informado, o ano letivo deve conter apenas 4 dígitos;
RN3: Para semestre de início deve ser admitido apenas os valores 1 e 2, que ser
referem, respectivamente, ao primeiro e segundo semestre de um ano. Deve ser
composto, portanto, por um dígito apenas.
Ator Principal:
Secretaria
Sumário:
Este caso de uso é iniciado pela secretaria quando ela requisita ao sistema um
cadastro de turma, informando todos os dados, selecionando a opção correspondente a
partir da interface, exibida previamente, que contém uma listagem das turmas cadastradas.
O objetivo deste caso de uso é possibilitar que ocorra a inclusão de turmas no sistema, a
consulta, a alteração ou a exclusão daquelas já existentes.
Pré-Condições:
1. Curso cadastrado;
2. Disciplina cadastrada;
3. Professor cadastrado.
Fluxo Principal:
1. A secretaria solicita ao sistema o cadastro de turmas;
2. O sistema exibe uma lista com as turmas cadastradas, contendo descrição do curso,
descrição da disciplina, ano, semestre e descrição da turma; ordenada,
alfabeticamente, pela descrição do curso;
3. O sistema solicita a opção de inclusão de uma nova turma, alteração, exclusão ou
consulta de uma turma selecionada na lista;
4. A secretaria informa a opção desejada;
5. O sistema executa o subfluxo correspondente ao tipo de operação escolhido (Incluir,
Alterar, Excluir ou Consultar).
Fluxos Alternativos:
101
Fluxos Alternativos:
1. A secretaria cancela a operação de inclusão. O sistema exibe novamente todos os
campos de entrada vazios;
2. A secretaria cancela a operação de alteração. O sistema exibe novamente os dados
originais do registro;
3. A secretaria fecha a interface durante as operações de inclusão ou alteração. Caso
tenham ocorrido modificações de informações, o sistema avisa da possibilidade de
perda de dados.
Fluxos de Exceção:
1. O curso, ao qual à turma pertence, não foi selecionado. O sistema exibe uma
mensagem e retorna a entrada ao campo de seleção do curso;
2. A disciplina, ao qual à turma pertence, não foi selecionada. O sistema exibe uma
mensagem e retorna a entrada ao campo de seleção da disciplina;
3. O ano de abertura da turma não foi informado. O sistema exibe uma mensagem e
retorna a entrada ao campo de ano de abertura;
4. O semestre de abertura da turma não foi informado. O sistema exibe uma mensagem
e retorna a entrada ao campo de semestre de abertura;
5. A descrição da turma não foi preenchida. O sistema exibe uma mensagem e retorna
a entrada ao campo descrição da turma;
6. O professor responsável da turma não foi selecionado. O sistema exibe uma
mensagem e retorna a entrada ao campo de seleção do professor responsável;
7. Registro duplicado. Sistema exibe uma mensagem informando que já existe um
registro com a mesma identificação informada;
8. Violação de integridade referencial. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando a violação de integridade que foi
causada;
9. Alteração de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
10. Alteração de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
11. Exclusão de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
12. Exclusão de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação.
Requisitos de interface:
1 Os dados curso, disciplina e professor responsável devem ser exibidos, cada qual,
em caixa de combinação.
103
Pós-condições:
1. Possibilitar matrícula de alunos;
2. Possibilitar emissão do relatório de histórico escolar;
3. Possibilitar emissão do relatório de alunos por turma.
Regras de Negócio:
RN1: Os campos obrigatórios são: curso, disciplina, ano, semestre, descrição da turma e
professor responsável;
RN2: O ano deve conter apenas 4 dígitos;
RN3: Para semestre de início deve ser admitido apenas os valores 1 e 2, que ser
referem, respectivamente, ao primeiro e segundo semestre de um ano. Deve ser
composto, portanto, por um dígito apenas;
RN4: A descrição da turma deve possuir no máximo 10 caracteres.
Ator Principal:
Aluno
Sumário:
Este caso de uso é iniciado pelo aluno quando ele requisita ao sistema matricular
alunos, informando todos os dados, selecionando a turma correspondente a partir da
interface, exibida previamente, que contém uma listagem das turmas cadastradas. O
objetivo deste caso de uso é possibilitar que ocorra a matrícula de alunos em turmas, no
sistema, a modificação da lista de alunos matriculados na turma selecionada e, por
conseqüência, a remoção da matrícula de alunos da turma selecionada.
Pré-Condições:
1. Turma cadastrada;
2. Aluno cadastrado.
Fluxo Principal:
1. O aluno solicita ao sistema a matrícula de alunos;
2. O sistema exibe uma lista com as turmas cadastradas, contendo descrição do curso,
descrição da disciplina, ano, semestre e descrição da turma; ordenada,
alfabeticamente, pela descrição do curso;
3. O sistema solicita a opção de matricular alunos a partir da seleção de uma turma na
lista de turmas disponibilizada;
4. O aluno seleciona a opção de matricular alunos;
5. O sistema exibe a interface de matrícula com lista de alunos e o campo de pesquisa
de alunos habilitado;
6. O sistema preenche a interface de matrícula com os dados curso, disciplina, ano,
semestre, turma, lista de alunos (matriculados ou não), professor responsável, total
de vagas e vagas restantes;
7. O sistema solicita a matrícula de alunos ou a remoção de matrícula daqueles que
estiverem cadastrados;
8. O aluno marca a caixa de verificação, na lista, correspondente para cada aluno que
de seja matricular RN1;
104
9. O aluno desmarca a caixa de verificação correspondente para cada aluno que deseja
remover matrícula;
10. O sistema solicita confirmação da lista de matrícula configurada;
11. O aluno confirma os dados;
12. O sistema efetua validação dos campos RN2;
13. O sistema executa críticas de integridade referencial e acesso concorrente;
14. O sistema armazena os dados;
15. O sistema fecha a interface.
Fluxos Alternativos:
1. O aluno pode modificar a ordenação da lista de turmas cadastradas, podendo
ordenar, crescentemente, pela descrição do curso, descrição da disciplina, ano,
semestre e descrição da turma;
2. O aluno pode efetuar uma pesquisa na lista de turmas cadastradas, podendo
pesquisar pela descrição do curso, descrição da disciplina, ano, semestre e
descrição da turma;
3. O aluno pode filtrar a lista de turmas disponibilizada, na interface de pesquisa,
através do curso, disciplina, ano e semestre, necessariamente nessa ordem, de
acordo com a demanda desejada;
4. O aluno pode cancelar a operação de matrícula, fechando a interface;
5. O aluno pode pesquisar a lista de alunos disponível, na interface de matrícula, pela
matrícula ou pelo nome do aluno. A pesquisa não precisa ser exata, podendo ser
executada a partir do primeiro caractere do campo selecionado;
6. O aluno pode ordenar, crescentemente, a lista de alunos disponível na interface de
matrícula pelo número de matrícula ou pelo nome do aluno;
7. O aluno cancela a operação de matrícula. O sistema exibe novamente todos os
campos de entrada no seu estado original;
8. O aluno fecha a interface durante a operação de matrícula. Caso tenha ocorrido
modificação de informações, o sistema avisa da possibilidade de perda de dados;
Fluxos de Exceção:
1. Violação de integridade referencial. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando a violação de integridade que foi
causada;
2. Alteração de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
3. Alteração de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
4. Exclusão de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
5. Exclusão de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação.
Requisitos de interface:
1. Os alunos devem ser exibidos em uma lista com caixa de verificação para efetuar
matrícula ou remover a matrícula.
Pós-condições:
Possibilitar emissão do relatório de histórico escolar;
Possibilitar emissão do relatório de alunos por turma.
Não aplicável.
Regras de Negócio:
RN1: Durante a seleção dos alunos para efetuar matrícula, se o total de alunos
selecionados superar o número máximo de alunos admitidos por turma, a operação deve
ser permitida, porém o sistema deverá emitir o aviso pertinente;
RN2: O aluno deve possuir apenas uma matrícula.
Ator Principal:
Professor
Sumário:
Este caso de uso é iniciado pelo professor quando ele requisita ao sistema avaliar
alunos matriculados em uma turma, informando todos os dados, selecionando a turma
correspondente a partir da interface, exibida previamente, que contém uma listagem das
turmas cadastradas. O objetivo deste caso de uso é possibilitar que ocorra o lançamento de
avaliação para alunos de uma turma, no sistema.
Pré-Condições:
1. Turma cadastrada;
2. Aluno matriculado.
Fluxo Principal:
1. O professor solicita ao sistema a avaliação de alunos;
2. O sistema exibe uma lista com as turmas cadastradas, contendo descrição do curso,
descrição da disciplina, ano, semestre e descrição da turma; ordenada,
alfabeticamente, pela descrição do curso;
3. O sistema solicita a opção de avaliar alunos a partir da seleção de uma turma na lista
de turmas disponibilizada;
4. O professor seleciona a opção de matricular alunos;
5. O sistema exibe a interface de matrícula com lista de alunos e o campo de pesquisa
de alunos habilitado;
6. O sistema preenche a interface de avaliação da turma com os dados curso,
disciplina, ano, semestre, turma, lista de alunos matriculados e professor
responsável;
7. O sistema solicita o lançamento de avaliação dos alunos;
8. O professor seleciona o aluno para lançara a avaliação;
9. O professor solicita a exibição da interface de lançamento da avaliação do aluno;
10. O sistema exibe a interface de avaliação do aluno, preenchendo-a com os dados
curso, disciplina, ano, semestre, turma, matrícula do aluno e nome do aluno,
deixando-os desabilitados. São disponibilizados os campos faltas, avaliação 1,
avaliação 2 e avaliação final;
11. O professor informa os dados da avaliação do aluno;
12. O sistema solicita confirmação da avaliação lançada;
13. O professor confirma a avaliação lançada (RN1, RN2, RN3, RN4);
14. O sistema armazena os dados da avaliação;
15. O professor fecha a interface de avaliação.
106
Fluxos Alternativos:
1. O professor pode modificar a ordenação da lista de turmas cadastradas, podendo
ordenar, crescentemente, pela descrição do curso, descrição da disciplina, ano,
semestre e descrição da turma;
2. O professor pode efetuar uma pesquisa na lista de turmas cadastradas, podendo
pesquisar pela descrição do curso, descrição da disciplina, ano, semestre e
descrição da turma;
3. O professor pode filtrar a lista de turmas disponibilizada, na interface de pesquisa,
através do curso, disciplina, ano e semestre, necessariamente nessa ordem, de
acordo com a demanda desejada;
4. O professor pode cancelar a operação de avaliação, fechando a interface;
5. O professor pode pesquisar a lista de alunos disponível, na interface de avaliação da
turma, pela matrícula ou pelo nome do aluno. A pesquisa não precisa ser exata,
podendo ser executada a partir do primeiro caractere do campo selecionado;
6. O professor pode ordenar, crescentemente, a lista de alunos disponível na interface
de avaliação de turmas pelo número de matrícula ou pelo nome do aluno;
7. O professor pode cancela a digitação da avaliação do aluno selecionado, caso haja
alguma modificação quanto aos dados anteriores, o estado original é restaurado;
8. O professor fecha a interface de avaliação do aluno. Se houve alguma modificação
nos dados, o sistema avisa que os dados serão perdidos;
9. O professor fecha a interface durante a operação de matrícula. Caso tenha ocorrido
modificação de informações, o sistema avisa da possibilidade de perda de dados;
Fluxos de Exceção:
1. Violação de integridade referencial. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando a violação de integridade que foi
causada;
2. Alteração de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
3. Alteração de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
4. Exclusão de registro alterado. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação;
5. Exclusão de registro excluído. Sistema exibe uma mensagem informando que a
operação não pode ser realizada indicando o motivo do cancelamento da operação.
Requisitos de interface:
1. Os alunos devem ser exibidos, na interface de avaliação da turma, em uma lista com
os dados matrícula, nome e os dados faltas, avaliação 1, avaliação 2 e avaliação
final;
2. Na avaliação dos alunos, os dados faltas, avaliação 1, avaliação 2 e avaliação final
devem ser disponibilizados por meio de caixas de texto.
Pós-condições:
Possibilitar emissão do relatório de histórico escolar.
Regras de Negócio:
RN1: Os dados faltas, avaliação 1, avaliação 2 e avaliação final devem são valores
numéricos;
107
RN2: Os dados avaliação 1, avaliação 2 e avaliação final devem são valores numéricos
podem assumir até 2 casas decimais;
RN3: As faltas podem assumir qualquer valor inteiro, positivo, entre 0 e 999;
RN4: Os dados avaliação 1, avaliação 2 e avaliação final devem são valores numéricos
podem assumir qualquer valor decimal, positivo, entre 0 e 10.
Ator Principal:
Secretaria
Sumário:
Este caso de uso é iniciado pela secretaria quando ela deseja visualizar as
disciplinas cadastradas em cada curso. O objetivo deste caso de uso é possibilitar que
ocorra emissão de um relatório de disciplinas por curso, previamente visualizado em tela e,
depois, podendo ser impresso e/ou exportado.
Pré-Condições:
1. Curso cadastrado;
2. Disciplina cadastrada.
Fluxo Principal:
1. A secretaria solicita, no menu Relatórios, ao sistema a emissão do relatório de
disciplinas por curso;
2. O sistema seleciona os dados descrição do curso e descrição da disciplina,
devidamente relacionados e ordenados, crescentemente, com essa mesma
precedência;
3. O sistema exibe o relatório composto de cabeçalho (contendo nome do sistema,
nome do relatório, data de emissão, logomarca do sistema, e cabeçalho dos dados a
sem exibidos);
4. O sistema exibe a descrição das disciplinas selecionadas agrupadas segundo à
descrição dos cursos selecionados;
5. O sistema totaliza o número de disciplinas por curso e exibe o total no rodapé de
cada grupo de disciplinas;
6. O sistema totaliza o número de cursos selecionados e exibe no rodapé do relatório;
7. O sistema totaliza a contagem distinta de disciplinas (independente de seus cursos)
e exibe o dado no rodapé do relatório;
8. A secretaria fecha o relatório.
Fluxos Alternativos:
1. A secretaria imprime o relatório através do respectivo comando na interface do
relatório;
2. A secretaria exporta o relatório através do respectivo comando na interface do
relatório.
Fluxos de Exceção:
1. Ao selecionar os dados, a composição está vazia. O sistema exibe o aviso
pertinente;
2. Não há dispositivo de impressão instalado, os comando de impressão aparece
desabilitado;
3. Não há espaço suficiente no dispositivo de armazenamento para reter o relatório
exportado. Uma mensagem pertinente é exibida;
108
Requisitos de interface:
1. A interface do relatório deve permitir navegação entre as páginas, configuração do
dispositivo de impressão, impressão do relatório visualizado, ajustar visualização da
página à área disponível na tela, ajustar visualização da pagina para o tamanho real,
exportar o relatório visualizado. Cada uma das ações, acima previstas, deve ser
possibilitadas por meio de um clique num botão de comando, que deve possuir uma
figura representando cada uma das ações e mostrar uma dica da ação realizada;
2. O texto de explicativo de cada uma ação de comando do relatório deve ser exibido
apenas quando o cursor do dispositivo de ponteiro (mouse) esteja posicionado sobre
um dos botões, sem qualquer dos botões pressionados (continuamente ou não),
após um segundo na mesma posição;
3. Ao posicionar o cursor de ponteiro (mouse) sobre qualquer dos botões de comando
descritos no primeiro requisito de interface, os mesmos devem ser ressaltados por
um relevo ao painel que os agrupa;
4. Os dados que compõe o cabeçalho do relatório devem ser exibidos em negrito,
exceto pela data de emissão;
5. Os dados do curso, que compõem o cabeçalho de cada página do relatório, devem
ser exibidos em negrito;
6. A data de emissão do relatório deve estar no formato “dd/mm/yyyy”;
7. O sistema deve separar os dados dos cursos dos dados das disciplinas através de
uma linha;
8. Cada curso deverá iniciar sua exibição/impressão em uma nova página.
Pós-condições:
Não aplicável.
Regras de Negócio:
Não aplicável.
Ator Principal:
Professor
Sumário:
Este caso de uso é iniciado pelo professor quando ele deseja visualizar os alunos
matriculados em uma ou mais turmas cadastradas em cada curso. O objetivo deste caso de
uso é possibilitar que o professor possa destacar a listagem de alunos matriculado na
disciplina desejada, podendo, posteriormente, ser impresso e/ou exportado.
Pré-Condições:
1. Turma cadastrada;
109
2. Aluno matriculado.
Fluxo Principal:
1. O professor solicita, no menu Relatórios, ao sistema a emissão do relatório de alunos
por turma;
2. O sistema seleciona os seguintes dados que compõe a turma e seu relacionamento
com os alunos matriculados nela: descrição do curso, descrição da disciplina, ano,
semestre, descrição da turma, matrícula do aluno, nome do aluno e nome do
professor responsável. Os dados são ordenados de acordo com a seguinte
precedência: descrição do curso, descrição da disciplina, ano da turma, semestre da
turma, descrição da turma e nome do aluno; todos em ordem crescente. (RN1, RN2);
3. O sistema exibe o relatório composto de cabeçalho (contendo nome do sistema,
nome do relatório, data de emissão, logomarca do sistema, e cabeçalho dos dados a
sem exibidos);
4. O sistema exibe a descrição dos cursos em frente ao cabeçalho de curso;
5. O sistema exibe a descrição das disciplinas em frente ao cabeçalho de disciplina;
6. O sistema exibe os dados ano, semestre, turma, e professor responsável abaixo dos
respectivos cabeçalhos;
7. O sistema exibe os dados de matrícula do aluno e nome do aluno em detalhe,
agrupados sob a turma em que estão matriculados;
8. O sistema totaliza o número de alunos matriculados em uma turma e exibe o dado
no rodapé do grupo de turmas;
9. O sistema totaliza o número de turmas selecionadas e exibe o dado no rodapé do
relatório;
10. O professor fecha o relatório.
Fluxos Alternativos:
1. O professor imprime o relatório através do respectivo comando na interface do
relatório;
2. O professor exporta o relatório através do respectivo comando na interface do
relatório.
Fluxos de Exceção:
1. Ao selecionar os dados, a composição está vazia. O sistema exibe o aviso
pertinente;
2. Não há dispositivo de impressão instalado, os comando de impressão aparece
desabilitado;
3. Não há espaço suficiente no dispositivo de armazenamento para reter o relatório
exportado. Uma mensagem pertinente é exibida.
Requisitos de interface:
1. A interface do relatório deve permitir navegação entre as páginas, configuração do
dispositivo de impressão, impressão do relatório visualizado, ajustar visualização da
página à área disponível na tela, ajustar visualização da pagina para o tamanho real,
exportar o relatório visualizado. Cada uma das ações, acima previstas, deve ser
possibilitadas por meio de um clique num botão de comando, que deve possuir uma
figura representando cada uma das ações e mostrar uma dica da ação realizada;
2. O texto de explicativo de cada uma ação de comando do relatório deve ser exibido
apenas quando o cursor do dispositivo de ponteiro (mouse) esteja posicionado sobre
um dos botões, sem qualquer dos botões pressionados (continuamente ou não),
após um segundo na mesma posição;
110
Pós-condições:
Não aplicável.
Regras de Negócio:
RN1: Serão exibidos (visualizados, impressos e exportados), no relatório, somente os
alunos ativos;
RN2: Serão exibidos (visualizados, impressos e exportados), no relatório, somente os
alunos matriculados.
Ator Principal:
Aluno
Sumário:
Este caso de uso é iniciado pelo aluno quando ele deseja visualizar o seu histórico
escolar. O objetivo deste caso de uso é possibilitar que o aluno obtenha sua participação em
disciplinas do curso bem como a avaliação em cada uma dessas disciplinas.
Pré-Condições:
1. Turma cadastrada;
2. Aluno cadastrado.
Fluxo Principal:
1. O aluno solicita, no menu Relatórios, ao sistema, a emissão do relatório de histórico
escolar;
2. O sistema seleciona os seguintes dados: descrição do curso, descrição da disciplina,
número de aulas da disciplina, ano da turma, semestre da turma, matrícula do aluno,
nome do aluno, avaliação 1, avaliação 2, avaliação final e número de faltas. A
ordenação dos dados, de modo crescente, segue a seguinte ordem de precedência:
descrição do curso, nome do aluno, descrição da disciplina, número de aulas da
disciplina e status;
3. O sistema demonstra, baseado na seleção, um status de aprovação para cada
disciplina. (RN1, RN2, RN3 e RN4);
4. O sistema exibe o relatório composto de cabeçalho (contendo nome do sistema,
nome do relatório, data de emissão, logomarca do sistema, e cabeçalho dos dados a
sem exibidos);
111
Fluxos Alternativos:
1. O aluno imprime o relatório através do respectivo comando na interface do relatório;
2. O aluno exporta o relatório através do respectivo comando na interface do relatório.
Fluxos de Exceção:
1. Ao selecionar os dados, a composição está vazia. O sistema exibe o aviso
pertinente;
2. Não há dispositivo de impressão instalado, os comando de impressão aparece
desabilitado;
3. Não há espaço suficiente no dispositivo de armazenamento para reter o relatório
exportado. Uma mensagem pertinente é exibida.
Requisitos de interface:
1. A interface do relatório deve permitir navegação entre as páginas, configuração do
dispositivo de impressão, impressão do relatório visualizado, ajustar visualização da
página à área disponível na tela, ajustar visualização da pagina para o tamanho real,
exportar o relatório visualizado. Cada uma das ações, acima previstas, deve ser
possibilitadas por meio de um clique num botão de comando, que deve possuir uma
figura representando cada uma das ações e mostrar uma dica da ação realizada;
2. O texto de explicativo de cada uma ação de comando do relatório deve ser exibido
apenas quando o cursor do dispositivo de ponteiro (mouse) esteja posicionado sobre
um dos botões, sem qualquer dos botões pressionados (continuamente ou não),
após um segundo na mesma posição;
3. Ao posicionar o cursor de ponteiro (mouse) sobre qualquer dos botões de comando
descritos no primeiro requisito de interface, os mesmos devem ser ressaltados por
um relevo ao painel que os agrupa;
4. Os dados que compõe o cabeçalho do relatório devem ser exibidos em negrito,
exceto pela data de emissão;
5. Os dados, que compõe o cabeçalho de cada página do relatório, devem ser exibidos
em negrito;
6. A data de emissão do relatório deve estar no formato “dd/mm/yyyy”;
7. O sistema deve desenhar uma tabela para conter os dados do detalhe;
8. Cada histórico escolar deve ter seu início em uma nova página.
Pós-condições:
Não aplicável.
Regras de Negócio:
RN1: Serão selecionados dados históricos de disciplinas cursadas pelos alunos;
RN2: Caso o aluno tenha mais que 25% de infreqüência em uma disciplina, seu status,
na mesma, será reprovado por infreqüência; em caso contrário a próxima regra de
negócio é aplicada;
RN3: A avaliação final deve ser a média aritmética dos valores da avaliação 1, da
avaliação 2. Caso o aluno obtenha entre 7 e 10 pontos nessa média, seu status será
aprovado. No caso dessa média estar entre 3 e 6,99, a nota da avaliação final será
somada à média, anteriormente obtida, e uma nova média aritmética é calculada sobre a
soma realizada (nesse caso, se o aluno obtiver uma nota final entre 5 e 10, estará
aprovado, constando tal status no respectivo campo do relatório). Em caso contrário às
situações acima previstas, o status do aluno naquela disciplina deverá constar no
histórico como reprovado por nota;
6 – Diagrama de classes
Domínio:
Pessoa
nome : String
datanascimento : Date
email : String
telefonecomercial : String
telefoneresidencial : String
telefonecelular : String
logradouro : String
numero : Integer
complemento : String
bairro : String
cidade : String
UF : String
cep : String
cpf : String
docidentidade : String
orgaoexpedidor : String
dataexpedicao : Date
foto : Image
status : String
Professor
Turma matriculaprofessor : Integer
anoturma : Integer dataadmissao : Date
semestre : Integer titulacao : Integer
descricao : String 0..* 1 tipocontrato : Integer
nummaximoaluno : Integer valetransporte : String
valealimentacao : String
0..* 0..*
0..*
1
TurmaAluno
situacaoaluno : Integer Aloca Coordena
1
1
1 0..*
0..* Disciplina
Curso
Aluno codigodisciplina : String
codigocurso : Integer
descricao : String
matriculaaluno : Integer descricao : String
periodo : Integer
anoinicio : Integer cargahoraria : Integer
1..* 1..* numeroaulas : Integer
semestreinicio : Integer 0..* 1 quantidadeperiodo : Integer
ementa : String
tipo : Integer
bibliografia : String
0..*
1
0..1
Avaliacao
anoavaliacao : Integer
semestreavaliacao : Integer
avaliacao1 : float
avaliacao2 : float
avaliacaofinal : float
faltas : Integer
resultadofinal : Integer
114
MVC:
115
REFERÊNCIAS BIBLIOGRÁFICAS
LEÃO, M. Borland Delphi 7 – Curso Completo. Rio de Janeiro: Axcel Books 2003. ISBN
85-7323-184-X.
BIBLIOGRAFIA
AMBLER, Scott W. Análise e Projeto Orientado a Objetos – Volume 2. São Paulo: IBPI
Press, 1998.
BOOCH, Grady, RUMBAUGH, James, JACOBSON, Ivar. UML – Guia do Usuário. Rio de
Janeiro: Campus, 2000.
D’SOUZA, D. F.; WILSS, A. C. Objects, components and frameworks with UML : the
catalysis approach. United States of America : Addison-Wesley, 1998.
LEÃO, M.; HAMPSHIRE, P.; BOLONHA, J. C. Delphi 8 para plataforma .Net – Curso
Completo. Rio de Janeiro: Axcel Books 2004. ISBN 8573232315.
OMG. Object Management Group. Disponível em: <www.omg.org>. Acesso em: 22 nov.
2005.