|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[C#]Interfacce
Buongiorno a tutti
![]() Con il mio percorso didattico sono arrivato alle interfacce. Ho già i primi dubbi sulle cose più semplici ![]() ![]() Allora.. supponendo che lo scenario sia sempre lo stesso, ovvero il classico archivio anagrafico, stavo procedendo così: Codice:
public interface IPersona { int ID { get; } string Cognome { get; set; } string Nome { get; set; } void AddPersona(Persona p); } Codice:
public class Persona : IPersona { private int id; private string cognome; private string nome; public int ID { get { return id; } } public string Cognome { get { return cognome; } set { cognome = value; } } public string Nome { get { return nome; } set { nome = value; } } //primo concetto che non ho capito: //come implemento qui il metodo AddPersona ? ![]() Grazie mille. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
In che senso?
Dipende da cosa deve fare quel metodo. Il nome suggerisce che debba aggiungere una Persona a qualcos'altro (magari un contenitore). Ma a questo punto mi viene da chiederti perchè l'interfaccia IPersona stabilisca per contratto un tale comportamento... forse mi è sfuggito qualcosa? Disclaimer: non so niente di C#
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() tralasciando l'utilità della cosa, se non quella didattica, altri scopi non ve ne sono ![]() anzi.. se potessi fornirmi un esempio più sensato su come si possa gestire la cosa te ne sarei davvero grato, magari restando nell'ambito "Persona" ![]() Hai comunque centrato il punto: dovrei aggiungere una persona ad un contenitore, magari una lista o similare. Grazie mille. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Premesso che:
e che: Quote:
Dunque l'interfaccia IPersona prevede l'esistenza di una classe Persona? E obbliga tutte le classi che implementeranno l'interfaccia IPersona a implementare un metodo che prende come parametro un oggetto Persona? Non è che addPersona deve prendere in ingresso una IPersona invece di una Persona? Codice:
public interface IPersona { ... void AddPersona(IPersona p); } Auspico l'intervento di altri utenti più esperti; avevo postato solo perchè appunto la faccenda mi sembrava un po' strana e per stimolarti a riflettere da te attraverso le mie domande (e forse qua ho peccato di presunzione, pensando di esserti di aiuto in questo modo). Chiedo venia, ciao ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#5 | ||
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() Mamma mia che confusione che ho in testa ![]() Quote:
RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
||
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Allora aspettiamo un C-Sharpiano, o un C-Sharphista, oppure... beh insomma uno con la Sharpa
![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
beh..
secondo me è concettualmente sbagliato implementare in un tipo "singolo" come persona un metodo AddPersona... Quel metodo lo vederei di + in Azienda.AddImpiegato() con la classe Impiegato che implementa l'interfaccia IPersona. In quel caso il metodo lo scriverei così: Codice:
void AddImpiegato(IPersona p) { impiegati.Add(p); } Aggiungere una Persona a se stessa non mi pare abbia molto senso.. ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
oddio... conosco diverse posizioni per aggiungere una persona ad un'altra... ed almeno un buon motivo!
![]() |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#10 | ||
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() ![]() Quote:
![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
||
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
Quote:
Ad ogni modo trovo inutile fare questi discorsi sulla liceità del metodo nell'interfaccia dato che l'interfaccia IPersona ha poco senso di suo! :P |
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Un'interfaccia viene tipicamente usata per modellare un comprtamento "Can do", mentre la derivazione classica viene usata per modellare "is-a" Quindi IPersona, che sa tanto di un "is-a", non e' ortodosso come modello ad interfaccia, sebbene permesso.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
|
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
![]() Io sono proprio di religione greco-ortodossa e quindi mi hai offeso PESANTEMENTE ![]() ..ovviamente no.. Ma non sapevo come spiegare meglio di così che l'interfaccia in quel modo era concettualmente errata.. anche se mi vengono in mente un paio di casi particolari in cui l'interfaccia iPersona avrebbe anche un suo senso ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Per esempio?
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
beh..
per esempio un ipotetico gioco in cui abbiamo personaggi umani e personaggi animali con caratteristiche e abilità diverse...
__________________
![]() |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ok capito, grazie
![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Ok ragazzi, ora le cose mi sono più chiare.
Credo comunque che sia tutto molto più complesso di come determinati concetti vengano spiegati su alcune documentazioni. Fortuna che tutti voi, almeno per me, siate una fonte didattica molto preziosa. Grazie davvero ![]() RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:18.