Clasa abstractă în perl

Ce este o clasă abstractă? Decât interfața diferă de o clasă abstractă. Exemple de implementare a unei clase abstracte și a interfeței în perl. Folosind Class :: Interface







O clasă abstractă în OOP este o clasă de bază care nu implică crearea de instanțe proprii. O clasă abstractă poate conține metode și atribute abstracte.

Clasa abstractă este o demonstrație vie a unuia dintre principiile de bază ale polimorfismului OOP.

În unele limbi de programare, utilizarea claselor abstracte este interzisă. În unele - este permis. Perl, ca întotdeauna, în mijloc. În acesta, puteți implementa o clasă abstractă cu caracteristici de limbă standard. Dar nu există construcții speciale pentru acest lucru, cum ar fi, de exemplu, în PHP sau Java.

Clasa abstractă în PHP:

Folosirea clasei abstracte este convenabilă prin faptul că puteți plasa în această clasă toate funcțiile și metodele care vor fi ulterior necesare într-o varietate de alte clase. O clasă abstractă este o soluție excelentă care vă scutește de duplicarea codului.

De ce avem nevoie de clase și interfețe abstracte?

Să presupunem că aveți un program care descarcă fișiere de pe un server la distanță și le procesează.

Mai întâi încărcați fișiere txt simple, citiți datele, salvați-le în baza de date, apoi transferați fișierul în directorul cu fișiere procesate. Pentru a procesa fișiere, utilizați o clasă specială numită Document.

Apoi, clientul dvs. vine și spune că într-o lună va fi necesar să procesați nu numai fișierele txt, ci și xml. Iar în câteva luni se adaugă doc și pdf. În cazul în care txt și xml sunt încă ceva similar, procesarea doc și pdf este deja puternic diferențiată de fluxul general. Acum creați propria clasă pentru procesarea fiecărui document: DocumentXML.pm. DocumentPDF.pm etc. Codul începe să fie duplicat. Există o confuzie în mânuitorii. În cele din urmă, apelați o metodă de tipărire a fișierului csv, iar programul scade, deoarece ați uitat să adăugați metoda printer () la DocumentCSV.pm.







Cel mai rezonabil în acest caz, va transforma Document.pm într-o interfață care va specifica o listă de metode care trebuie definite în fiecare subclasă. În acest caz, clasa de interfață va fi o clasă abstractă, iar instanțele sale nu vor fi create în timpul funcționării programului.

Dacă uităm să specificăm o metodă, acest lucru va deveni clar pentru prima dată când încercăm să executăm programul.

Mai mult, dacă unele metode sunt comune tuturor subclaselor, le puteți defini într-o clasă abstractă. De exemplu, metodele de copiere și transferare a fișierelor în directoare diferite sau redirecționarea prin e-mail etc.

Implementarea interfețelor Perl și a claselor abstracte utilizând Class :: Interface

Interface Class :: Interface este un modul care vă ajută să faceți ca punerea în aplicare a interfețelor și a claselor abstracte în perl să fie o chestiune simplă și plăcută.

Moose. Apropo, permite, de asemenea, simplificarea implementării interfețelor. Un exemplu cu Moose a fost deja citat mai sus. Dar Class :: Interface. spre deosebire de Moose. Un modul mic și simplu, mai degrabă decât un sistem complex și greu.

Pentru a crea clase și interfețe abstracte, modulul oferă 4 subrutine:

  • Interfața () - transformă clasa apelant într-o interfață.
  • # Implementă () - încarcă interfața al cărei nume este trecut ca parametru și verifică clasa apelată pentru toate metodele necesare.
  • # 038; abstract () - transformă clasa apelantă într-o clasă abstractă.
  • # 038; extends () - Încarcă datele clasei abstracte specificate și verifică clasa de apeluri pentru metode abstracte.

Pentru a crea o interfață, trebuie să:

Pentru a crea o clasă abstractă, trebuie:

  • clasa de folosire :: Interface;
  • a fost apelat un subprogram # 038; abstract ()
  • a fost declarată cel puțin un subprogram

Implementarea interfeței cu Class :: Interface







Articole similare

Trimiteți-le prietenilor: