Documentação - Rede Social de Pesquisadores - Em java
Por: Alessandra Oliveira • 27/4/2015 • Trabalho acadêmico • 2.507 Palavras (11 Páginas) • 462 Visualizações
Universidade Federal de Minas Gerais
Instituto de Ciências Exatas
Departamento de Ciência da Computação
Programação Modular - 1º Semestre
DOCUMENTAÇÃO TP-1
Rede Social de Pesquisadores
Alessandra Oliveira Vilela da Cruz
Nº Matricula: 2012054557
Caio Vaz Machado
Nº Matricula: 2007026052
Belo Horizonte, Abril de 2015
- INTRODUÇÃO
Rede Social é uma estrutura social composta por pessoas ou organizações, conectadas por um ou vários tipos de relações, que compartilham valores e objetivos comuns. Uma das fundamentais características na definição das redes é a sua abertura e porosidade, possibilitando relacionamentos horizontais e não hierárquicos entre os participantes.
Neste trabalho devemos implementar em linguagem Java, que é Orientada a Objetos, uma rede social (fictícia) de pesquisadores, esses pesquisadores serão Graduados, Mestres ou Doutores, e essa rede deve possibilitar que seja apresentada a popularidade de cada pesquisador, o fator de impacto de cada veículo de publicação, que são revistas e conferencias, usado para publicar artigos, e a qualidade de cada artigo.
Os cálculos dessas informações será feito a partir da implementação de métodos pertencentes a diversas classes, que representaram os pesquisadores, o artigo e os veículos de publicação. Os dados usados para os cálculos serão lidos de arquivos de entrada que serão passados para as funções como parâmetro e os resultados dos cálculos serão escritos em arquivos de saída. Todos os possíveis casos de exceção serão tratados.
Temos como objetivo com esse trabalho nos familiarizar com os principais conceitos de Orientação a Objetos e com programação utilizando linguagem Java. Para assim desenvolvermos a habilidade a aprendermos os modos corretos de se programas utilizando POO e Java.
- IMPLEMENTAÇÃO
Estrutura de Dados
TAD Pesquisador:
O Tipo abstrato de dados pesquisador é composto pela super classe Pesquisador e suas classes filhas, Graduado, Mestre e Doutor. Tais classes implementam um pesquisador, que será obrigatoriamente um graduado, mestre ou doutor, porém logicamente para ser mestre precisa-se ser graduado e para ser douto deve-se ser mestre. Os atributos contidos em cada uma dessas classes serão usados para o calculo popularidade do pesquisador.
A classe pai Pesquisador, é uma classe abstrata composta pelos atributos private:
- id (tipo int): Identificador único de cada pesquisador
- peso (tipo double) – que será calculado com base na ordem de importância (autoria) do pesquisador nas suas publicações.
- Lista_id_artigo: Que é uma lista de inteiros que armazena os identificadores dos artigos pertencentes ao pesquisador.
- Popularidade (tipo double) – atributo que recebe o resultado do calculo de popularidade do pesquisador.
- horas_ic: atributo lido do arquivo, que representa as horas que o pesquisador dedicou a iniciação cientifica, comum a todos os pesquisadores, independente da formação, usado para o calculo de popularidade.
- horas_estagio_docencia: atributo lido do arquivo, que representa as horas que o pesquisador dedicou ao estágio docência, comum a todos os pesquisadores, independente da formação, usado para o calculo de popularidade.
A classe é composta por um método construtor que seta os valores das variáveis id, horas_ic e horas _estagio_docencia de acordo com os parâmetros e seta o peso com valor 0. Além de inicializar a lista de artigos. Possui Gettrs e Setters, para consulta e alteração dos atributos supracitados.
A classe possui um método para atualizar o peso de acordo com a ordem de autoria, que é lida do arquivo, do pesquisador em seus artigos, como mostrado abaixo:
peso+=(double)(1/(double)ordem_autoria)
Também possui um método para calcular o número de artigos publicados pelo pesquisador, com base no tamanho da lista que armazena o numero de vezes que os artigos do pesquisador foram citado e um método para adicionar um novo identificador de artigo na lista de artigos. Contem também um método que calcula o numero de vezes que os artigos do pesquisador foram citados. Para finalizar, possui a assinatura do método calc_popularidade(), que será implementado nas classes filhas.
A classe Graduado estende a classe Pesquisador, a classe Mestre estende a classe Graduado, herdando assim seu construtor e a classe Doutor estende a classe Mestre, herdando também seu construtor, onde partimos do pressuposto que para ser Doutor é necessário ser Mestre e para ser mestre deve-se ser Graduado. As classes filhas herdam o construtor e métodos de Pesquisador, além de, no caso de Mestre e Doutor, possuírem atributos próprios. Porém estas três sobrescrevem o método calc_popularidade(), pois ele é calculado de maneira diferente em cada uma destas classes:
Graduado:
- popularidade(p) = w(p) + c(p) + a(p) + hIC(p)+ hED(p)
- popularidade(p) :popularidade do pesquisador.
- w(p): peso de importância do pesquisador
- c(p): número de vezes que os artigos do pesquisador p foram citados
- a(p): número de artigos publicados pelo pesquisador p.
- hIC(p): quantidade de horas que o pesquisador p dedicou à iniciação científica
- hED(p): quantidade de horas que o pesquisador p dedicou ao estágio docência.
Mestre:
- popularidade(p) = w(p) + c(p) + a(p) + hIC(p)+ hED(p) + 10*g(p)
- popularidade(p): popularidade do pesquisador.
- w(p): peso de importância do pesquisador
- c(p): número de vezes que os artigos do pesquisador p foram citados
- a(p): número de artigos publicados pelo pesquisador p.
- hIC(p): quantidade de horas que o pesquisador p dedicou à iniciação científica
- hED(p): quantidade de horas que o pesquisador p dedicou ao estágio docência.
- g(p): quantidade de alunos de graduação orientados pelo pesquisador p.
Doutor:
- popularidade(p) = w(p) + c(p) + a(p) + hIC(p)+ hED(p) + 10*g(p) + 20*m(p)+ 30*d(p)
- popularidade(p): popularidade do pesquisador.
- w(p): peso de importância do pesquisador
- c(p): número de vezes que os artigos do pesquisador p foram citados
- a(p): número de artigos publicados pelo pesquisador p.
- hIC(p): quantidade de horas que o pesquisador p dedicou à iniciação científica
- hED(p): quantidade de horas que o pesquisador p dedicou ao estágio docência.
- g(p): quantidade de alunos de graduação orientados pelo pesquisador p.
- m(p) e d(p) é a quantidade de alunos de mestrado e doutorado, respectivamente, orientados pelo pesquisador p.
TAD Artigo:
A classe Artigo, implementa o Tipo Abstrato de Dados Artigo. Essa classe é composta é composta por 5 atributos private:
- id (tipo int): Identificador único de cada artigo
- veiculo (tipo int): Número de identificação do veículo de comunicação ao qual o artigo pertence.
- num_citacoes (tipo int): Número de citações do artigo em outros artigos.
- fatorImpactoVeiculo (tipo double): Valor do fator de impacto do veículo de comunicação ao qual o artigo pertence.
- qualidadeArtigo (tipo double): valor da qualidade do artigo (o cálculo será detalhado a baixo).
A classe é composta por um método construtor que seta os valores das variáveis id e veiculo de acordo com os parâmetros e os demais com valor 0. Possui Gettrs e Setters, para consulta e alteração dos atributos supracitados.
Além disso, possui dois métodos específicos, incrementaCitacoes() e calculaQualidadeArtigo. O primeiro sempre que chamado soma 1 ao valor atual do atributo num_citações. Já o segundo, calcula o valor da qualidade do artigo que será atribuído ao atributo qualidadeArtigo.
...