Interface ni nini?

Interface inafanana na abstract na hata ufanyaji kazi wake ila kuna utofauti kadhaa yutakuja kuuona hapo chini. Interface hasa yenewe hasa inarahisisha kwa class zaidi ya moja kufanya kazi sawa. Ikiwa kuna class zaidi ya moja zimetumia interface moja hii huulikana kama polymorphism.

 

Ili tuweze kutengeneza class yenye interface tutatumia keyword interface na ili kuitumia hiyo class yenye interface tutatumia keyword implement. Angalia mfano hapo chini:-

<?php

Interface gari {

  

}

class tangazo implements gari {

  

}

 

Utaona hapo kuna class mbili, ya kwanza ni gari na ya pili ni tangazo. Sasa class gari ndio ina interface na class tangazo inatumia interface ndio utaona hapo tmetumia keyword implement. Sasa hicho kitendo cha kutumia interface kwenye class nyingine ndio kinaitwa polymorphism.

 

<?php

Interface gari {

   public function jina();

   public function speed();

}

class tangazo implements gari {

   public function jina() {

       echo "Jina la gari ni toyota".'<br>';

   }

   public function speed(){

       echo "speed ni 180 km/h";

   }

}

echo "Tunauza gari <br>";

$obj = new tangazo();

$obj->jina();

$obj->speed();

?>

 

 

Utofauti kati ya insterface na abstract

  1. Interface haiwezi kuwa na  property ambapo abstract inaweza kuwa
  2. Method zote za kwenye interface ni public ila kwenye abstract ni protected ama public
  3. Metod zote kwenye interface ni abstract ijapokuwa hakuna kutumia keyword abstract
  4. Class inaweza kutumia interface na hata kama itakuwa imerithi kutoka kwenye class nyingine.

Angalia mfano mwingine hapo chini

<?php
interface mnyama
{

    public function analiaje();

}

class mbuzi implements mnyama
{

    public function analiaje()
    {
        echo " Meee ";
    }
}


class paka implements mnyama
{
    public function analiaje()
    {
        echo " Nyau ";
    }
}

class mbwa implements mnyama
{
    public function analiaje()
    {
        echo " wow ";
    }
}


$mbuzi = new mbuzi();

$paka = new paka();

$mbwa = new mbwa();

$mnyama = array($mbuzi, $mbwa, $paka);


// Tell the animals to make a sound

foreach ($mnyama as $wanyama) {
    $wanyama->analiaje();
}
?>

 

Kwa kuwa wanyama wote hapo wametumia class moja ya mnyama hivyo basi imetuwezesha sisi kufanya loop zote kwa pamoja.angalia mfano hapo chini jinsi ambavyo class inaweza kutumia interface nyingine wakati huo huo ina rithi class. Huu ji mfano mzuri wa polymorphism:-

<?php

interface a
{

    public function printData();

}

interface b
{

    public function getData();

}

interface c extends a, b
{

    public function addData();

}

class d implements c
{

    public function printData()
    {

        echo "I am printing <br>";

    }

    public function getData()
    {

        echo "I am reading data <br>";

    }

    public function addData()
    {

        echo "I am adding <br>";

    }

}

$myobj = new d();
$myobj->printData();
$myobj->addData();
$myobj->getData();

?>

I am printing
I am adding
I am reading data

 

Maelezo zaidi

1. Interfaces (a, b, c):

   - `a` na `b` ni interfaces zenye method moja kila moja (`printData` na `getData`).

   - `c` ni interface inayotumia `extends` kujumuisha property za interfaces `a` na `b`, hivyo ina method zote mbili `printData` na `getData`, na inaongeza method nyingine `addData`.

 

2. Class (d):

   - `d` ni class inayotekeleza interface `c`, na hivyo lazima itekeleze method zote zilizotajwa kwenye interface `c` (yaani, `printData`, `getData`, na `addData`).

   - Katika method hizo, imewekwa tu kazi ya kuchapisha ujumbe kwa madhumuni ya maelezo.

 

3. Mfano wa Matumizi:

   - Baada ya kuanzisha class `d` (ambayo inatekeleza interface `c`), unaiunda object `$myobj`.

   - Kisha, unaitumia object hilo kuitisha method zilizotajwa:

      - `$myobj->printData()` itachapisha "I am printing."

      - `$myobj->addData()` itachapisha "I am adding."

      - `$myobj->getData()` itachapisha "I am reading data."

 

Mwisho:

Katika somo linalofuata utakwenda kujifunza kuhusu trait kwenye OOP