.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Programmazione (http://www.dsy.it/forum/forumdisplay.php?forumid=259)
-- Aiuto esercizio! (http://www.dsy.it/forum/showthread.php?threadid=42631)


Posted by Strong on 26-01-2012 14:32:

Aiuto esercizio!

Vi chiedo un'info su una tipologia che mette sempre delle prove scritte. Faccio riferimento a un esercizio, esattamente al 7 e all'8 della prova del 26 febbraio 2010.

Allora, ecco le classi che ho sviluppato (simili se non identiche alla correzione)

PHP:

public class Corso implements Comparable{

    private String nome, docente;
    private int crediti;

    public Corso(String nm, String cgm, int cfu){
        nome = nm;
        docente = cgm;
        crediti = cfu;
    }

    public Corso(String nm, String cgm){
        this(nm, cgm, 6);
    }

    public String getNome(){
        return nome;
    }

    public String getTitolare(){
        return docente;
    }

    public int getCrediti(){
        return crediti;
    }

    public String toString(){
        return nome + " " + docente + " " + crediti;
    }

    public boolean haCreditiMaggiori(Corso c){
        return docente.equals(c.docente) && crediti > c.crediti;
    }

    public int compareTo(Object o){
        Corso c = (Corso) o;
        if(getCrediti() > c.getCrediti())
            return 1;
        else
            if(getCrediti() < c.getCrediti())
                return -1;
            else
                return 0;
    }

}



PHP:

class CorsoLab extends Corso{

    private String laboratorio;

    public CorsoLab(String nm, String cgm, int cfu, String lab){
        super(nm, cgm, cfu);
        laboratorio = lab;
    }

    public String getLab(){
        return laboratorio;
    }

    public String toString(){
        return super.toString() + " " + laboratorio;
    }


}



ed ecco il programma:

PHP:

import prog.io.*;
import prog.utili.*;

class CorsoProg{
    public static void main(String[] args){

    ConsoleInputManager in = new ConsoleInputManager();
    ConsoleOutputManager out = new ConsoleOutputManager();

    int n = in.readInt("Quanti corsi?");
    Corso[] corsi = new Corso[n];

    for(int i=0; i<n; i++){
        String nome = in.readLine("Nome del corso " + (i+1) + ": ");
        String docente = in.readLine("Nome del titolare del corso " + (i+1) + ": ");
        int crediti = in.readInt("Numero di crediti del corso " + (i+1) + ": ");
        boolean s = in.readSiNo("E' un corso di laboratorio? (s/n) ");
        if (!s)
             corsi[i] = new Corso(nome, docente, crediti);
        else{
            String lab = in.readLine("Nome del laboratorio in cui si tiene il corso " + (i+1) + ": ");
            corsi[i] = new CorsoLab(nome, docente, crediti, lab);
        }
    }

    for(int i=0; i<n; i++){
        if(corsi[i].getTitolare().equals("Rossi"))
            out.println(corsi[i].toString());
    }

    GestioneArray.ordina(corsi);
    for(int i=0; i<n; i++){
        if(corsi[i] instanceof CorsoLab)
            out.println(corsi[i].toString());
    }

    }
}



Se compilo il programma mi da questo errore:
PHP:

Note: CorsoProg.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.



Lo ricompilo con javac CorsoProg.java -Xlint ed esce questo avviso:
PHP:

CorsoProg.java:31: warning: [unchecked] unchecked method invocation: <T>ordina(T[]) in prog.utili.GestioneArray is applied to (Corso[])
    GestioneArray.ordina(corsi);
                        ^
1 warning



Scusate l'eccessiva lunghezza del post. Forse lo ha detto a lezione, non riesco a risolvere. Il programma è esatto, solo che non lo compila.


Posted by Strong on 26-01-2012 15:43:

Volendo posso risolvere in questo modo:

PHP:

for(int i=0; i<30; i++){
        for(int j=0; j<n; j++){
            if(corsi[j] instanceof CorsoLab){
                if(corsi[j].getCrediti() == i)
                    out.println(corsi[j].toString());
            }
        }
    }



senza utilizzare le interfacce. La mia domanda cmq rimane :)


Posted by Tychondriax on 26-01-2012 18:41:

Ciao! Domanda: ma nel corso state già lavorando con i generici?
Perché il modo corretto di scrivere l'implementazione sarebbe del tipo:

public class Corso implements Comparable<Corso>{

cosa che implicherebbe il sistemare anche il metodo

compareTo(Corso c)

Bye ;)


Posted by Strong on 27-01-2012 13:49:

Grazie mille, così funziona.
Nella correzione allora il prof ha sbagliato.
Il corso è finito. Premetto che quest'anno non l'ho seguito.


All times are GMT. The time now is 10:39.
Show all 4 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.