O Trabalho Final da disciplina de Programação Orientada para Objectos consiste no desenvolvimento de uma aplicação para gestão de uma biblioteca. O trabalho encontra-se dividido em duas fases. A primeira fase destina-se a motivar os alunos para que ataquem o problema e se esboce o projecto de solução o mais cedo possível. Assim, pretende-se que se especifique e implemente um programa para gestão de itens relativos a uma biblioteca. Este programa deve comportar os seguintes aspectos:
Passados em revista os aspectos gerais sobre os componentes a representar, indica-se pormenorizadamente a informação a representar pelo programa:
admin
e nome completo Administrador por omissão) e adicioná-lo à
lista de utilizadores. Note-se que um determinado autor está
associado a uma revista desde que seja autor de um dos seus artigos.A interface será muito simples, recorrendo simplesmente a linhas de comandos
(usando-se para isso os canais cin e cout). Não
pode ser usado qualquer outro tipo de interacção, pois impedirá o teste
sistemático dos programas desenvolvidos.
Em vez de se descrever a interface completa, optou-se por disponibilizar uma versão oficial do programa. Os alunos devem testá-lo e emular a sua interface. Ou seja, os programas a desenvolver deverão ter exactamente a mesma interface do programa oficial.
Lista-se abaixo um exemplo simples de interacção do programa com o utilizador. A negrito apresentam-se as entradas do utilizador.
rdmr@mercurio ~> gestor_de_biblioteca_oficial -h
Electric Fence 2.2.0 Copyright (C) 1987-1999 Bruce Perens <bruce@perens.com>
Uso: gestor_de_biblioteca_oficial [ficheiro_dos_utilizadores ficheiro_das_publicações]
rdmr@mercurio ~> gestor_de_biblioteca_oficial
Electric Fence 2.2.0 Copyright (C) 1987-1999 Bruce Perens <bruce@perens.com>
--------------------------------------------------
Utilizador: admin
--------------------------------------------------
*** Biblioteca ***
1 - Gestão de utilizadores
2 - Adicionar publicação
3 - Remover publicação
4 - Consulta publicação
5 - Listagens
6 - Terminar sessão
7 - Sair
Opção: 1
*** Gestão de utilizadores ***
1 - Adiciona utilizador
2 - Remove utilizador
3 - Altera tipo de utilizador
4 - Consulta dados de utilizador
5 - Mostra utilizadores
0 - Menu anterior
Opção: 1
*** Adiciona utilizador ***
Nome do utilizador: mz
Nome completo: Manel Zé
Tipo de utilizador: normal
*** Gestão de utilizadores ***
1 - Adiciona utilizador
2 - Remove utilizador
3 - Altera tipo de utilizador
4 - Consulta dados de utilizador
5 - Mostra utilizadores
0 - Menu anterior
Opção: 5
*** Mostra utilizadores ***
Nome do utilizador: admin
Nome completo: Administrador por omissão
Tipo: administrador
Nome do utilizador: mz
Nome completo: Manel Zé
Tipo: normal
*** Gestão de utilizadores ***
1 - Adiciona utilizador
2 - Remove utilizador
3 - Altera tipo de utilizador
4 - Consulta dados de utilizador
5 - Mostra utilizadores
0 - Menu anterior
Opção: 0
*** Biblioteca ***
1 - Gestão de utilizadores
2 - Adicionar publicação
3 - Remover publicação
4 - Consulta publicação
5 - Listagens
6 - Terminar sessão
7 - Sair
Opção: 2
*** Adiciona publicação ***
1 - Livro
2 - Colecção
3 - Revista
4 - Jornal
0 - Voltar ao menu anterior
Opção: 1
*** Adiciona livro ***
Título: Data Structures and Other Objects Using C++
Ano: 1997
Editora: Addison-Wesley
ISBN: 0-8053-7470-1
Autores (para terminar introduza um .):
--> Michael Main
--> Walter Savitch
--> .
1 - Livro
2 - Colecção
3 - Revista
4 - Jornal
0 - Voltar ao menu anterior
Opção: 0
*** Biblioteca ***
1 - Gestão de utilizadores
2 - Adicionar publicação
3 - Remover publicação
4 - Consulta publicação
5 - Listagens
6 - Terminar sessão
7 - Sair
Opção: 4
*** Consultas ***
Título ou parte: Struct
Foi encontrada a seguinte publicação:
Título: Data Structures and Other Objects Using C++
Ano: 1997
Editora: Addison-Wesley
ISBN: 0-8053-7470-1
Autor(es):
Michael Main
Walter Savitch
*** Biblioteca ***
1 - Gestão de utilizadores
2 - Adicionar publicação
3 - Remover publicação
4 - Consulta publicação
5 - Listagens
6 - Terminar sessão
7 - Sair
Opção: 5
*** Listagens de publicações ***
1 - Por ano
2 - Por tipo de publicação
3 - Por autor
4 - Por autor entre dois anos
0 - Menu anterior
Opção: 1
Ano: 2000
Não foram encontradas publicações.
*** Listagens de publicações ***
1 - Por ano
2 - Por tipo de publicação
3 - Por autor
4 - Por autor entre dois anos
0 - Menu anterior
Opção: 2
Tipo: livro
Data Structures and Other Objects Using C++ 1997 livro
*** Listagens de publicações ***
1 - Por ano
2 - Por tipo de publicação
3 - Por autor
4 - Por autor entre dois anos
0 - Menu anterior
Opção: 0
*** Biblioteca ***
1 - Gestão de utilizadores
2 - Adicionar publicação
3 - Remover publicação
4 - Consulta publicação
5 - Listagens
6 - Terminar sessão
7 - Sair
Opção: 6
Pretende guardar a informação da biblioteca (s/n)?
--> s
O nome do ficheiro dos utilizadores é utilizadores.dat.
Pretende usar outro (s/n)?
--> n
O nome do ficheiro das publicações é publicacoes.dat.
Pretende usar outro (s/n)?
--> n
Sessão encerrada.
--------------------------------------------------
Utilizador: mz
--------------------------------------------------
*** Biblioteca ***
1 - Consulta publicação
2 - Listagens
3 - Terminar sessão
4 - Sair
Opção: 2
*** Listagens de publicações ***
1 - Por ano
2 - Por tipo de publicação
3 - Por autor
4 - Por autor entre dois anos
0 - Menu anterior
Opção: 1
Ano: 1997
Data Structures and Other Objects Using C++ 1997 livro
*** Listagens de publicações ***
1 - Por ano
2 - Por tipo de publicação
3 - Por autor
4 - Por autor entre dois anos
0 - Menu anterior
Opção: 0
*** Biblioteca ***
1 - Consulta publicação
2 - Listagens
3 - Terminar sessão
4 - Sair
Opção: 4
Até breve!
rdmr@mercurio ~> gestor_de_biblioteca_oficial utilizadores.dat publicacoes.dat
Electric Fence 2.2.0 Copyright (C) 1987-1999 Bruce Perens <bruce@perens.com>
--------------------------------------------------
Utilizador: admin
--------------------------------------------------
*** Biblioteca ***
1 - Gestão de utilizadores
2 - Adicionar publicação
3 - Remover publicação
4 - Consulta publicação
5 - Listagens
6 - Terminar sessão
7 - Sair
Opção: 2
*** Adiciona publicação ***
1 - Livro
2 - Colecção
3 - Revista
4 - Jornal
0 - Voltar ao menu anterior
Opção: 4
*** Adiciona jornal ***
Título: Expresso
Ano: 2003
Periodicidade: semanal
Número: 1591
ISSN: 0-1234-5678-9
Director: José António Saraiva
1 - Livro
2 - Colecção
3 - Revista
4 - Jornal
0 - Voltar ao menu anterior
Opção: 0
*** Biblioteca ***
1 - Gestão de utilizadores
2 - Adicionar publicação
3 - Remover publicação
4 - Consulta publicação
5 - Listagens
6 - Terminar sessão
7 - Sair
Opção: 6
Pretende guardar a informação da biblioteca (s/n)?
--> s
O nome do ficheiro dos utilizadores é utilizadores.dat.
Pretende usar outro (s/n)?
--> n
O nome do ficheiro das publicações é publicacoes.dat.
Pretende usar outro (s/n)?
--> n
Sessão encerrada.
--------------------------------------------------
Utilizador: mz
--------------------------------------------------
*** Biblioteca ***
1 - Consulta publicação
2 - Listagens
3 - Terminar sessão
4 - Sair
Opção: 1
*** Consultas ***
Título ou parte: Expresso
Foi encontrada a seguinte publicação:
Título: Expresso
Ano: 2003
Periodicidade: semanal
Número: 1591
ISSN: 0-1234-5678-9
Director: José António Saraiva
*** Biblioteca ***
1 - Consulta publicação
2 - Listagens
3 - Terminar sessão
4 - Sair
Opção: 4
Até breve!
O trabalho divide-se em duas fases, correspondendo o final da primeira à entrega intermédia prevista nos métodos de avaliação da disciplina. A segunda fase corresponde à entrega definitiva.
Corresponde a:
A interface do programa desenvolvido de ser exactamente igual à fornecida pela resolução oficial, embora fornecendo ainda um subconjunto das suas funcionalidades.
Corresponde ao programa completo. Note-se que:
Publicacao que
representa uma generalização abstracta dos diversos tipos de publicação da biblioteca.É obrigatória a utilização de uma interface com o programa exactamente
igual à fornecida pela resolução oficial, disponível através do comando gestor_de_biblioteca_oficial
disponível na máquina mercurio, no directório /usr/local/bin/.
No mesmo directório encontrarão dois ficheiros utilizadores.dat e publicacoes.dat
que contêm exemplos de dados relativos aos utilizadores e publicações que o programa
deverá ser capaz de ler. O formato dos ficheiros encontra-se descrito na Secção
4.
O formato dos ficheiros de utilizadores e publicações é simples. Na descrição abaixo considere todo o texto após e incluindo o símbolo '%' como sendo comentários, que não deverão surgir num ficheiro real.
Ficheiro de utilizadores:
2% número de utilizadores
admin% nome do utilizador
Administrador por omissão% nome completo do utilizador
administrador% tipo do utilizador
mz% nome do utilizador
Manel Zé% nome completo do utilizador
normal% tipo do utilizador
Ficheiro de publicações:
5% número de publicações
livro% tipo da publicação
Data Structures and Other Objects Using C++% título da publicação
1997% ano da publicação
Addison-Wesley% editora do livro
0-8053-7470-1% ISBN
2% número de autores
Michael Main% primeiro autor
Walter Savitch% segundo autor
jornal% tipo da publicação
Expresso% título da publicação
2003% ano da publicação
semanal% periodicidade da publicação periódica
1591% número da publicação periódica
0-1234-5678-9% ISSN
José António Saraiva% director do jornal
livro% tipo da publicação
Diário de Anne Frank% título da publicação
2000% ano da publicação
Livros do Brasil% editora do livro
0-9876-5432-1% ISBN
1% número de autores
Anne Frank% primeiro autor
colecção% tipo da publicação
Dois mundos% título da publicação
2000% ano da publicação
Amândio Nicolau% editor da colecção
1% número de livros
0-9876-5432-1% ISBN do primeiro livro
revista% tipo da publicação
Turbo% título da publicação
2003% ano da publicação
mensal% periodicidade da publicação periódica
67% número da publicação periódica
0-2345-9876-1% ISSN
1% número de artigos
Os bloqueadores nos dias de hoje% título do artigo
Chico Camionista% autor
Note-se que os livros de uma colecção são indicados logo após a colecção, mas fazem também parte da lista de publicações global da biblioteca.
gestor_de_biblioteca_mac_os_x
- executável criado com o GCC 3.1 em Mac OS X.gestor_de_biblioteca_cm
- executável criado com o GCC 3.2, o STLport e o Electric Fence em
Caixa Mágica.Para poder executar estes programas tem de os copiar para o seu computador e dar o seguinte comando:
chmod +x gestor_de_biblioteca_*
il, (#include <Utilitarios/ignoradores.H>
e using namepace Utilitarios) para ignorar todos
os caracteres encontrados num canal de entrada até ao próximo fim-de-linha.Utilizador para representar os utilizadores.Esta secção irá crescendo com outras dicas. Mantenha-se atento.
Biblioteca, Utilizador e GestorDeBiblioteca.(1ª
e 2ª fases)carregaDe() que carrega nova
informação a partir de um canal de entrada, e uma operação guardaEm()
que
guarda num canal de saída toda a informação. Ver
Notas sobre leitura e escrita em ficheiros. (1ª fase: definição
embrionária; 2ª
fase: definição completa).C, ._impl.H e .H) e o respectivo
ficheiro de construção (Makefile);Courier) e, caso seja possível fazê-lo,
imprima em papel reciclado, frente-e-verso.TFInn,
em que nn é o número do grupo.TFDnn,
em que nn é o número do grupo.As datas das discussões orais e respectivas inscrições serão anunciadas logo que possível.
A nota deste trabalho será dada apenas após uma discussão, individual, com cada um dos elementos do grupo. Nesta discussão qualquer elemento do grupo terá de demonstrar um total conhecimento do programa e ser capaz de operar as alterações que forem pedidas. Nessa oral poderão também ser feitas perguntas sobre a matéria em geral. A nota final poderá depender não só da qualidade do trabalho, mas também, e principalmente, da avaliação que os docentes façam da participação relativa dos alunos na feitura do trabalho.
Quaisquer funcionalidades extra que não tenham sido pedidas no enunciado, tais como menus mais sofisticados etc., não serão avaliadas.