Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
OnePlus 15 nasce per alzare l'asticella delle prestazioni e del gaming mobile. Ma non solo, visto che integra un display LTPO 1,5K a 165 Hz, OxygenOS 16 con funzioni AI integrate e un comparto foto con tre moduli da 50 MP al posteriore. La batteria da 7.300 mAh con SUPERVOOC 120 W e AIRVOOC 50 W è la ciliegina sulla torta per uno smartphone che promette di offrire un'esperienza d'uso senza alcun compromesso
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
Vediamo come si comporta il Ryzen 5 7500X3D, nuovo processore di casa AMD che fonde 6 core Zen 4 con la tecnologia 3D V-Cache, particolarmente utile in scenari come il gaming. Annunciato a un prezzo di listino di 279€, il nuovo arrivato sarà in grado di diventare un riferimento per i sistemi budget? Ecco cosa ne pensiamo.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-05-2010, 12:14   #1
e-commerce84
Senior Member
 
Iscritto dal: Feb 2009
Messaggi: 700
[Java] Pattern Decorator, non riesco a capire dove sia l'errore :-(

mmm...mi dà un errore che non riesco proprio a capire da cosa dipenda !!! Ci stò impazzendo.

L'esempio è il seguente:

1) Ho un'interfaccia Employee che è l'interfaccia comune e che rappresenta un generico impiegato e che serve a garantire la relazione di aggregazione

2) Ho la classe concreta Engineer che implementa l'interfaccia Employee: un ingegnere è un impiegato.

3) Ho la classe astratta ResponsibleWorker che implementa sempre l'interfaccia Employee e che mi servirà per definire i vari decoratori concreti della classe concreta Engineer

4) Ed ho due estensioni di ResponsibleWorker che mi servonoa decorare Engineer e che sono: AdministrativeManager e ProjectManager

Il mio codice è il seguente:

1) Interfaccia Employee:
Codice:
/* E' l'interfaccia comune che rappresenta un generico impiegato e serve a garantire la relazione di
 * aggregazione tra oggetti concreti che rappresentano diversi tipologie di impiegati */

public interface Employee {
	
	public String getName();	// Un generico oggetto impiegato deve saper ritornare il suo nome
	public String getOffice();	// ritorna l'ufficio dove lavora l'impiegato
	public void whoIs();		// Stampa chi è l'impiegato, dove lavora e la sua eventuale qualifica

}
2) Classe Engineer:
Codice:
/* E' la classe concreta di base: un impiegato può essere un ingegnere */

public class Engineer implements Employee {
	
	private String name;		// nome dell'impiegato
	private String office;		// nome dell'ufficio dove lavora l'impiegato
	
	/* Costruttore: riceve il nome dell'impiegato ed il nome dell'ufficio dove lavora e costruisce un
	 * nuovo oggetto di tipo Engineer */
	public Engineer(String nam, String off){
		name = nam;
		office = off;
	}
	
	// Metodo che ritorna al chiamante il nome dell'impiegato:
	public String getName(){
		return name;
	}
	
	// Metodo che ritorna al chiamante il nome dell'ufficio dove lavora l'impiegato:
	public String getOffice(){
		return office;
	}
	
	// Metodo che stampa chi è l'impiegato e dove lavora:
	public void whoIs(){
		super.whoIs();			// Per prima cosa invoca il metodo whoIs del supertipo (se c'è)
		// Poi stampa un messaggio personalizzato per quel particolare tipo di impiegato
		System.out.println("Sono " + getName() + " e lavoro all'ufficio " + getOffice() + ".");
	}

}
3) Casse astratta ResponsibleWorker:
Codice:
/* Classe astratta che implementa l'interfaccia Employe e le cui estensioni rappresentano i vari
 * decorator della classe concreta di base --> Engineer potrà essere decorato con diverse
 * responsabilità rappresentate dalle estensioni di ResponsibleWorkere: AdministrativeManager e 
 * ProjectManager */

public abstract class ResponsibleWorker implements Employee {
	
	protected Employee responsible;		// Un impiegato è un generico responsabile
	
	/* Costruttore: */
	public ResponsibleWorker(Employee employee){
		// Mette dentro la variabile responsabile il riferimento ad un generico impiegato
		responsible = employee;		
	}
	
	// IMPLEMENTAZIONE DEI METODI DICHIARATI NELL'INTERFACCIA Employee:
	
	public String getName(){
		// Invoca il metodo getName() sull'oggetto concreto referenziato da responsible
		return responsible.getName();
	}
	
	public String getOffice(){
		// Invoca il metodo getOffice() sull'oggetto concreto referenziato da responsible
		return responsible.getOffice();
	}
	
	public void whoIs(){
		// Invoca il metodo whoIs() sull'oggetto concreto referenziato da responsible
		responsible.whoIs();
	}

}
4) Estensioni di ResponsibleWorker:

Codice:
/* Classe che estende la classe astratta ResponsibleWorker e che rappresenta un decoratore concreto per
 * Engineer --> un Engineer può essere un Administrative manager ed avere determinate responsabilità */

public class AdministrativeManager extends ResponsibleWorker {
	
	/* Costruttore: riceve il riferimento ad un generico impiegato e costruisce un oggetto di tipo
	 * Administrativemanager */
	public AdministrativeManager(){
		/* Invoca il costruttore del supertipo ResponsibleWorker che mette dentro la variabile
		 * responsible il riferimento ad un impiegato --> ora quell'impiegato è un responsabile */
		super(empl);
	}
	
	// Implementazione del metodo whoIs() per un ProjectManager:
	public void whoIs(){
		sayIaBoss();			// Invoca il metodo sayIaBoss()
		super.whoIs();			// Invoca il metodo whoIs del supertipo che stampa le info comuni
	}
	
	// Metodo private che stampa una stringa
	private void sayIamBoss(){
		System.out.println("I am a boss");
	}
	
}
e

Codice:
/* Classe che estende la classe astratta ResponsibleWorker e che rappresenta un decoratore concreto per
 * Engineer --> un Engineer può essere un Project Manager ed avere determinate responsabilità */

public class ProjectManager extends ResponsibleWorker{
	
	private String Project;		// Rappresenta il progetto diretto dall'ingegnere
	
	/* Costruttore: riceve il riferimento ad un impiegato ed il nome del progetto da esso diretto e 
	 * costruisce un nuovo oggetto di tipo Prooject Manager */
	public ProjectManager(Employee empl, String proj){
		/* Invoca il costruttore del supertipo ResponsibleWorker che mette dentro la variabile
		 * responsible il riferimento ad un impiegato --> ora quell'impiegato è un responsabile */
		super(empl);
		project = proj;		// Copia la stringa ricevuta relativa al nome del progetto diretto
	}
	
	// Implementazione del metodo whoIs() per un ProjectManager:
	public void whoIs(){
		super whoIs(); // Per prima cosa invoca il metodo whoIs del supertipo che stampa le info comuni
		// Poi stampa un secondo messaggio personalizzato relativo solo ai Project Manager
		System.out.println("Gestisco il progetto: " + project);
	}

}
5) Classe di test contenente il metodo main():
Codice:
/* Classe di test che contiene il metodo main() */

public class Application {
	
	public static void main(String[] args){
		
		// Creo un impiegato come generico ingegnere e lo assegno ad un certo dipartimento:
		Employee thisWillBeFamous = new Engineer("Luca Rocchi", "Dipartimento Sviluppo");
		
		System.out.println("Who are you?");
		thisWillBeFamous.whoIs();
		
		// Lo decoro con la qualifica di Project Manager:
		thisWillBeFamous = new ProjectManager(thisWillBeFamous, "D.O.S. - Doors Operating System");
		
		System.out.println("Who are you?");
		thisWillBeFamous.whoIs();
		
		// LGli assegno una nuova qualifica di Project Manager:
		thisWillBeFamous = new ProjectManager(thisWillBeFamous, "qualifica 2");
		
		System.out.println("Who are you?");
		thisWillBeFamous.whoIs();
		
	}
	
}
L'errore che mi dà è che nel main pare non riconoscere Employee come tipo:
Codice:
Description	Resource	Path	Location	Type
Employee cannot be resolved to a type	Application.java	/Decorator1/src	line 8	Java Problem
La riga dell'errore esattamente è questa:
Codice:
// Creo un impiegato come generico ingegnere e lo assegno ad un certo dipartimento:
		Employee thisWillBeFamous = new Engineer("Luca Rocchi", "Dipartimento Sviluppo");
Anche questo esempio è stato preso dalle slide del corso...cosa c'è che non funziona?

Grazie
e-commerce84 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2010, 13:08   #2
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
controlla gli import.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2010, 13:12   #3
e-commerce84
Senior Member
 
Iscritto dal: Feb 2009
Messaggi: 700
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
controlla gli import.
import di cosa?
e-commerce84 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2010, 13:25   #4
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
se Employee non viene risolto.......
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2010, 13:33   #5
e-commerce84
Senior Member
 
Iscritto dal: Feb 2009
Messaggi: 700
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
se Employee non viene risolto.......
eh ma stanno nello stesso package...non ce ne dovrebbe essere bisogno !!!
e-commerce84 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2010, 13:40   #6
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
posta la struttura di directory utilizzata.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2010, 16:44   #7
CwNd
Senior Member
 
L'Avatar di CwNd
 
Iscritto dal: Jun 2007
Città: Milano
Messaggi: 413
Secondo me nella classe nel metodo whoIs della classe Engineer non ci vuole la chiamata super.whoIs().

Se fosse un import secondo me darebbe un errore di compilazione.
CwNd è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2010, 17:20   #8
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Quote:
Originariamente inviato da CwNd Guarda i messaggi
Secondo me nella classe nel metodo whoIs della classe Engineer non ci vuole la chiamata super.whoIs().

Se fosse un import secondo me darebbe un errore di compilazione.
presumo abbia tolto quella riga, altrimenti otterrebbe un ulteriore errore di compilazione (come lo è quello riportato), in quanto il metodo non è presente in Object.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
SONY BRAVIA 8 II e BRAVIA Theatre System 6: il cinema a casa in formato compatto SONY BRAVIA 8 II e BRAVIA Theatre System 6: il c...
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
Crollano i prezzi della cuffie Beats col...
ASUS ROG Matrix RTX 5090 costa 4000 doll...
Grazie ai dati di ESA il calcolo della t...
Rilasciati nuovi video e immagini della ...
Gli astronauti cinesi di Shenzhou-20 son...
Mai così tanti gas serra: il 2025...
Google condannata in Germania: favorito ...
Ubisoft rimanda i risultati finanziari e...
ADATA porta i primi moduli DDR5 CUDIMM 4...
Bob Iger anticipa le novità AI di...
Microsoft Teams 'spierà' i dipend...
Michael Burry chiude Scion e fa di nuovo...
Huawei prepara i nuovi Mate 80: fino a 2...
Una e-Mountain Bike di qualità ma...
Tutte le offerte Amazon Black Friday pi&...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:50.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v