Clasa de interfață este utilizată pentru a modifica interfața unei alte clase sau a unui set de clase. Această modificare simplifică utilizarea clasei, o face mai funcțională, sigură sau corectă din punct de vedere semantic. Exemple de clase de interfață sunt adaptoarele de containere care fac parte din Biblioteca standard de șabloane (STL). Adaptorii oferă o nouă interfață publică pentru containere cum ar fi deque (coadă dublă, coadă dublă, vector și listă). Studiu de caz, de exemplu. Lista 10.1 prezintă definiția stiva de clasă, care este utilizată ca interfață pentru clasificarea vectorilor.
// Lista 10.1. Utilizând clasa stivă ca
șablon de clasă șablon
typedef Container :: value_type value_type;
typedef Container :: size_type size_type; protejate:
size_type size (void) const
const valoare_type top const
voce push (const valoare_type x)
Clasa stack este declarată calea unui job de tip Container
În acest caz, tipul Container este o clasă vectorie, dar ca clasă de implementare pentru clasa interfeței stack (în locul clasei vectoriale), puteți utiliza orice container care definește următoarele metode:
mărimea goală () () înapoi () push.back () pop.back ()
Clasa stivă suportă interfața antecedent corect corectă pentru stive.
Există mai multe moduri de afișare a interfeței. Unul dintre ele este un cerc de lângă care (adesea sub el) este scris numele clasei de interfață. Această metodă este prezentată în Fig. 10,5, a. Pentru a afișa operațiile din clasa stivă, puteți folosi și simbolul simbolic al clasei (a se vedea figura 10.5, b). Aici, un indicator stereotip> apare în partea de sus a clasei, indicând că aceasta este o clasă de interfață. Numele clasei de interfață poate începe cu litera "I", iar apoi toate operațiile acestei clase de bulut diferă mult mai mult de celelalte clase.
Pentru a afișa relațiile dintre clasa m și stiva și vectorii, puteți utiliza conceptul de implementare. O realizare este o relație foarte antică între clase, în care unul dintre ele oferă un "contract" (clasa de interfață), iar celălalt execută (o clasă de implementare). În exemplul nostru, clasa stiva definește un contract, iar clasa vectorială o execută. Relația de implementare este reprezentată de un segment întrerupt între două dreptunghiuri ale claselor, cu o săgeată mare, goală, care indică clasa de interfață, adică pe clasa care definește contractul (Figura 10.5, c). Această imagine citește astfel: "Clasa de stivă este implementată de clasa vectorilor". Relația dintre clasa de interfață și implementatorul acesteia (mijloace de implementare) poate fi de asemenea afișată ca o "bomboană pe un stick" (Figura 10.5, d). Clasa stiva poate fi implementată nu numai de clasa vectorială, ci și de clasele de listă sau de clase.
Fig. 10.5. Metode pentru reprezentarea clasei de interfață