|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
[C#]Interfacce
A che servono le interfaccie?
Da quel che ho capito dovrebbero essere classi astratte. Ma a cosa servono????????' Chi mi posta un esempio Ciao&Tnk |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
ap
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
Re: [C#]Interfacce
ap
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Le interfacce sono molto simili a classi astratte con tutti i membri astratti. Sono utili nello sviluppo di classi che possono condividere le caratteristiche pur non facendo parte della medesima gerarchia. In C# non esiste l'ereditarietà multipla ma è possibile ereditare da più interfacce.
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. |
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
mi fai un esempio di cod pratico???
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
E va bene....continuo a ritenere che leggere del gran codice senza prima studiarsi le basi sia un pessimo metodo...cmq, magari tu ti trovi meglio così...
Codice:
using System;
interface somma // questa è l'interfaccia
{
int conta(int dati);
}
public class calcola: somma // definisco la classe a partire dall'interfaccia
{
public int conta(int dati)
{
int x = 10 + dati; // implemento il metodo
return x;
}
}
class test
{
public static void Main()
{
calcola som = new calcola();
int y = som.conta(3);
Console.WriteLine("Somma: " + y.ToString());
}
}
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. |
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
cioe io ho per esempio
interface Animale { void Muovi(); } class Cane:Animale { void Muovi(){ Console.WriteLine("Me sto a movere"); } public static void Main() { Cane inter = new Cane(); Cane.Muovi(); } } è esatto? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Così a occhio mi sembra proprio di no...
Cane.Muovi() ???? sarà inter.Muovi() e nell'implementazione devi mettere un public davanti al metodo.
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. |
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
cosi?
Codice:
interface Animale
{
void Muovi();
}
public class Cane:Animale {
void Muovi(){
Console.WriteLine("Me sto a movere");
}
public static void Main() {
Cane inter = new Cane();
inter.Muovi();
}
}
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
No... così:
Codice:
using System;
interface Animale
{
void Muovi();
}
class Cane: Animale {
public void Muovi(){
Console.WriteLine("Me sto a movere");
}
public static void Main() {
Cane inter = new Cane();
inter.Muovi();
}
}
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. |
|
|
|
|
|
#11 | |
|
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
Quote:
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Comunque un'interfaccia generalmente serve quando vuoi che un tuo oggetto usi degli oggetti (indipendentemente da come essi siano fatti) che abbiano certe funzionalità...
Esempio: oggetto A ha un metodo che serve per comprimere un suo documento -> ha bisogno di qualcuno che abbia i metodi comprimi e decomprimi -> crea un'interfaccia e dice che per comprimere ha bisogno di un oggetto con tale interfaccia -> a quel punto puoi realizzare tanti oggetti che implementano l'interfaccia (magari uno comprime in zip, uno in gz, uno in arj,....) -> l'oggetto A usa poi l'oggetto che gli interessa sicuro del fatto che implementa le funzionalità comprimi e decomprimi... Spero di essere stato sufficientemente chiaro, senza crearti dei casini in testa... |
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
+ o -
Cioe io crea l'interfaccia compres con comprimi() e decompromi(). Poi creo la classe Zip e quella Rar in cui implemento in ogniuno comprimi() e decompromi() ............. è esatto? |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
classe zip e rar che implementano tale interfaccia:
Codice:
public class Zip: ICompressione{
...
}
|
|
|
|
|
|
#15 |
|
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
tipo cosi??????
Codice:
using System;
interface ICompressione {
string comprimi(string path);
string decomprimi(string path);
}
public class Zip:ICompressione {
public string comprimi(string path) {
Console.WriteLine("Sto Comprimendo {}!\n", path);
}
public string decomprimi(string path) {
Console.WriteLine("Sto Decomprimendo {}!\n", path);
}
}
public class Rar:ICompressione {
public string comprimi(string path) {
Console.WriteLine("Sto Comprimendo {}!\n", path);
}
public string decomprimi(string path) {
Console.WriteLine("Sto Decomprimendo {}!\n", path);
}
}
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Esatto...
Metafora: E' come se un negozio abbia bisogno di un commesso (classe). Il commesso deve avere dei requisiti (implementa un'interfaccia) e i requisiti (interfaccia) sono: sapere l'inglese, sapere usare il computer, ... (metodi all'interno dell'interfaccia). Alla fine il negozio non cerca un dato commesso (classe) ma semplicemente "un" commesso che abbia i requisiti (cerca qualcuno che implementi l'interfaccia...) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:03.



















