Interfaccia (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
fix
 
(5 versioni intermedie di 4 utenti non mostrate)
Riga 1:
{{F|programmazione|maggio 2012|Questa voce manca completamente di fonti}}
 
*Con '''interfaccia''', nell'[[informatica]], si indicano diversi tipi di strumenti [[interfaccia]]. Esso può indicare il punto di incontro o collegamento, spesso [[standard (informatica)|standardizzato]], tra sistemi diversi e/o le modalità per permettere la loro interazione sotto forma di scambio di informazioni; o, nel paradigma di [[programmazione orientata agli oggetti]], gli elementi pubblici di una classe.
Con '''interfaccia''', nell'[[informatica]], si indicano:
* il punto di incontro o collegamento, spesso [[standard (informatica)|standardizzato]], tra sistemi diversi e/o le modalità per permettere la loro interazione sotto forma di scambio di informazioni;
* nel paradigma di [[programmazione orientata agli oggetti]], gli elementi pubblici di una classe.
 
== Interfaccia hardware ==
Riga 15 ⟶ 13:
* [[Interfaccia video|Famiglia di interfacce video]]
 
=== Interfacce a [[Bus (informatica)|bus]] ===
[[File:PCI_Slots_Digon3.JPG|thumb|Slot PCI]]
[[File:AGP,_PCI,_CNR_Sockets_in_PCChips_M925LR_Motherboard.jpg|thumb|Slot AGP]]
Riga 56 ⟶ 54:
* [[Apple Desktop Bus|ADB]] per tastiere e mouse e simili dispositivi di controllo;
* [[SHUGART]] (per [[floppy disk]]);
* [[USB]] (Universal Serial Bus, o [[Bus (informatica)|bus]] seriale universale in italiano, esterno espandibile, in diverse tipologie, capace di fornire alimentazione ai dispositivi tastiera e mouse, fotocamere digitali, ecc.);
* [[HDMI]] (High Definition Multimedia Interface);
* [[Thunderbolt (interfaccia)|Thunderbolt]] (successore di USB)
{{div col end}}
 
AttualmenteSono sicaduti stannoin abbandonandodisuso i lettori per dischetti ([[floppy]]) e le interfacce Centronics (in special modo sui laptop) e allo stesso tempo sia stannofavore installandodei lettori di [[smart card]].
 
=== Interfaccia nelle reti ===
Riga 67 ⟶ 65:
 
== Interfaccia software ==
{{vedi anche|Application binary interface|Application programming interface|Interfaccia (programmazione orientata agli oggetti)}}
=== Interfaccia nella programmazione orientata agli oggetti ===
Nei linguaggi di programmazione [[Linguaggio orientato agli oggetti|orientati agli oggetti]], il termine ''interfaccia'' è usato in due accezioni distinte.
Riga 73 ⟶ 71:
Da un lato, l'interfaccia di una [[classe (informatica)|classe]] è l'insieme dei dati e dei metodi visibili all'esterno degli [[oggetto (informatica)|oggetti]] che sono istanze di quella classe.
 
La seconda accezione, invece, si trova solo in determinati linguaggi e indica un [[Tipo di dato|tipo]] paragonabile alla classe, ma soggetto a restrizioni ulteriori.<ref>{{cita|Savitch|pp. 657-684}}.</ref> In questo caso l'interfaccia risulta di norma<ref>Un'interfaccia può anche essere vuota, come nel caso dell'interfaccia marker.</ref> composta esclusivamente di [[Metodo (informatica)#Metodi astratti|metodi astratti]] ed eventualmente da un insieme di [[campo (informatica)|campi]] visibili all'esterno di essa. Si avvicina in questo ad una [[classe astratta]], pur presentando caratteristiche distinte.<ref>{{Cita web|url=https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html|titolo=Abstract Methods and Classes|accesso=}}</ref> In altre parole un'interfaccia definisce un "contratto", ovvero un insieme di [[Firma (programmazione)|firme]] di metodi, la cui definizione concreta viene attuata in classi che implementano quell'interfaccia, funzionando quindi come punto di incontro tra componenti simili che hanno una struttura interna diversa.<ref>{{Cita web|url=https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/types/interfaces|titolo=Interfaces - define behavior for multiple types|accesso=}}</ref><ref>{{Cita web|url=https://docs.oracle.com/javase/tutorial/java/concepts/interface.html|titolo=What Is an Interface?|accesso=}}</ref> Pertanto ciascuna classe che implementa un'interfaccia definisce concretamente, in maniera distinta da altre classi che implementano tale interfaccia, i metodi la cui firma è presente nell'interfaccia.<ref>{{Cita web|url=https://docs.oracle.com/javase/tutorial/java/IandI/usinginterface.html|titolo=Implementing an Interface|accesso=}}</ref> In Java, tale implementazione può avvenire in maniera diretta, definendo il "corpo" del metodo nella classe implementante stessa, oppure ereditando tale implementazione da una superclasse, oppure ancora delegando l'implementazione ad una sottoclasse. In Java l'implementazione dei metodi definiti nell'interfaccia deve riguardare la totalità di tali metodi. Java consente inoltre ad una classe di implementare più interfacce e ad un'interfaccia di estendere un'altra interfaccia.
 
Questa seconda accezione si trova in linguaggi come [[Java (linguaggio di programmazione)|Java]] e i linguaggi della famiglia [[.NET]], che non supportano l'[[ereditarietà multipla]] tra classi, ma solo tra interfacce.