O trabalho consiste na implementacao de um programa em C++ para simular o funcionamento de uma linha de producao com tres estacoes. A primeira estacao e' responsavel pela gerencia do estoque de componentes a serem utilizados na fabricacao das peças (Almoxarifado). A segunda estacao e' responsavel pela preparacao dos componentes a serem utilizados na fabricacao de uma peça (Usinagem). A terceira e ultima estacao realiza a montagem da peça, unindo os componentes que a compoe (Montagem). Operacoes sobre arquivos e estruturas de dados na memoria principal sao executadas de forma a realizar a simulacao da linha de producao. Por exemplo, a retirada do estoque dos componentes necessarios para construir uma peça e' simulada pela remocao (ou atualizacao) de nodos em uma arvore que representam os componentes reais. Outro exemplo e' a simulacao da montagem da peça, que se da' pela realizacao da soma dos volumes dos componentes individuais a serem utilizados na peça. Os arquivos e estruturas de dados utilizados em cada um dos estagios (estacoes) sao discutidos a seguir, juntamente com a descricao de cada uma das estacoes da linha de producao simulada.
O estoque de componentes disponiveis para fabricacao das peças e' representado, no almoxarifado, por intermedio de uma lista de componentes armazenada em um arquivo em disco. Este arquivo contem todos os componentes disponiveis, e conforme as peças forem sendo produzidas, o estoque deve ser atualizado e os componentes utilizados devem ser removidos do arquivo. Os componentes necessarios para fabricar uma determinada peça tambem sao informados ao sistema por intermedio de listas armazenadas em arquivos. Assim, a estacao Almoxarifado possuira' diversos arquivos contendo listas de componentes, sendo um para cada peça a ser fabricada, alem do arquivo com os componentes em estoque. Neste estagio Almoxarifado devera' ocorrer a seguinte sequencia de eventos:
A Estacao Usinagem e' responsavel por realizar os cortes necessarios nos componentes a serem utilizados na fabricacao da peça. Esta estacao recebe como entrada a lista fornecida como saida na Estacao Almoxarifado, e um arquivo contendo regras de usinagem para os componentes de cada peça a ser fabricada. As regras sao utilizadas para informar para a estacao Usinagem como o componente deve ser cortado. Todos os nodos da lista sao visitados, e a regras definidas no arquivo sao aplicadas na dimensao, X, Y ou Z indicada na regra. Por exemplo, uma regra definida como "10 X" significa que a dimensao X do componente deve ser cortado (reduzido) em 10%. O arquivo de regras possui tantas linhas quantos forem os nodos da lista (numero de componentes da peça). Esta estacao produz como saida a mesma lista encadeada, porem com todas as dimensoes acertadas de acordo com as regras, simulando assim os cortes realizados na usinagem. A figura a seguir ilustra o processo realizado nesta estacao.
A Estacao Montagem recebe como entrada a lista fornecida como saida pela Estacao Usinagem. Todos os nodos sao visitados, e para cada nodo (cada componente) e' realizado o calculo da volume do componente, de acordo com o tipo de cada um. A simulacao da montagem da peça e' realizada por intermedio da soma de todas os volumes. A Estacao Montagem fornece como saida um valor numerico que representa o somatorio dos volumes de todos os componentes contidos na lista, utilizados na montagem da peça.
As seguintes classes devem ser utilizadas, obrigatoriamente, na implementacao do programa.
Obs 1. Nas classes que herdam as interfaces fornecidas (as classes abstratas: ABP, List, Componente, Controlador, Almoxarifado, Usinagem e Montagem), utilizar APENAS costrutores padrao sem paramentros. Obs 2. Para aqueles que estao enfrentando dificuldades para utilizar as classes com templates, e que acreditam que nao vao conseguir concluir a implementacao dentro do prazo, uma alternativa e' a utilizacao da versao alternativa contida em arquivos_tf_alternativo.zip que utiliza void* no lugar do template. E' importante ressaltar que a nota maxima sera' para aqueles que implementarem a versao com template na forma descrita na especificacao do trabalho. A forma alternativa e' apenas para ajudar aqueles com problemas a apresentar um programa funcionando, e conseguirem tambem uma boa nota.
O trabalho poderá ser realizado por grupos de
até dois alunos, porém a avaliação é
individual. Cada grupo deverá preparar um relatório
descrevendo as estratégias utilizadas para implementar o
sistema. No dia da apresentação serão realizadas
perguntas especificas, para cada aluno, sobre recursos utilizados na
implementacao do trabalho. Nesse momento o aluno
deverá demonstrar possuir o conhecimento
necessário para o desenvolvimento de programas em C++. A avaliação será
realizada de acordo com a ordem da lista de chamada, e um aluno por
vez. Os alunos deverao enviar o relatorio e o programa fonte por
email para eduardob@inf.pucrs.br
ate' 30 minutos antes do inicio da aula do dia da apresentacao.
Programas
nao recebidos por email ate' a data/hora limite nao serao avaliados (dia 23/06/2004 ate' as
9:20).
Data da apresentação: 23/06/2004 |