View Single Post
Old 28-01-2009, 18:56   #1
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
[JAVA] Domande su questo esercizietto

Ciao,
a giorni avrò un esame di Java all'uni...vi posto il testo di questo esercizietto di un vecchio compito e qualche idea (+ molti dubbi) su come impostarlo.
E' un esame di linguaggi di programmazione più che di Java...di Java abbiamo fatto poco (solo i costrutti base), l'esercizio è semplice...più che altro è la progettazione dove la proff è pignola...

Problema 1. Si richiede il progetto di un tipo astratto di dati ArticoloInSupermercato, e l’implementazione
della corrispondente classe Java, che rappresenta e gestisce gli articoli in vendita in un supermercato.
Ciascun articolo deve recare le informazioni relative al suo nome, al suo prezzo ed alla quantità presente nel
negozio. Inoltre, ciascun articolo deve registrare anche il reparto del supermercato cui è assegnato (ad
esempio, ortofrutta, macelleria, pulizia casa, ….).
I reparti caratterizzano completamente il supermercato e devono essere noti prima che la gestione degli
articoli possa iniziare.
Si osservi come, al momento della creazione di un oggetto di tipo , sia necessario controllare che esso
appartenga ad un reparto presente nel supermercato.
Le operazioni richieste per il tipo di dato sono:
a) accesso (in lettura) alle caratteristiche di un oggetto;
b) test di uguaglianza di due oggetti;
c) rappresentazione di un oggetto in forma di stringa.


La prima cosa che vuole è sto benedetto tipo di dato astratto che è una rappresentazione insiemistica di cosa deve rappresentare la classe che poi implementerò, tocca rappresentare 3 insiemi: V (insieme degli elementi rappresentati dalla classe), O (insieme delle operazioni sugli oggetti della classe), C (insieme delle eventuali costanti).

Il primo dubbio su come fare sta classe (e quindi sul suo tipo di dato astratto) è la storia dei reparti perchè dice che i reparti caratterizzano completamente il supermercato e devono essere noti prima che la gestione degli articoli possa iniziare...quindi la prima cosa che mi viene in mente è che siano rappresentati mediante ad un array di classe che deve essere inizializzato prima che gli oggetti della classe vengano creati...ci può stare come idea?

Per il tipo astratto di dato quindi direi:

V(reparto) = {articoli in vendita nel supermercato}
dove metto "reparto" tra () perchè l'insieme V dipende dalla lista dei reparti

O(reparto) = 1) accesso(caratteristica) che restituisce la caratteristica richiesta dell'oggetto ricevente
2) equals (ridefinisco il metodo equals nella mia classe)
3) toString (ridefinisco il metodo toString nella mia classe)

C = 0 (insieme vuoto: non ci sono costanti significative da rappresentare)

Quindi imposterei la progettazione della classe dichiaranto un vettore di reparti come static (dove magari potrebbe essere un vettore di stringhe: "ortofrutta", "macelleria", "pulizia casa",...)

Poi dichiarerei semplicemente come private le variavili di istanza dei possibili oggetti che dovrebbero essere:
nomeProdotto di tipo String, prezzo di tipo double, quantità di tipo int ed infine reparto di tipo intero che mi indica la posizione nel vettore static reparti e mi identifica univocamente il reparto di appartenenza del prodotto.

Per farla semplice posso inizializzare direttamente nel codice il vettore reparti oppure potrei settarlo inizialmente a null e definire un appostito metodo che me lo inizializzi.

Se scegliessi queta seconda strada nel costruttore degli oggetti dovrei eseguire un check che controlla se il vettore reparti è già stato inizializzato o se è ancora a null...se è ancora a null restituisce un messaggio di errore e termina (le eccezioni le abbiamo viste solo in teoria e le vedremo in Java il prossimo semestre al prossimo corso).

Ci può stare come analisi preliminare per la rappresentazione della mia classe?

Stò un po' nel panico per questo esame

Grazie
Andrea
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso