Ciao,
a breve dovrò sostenere l'esame di linguaggi di programmazione che è un corso di programmazione orientata agli oggetti, noi usiamo Java ma questa domanda di un vecchio compito credo sia più progettuale che pratica poichè prevede la progettazione di un tipo astratto di dato...il testo dell'esercizio è:

Viene fornita una classe Rettangolo, che rappresenta un rettangolo in un piano cartesiano con i lati
paralleli agli assi coordinati. L’interfaccia della classe Rettangolo è la seguente:
/* costruisce un oggetto di tipo Rettangolo date le coordinate
(xinf, yinf) del suo vertice inferiore sinistro e le coordinate
(xsup, ysup) del suo vertice superiore destro */
Rettangolo(double xinf, double yinf, double xsup, double ysup) { }
/** restituisce l’ascissa del vertice inferiore sinistro dell’oggetto
ricevente */
public double getAscissaBottomLeftCorner() { }
/** restituisce l’ordinata del vertice inferiore sinistro dell’oggetto
ricevente */
public double getOrdinataBottomLeftCorner() { }
/** restituisce l’ascissa del vertice superiore destro dell’oggetto
ricevente */
public double getAscissaTopRightCorner() { }
/** restituisce l’ordinata del vertice superiore destro dell’oggetto
ricevente */
public double getOrdinataTopRightCorner() { }
/** restituisce l’area dell’oggetto ricevente */
public double getArea() { }
Problema 1. Si richiede il progetto di un tipo astratto di dato EstensioneDiRettangolo che rappresenti
rettangoli aventi le seguenti caratteristiche:
- Tutti i rettangoli R di tipo EstensioneDiRettangolo estendono uno stesso rettangolo R0 nel senso di
seguito specificato: R ha il lato destro coincidente con il lato destro di R0, oppure R ha il lato sinistro
coincidente con il lato sinistro di R0, oppure R ha il lato superiore coincidente con il lato superiore di R0,
oppure R ha il lato inferiore coincidente con il lato inferiore di R0.
- R0 deve essere noto prima che un qualsiasi oggetto di tipo EstensioneDiRettangolo possa essere creato
Le operazioni di interesse per tale tipo di dati sono:
· Accesso (in lettura) al dato;
· Calcolo dell’area del rettangolo esteso.


PANICO:

Allora riflettendoci un pochino e buttando giù qualcosa io ho pensato la seguente soluzione:

un tipo astratto di dato rappresenta qualcosa che verrà implementato per mezzo di una classe Java che conterrà la rappresentazione concreta del tipo di dato (variabili di instanza e di classe) + una serie di metodi di utilità per operare su quel tipo di dato.

La classe rettangolo che mi viene fornita inizialmente rappresenta rettangoli aventi i lati paralleli agli assi cartesiani mediante le coordinate cartesiane sei sue estremi sulla siagonale principale (punto inferiore sinistro e punto superiore destro) e questo lo vedo dal come il costruttore costruisce un oggetto di tipo Rettangolo +mi fornisce una serie di metodi.

Io devo progettare il tipo di dato astratto EstensioneDiRettangolo ed il testo dell'esercizio mi dice che i pratica dato un oggetto Rettangolo R0 devo creare un oggetto EstensioneDiRettangolo R che è un rettangolo avente o il lato sinistro coincidente con R0, o il lato destro coincidente con R0 o il lato superiore coincidente con R0 o il lato inferiore coincidente con R0
e che preveda le due operazioni:

· Accesso (in lettura) al dato;
· Calcolo dell’area del rettangolo esteso.

Ora il tipo di dato astratto dovrebbe essere indipendente dall'implementazione pratica e prevede lo specificare 3 insiemi:

V = insieme di valori che identificano un oggetto appartenente a quel tipo di dato

O = insieme di operazioni su quel tipo di dato

C = insieme di costanti su quel tipo di dato

Quindi io direi che:

Tranne che mi blocco e nonsò che fare :-(

C'è qualcuno che mi sà dare una mano in queto tipo di esercizzi un po' più teorici? ma sta robba serve a qualcosa o sono solo pippe mentali?

Tnx
Andrea