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

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Ištrintas turinys Pridėtas turinys
Lang-Bot-as (aptarimas | indėlis)
S robotas: brūkšneliai keičiami brūkšniais (pagal lietuvių kalbos rašybos normas)
Lang-Bot-as (aptarimas | indėlis)
S Automatinis kabučių taisymas
Eilutė 27: Eilutė 27:


<?php
<?php
// sukuriamas interfeisas pavadinimu "Masina"
// sukuriamas interfeisas pavadinimu „Masina“
interface Masina {
interface Masina {
// sukuriama viešai prieinama (public function) funkcija, kurią vėliau reikės aprašyti
// sukuriama viešai prieinama (public function) funkcija, kurią vėliau reikės aprašyti
Eilutė 40: Eilutė 40:
}
}


// sukuriama klasė su pavadinimu "Valdymas"
// sukuriama klasė su pavadinimu „Valdymas“
// "implements Masina" - nurodome, jog klasė bus aprašyta pagal "Masina" šabloną
// „implements Masina“ - nurodome, jog klasė bus aprašyta pagal „Masina“ šabloną
class Valdymas implements Masina {
class Valdymas implements Masina {


Eilutė 52: Eilutė 52:


// spausdinamas tekstas
// spausdinamas tekstas
echo "Mašina juda.....<br/>\n";
echo „Mašina juda.....<br/>\n“;
}
}


public function Stoti() {
public function Stoti() {
echo "Mašina sustojo!<br/>\n";
echo „Mašina sustojo!<br/>\n“;
}
}


public function Atsigrezti() {
public function Atsigrezti() {
// spausdinamas tekstas su atsitiktiniu skaičiu
// spausdinamas tekstas su atsitiktiniu skaičiu
echo "Atsigręžėme, ir pamatėme prieš mus lekiančią mašina" .
echo „Atsigręžėme, ir pamatėme prieš mus lekiančią mašina“ .
" \"Numeris: " . rand(1, 100) . "\ ";
\“Numeris: . rand(1, 100) . \ ";
}
}


protected function Sunaikinti() {
protected function Sunaikinti() {
unset($this->Masina); // sunaikinamas kintamasis kuris yra "Valdymas" klasėje
unset($this->Masina); // sunaikinamas kintamasis kuris yra „Valdymas“ klasėje
echo "Mašina Sunaikinta!";
echo „Mašina Sunaikinta!;
}
}
}
}


// sukuriamas "Valdymas" klasės objektas
// sukuriamas „Valdymas“ klasės objektas
$pCar = new Valdymas;
$pCar = new Valdymas;
// panaudojame funkcijas iš klasės
// panaudojame funkcijas iš klasės
Eilutė 82: Eilutė 82:
Mašina juda.....
Mašina juda.....
Mašina sustojo!
Mašina sustojo!
Atsigręžėme, ir pamatėme prieš mus lekiančią mašina "Numeris ''x''"
Atsigręžėme, ir pamatėme prieš mus lekiančią mašina „Numeris ''x''
Fatal error.....
Fatal error.....


Kodėl pamatėme "Fatal error" ?
Kodėl pamatėme „Fatal error“ ?
Ogi todėl, kad funkcija Sunaikinti() yra ne vieša ir prieinama tik klasėse.
Ogi todėl, kad funkcija Sunaikinti() yra ne vieša ir prieinama tik klasėse.
Dabar panaudokime taip:
Dabar panaudokime taip:


// sukuriamas "Valdymas" klasės objektas
// sukuriamas „Valdymas“ klasės objektas
$pCar = new Valdymas;
$pCar = new Valdymas;
// panaudojame funkcijas iš klasės
// panaudojame funkcijas iš klasės
Eilutė 96: Eilutė 96:
$pCar->Atsigrezti();
$pCar->Atsigrezti();


ir "Fata error..." klaida pranyko.
ir „Fata error... klaida pranyko.
!-->
!-->

12:39, 5 kovo 2007 versija

Interfeisas – abstraktus objekto klasės aprašas, nusakantis, kokius metodus ši klasė privalo turėti. Tą patį interfeisą gali išpildyti keletas programoje naudojamų klasių. Ta pati klasė neretai išpildo keletą interfeisų. Galima interfeisų hierarcija, paveldint būtinus išpildyti metodus iš vieno ar kelių tėvinių interfeisų.

Interfeisus palaiko daugelis modernių programavimo kalbų (Java, C#). Yra specialių kalbų skirtų išimtinai interfeisų aprašymams, pvz., CORBA IDL.

Interfeisai yra labai panašūs į abstrakčios klasės, tik juose, 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 interfeisą. Be to, kai kuriose programvimo kalbose klasė gali būti kildinama tik iš vienos tėvinės klasės, tačiau išpildyti daug interfeisų.

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();
}

Interfeisai naudingi 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ą interfeisų, tokios klasės objektas tinka parametru įvairioms funkcijoms, kurių reikalaujamas argumento tipas gali būti bet kuris iš interfeisų.