View Full Version : [C#]Interfacce
Kleidemos
30-01-2003, 14:19
A che servono le interfaccie?
Da quel che ho capito dovrebbero essere classi astratte.
Ma a cosa servono????????'
Chi mi posta un esempio:D
Ciao&Tnk
Kleidemos
30-01-2003, 17:31
ap
Kleidemos
31-01-2003, 12:22
ap
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.
Kleidemos
31-01-2003, 19:10
mi fai un esempio di cod pratico???
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ì...
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());
}
}
Non è un gran che come esempio, provalo perchè non l'ho compilato, non sono sul mio pc e qui non ho il framewok installato. Se qualcuno ha sotto mano di meglio....
Kleidemos
31-01-2003, 19:39
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?
Così a occhio mi sembra proprio di no...
Cane.Muovi() ???? sarà inter.Muovi()
e nell'implementazione devi mettere un public davanti al metodo.
Kleidemos
31-01-2003, 20:26
cosi?
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();
}
}
No... così:
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();
}
}
Kleidemos
01-02-2003, 05:55
Originally posted by "atragon"
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ì...
è che la skuola mi impedisce di leggere il libro ma io nn voglio perdere la mano :muro:
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...
Kleidemos
01-02-2003, 11:21
+ 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?
classe zip e rar che implementano tale interfaccia:
public class Zip: ICompressione{
...
}
Poi esiste un altro componente a cui serve "qualcuno che sappia comprimere e decomprimere" -> quindi quest'altro componente userà Zip
Kleidemos
01-02-2003, 11:28
tipo cosi??????
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);
}
}
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...)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.