Utilizarea interfețelor

Descriere: Interfața cuvântului este multivaluată, iar în diferite contexte are o semnificație diferită. Există un concept de interfață software sau hardware, dar în majoritatea cazurilor interfața cuvântului este asociată cu o anumită legătură între obiecte sau procese.







Mărime fișier: 56.59 KB

Lucrarea a fost descărcată: 2 persoane.

Dacă această lucrare nu vă convine în partea de jos a paginii, există o listă de lucrări similare. De asemenea, puteți utiliza butonul de căutare

Curs 11 UTILIZAREA INTERFACIILOR

11.1 Conceptul de interfață

Cuvântul "interfață" este multivaluat, iar în diferite contexte are un înțeles diferit. Există un concept de interfață software sau hardware, dar în majoritatea cazurilor interfața cuvântului este asociată cu o anumită legătură între obiecte sau procese. În această prelegere vorbim despre conceptul de interfață din spatele interfeței cuvintelor cheie. În acest sens, interfața este un caz special al clasei.

Interfața este o clasă complet abstractă, toate metodele fiind abstracte.

Din clasa abstractă, interfața diferă în anumite detalii în sintaxă și comportament.

Diferența de sintaxă este că metodele de interfață sunt declarate fără a specifica un modificator de acces.

Diferența de comportament constă în cerințele mai stricte pentru descendenți. O clasă care moștenește interfața (clasa de interfață) este necesară pentru a implementa pe deplin toate metodele de interfață. Aceasta este diferită de clasa care moștenește clasa abstractă, unde copilul poate implementa doar câteva metode ale clasei abstracte părinte, rămânând o clasă abstractă.

O diferență importantă între o clasă de interfață și o clasă obișnuită este aceea că poate moșteni mai multe interfețe părinte. Astfel, C # permite moștenire multiplă, dar numai în clasele de interfață.

Interfețele intermediare sunt listate în listă după numele clasei și un colon:

interfață publică INewClass: IInt1, IInt2. IIntN

Acest tip de interfețe trebuie să conțină implementări ale tuturor metodelor tuturor interfețelor părinte.

Rețineți că clasa de interfață poate moșteni nu numai de la interfețe, ci și de la una (și numai una!) Clasa obișnuită, în legătură cu care se comportă ca un moștenitor obișnuit, adică poate suprascrie metodele sale, adaugă câmpuri etc.

Moștenirea multiplă este potențial asociată cu posibilitatea conflictelor de nume și a prezenței unui părinte obișnuit. Conflictul numelor se manifestă prin faptul că interfețele părinte diferite pot conține aceleași metode cu aceeași sintaxă.

Deoarece clasa de interfață este necesară pentru implementarea tuturor metodelor interfețelor părinte, apare o coliziune care poate fi rezolvată într-unul din următoarele moduri.

Metode de lipire. În acest caz, clasa de interfață presupune că toate aceleași metode trebuie să aibă aceeași implementare software și declară această singură metodă de a implementa toate aceleași metode ale părinților lor.







Metode de redenumire. Dacă implementarea acelorași metode trebuie să fie diferită, metodele sunt redenumite.

Să observăm încă un scop important al interfețelor, care le distinge de clasele abstracte. Clasa abstractă reprezintă etapa inițială a designului clasei, care va primi în viitor o implementare specifică. Interfețele stabilesc proprietăți suplimentare clasei. Fiecare interfață furnizează clasa cu una sau altă proprietate nouă.

11.2 Sintaxa interfeței

O descriere generală a interfeței, inclusiv elementele opționale (acestea sunt indicate în paranteze pătrate), are următorul format:

[atribute] [specificatori] interfață nume_clasă [. părinți]

atribute # 150; setați informații suplimentare despre clasă;

proiectanti # 150; determină de obicei condiția de acces la componentele clasei;

părinți # 150; părinți clase de interfață care moștenesc clasa noastră:

corp de clasă # 150; definește compoziția clasei de interfață.

Dacă vă uitați atent la formatul înregistrării interfeței, puteți observa că formatul său este foarte asemănător formatului de înregistrare a unei clase normale. Acest lucru se datorează interfeței # 150; caz special al clasei.

În biblioteca de platforme. NET are un număr mare de interfețe, moștenind clasele care primesc proprietăți suplimentare.

De exemplu, interfața IComparabilă specifică o metodă de comparare a obiectelor prin principiul mai mult sau mai puțin, care le permite să fie sortate.

Implementarea interfețelor IEnumerable și IEnumerator face posibilă răsfoirea conținutului obiectului utilizând constructul foreach și implementarea interfeței ICloneable # 151; obiecte de clonare.

Fiecare interfață oferă clasa unele caracteristici noi. În acest sens, domeniul pentru dezvoltarea de noi interfețe este aproape infinit.

De exemplu, puteți crea o interfață de vânzare # 150; cumpărarea de valută în conformitate cu cursul de schimb actual, interfețe pentru diverse taxe de servicii de utilitate, luând în considerare beneficiile etc.

Ca studiu de caz, descriem o interfață a cărei implementare a metodelor va permite clasei să efectueze unele transformări pe o înregistrare muzicală # 150; convertește 7 note și întrerupe în numere de la 0 la 7 și efectuează transformări inverse.

Ca orice studiu de caz, este un pic artificial, deoarece sarcina noastră principală este acum să luăm în considerare tehnologia de a crea și utiliza interfețe.

Declarăm interfața ItextNoti, care conține două metode # 150; codificare (textul verbal al notei este înlocuit cu numere de la 0 la 7) și decodificare (textul reprezentat prin cifre de la 0 la 7 se înlocuiește cu textul verbal al notei).

Programul este prezentat în Figura 11.1.

Utilizarea interfețelor

Figura 11.1 # 150; Utilizând clasa de interfață

În exemplul de mai sus, este prezentată tehnologia pentru crearea și utilizarea interfeței și a clasei de interfață.

11.3 Utilizarea interfeței standard IEnumerabile

La prima vedere, nu există niciun avantaj în introducerea unei clase de interfață # 150; Metodele de codificare și decodare pot fi plasate direct în clasa MyzikText.

Astfel, clasa noastră trebuie să fie succesorul interfețelor IEnumerable și IEnumerator.

Interfața IEnumerator include o singură proprietate Object Current care returnează următorul obiect enumerat și două metode # 150; bool MoveNext () care mută enumeratorul la următorul obiect enumerat și metoda void Reset () void care stabilește enumeratorul la primul obiect enumerat.

Dacă clasa trebuie să efectueze o comparație a obiectelor, de exemplu, atunci când le sortează, atunci această clasă ar trebui să fie declarată moștenitor pentru interfața IComparabilă. Această interfață are o singură metodă CompareTo (obiect obj), care returnează o valoare întregă, pozitivă, negativă sau zero, în funcție de relația "mai mare", "mai mică" sau "egală".

șir public Naz; // Denumirea și prețul mărfurilor

public int Cena;

public Tovar (șir n, int c) // Constructorul mărfurilor







Articole similare

Trimiteți-le prietenilor: