Riviste e articoli

Il programma simula la gestione di riviste e articoli. Tutte le classi si trovano nel package journals. La classe principale é Journals. La classe TestApp nel package example contiene esempi e presenta i casi di test principali, ma non tutti. Le eccezioni vengono generate utilizzando la classe JException; devono essere effettuati solo i controlli specificati e non tutti quelli possibili. Se un metodo genera un'eccezione non vi é alcun cambiamento nei dati presenti nella classe principale. Suggerimento: ogni volta che hai implementato un metodo, esegui TestApp per verificare il risultato.

La documentazione JDK é accessibile all'URL https://oop.polito.it/api/.

R1: Riviste, fattore di impatto

Il metodo int addJournal(String name, double impactFactor) inserisce una nuova rivista con nome e fattore di impatto. Genera un'eccezione se la rivista (rappresentato dal nome) esiste già. Il risultato é il numero di caratteri del nome.

Il metodo double getImpactFactor(String name) fornisce il fattore di impatto della rivista indicata dal nome. Genera un'eccezione se la rivista non esiste.

Il metodo groupJournalsByImpactFactor() raggruppa i nomi delle riviste in base ai fattori di impatto crescenti. I nomi delle riviste sono elencati in ordine alfabetico.

R2: Autori, articoli

Il metodo int registerAuthors (String... authorNames) aggiunge autori. Autori duplicati sono ignorati. Il risultato é il numero di autori inserito finora.

Il metodo String addPaper (String journalName, String paperTitle, String... authorNames) aggiunge un articolo a una rivista. La rivista é indicata tramite il nome; il metodo scatena un'eccezione se la rivista non esiste. L'articolo ha un titolo che deve essere unico nella rivista specificata, altrimenti deve essere generata un'eccezione. L'articolo può avere più autori: se non tutti gli autori sono stati registrati viene generata un'eccezione. Il risultato é il nome della rivista seguito da ":" e dal titolo dell'articolo.

Il metodo giveNumberOfPapersByJournal() fornisce il numero di articoli per ogni rivista. Le rivste sono ordinate alfabeticamente. Le riviste senza articoli sono ignorate.

R3: Fattori d'impatto

Il metododouble getAuthorImpactFactor(String authorName) fornisce il fattore di impatto per l'autore indicato. Il fattore di impatto di un autore si ottiene sommando i fattori di impatto dei suoi articoli. Il fattore di impatto di un articolo é uguale a quello della rivista che lo contiene. Il metodo genera un'eccezione se l'autore non é stato registrato. Se l'autore non ha articoli il risultato é 0.0.

Il metodo getImpactFactorsByAuthors() raggruppa gli autori (in ordine alfabetico) per fattore di impatto crescente. Gli autori senza articoli vengono ignorati.

R4: Statistiche

Il metodo getNumberOfPapersByAuthor() fornisce il numero di articoli per autore; gli autori sono ordinati in ordine alfabetico. Gli autori senza articoli vengono ignorati.

Il metodo String getJournalWithTheLargestNumberOfPapers() fornisce il nome della rivista con il maggior numero di articoli. Se il maggior numero di articoli é comune a due o più riviste il risultato é il nome della rivista che é la prima in ordine alfabetico.