Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [java]come realizzereste questo metodo???

    ciao a tutti sto cercando di relaizzare un programma che gestisce un concessionario in breve si devono gestire 3 tipi di mezzi auto moto e veicoli commerciali dopo di che bisogna realizzare ilmain contenete dei metodi particolari che vi descriverò a brave,intanto vi posto le classi che ho relaizzato:

    classe generale contenente le info generali sulle vetture in generale

    codice:
    import java.util.*;
    public class Vetture {
    	protected String targa;
    	protected int costo;
    	public Vetture (){
    		targa="nd";
    		costo=-1;
    	}
        public Vetture (String t,int c){
        	targa=t;
        	costo=c;
    	   
       }
    
    	
        public String getTarga(){
        	return targa;
        }
        	
        public int getCosto(){
        	return costo;
        }
        	
        public void setTarga(String t){
        	targa=t;
        }
        public void setCosto(int c){
            costo=c;
        }
        public void inserisci() {
        	System.out.print("targa=");
        	Scanner in = new Scanner(System.in);
        	targa=in.next();
        	System.out.print("costo=");
        	costo=in.nextInt();
        }
    
    
        public void stampa() {
        	System.out.println("targa="+targa);
        	System.out.println("costo="+costo);
        	
        }
    
    
        }
    classe automobile e sottoclasse optional

    codice:
    import java.util.*;
    public class Automobile extends Vetture {
    protected String marca;
    protected int cilindrata;
     public Automobile(){
    	super();
    	marca="";
    	cilindrata=-1;
    	
     }
    	public Automobile (String t,int c,String m,int k){
    		super(t,c);
    		marca=m;
    		cilindrata=k;
    		
    	}
    	public String getMarca(){
        	return marca;
        }
    	public int getCilinddrata(){
        	return cilindrata;
        }
    	public void setMarca(String m){
        	marca=m;
        }
        public void setCilindrata(int k){
        	cilindrata=k;
        }
        public void inserisci() {
        	super.inserisci();
            System.out.print("marca=");
        	Scanner in = new Scanner(System.in);
        	marca=in.next();
        	 System.out.print("cilindrata=");
         	cilindrata=in.nextInt();
        	
        	
        	
          }
        public void stampa() {
        	super.stampa();
        	System.out.println("marca="+marca);
        	System.out.println("cilindrata="+cilindrata);
        	
        }
    }
    sottoclasse di automobile

    codice:
    import java.util.*;
    public class Optional extends Automobile {
    	private int codice;
    	private String nome;
    	private int prezzo;
    	public Optional (){
    		super();
    		codice=-1;
    		nome="";
    		prezzo=-1;
    		
    	}
    	public Optional (String t,int c,String m,int k,int cod,String n,int p){
    		super(t,c,m,k);
    		codice=cod;
    		nome=n;
    		prezzo=p;
    		
    		
    	}
    	public int getCodice(){
        	return codice;
        }
    	public String getNome(){
        	return nome;
        }
    	public int getPrezzo(){
        	return prezzo;
        }
    	
    	
    	
    	public void setCodice(int cod){
        	codice=cod;
        }
        public void setNome(String n){
        	nome=n;
        }
        public void setPrezzo(int p){
        	prezzo=p;
        }
        
        public void inserisci() {
        	super.inserisci();
            System.out.print("codice=");
        	Scanner in = new Scanner(System.in);
        	codice=in.nextInt();
        	 System.out.print("nome=");
         	nome=in.next();
         	 System.out.print("prezzo=");
          	prezzo=in.nextInt();
        	
        	
          }
        public void stampa() {
        	super.stampa();
        	System.out.println("codice="+codice);
        	System.out.println("nome="+nome);
        	System.out.println("prezzo="+prezzo);
        }
    	
    }
    classe motocicletta

    codice:
    import java.util.*;
    public class Motocicletta extends Vetture{
    	private int motore;
    	public Motocicletta() {
    		super();
    		motore=-1;
    	}
    	
    	public Motocicletta (String t,int c,int m){
    		super(t,c);
    		motore=m;
    		
    	}
    	public int getMotore(){
        	return motore;
        }
    	
       public void setMotore(int m){
        	motore=m;
        }
     	
    	 public void inserisci() {
    	    	super.inserisci();
    	    	Scanner in = new Scanner(System.in);
    	    	
    	    	 System.out.print("tempi motore=");
    	     	motore=in.nextInt();
    	     	while (motore<2||motore>4||motore==3){
    	     		System.out.println("il motore può essere di 2 o 4 tempi");
    	     		System.out.print("tempi motore=");
    		     	motore=in.nextInt();
    	     		
    	     	}
    	    	
    	      }
    	    public void stampa() {
    	    	super.stampa();
    	    	
    	    	System.out.println("tempi motore="+motore);
    	    	
    	    }
    in fine veicolo commerciale

    codice:
    import java.util.*;
    
    public class VeicoloCommerciale extends Vetture {
    	private int portata;
    	public VeicoloCommerciale (){
    		super();
    		portata=-1;
    	}
        public VeicoloCommerciale (String t,int c,int p){
        	super(t,c);
        	portata=p;
        }
        public int getPortata(){
        	return portata;
        }
        	
        public void setPortata(int p){
        	portata=p;
        }
        public void inserisci() {
        	super.inserisci();
            System.out.print("portata=");
        	Scanner in = new Scanner(System.in);
        	portata=in.nextInt();
          }
        public void stampa() {
        	super.stampa();
        	System.out.println("portata="+portata);
        }
    }
    ora viene il bello scrivere un metodo che, data un’auto, restituisca il numero di optional di cui `e dotata

    codice:
    public class Test {
        public int Restituisci_Opt()
    	
    	public static void main(String[] args) {
        	VeicoloCommerciale ape=new VeicoloCommerciale();
        	Automobile zip=new Automobile("dd765as",8000,"fiat",1200);
            ape.inserisci(); 
            System.out.println("ape");
        	ape.stampa(); 
        	System.out.println("zip");
        	zip.stampa();
        	Optional g=new Optional();
        	System.out.println("opt1");
        	g.inserisci();
            System.out.println("");
        	g.stampa();
        	System.out.println("opt2");
        	Optional h=new Optional();
        	h.stampa();	
    
    	Motocicletta a=new Motocicletta();
    	a.inserisci();
    	a.stampa();
    	
    	}
    }
    e qui ho già qualche dubbio....voi come lo realizzereste???

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java]come realizzereste questo metodo???

    Originariamente inviato da 20Marty20
    vi posto le classi che ho relaizzato
    Alcune note e consigli generali:

    1) Se una classe modella 1 sola entità generalmente è meglio metterlo al singolare: Vettura non Vetture (nulla di grave ... solo una questione sui nomi)

    2) Queste classi che alla fin fine sono poi solamente dei "bean" (hanno delle proprietà) che "modellano" delle entità, non dovrebbero avere alcun metodo per l'I/O!! Insomma, non è appropriato/pulito che tu metta metodi tipo inserisci()/stampa(). Questa gestione dell'I/O andrebbe fatta altrove.

    3) Per costruttori e metodi in generale metti i nomi dei parametri uguali ai nomi dei campi (cosa che tra l'altro ti evita di "inventare" altri nomi!). Questo sarebbe un caso di "shadowing" ma è generalmente tipico e accettato:

    codice:
        public void setTarga(String targa){
        	this.targa = targa;
        }
    4) Certi campi li hai messi 'protected'. Certo ... è una possibilità. Ma a meno che ci siano altri requisiti/necessità particolari (e nel tuo caso non ce ne sono), meglio tenerli 'private', che tanto hai comunque i "getter" per leggerli.

    5) class Optional extends Automobile
    Questo no, concettualmente. Un Optional non è-una automobile!!! (come una stanza non è una casa!).
    Una automibile semmai ha degli optional (come una casa ha delle stanze).

    Quindi togli questa estensione. E se vuoi che una automobile abbia degli optional, in Automobile farai in modo che contenga una "collezione" di Optional.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Come indicato nel regolamento interno e sempre nell'ottica di aiutarsi a vicenda, ci sono dei punti da rispettare:

    1) Il titolo deve fornire un'indicazione sul suo contenuto ("come scrivereste questo metodo" non dice nulla né del metodo né del problema: osserva la mia correzione al titolo).

    2) Il codice va postato all'interno dei tag CODE: questo aiuta chi legge a comprendere meglio il codice, mantenendo l'indentazione ed un carattere monospaced.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4

    Re: Re: [java]come realizzereste questo metodo???

    Originariamente inviato da andbin
    Alcune note e consigli generali:

    1) Se una classe modella 1 sola entità generalmente è meglio metterlo al singolare: Vettura non Vetture (nulla di grave ... solo una questione sui nomi)

    2) Queste classi che alla fin fine sono poi solamente dei "bean" (hanno delle proprietà) che "modellano" delle entità, non dovrebbero avere alcun metodo per l'I/O!! Insomma, non è appropriato/pulito che tu metta metodi tipo inserisci()/stampa(). Questa gestione dell'I/O andrebbe fatta altrove.

    3) Per costruttori e metodi in generale metti i nomi dei parametri uguali ai nomi dei campi (cosa che tra l'altro ti evita di "inventare" altri nomi!). Questo sarebbe un caso di "shadowing" ma è generalmente tipico e accettato:

    codice:
        public void setTarga(String targa){
        	this.targa = targa;
        }
    4) Certi campi li hai messi 'protected'. Certo ... è una possibilità. Ma a meno che ci siano altri requisiti/necessità particolari (e nel tuo caso non ce ne sono), meglio tenerli 'private', che tanto hai comunque i "getter" per leggerli.

    5) class Optional extends Automobile
    Questo no, concettualmente. Un Optional non è-una automobile!!! (come una stanza non è una casa!).
    Una automibile semmai ha degli optional (come una casa ha delle stanze).

    Quindi togli questa estensione. E se vuoi che una automobile abbia degli optional, in Automobile farai in modo che contenga una "collezione" di Optional.


    Certo....Optional è sbagliata!!!ma per collezione intendi linkedlist??????

  5. #5
    Per collezione si intende "Collection".

    Poi LinkedList e' un'estensione di Collection, come lo sono List, ArrayList, Set, ecc.
    Premesso che prima di usarle dovresti conoscere le differenze che le distinguono, nella tua classe Automobile avrai un attributo di tipo Collection, oppure ArrayList, oppure quello che vuoi tu...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.