grænseflader i c + + (abstrakt klasse)

, en grænseflade beskriver den opførsel eller kapacitet, en c + + klasse uden at forpligte sig til en bestemt anvendelse af denne klasse., c + + grænseflader er gennemført ved hjælp af abstrakt klasse, og disse abstrakte kategorier bør ikke forveksles med de data, der er en opfattelse af, at fremstilling gennemførelsesbestemmelser adskilt fra tilknyttede data. en klasse er abstrakt, idet mindst en af sine funktioner som rent virtuelt, funktion.en ren virtuelle funktion er fastsat ved at placere "= 0" i sin erklæring som følger: klasse rubrik (offentlige: //rent virtuelt funktion næsten dobbelt getvolume() = 0, private: dobbelt længde; //længde af en kasse dobbelt bredde; //bredde af en kasse dobbelte højde; //højde på en kasse}; formålet med en abstrakt klasse (ofte benævnt en abc) er at give en passende basisklasse, som andre klasser kan arve.abstrakt klasse, kan ikke anvendes til at instantiate genstande og kun tjener som en grænseflade.forsøger at instantiate genstand for en abstrakt klasse forårsager en samling fejl. hvis en underklasse af en abc - skal være instantierede, det har til at gennemføre alle de virtuelle funktioner, hvilket betyder, at det støtter den grænseflade, der anmeldes af abc.undladelse af at tilsidesætte en ren virtuelle funktion i en afledt af klasse, så forsøger at instantiate genstande i klasse, er en samling fejl., klasser, der kan anvendes til at instantiate genstande er kaldet, konkrete klasser,., abstrakt klasse, f.eks. overveje følgende eksempel, hvor forældre - klasse er en grænseflade til basisklasse for at gennemføre en funktion, getarea():,&#omfatter < iostream > anvendelse af namespace std; //base, klasse form {offentlige: //rent virtuelt funktion, der giver grænseflade rammer.virtuelle int getarea() = 0, ugyldige setwidth int (w) (bredde = w) ugyldig setheight int (h) (højde = h) beskyttede: int bredde; int højde}; //afledte klasse klasse rektangel: offentlige form {offentlige: int getarea() {afkast (bredde, højde) *). og klasse trekant: offentlige form {offentlige: int getarea() {afkast (bredde * højde) /2); int vigtigste (annulleret) {rektangel direkte; trekant tri, direkte. setwidth (5); direkte. setheight (7); //trykke område af objektet.cout < < "samlede rektangel område:" < < direkte. getarea() < < endl., tri. setwidth (5) og tri. setheight (7); //trykke område af objektet.cout < < "samlede trekant område:" < < tri. getarea() < < endl., tilbagevenden 0}, når ovennævnte adfærdskodeks er udarbejdet og gennemført, giver følgende resultat: det samlede rektangel område: 35 samlede trekant område: 17, du kan se, hvordan en abstrakt klasse defineret grænseflade i forhold til getarea() og to andre klasser gennemført samme funktion, men med forskellige algoritme til at beregne det område, den specifikke form. af strategi, nemlig en samt system kan bruge en abstrakt basisklasse for at skabe en fælles, standardiseret grænseflade er egnet til alle de eksterne anvendelser.så, gennem arv fra det abstrakt basisklasse, afledte klasser er dannet, der fungerer på samme måde, kapacitet (dvs. de offentlige opgaver), der tilbydes af eksterne applikationer leveres som rent virtuelt funktioner i abstrakt basisklasse.gennemførelsen af disse rent virtuelt funktioner er forudsat i de afledte klasser, der svarer til de særlige former for anvendelse. denne struktur giver også nye ansøgninger til et system, let, selv efter at systemet er blevet defineret.



Previous:
Next Page: