Sąsaja (programavimas)

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką
 Broom icon.svg  Šį puslapį ar jo dalį reikia sutvarkyti pagal Vikipedijos standartus.
Jei galite, sutvarkykite; apie sutvarkymą galite pranešti specialiame Vikipedijos projekte.

Sąsaja – abstraktus objekto klasės aprašas, nusakantis, kokius metodus ši klasė privalo turėti. Tą pačią sąsają gali išpildyti keletas programoje naudojamų klasių. Ta pati klasė neretai išpildo keletą sąsajų. Galima sąsajų hierarchija, paveldint būtinus išpildyti metodus iš vieno ar kelių tėvinių sąsajų.

Sąsajas palaiko daugelis modernių programavimo kalbų (Java, C#). Yra specialių kalbų skirtų išimtinai sąsajoms aprašyti, pvz., CORBA IDL.

Sąsajos yra labai panašios į abstrakčias klases, tik jose, skirtingai nuo abstrakčių klasių, nei viena iš aprašytų funkcijų negali turėti realizacijos aprašo, šis aprašas talpinamas klasėje, kuri išpildo sąsają. Be to, kai kuriose programvimo kalbose klasė gali būti kildinama tik iš vienos tėvinės klasės, tačiau išpildyti daug sąsajų.

Sąsaja apibrėžia bendravimo tarp programinės įrangos komponentų detales – konstantas, duomenų tipus, procedūrų tipus, išimtinius atvejus (exception) bei metodų aprašus (signature). Taip pat dažnai aprašomos rekomendacijos metodų funkcionalumui.

Programinio modulio A sąsaja specialiai atskiriama nuo modulio realizacijos, kur ne tik realizuojami sąsajos procedūros ir metodai, bet taip pat yra ir privatūs kintamieji bei kita verslo logika. Bet kuris programinis modulis B (modulio A klientas), bendraujantis su A yra verčiamas naudoti modulį tik naudojantis sąsaja. To privalumas – bet kada galima pakeisti modulio A realizaciją bet kokia kita realizacija, palaikančia sąsają, ir modulis B veiks be pakeitimų.

Sąsajų panaudojimas[taisyti | redaguoti kodą]

Sąsajos yra kertinis modulinio programavimo akmuo, taip pat jos yra labai svarbios programuojant objektiškai. Objektiniame programavime sąsaja apibrėžia aibę metodų (pranešimų), kurių daugumą objektas palaiko.

Skirtingos programavimo kalbos skirtingai palaiko sąsajas. Iš esmės, jas galima realizuoti bet kuria kalba, bet kai kurios kalbos palaiko vienokias ar kitokias sąsajas išreikštinai:

Yra kalbų, skirtų vien sąsajoms kurti (IDL).

Pavyzdys (java)[taisyti | redaguoti kodą]

/** Abstrakti geometrinė figūra */
interface Figūra {
    
   /**
   * Trikampiui, kvadratui ar apskritimui plotas skaičiuojamas
   * skirtingomis formulėmis, taigi šis metodas bus išpildytas
   * skirtingai.
   */
   int plotas();
}

Sąsajos naudingos kuriant funkcijas, kurių parametrai gali būti įvairių klasių objektai, jei tik šių objektų klasės turi šių funkcijų algoritmams reikalingus metodus (pavyzdyje – figūros plotui sužinoti). Jei objekto klasė išpildo keletą sąsajų, tokios klasės objektas tinka parametru įvairioms funkcijoms, kurių reikalaujamas argumento tipas gali būti bet kuri iš sąsajų.