Syntaks for å erklære et grensesnitt
GrensesnittEtter å ha definert grensesnittet, vil vi nå implementere dem ved å bruke følgende syntaks:
# Klasse X: name_of_interfaceDenne erklæringen gjøres ved å bruke navnet på grensesnittet tilknyttet en klasse med en kolon. Ved å gjøre dette blir alle medlemmene i grensesnittet erklært tomt en klasse som implementerer grensesnittet, bør implementere alle funksjonene i grensesnittet.
Implementering av grensesnitt
Eksempel 1
Vi vil erklære grensesnittet med navnet etter erklæringen om et bibliotek. Inne i grensesnittet vil vi bare erklære funksjonsnavnet. Returtypen vil også bli nevnt. Grensesnittet inneholder bare overskriftene til funksjonen det ikke inneholder beskrivelsen relatert til funksjonen. Så vi lukker grensesnittlegemet fordi bare en enkelt funksjon er definert her.
Grensesnitt inter1For at funksjonen skal utføres, bruker vi en klasse som et enkelt C -skarpt program blir erklært. Men for grensesnittet er klassenavnet erklært langs grensesnittet for å knytte seg til det.
# Klassetestklasse: Inter1Inne i klassen er funksjonen skrevet. Vi har ganske enkelt brukt konsollerklæringen for å vise en prøvesetning.
I hovedprogrammet vil vi lage objektet for klassen. Denne erklæringen gjøres dynamisk med bruk av det 'nye' nøkkelordet.
Testklasse T = NYTT TESTCLASS (); Dette objektet vil bli brukt til å ringe funksjonen som er deklarert i klassen etter at objektet er opprettet.
# t.vise();Nå vil vi utføre koden ved å bruke en MCS -kompilator og mono for å utføre filen med .EXE Extension.
$ MCS -fil.CSVed utførelse vil du se at setningen vises som ble erklært i grensesnittet og utført i en egen funksjon som fikk tilgang til av objektet i hovedprogrammet.
Eksempel 2
I motsetning til det første eksemplet, vil vi bruke tre abstrakte metoder i et grensesnitt. Disse funksjonene er relatert til kjøretøyet. Hver funksjon inneholder parametere for å akseptere verdiene som er sendt fra funksjonssamtalen.
Som grensesnittet er erklært, implementeres en klasse for å benytte seg av alle funksjonene i grensesnittet. Vi har brukt to klasser som har to forskjellige typer kjøretøyer. Hver implementering av alle tre funksjonene som er erklært inne i grensesnittet.
Den første funksjonen relatert til gir vil tilordne en ny girverdi til den forrige ved å godta verdien fra parameteren.
# Gir = newgear;Den andre funksjonen handler om hastighet opp. Så den sendte verdien i parameteren vil bli lagt til den forrige.
# Hastighet = hastighet + økning;I motsetning til speedup, vil bremsfunksjonen minus eller redusere den sendte verdien fra den forrige.
# Hastighet = hastighet - reduksjon;Verdiene av hastighet og gir vises gjennom funksjonen. Det er ikke erklært i grensesnittet, og det er den statiske funksjonen til klassen.
En annen klasse er designet for å implementere grensesnittet. Alle tilnærmingene for hver funksjon er de samme som vi har beskrevet for første klasse. Tilsvarende vil visningsfunksjonen vise alle tilstedeværende data.
Nå er det på tide å erklære hovedprogrammet for å få tilgang til hver klasse gjennom henholdsvis objektene. En klasseprøve opprettes med hovedprogrammet inne i den. Siden vi har to klasser for å implementere grensesnittet, (sykkel og sykkel) vil vi lage objekter separat for hver klasse.
Først for sykkelen:
# Sykkel sykkel = ny sykkel ();Objektopprettelsen vil bli dynamisk gjort. Gjennom dette objektet kalles hver funksjon.
# Sykkel.ChangeGear (2);Hver parameter for funksjonen inneholder heltallsverdien i argumentet. Deretter vises hver resulterende ved å kalle skjermfunksjonen.
Etter sykkelen vil forekomsten for sykkelen opprettes.
# Sykkel sykkel = ny sykkel ();Tilsvarende vil alle funksjonssamtaler bli gjort gjennom dette sykkelobjektet.
# Sykkel.speedup (4);Nå vil vi utføre koden for å se hvordan den fungerer. Mens du utfører, vises både verdiene for giret og hastigheten for hver klasse separat avhengig av sekvensen av objektoppretting og funksjon som ringer gjennom objektet.
Eksempel 3
I forrige eksempel har vi bare vist verdiene direkte i programmet som er deklarert i grensesnittet. Men denne gangen vil vi beregne området til en polygon ved å ha funksjonen i to forskjellige former. La oss se på implementeringen av eksemplet. Først vil vi erklære grensesnittet her.
Grensesnitt ipolygoneFunksjonen inneholder ingen parametere med den. Dette betyr at alle variablene er lokalt definert i funksjonen. Etter grensesnittet vil vi erklære et klasse rektangel som implementerer Ipolygon -grensesnittet. Så vi vil knytte klassen til grensesnittnavnet.
# Klasse rektangel: ipolygoneInne i klassen, funksjonen CalculateArea benyttes. Inne i funksjonen tildeles alle variabler med en verdi. Disse verdiene brukes deretter i formelen for å beregne rektangelet.
# int område = l * b;Etter beregningene vises den resulterende verdien.
Det samme fenomenet med å implementere Ipolygon -grensesnittet gjøres for den firkantede formen. Men ettersom alle sider av torget er like, trenger vi ikke tosidige lengder. Alle sider er av like lengde, så området vil bli beregnet ved å multiplisere to lengder med hverandre.
# int område = l * l;I hovedprogrammet opprettes objektene for begge klassene, og deretter kalles funksjonen gjennom disse objektene.
rektangel RI = nytt rektangel ();Samme tilnærming gjelder for kvadratklassen.
Nå utfør koden, kan du se at begge områdene med forskjellige firkanter vises ved å kalle funksjonene gjennom henholdsvis objektene sine.
Konklusjon
C skarpt grensesnitt brukes til å skjule noen spesifisert informasjon på en bestemt måte å bare vise den informasjonen som er viktig. Mens vi definerer grensesnittet, har vi sett at bare funksjonen til funksjonen er beskrevet. Hoveddeklarasjonen består av returtypen av funksjonen, og argumentet som er til stede i parameteren. I denne artikkelen har vi implementert noen eksempler i Linux -operativsystemet. I hvert eksempel er det definert et eget grensesnitt som inneholder en enkelt eller antall grensesnitt som er beskrevet senere i deres respektive klasser.