TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Relatório Trabalho Pratico I POO

Por:   •  4/12/2018  •  Trabalho acadêmico  •  2.618 Palavras (11 Páginas)  •  391 Visualizações

Página 1 de 11

UNIVERSIDADE FEDERAL DE OURO PRETO - UFOP[pic 2]

DEPARTAMENTO DE COMPUTAÇÃO - DECOM

        Disciplina: Programação Orientada a Objetos - BCC 221

Prof.: Guillermo Cámara Chávez  [pic 3]

Curso: Ciência da Computação

RELATÓRIO - TRABALHO PRÁTICO I

Sistema de Gerenciamento de Coleção de Livros (C++)

1.0 ESPECIFICAÇÃO DO TRABALHO PRÁTICO

        Este trabalho tem como objetivo o entendimento e implementação de um sistema de gerenciamento de livros,  fazendo o bom uso e adequação dos contêineres ao contexto da Standard Templates Library (STL), dando eficiência ao uso da linguagem C++, visto que a STL apresenta a forma mais otimizada das estruturas de dados (como lista, vetor, pilha, árvore, etc.). Deste modo, os livros serão organizados em termos de destino à venda, assim, o livro possuirá o destino eletrônico (venda digital), impresso (venda em livrarias) ou audiobook (venda em audiobook). Desta maneira, a entrada dos dados ocorrerá através da leitura de 16 (dezesseis) arquivos que compreendem o acervo disponível, determinando o tipo de livro, sobre as quais serão realizadas operações posteriores. Os arquivos ficaram organizados de tal forma que cada um possui apenas os dados de um único livro (tipo do livro, titulo, escritores, ano da publicação, idioma, keywords, capítulos, e dependências do tipo do livro).  

2.0 METODOLOGIA

        A reutilização de software, nos trouxe a criação da STL, projetada para obter desempenho e flexibilidade da linguagem. Portanto, o bom uso de seus três componentes-chave - os contêineres(estruturas de dados baseadas em templates populares) - os iteradores (classes que permitem a varredura pelos elementos de uma coleção seguindo uma determinada regra) - e os algoritmos (classes que implementam métodos comuns de estruturas de dados), nos garante a máxima eficiência. Deste modo, discutiremos a escolha desses componentes na solução da problematização, visando o bom uso da STL.  

2.1 Ferramenta

Foram utilizados os editores de texto Sublime Text e Atom, para implementação dos métodos aplicados a problematização na linguagem de programação C++, com paradigma orientado a objetos,  e os pacotes de ferramentas de compilação GNU Compiler Collection (versão 7.3.0-16)  e MinGW(versão 6.3.0). A implementação seguiu prezando-se pela divisão de arquivos de cabeçalho e arquivos de implementação, sempre que possível, para otimizar o reuso do código. A compilação e os testes foram realizadas usando-se um interpretador de comandos, com a cadeia g++ *.cpp -o main -Wall -std=c++11(compilação), e execução do executável através da cadeia ./main. Os sistemas operacionais utilizados foram o Microsoft Windows 10 e o subsistema Linux para Windows(bash do Linux).  

3.0 OS CONTÊINERES UTILIZADOS

        A implementação e solução da problematização, em termos de aplicabilidade, optou-se pelo contêiner mais flexível, assim descreveremos os métodos da STL escolhidos em contêineres de sequência e associativos, além de algumas de suas características:

Contêiner de sequência

  • vector: Alternativa à representação de array primitivo, inserções e exclusões rápidas na parte de trás, acesso direto a qualquer elemento.
  • list:  Lista duplamente encadeada, inserções e exclusões rápidas na parte da frente ou de trás, acesso direto a qualquer elemento;

        Contêiner associativos

  • set : Pesquisa rápida, não permite duplicadas;
  • map: Mapeamento de um para um, não permite duplicadas, pesquisa baseada em valores associativos.  

                

A escolha do uso do vector é determinada pelo acesso indexado rápido com o operador de subscrito [] sobrecarregado, e suporte a tipos de iteradores diferentes, que de tal modo garante flexibilidade ao contêiner em sua implementação, desta maneira, as funções que fazem uso do contêiner vector tendem a ser operadas e implementadas com rapidez. Além da sua estrutura comportar-se de forma coerente a especificação do problema.

O contêiner list apresenta-se gerido de forma aleatória como o vector, onde desse modo a estrutura interna é implementada como uma lista duplamente vinculada - cada nó na  list contém um ponteiro para o nó anterior e para o próximo nó da list. Isso nos possibilita um suporte para iteradores bidirecionais, permitindo assim, que o contêiner seja percorrido para a frente ou para trás. Logo, todos os algoritmos que requerem iteradores de entrada, de saída, de leitura direta ou bidirecionais podem operar em uma list.

        O contêiner associativo set é utilizado para rápido armazenamento e recuperação de chaves únicas.  A implementação do mesmo, baseia-se em ter chaves únicas, assim, se uma tentativa de inserir uma chave duplicata for feita, a duplicata é ignorada. O set suporta iteradores bidirecionais (mas não iteradores de acesso aleatórios).  

        O contêiner associativo map tem o mesmo princípio do set, com a diferença na sua constituição, nesse contêiner teremos uma chave associada a um elemento inserido. Com o map você especifica a chave e recupera os dados associados rapidamente.

4.0 IMPLEMENTAÇÃO

Neste tópico discutiremos a implementação das soluções encontradas à problematização especificada no trabalho prático I, assim explicaremos de forma sucinta as implementações.

Seguiremos a seção Detalhes do sistema presente na especificação do trabalho prático, assim, discutiremos as questões e implementações referentes:  

4.1 Função getColecaoIdioma - Solução B  

Esta função atenda a responder a problematização pela qual, dado um idioma, deve-se retornar todos os livros da coleção que possuem o mesmo idioma, não importando o seu formato.

...

Baixar como (para membros premium)  txt (16.7 Kb)   pdf (331.8 Kb)   docx (212.4 Kb)  
Continuar por mais 10 páginas »
Disponível apenas no TrabalhosGratuitos.com