Sąsaja (programavimas)

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  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  (modulio A klientas), bendraujantis su  yra verčiamas naudoti modulį tik naudojantis sąsaja. To privalumas – bet kada galima pakeisti modulio  realizaciją bet kokia kita realizacija, palaikančia sąsają, ir modulis  veiks be pakeitimų.

Sąsajų panaudojimas 
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:
 Mesa
 Modula
 Modula-2
 Modula-3
 Ada
 Objektinė C
 Oberon
 Java
 C#
 Python
 PHP

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

Pavyzdys (java) 
 
 /** 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ų.

Informatika
Sąsajos