| 	
	
	
		
		|||||||
  | 
		
| 
 | 
![]()  | 
	
	
| 
		 | 
	Strumenti | 
| 		
			
			 | 
		#1 | 
| 
			
			
			
			 Senior Member 
			
		
			
				
			
			
			Iscritto dal: Sep 2000 
				
				
				
					Messaggi: 886
				 
				
				
				
				 | 
	
	
	
	
		
			
			 
				
				Ereditarietà multipla
			 
			
		Domanda frutto di una chiaccherata con alcuni sviluppatori. Mio quesito: come mai in tanti linguaggi moderni si tende a non supportare l'ereditarietà multipla? Per quanto ne so tra quelli "diffusi" solo C++ e Smalltalk la supportano, anzi anche Python se non erro... Delphi, Java, C#, per non parlare di VB, per citarne altri, invece no. Alcune idee: 
		
	
		
		
		
		
			"ci sono le interfaccie che bastano e avanzano". Può darsi che bastino ma non mi sembra proprio la stessa cosa "troppo complessa e soggetta a bug la programmazione". Questo mi sembra più sensato ma poichè non lo dice il medico (ho chiesto anche a mia moglie per conferma "il codice è meno efficiente" Questa mi sembra piovuta dal cielo... non saprei proprio su che si basi un'affermazione simile... a occhio direi che esattamente il contrario, semmai. "Rende problematica la gestione di progetti complessi". May be... Non uso C++ da una vita ma questa, l'ereditarietà multipla, mi era sempre parsa come uno strumento molto potente e che, se usato cum grano salis poteva anche ridurre i tempi di sviluppo. Che ne dite? 
				__________________ 
		
		
		
		
		
			1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. Ultima modifica di atragon : 02-07-2005 alle 00:40.  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			
			
			 Member 
			
		
			
				
			
			
			Iscritto dal: Apr 2005 
				
				
				
					Messaggi: 224
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 
		"troppo complessa e soggetta a bug la programmazione" 
		
	
		
		
		
		
		
	
	La verità credo sia questa, l'ereditarietà multipla, anche se uno strumento molto potente, è causa di grossa complessità e può dar luogo a comportamenti imprevisti a causa, ad esempio, di situazioni ambigue quali l'overriding di un metodo che è presente in entrambe le classi "madri", per quanto risolvibile richiamandolo in modo esplicito con l'operatore di risoluzione dello scope "::" ed il nome della classe. Concordo con te che non essendo obbligatorio usarla potevano permetterla lasciando al programmatore il "rischio" di usarla. CIAO!  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			
			
			 Senior Member 
			
		
			
				
			
			
			Iscritto dal: Oct 2002 
				Città: Roma 
				
				
					Messaggi: 1502
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 
		Lasciare in un linguaggio tutti questi "rischi" significa quasi sempre incorrere negli errori. Tutti i linguaggi moderni sono progettati per fare in modo che li programmatore non incappi negli errori, java soprattutto spinge molto in questa direzione, per cui si tende ad evitare certe funzionalità che spesso complicano di molto la semantica e la sintassi di un linguaggio per apportare benefici minimi oltre a favorire gli errori.
		 
		
	
		
		
		
		
			
				__________________ 
		
		
		
		
	
	Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#4 | |
| 
			
			
			
			 Senior Member 
			
		
			
				
			
			
			Iscritto dal: Sep 2000 
				
				
				
					Messaggi: 886
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 
				__________________ 
		
		
		
		
	
	1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni..  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			
			
			 Bannato 
			
		
			
				
			
			
			Iscritto dal: Feb 2005 
				Città: Roma 
				
				
					Messaggi: 7029
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 
		in ogni modo si risolve molto facilmente, anche se l'eleganza è poca: supponiamo che hai le classi A e B e che vuoi creare C che deriva contemporaneamente da A e B; in C++ ok, lo fai, in Java no; e allora che fai? fai derivare C da A (ad esempio) e includi in C una istanza di B come membro pubblico. poco elegante, ma imho la migliore. 
		
	
		
		
		
		
		
	
	ciao  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#6 | |
| 
			
			
			
			 Senior Member 
			
		
			
				
			
			
			Iscritto dal: Oct 2002 
				Città: San Jose, California 
				
				
					Messaggi: 11794
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 Esistono situazioni in cui il problema non puo' essere risolto in altro modo piu' semplice, ma sono rarissimi e per questi rari casi il C++ va benissimo. Non vedo perche' si debba complicare un linguaggio per portarsi dietro un grado di flessibilita' che va usato solo molto raramente, quindi per me e' giusto che C# e Java non abbiano ereditarieta' multipla. E le interfacce non sono un modo per nascondere questa mancanza 
				__________________ 
		
		
		
		
	
	"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#7 | |
| 
			
			
			
			 Senior Member 
			
		
			
				
			
			
			Iscritto dal: Oct 2002 
				Città: San Jose, California 
				
				
					Messaggi: 11794
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 Se esporre le due interfacce porta la classe C ad avere un'interfaccia troppo complessa allora questo e' un ottimo segnale che il design e' troppo complesso e la soluzione non e' l'ereditarieta' multipla, ma e' semplificare il design e dividere la classe C secondo il principio: "Ad ogni elemento una e una sola responsabilita'". 
				__________________ 
		
		
		
		
	
	"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#8 | |
| 
			
			
			
			 Senior Member 
			
		
			
				
			
			
			Iscritto dal: Sep 2000 
				
				
				
					Messaggi: 886
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 Cmq sto anche leggendo questo: http://weblogs.asp.net/fbouma/archiv.../04/47476.aspx mi pare interessante.... 
				__________________ 
		
		
		
		
	
	1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni..  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
		
		  
	   | 
| Strumenti | |
		
  | 
	
		
  | 
Tutti gli orari sono GMT +1. Ora sono le: 15:10.









		
		
		

 
 







