<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wiki.dsy.it/index.php?action=history&amp;feed=atom&amp;title=Programmazione%2FProgetti%2FArchitettura3D%2FStesura_II</id>
	<title>Programmazione/Progetti/Architettura3D/Stesura II - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dsy.it/index.php?action=history&amp;feed=atom&amp;title=Programmazione%2FProgetti%2FArchitettura3D%2FStesura_II"/>
	<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione/Progetti/Architettura3D/Stesura_II&amp;action=history"/>
	<updated>2026-05-09T09:53:45Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione/Progetti/Architettura3D/Stesura_II&amp;diff=11709&amp;oldid=prev</id>
		<title>Yoruno il 09:13, 3 feb 2006</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione/Progetti/Architettura3D/Stesura_II&amp;diff=11709&amp;oldid=prev"/>
		<updated>2006-02-03T09:13:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;   import prog.io.*;&lt;br /&gt;
   import java.lang.Math;&lt;br /&gt;
   import java.util.List;&lt;br /&gt;
   import java.util.LinkedList;&lt;br /&gt;
   import java.util.Set;&lt;br /&gt;
   import java.util.HashSet;&lt;br /&gt;
   import java.util.Iterator;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   class Figura3DException extends RuntimeException {&lt;br /&gt;
   	public Figura3DException(String message) {&amp;quot;&lt;br /&gt;
   		super(message);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   /**&lt;br /&gt;
   	Questa classe e' stata creata per poter derivare piu' facilmente le sottoclassi&amp;quot;&lt;br /&gt;
   	relative alle varie figure senza apportare modifiche ai metodi fissati di Figura3D.&amp;quot;&lt;br /&gt;
   */&lt;br /&gt;
   abstract class Figura3DAutomatica extends Figura3D {&lt;br /&gt;
   	protected double[] prms;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Crea una nuova Figura3DAutomatica contenente un numero specificato di parametri.&amp;quot;&lt;br /&gt;
   		@param numprms il numero dei parametri della figura&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public Figura3DAutomatica(int numprms) {&amp;quot;&lt;br /&gt;
   		prms=new double[numprms];&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Controlla che il parametro fornito sia valido; se non lo e', solleva un'eccezione.&amp;quot;&lt;br /&gt;
   		@param parametro il parametro da controllare&amp;quot;&lt;br /&gt;
   		@return il parametro stesso&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	protected double check(double parameter) {&amp;quot;&lt;br /&gt;
   		if(parameter&amp;lt;=0) throw new Figura3DException(this.getClass().getName()+&amp;quot;&amp;quot;: Parametro errato!&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   		return parameter;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Imposta i parametri relativi ad una figura, effettuando i test di correttezza.&amp;quot;&lt;br /&gt;
   		@param param l'array di double contenente i parametri&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public void setParametri(double[] param) {&amp;quot;&lt;br /&gt;
   		if(param.length==prms.length) {&amp;quot;&lt;br /&gt;
   			for(int i=0; i&amp;lt;param.length; i++) {&amp;quot;&lt;br /&gt;
   				check(param[i]);&amp;quot;&lt;br /&gt;
   			}&amp;quot;&lt;br /&gt;
   		} else throw new Figura3DException(this.getClass().getName()+&amp;quot;&amp;quot;: Numero di parametri errato!&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   		prms=(double[])param.clone();&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Restituisce un'array contenente i parametri della figura.&amp;quot;&lt;br /&gt;
   		@return i parametri della figura sotto forma di array di double&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public double[] getParametri() {&amp;quot;&lt;br /&gt;
   		return (double[])prms.clone();&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Restituisce una rappresentazione testuale della figura, nel formato:&amp;quot;&lt;br /&gt;
   		NomeFigura: parametro0 = n0, parametro1 = n1, ... parametrom = nm&amp;quot;&lt;br /&gt;
   		@return una rappresentazione testuale della figura&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public String toString() {&amp;quot;&lt;br /&gt;
   		String stringRepresentation=&amp;quot;&amp;quot;Figura3DAutomatica:&amp;quot;&amp;quot;;&amp;quot;&lt;br /&gt;
   		for(int i=0; i&amp;lt;prms.length; i++) {&amp;quot;&lt;br /&gt;
   			stringRepresentation+=&amp;quot;&amp;quot; parametro&amp;quot;&amp;quot;+i+&amp;quot;&amp;quot; = &amp;quot;&amp;quot;+prms[i];&amp;quot;&lt;br /&gt;
   		}&amp;quot;&lt;br /&gt;
   		return stringRepresentation;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   /*&lt;br /&gt;
   	Questo metodo e' stato abbandonato a favore di quello che segue poiche'&amp;quot;&lt;br /&gt;
   	forniva a volte risultati errati, e non avevo voglia di trovare il motivo.&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public boolean equals(Object shape) {&amp;quot;&lt;br /&gt;
   		if(!(shape instanceof Figura3DAutomatica)) return false; else {&amp;quot;&lt;br /&gt;
   			double[] shapePrms=((Figura3D)shape).getParametri();&amp;quot;&lt;br /&gt;
   			if(shapePrms.length!=prms.length) return false; else {&amp;quot;&lt;br /&gt;
   				for(int i=0; i&amp;lt;prms.length; i++) {&amp;quot;&lt;br /&gt;
   					if(shapePrms[i]!=prms[i]) return false;&amp;quot;&lt;br /&gt;
   				}&amp;quot;&lt;br /&gt;
   				return true;&amp;quot;&lt;br /&gt;
   			}&amp;quot;&lt;br /&gt;
   		}&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   */&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Confronta la figura con un'altra figura per congruenza.&amp;quot;&lt;br /&gt;
   		@param shape la figura da confrontare&amp;quot;&lt;br /&gt;
   		@return true se le due figure sono congruenti, altrimenti false&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public boolean equals(Object shape) {&amp;quot;&lt;br /&gt;
   		if(!(shape instanceof Figura3DAutomatica)) return false; else {&amp;quot;&lt;br /&gt;
   			if(shape.toString().equals(this.toString())) return true;&amp;quot;&lt;br /&gt;
   			else return false;&amp;quot;&lt;br /&gt;
   		}&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   class Sfera extends Figura3DAutomatica {&lt;br /&gt;
   	protected final short R=0;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public Sfera(double r) {&amp;quot;&lt;br /&gt;
   		super(1);&amp;quot;&lt;br /&gt;
   		prms[R]=check(r);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public double getVolume() {&amp;quot;&lt;br /&gt;
   		return (4.0/3.0)*Math.PI*Math.pow(prms[R], 3);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public double getSuperficie() {&amp;quot;&lt;br /&gt;
   		return 4.0*Math.PI*Math.pow(prms[R], 2);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public String toString() {&amp;quot;&lt;br /&gt;
   		return &amp;quot;&amp;quot;Sfera: raggio = &amp;quot;&amp;quot;+prms[R];&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   class Parallelepipedo extends Figura3DAutomatica {&lt;br /&gt;
   	protected final short A=0;&amp;quot;&lt;br /&gt;
   	protected final short B=1;&amp;quot;&lt;br /&gt;
   	protected final short H=2;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public Parallelepipedo(double a, double b, double h) {&amp;quot;&lt;br /&gt;
   		super(3);&amp;quot;&lt;br /&gt;
   		prms[A]=check(a);&amp;quot;&lt;br /&gt;
   		prms[B]=check(b);&amp;quot;&lt;br /&gt;
   		prms[H]=check(h);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public double getVolume() {&amp;quot;&lt;br /&gt;
   		return prms[A]*prms[B]*prms[H];&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public double getSuperficie() {&amp;quot;&lt;br /&gt;
   		return 2*(prms[H]*(prms[A]+prms[B])+prms[A]*prms[B]);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public String toString() {&amp;quot;&lt;br /&gt;
   		return &amp;quot;&amp;quot;Parallelepipedo: latoA = &amp;quot;&amp;quot;+prms[A]+&amp;quot;&amp;quot;, latoB = &amp;quot;&amp;quot;+prms[B]+&amp;quot;&amp;quot;, altezza = &amp;quot;&amp;quot;+prms[H];&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   class Cubo extends Parallelepipedo {&lt;br /&gt;
   	protected final short SIDE=0;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public Cubo(double side) {&amp;quot;&lt;br /&gt;
   		super(side, side, side);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public void setParametri(double[] prms) {&amp;quot;&lt;br /&gt;
   		double[] prmsSuper={prms[SIDE], prms[SIDE], prms[SIDE]};&amp;quot;&lt;br /&gt;
   		super.setParametri(prmsSuper);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public double[] getParametri() {&amp;quot;&lt;br /&gt;
   		double[] prms={super.prms[super.H]};&amp;quot;&lt;br /&gt;
   		return prms;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public String toString() {&amp;quot;&lt;br /&gt;
   		// Stampo 'raggio' perche' cosi' e' nei risultati di esempio&amp;quot;&lt;br /&gt;
   		return &amp;quot;&amp;quot;Cubo: raggio = &amp;quot;&amp;quot;+prms[SIDE];&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   class TroncoDiCono extends Figura3DAutomatica {&lt;br /&gt;
   	protected final short R1=0;&amp;quot;&lt;br /&gt;
   	protected final short R2=1;&amp;quot;&lt;br /&gt;
   	protected final short H=2;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public TroncoDiCono(double r1, double r2, double h) {&amp;quot;&lt;br /&gt;
   		super(3);&amp;quot;&lt;br /&gt;
   		prms[R1]=check(r1);&amp;quot;&lt;br /&gt;
   		prms[R2]=check(r2);&amp;quot;&lt;br /&gt;
   		prms[H]=check(h);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Crea un tronco di cono col raggio minore nullo, ad uso esclusivo&amp;quot;&lt;br /&gt;
   		delle sottoclassi.&amp;quot;&lt;br /&gt;
   		@param r1 il raggio maggiore&amp;quot;&lt;br /&gt;
   		@param h l'altezza&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	protected TroncoDiCono(double r1, double h) {&amp;quot;&lt;br /&gt;
   		super(3);&amp;quot;&lt;br /&gt;
   		prms[R1]=check(r1);&amp;quot;&lt;br /&gt;
   		prms[R2]=0;&amp;quot;&lt;br /&gt;
   		prms[H]=check(h);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public double getVolume() {&amp;quot;&lt;br /&gt;
   		return (Math.PI/3.0)*(prms[R1]*prms[R2]+Math.pow(prms[R1], 2)+Math.pow(prms[R2], 2))*prms[H];&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public double getSuperficie() {&amp;quot;&lt;br /&gt;
   		return Math.PI*(prms[R1]+prms[R2])*Math.sqrt(Math.pow(prms[R1]-prms[R2], 2)+Math.pow(prms[H], 2));&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public String toString() {&amp;quot;&lt;br /&gt;
   		return &amp;quot;&amp;quot;Tronco di cono: raggio grande = &amp;quot;&amp;quot;+prms[R1]+&amp;quot;&amp;quot;, raggio piccolo = &amp;quot;&amp;quot;+prms[R2]+&amp;quot;&amp;quot;, altezza = &amp;quot;&amp;quot;+prms[H];&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   class Cilindro extends TroncoDiCono {&lt;br /&gt;
   	protected final short R=0;&amp;quot;&lt;br /&gt;
   	protected final short H=1;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public Cilindro(double r, double h) {&amp;quot;&lt;br /&gt;
   		super(r, r, h);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public void setParametri(double[] prms) {&amp;quot;&lt;br /&gt;
   		double[] prmsSuper={prms[R], prms[R], prms[H]};&amp;quot;&lt;br /&gt;
   		super.setParametri(prmsSuper);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public double[] getParametri() {&amp;quot;&lt;br /&gt;
   		double[] prmsSub={prms[super.R1], prms[super.H]};&amp;quot;&lt;br /&gt;
   		return prmsSub;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public String toString() {&amp;quot;&lt;br /&gt;
   		return &amp;quot;&amp;quot;Cilindro: raggio = &amp;quot;&amp;quot;+prms[super.R1]+&amp;quot;&amp;quot;, altezza = &amp;quot;&amp;quot;+prms[super.H];&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   class Cono extends TroncoDiCono {&lt;br /&gt;
   	protected final short R=0;&amp;quot;&lt;br /&gt;
   	protected final short H=1;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public Cono(double r, double h) {&amp;quot;&lt;br /&gt;
   		super(r, h);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public void setParametri(double[] prms) {&amp;quot;&lt;br /&gt;
   		// TroncoDiCono non accetta, da specifiche, 0 come raggio minore&amp;quot;&lt;br /&gt;
   		double[] prmsSuper={prms[R], 1, prms[H]};&amp;quot;&lt;br /&gt;
   		super.setParametri(prmsSuper);&amp;quot;&lt;br /&gt;
   		super.prms[super.R2]=0;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public double[] getParametri() {&amp;quot;&lt;br /&gt;
   		double[] prmsSub={prms[super.R1], prms[super.H]};&amp;quot;&lt;br /&gt;
   		return prmsSub;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	public String toString() {&amp;quot;&lt;br /&gt;
   		return &amp;quot;&amp;quot;Cono: raggio = &amp;quot;&amp;quot;+prms[super.R1]+&amp;quot;&amp;quot;, altezza = &amp;quot;&amp;quot;+prms[super.H];&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   class TipoNonPrevistoException extends Exception {&lt;br /&gt;
   	public TipoNonPrevistoException(String msg) {&amp;quot;&lt;br /&gt;
   		super(msg);&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   class Architettura3D {&lt;br /&gt;
   	private List shapes;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	boolean modified=false;&amp;quot;&lt;br /&gt;
   	Set cachedAccountables;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	private double volume;&amp;quot;&lt;br /&gt;
   	private double area;&amp;quot;&lt;br /&gt;
   	private double meanVolume;&amp;quot;&lt;br /&gt;
   	private double meanArea;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Crea un nuovo insieme di Figura3D.&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public Architettura3D() {&amp;quot;&lt;br /&gt;
   		shapes=new LinkedList();&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Aggiunge una figura all'insieme.&amp;quot;&lt;br /&gt;
   		@param figura la figura da aggiungere&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public void addFigura3D(Figura3D figura) {&amp;quot;&lt;br /&gt;
   		shapes.add(figura);&amp;quot;&lt;br /&gt;
   		modified=true;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Restituisce un'array contenente le figure appartenenti all'insieme.&amp;quot;&lt;br /&gt;
   		@return le figure appartenenti all'insieme&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public Figura3D[] getFigure3D() {&amp;quot;&lt;br /&gt;
   		Object[] tempArray=shapes.toArray();&amp;quot;&lt;br /&gt;
   		Figura3D[] finalArray=new Figura3D[tempArray.length];&amp;quot;&lt;br /&gt;
   		for(int i=0; i&amp;lt;tempArray.length; i++) {&amp;quot;&lt;br /&gt;
   			finalArray[i]=(Figura3D)tempArray[i];&amp;quot;&lt;br /&gt;
   		}&amp;quot;&lt;br /&gt;
   		return finalArray;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Calcola volume totale, area totale, volume medio e area media di quelle figure&amp;quot;&lt;br /&gt;
   		il cui nome di classe e' contenuto nell'insieme accountables sotto forma di stringa,&amp;quot;&lt;br /&gt;
   		o di tutte le figure dell'architettura se accountables e' l'insieme vuoto.&amp;quot;&lt;br /&gt;
   		@param accountables i nomi delle classi delle figure da considerare&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	private void calculateOverviewData(Set accountables) {&amp;quot;&lt;br /&gt;
   		int count=0;&amp;quot;&lt;br /&gt;
   		if(modified || !accountables.equals(cachedAccountables)) {&amp;quot;&lt;br /&gt;
   			volume=area=0;&amp;quot;&lt;br /&gt;
   			Iterator i=shapes.iterator();&amp;quot;&lt;br /&gt;
   			while(i.hasNext()) {&amp;quot;&lt;br /&gt;
   				Figura3D shape=(Figura3D)i.next();&amp;quot;&lt;br /&gt;
   				if(accountables.isEmpty() || accountables.contains(shape.getClass().getName())) {&amp;quot;&lt;br /&gt;
   					volume+=shape.getVolume();&amp;quot;&lt;br /&gt;
   					area+=shape.getSuperficie();&amp;quot;&lt;br /&gt;
   					count++;&amp;quot;&lt;br /&gt;
   				}&amp;quot;&lt;br /&gt;
   			}&amp;quot;&lt;br /&gt;
   			// Anche se dovrebbe essere count!=0 sempre, controlliamo ugualmente&amp;quot;&lt;br /&gt;
   			if(count!=0) {&amp;quot;&lt;br /&gt;
   				meanVolume=volume/count;&amp;quot;&lt;br /&gt;
   				meanArea=area/count;&amp;quot;&lt;br /&gt;
   			} else meanVolume=meanArea=0;&amp;quot;&lt;br /&gt;
   			modified=false;&amp;quot;&lt;br /&gt;
   			cachedAccountables=accountables;&amp;quot;&lt;br /&gt;
   		}&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Crea un insieme di nomi di classi di figure basandosi su una stringa che rappresenta&amp;quot;&lt;br /&gt;
   		un tipo di figure; tale stringa puo' essere: &amp;quot;&amp;quot;SC&amp;quot;&amp;quot;, per Sfera e Cilindro; &amp;quot;&amp;quot;PC&amp;quot;&amp;quot;, per&amp;quot;&lt;br /&gt;
   		Parallelepipedo e Cubo; &amp;quot;&amp;quot;TC&amp;quot;&amp;quot; per TroncoDiCono e Cono. La stringa &amp;quot;&amp;quot;TUTTE&amp;quot;&amp;quot; fa restituire&amp;quot;&lt;br /&gt;
   		l'insieme vuoto, mentre qualunque altra stringa solleva un'eccezione.&amp;quot;&lt;br /&gt;
   		@param tipoFigura la stringa che rappresenta il tipo di figure&amp;quot;&lt;br /&gt;
   		@return l'insieme dei nomi delle classi delle figure rappresentate&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	private Set resolveType(String tipoFigura) throws TipoNonPrevistoException {&amp;quot;&lt;br /&gt;
   		Set accountables=new HashSet();&amp;quot;&lt;br /&gt;
   		if(tipoFigura.equals(&amp;quot;&amp;quot;SC&amp;quot;&amp;quot;)) {&amp;quot;&lt;br /&gt;
   			accountables.add(&amp;quot;&amp;quot;Sfera&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   			accountables.add(&amp;quot;&amp;quot;Cilindro&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   		} else if(tipoFigura.equals(&amp;quot;&amp;quot;PC&amp;quot;&amp;quot;)) {&amp;quot;&lt;br /&gt;
   			accountables.add(&amp;quot;&amp;quot;Parallelepipedo&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   			accountables.add(&amp;quot;&amp;quot;Cubo&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   		} else if(tipoFigura.equals(&amp;quot;&amp;quot;TC&amp;quot;&amp;quot;)) {&amp;quot;&lt;br /&gt;
   			accountables.add(&amp;quot;&amp;quot;TroncoDiCono&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   			accountables.add(&amp;quot;&amp;quot;Cono&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   		} else if(!tipoFigura.equals(&amp;quot;&amp;quot;TUTTE&amp;quot;&amp;quot;)) {&amp;quot;&lt;br /&gt;
   			throw new TipoNonPrevistoException(&amp;quot;&amp;quot;Il tipo &amp;quot;&amp;quot;+tipoFigura+&amp;quot;&amp;quot; non e' previsto!&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   		}&amp;quot;&lt;br /&gt;
   		return accountables;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Restituisce il volume totale che raggiungono le figure di tipo tipoFigura.&amp;quot;&lt;br /&gt;
   		@param tipoFigura la stringa che rappresenta il tipo di figure&amp;quot;&lt;br /&gt;
   		@return il volume totale&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public double getVolume(String tipoFigura) throws TipoNonPrevistoException {&amp;quot;&lt;br /&gt;
   		Set accountables=resolveType(tipoFigura);&amp;quot;&lt;br /&gt;
   		calculateOverviewData(accountables);&amp;quot;&lt;br /&gt;
   		return volume;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Restituisce la superficie totale che raggiungono le figure di tipo tipoFigura.&amp;quot;&lt;br /&gt;
   		@param tipoFigura la stringa che rappresenta il tipo di figure&amp;quot;&lt;br /&gt;
   		@return la superficie totale&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public double getSuperficie(String tipoFigura) throws TipoNonPrevistoException {&amp;quot;&lt;br /&gt;
   		Set accountables=resolveType(tipoFigura);&amp;quot;&lt;br /&gt;
   		calculateOverviewData(accountables);&amp;quot;&lt;br /&gt;
   		return area;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Restituisce il volume medio delle figure presenti nell'architettura.&amp;quot;&lt;br /&gt;
   		@return il volume medio&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public double getVolumeMedio() throws TipoNonPrevistoException {&amp;quot;&lt;br /&gt;
   		Set accountables=resolveType(&amp;quot;&amp;quot;TUTTE&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   		calculateOverviewData(accountables);&amp;quot;&lt;br /&gt;
   		return meanVolume;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Restituisce il volume medio delle figure presenti nell'architettura.&amp;quot;&lt;br /&gt;
   		@return la superficie media&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public double getSuperficieMedia() throws TipoNonPrevistoException {&amp;quot;&lt;br /&gt;
   		Set accountables=resolveType(&amp;quot;&amp;quot;TUTTE&amp;quot;&amp;quot;);&amp;quot;&lt;br /&gt;
   		calculateOverviewData(accountables);&amp;quot;&lt;br /&gt;
   		return meanArea;&amp;quot;&lt;br /&gt;
   	}&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   	/**&amp;quot;&lt;br /&gt;
   		Restituisce un riferimento ad una figura dell'architettura congruente&amp;quot;&lt;br /&gt;
   		a fig, se esiste; altrimenti restituisce il riferimento nullo.&amp;quot;&lt;br /&gt;
   		@param fig la figura da cercare nell'architettura&amp;quot;&lt;br /&gt;
   		@return una figura dell'architettura congruente a fig, o null&amp;quot;&lt;br /&gt;
   	*/&amp;quot;&lt;br /&gt;
   	public Figura3D trova(Figura3D fig) {&amp;quot;&lt;br /&gt;
   		int index=shapes.indexOf(fig);&amp;quot;&lt;br /&gt;
   		if(index==-1) return null; else {&amp;quot;&lt;br /&gt;
   			return (Figura3D)shapes.listIterator(index).next();&amp;quot;&lt;br /&gt;
   		}&amp;quot;&lt;br /&gt;
   	}       &amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Progetti]]&lt;/div&gt;</summary>
		<author><name>Yoruno</name></author>
		
	</entry>
</feed>