Sąsaja (programavimas): Skirtumas tarp puslapio versijų

526 baitai pašalinti ,  prieš 9 metus
Perkelta informacija iš Sąsaja straipsnio
(Perkelta informacija iš Sąsaja straipsnio)
Sąsajos yra labai panašios į abstrakčias klases, tik jose, skirtingai nuo [[abstrakti klasė|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 <math>A</math> 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 <math>B</math> (modulio ''A'' klientas), bendraujantis su <math>A</math> yra verčiamas naudoti modulį ''tik'' naudojantis sąsaja. To privalumas – bet kada galima pakeisti modulio <math>A</math> realizaciją bet kokia kita realizacija, palaikančia sąsają, ir modulis <math>B</math> veiks be pakeitimų.
 
=== Sąsajų panaudojimas ===
Sąsajos yra kertinis modulinio programavimo akmuo, taip pat jos yra labai svarbios [[objektinis programavimas|programuojant objektiškai]]. Objektiniame programavime sąsaja apibrėžia aibę metodų (pranešimų), kurių daugumą objektas palaiko.
 
Skirtingos [[programavimo kalba|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 (kalba)|Java]]
* [[C sharp|C#]]
* [[Python]]
* [[PHP]]
 
Yra kalbų, skirtų vien sąsajoms kurti ([[IDL]]).
== Pavyzdys (java) ==
 
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ų.
<!--!
== PHP5 Programavimo kalbos sąsajos ir klasės pavyzdys ==
 
<?php
// sukuriamas interfeisas pavadinimu „Masina“
interface Masina {
// sukuriama viešai prieinama (public function) funkcija, kurią vėliau reikės aprašyti
public function Judeti();
 
public function Stoti();
 
public function Atsigrezti();
 
// sukuriama tik klasėje prieinama funkcija
protected function Sunaikinti();
}
 
// sukuriama klasė su pavadinimu „Valdymas“
// „implements Masina“ – nurodome, jog klasė bus aprašyta pagal „Masina“ šabloną
class Valdymas implements Masina {
 
private $Masina;
 
// aprašome funkciją, kuri pateikta šablone (interface)
public function Judeti() {
// aprašomas privatus klasėse valdomas kintamasis
$this->Masina = rand(1, 100);
 
// spausdinamas tekstas
echo „Mašina juda.....<br/>\n“;
}
 
public function Stoti() {
echo „Mašina sustojo!<br/>\n“;
}
 
public function Atsigrezti() {
// spausdinamas tekstas su atsitiktiniu skaičiu
echo „Atsigręžėme, ir pamatėme prieš mus lekiančią mašina“ .
„ \“Numeris: „ . rand(1, 100) . “\ ";
}
 
protected function Sunaikinti() {
unset($this->Masina); // sunaikinamas kintamasis kuris yra „Valdymas“ klasėje
echo „Mašina Sunaikinta!“;
}
}
 
// sukuriamas „Valdymas“ klasės objektas
$pCar = new Valdymas;
// panaudojame funkcijas iš klasės
$pCar->Judeti();
$pCar->Stoti();
$pCar->Atsigrezti();
$pCar->Sunaikinti();
 
Ekrane išvysime:
Mašina juda.....
Mašina sustojo!
Atsigręžėme, ir pamatėme prieš mus lekiančią mašina „Numeris ''x''“
Fatal error.....
 
Kodėl pamatėme „Fatal error“ ?
Ogi todėl, kad funkcija Sunaikinti() yra ne vieša ir prieinama tik klasėse.
Dabar panaudokime taip:
 
// sukuriamas „Valdymas“ klasės objektas
$pCar = new Valdymas;
// panaudojame funkcijas iš klasės
$pCar->Judeti();
$pCar->Stoti();
$pCar->Atsigrezti();
 
ir „Fata error...“ klaida pranyko.
!-->
 
[[Kategorija:Informatika]]
525

pakeitimai