PHP Object Oriented Programming (OOPs) -konseptin opetusohjelma esimerkillä

Mikä on OOPs?

Object Oriented on lähestymistapa ohjelmistokehitykseen, joka mallintaa sovelluksia reaalimaailman kohteista, kuten työntekijöistä, autoista, pankkitilistä jne. Luokka määrittelee reaalimaailman objektin ominaisuudet ja menetelmät. Objekti on luokan esiintymä.

Kohdesuuntauksen kolme peruskomponenttia ovat;

  • Olio-analyysi – järjestelmän toimivuus
  • Oliosuuntautunut suunnittelu – järjestelmän arkkitehtuuri
  • Olioohjelmointi – sovelluksen toteutus

Olio-ohjelmoinnin periaatteet

OOP:n kolme pääperiaatetta ovat;

  • kapselointi – tämä koskee toteutustietojen piilottamista ja vain menetelmien paljastamista. Kapseloinnin päätarkoitus on;
  • Vähennä ohjelmistokehityksen monimutkaisuutta – piilottamalla toteutustiedot ja paljastamalla vain toiminnot, luokan käyttäminen on helppoa.
  • Suojaa objektin sisäinen tila – pääsy luokkamuuttujiin tapahtuu menetelmillä, kuten get ja set, mikä tekee luokasta joustavan ja helposti ylläpidettävän.
  • Luokan sisäistä toteutusta voidaan muuttaa murehtimatta luokkaa käyttävän koodin rikkomisesta.
  • Perintö – Tämä koskee luokkien välistä suhdetta. Suhde on vanhemman ja lapsen muoto. Lapsi käyttää pääluokassa määriteltyjä menetelmiä. Perinnön päätarkoitus on;
  • Uudelleenkäytettävyys – useita lapsia, jotka voivat periä samalta vanhemmalta. Tämä on erittäin hyödyllistä, kun meidän on tarjottava yhteisiä toimintoja, kuten tietojen lisääminen, päivittäminen ja poistaminen tietokannasta.
  • polymorfismi – Tämä koskee yhtä muotoa, mutta monia erilaisia ​​toteutustapoja. Polymorfismin päätarkoitus on;
  • Yksinkertaista sovellusten ylläpitoa ja tee niistä laajennettavia.

Oho Concepts PHP:ssä

PHP on oliopohjainen komentosarjakieli; se tukee kaikkia yllä olevia periaatteita. Edellä mainitut periaatteet saavutetaan kautta;

  • kapselointi – käyttämällä "get"- ja "set"-menetelmiä jne.
  • Perintö – Extens-avainsanan avulla
  • polymorfismi – työkalujen avainsanan avulla

Nyt meillä on perustiedot OOP:sta ja sen tuesta PHP, katsotaanpa esimerkkejä, jotka toteuttavat yllä olevat periaatteet

Mikä on UML?

Unified Modeling Language UML on tekniikka, jota käytetään oliopohjaisten järjestelmien suunnitteluun ja dokumentointiin.

UML tuottaa useita asiakirjoja, mutta tarkastelemme luokkakaaviota, joka on erittäin tärkeä olio-php-ohjelmoinnissa.

Esimerkki luokkakaaviosta

Oho Concepts PHP:ssä

Luokkakaavion avain

  • - Ylälaatikko sisältää luokan nimen
  • - keskimmäinen laatikko sisältää luokan muuttujat
  • - alempi laatikko sisältää luokan metodit
  • - miinus (-) merkki tarkoittaa yksityinen soveltamisala
  • - lisää (+) merkki tarkoittaa julkista ulottuvuutta
  • - hash (#) merkki tarkoittaa suojattua ulottuvuutta

Kuinka luoda luokka PHP: llä

Luokka-avainsanaa käytetään luokan määrittämiseen PHP:ssä. Alla on säännöt luokan luomiseksi PHP:ssä.

  • Luokan nimen tulee alkaa kirjaimella
  • Luokan nimi ei voi olla PHP:n varattu sana
  • Luokan nimi ei saa sisältää välilyöntejä

Oletetaan, että haluamme luoda luokan eläinten edustamiseksi.

Aloitamme tunnistamalla piirteet, jotka ovat yhteisiä kaikille eläimille.

  • Kaikki eläimet kuuluvat perheeseen, kuten kasvinsyöjä, karnevaali jne.
  • Kaikki eläimet syövät ruokaa

Alla oleva kaavio näyttää eläimen kaavion

Luo luokka PHP:llä

Koodataan nyt eläinluokkamme

<?php
class Animal
{
    private $family;
    private $food;
    public function __construct($family, $food)
    {
        $this->family = $family;
        $this->food   = $food;
    }
    public function get_family()
    {
        return $this->family;
    }
    public function set_family($family)
    {
        $this->family = $family;
    }
    public function get_food()
    {
        return $this->food;
    }
    public function set_food($food)
    {
        $this->food = $food;
    }
}
?>

TÄSSÄ,

  • "yksityinen $perhe, $ruoka" tarkoittaa, että muuttujia ei voida käyttää suoraan luokan ulkopuolella (kapselointi).
  • "julkinen funktio __construct($family…)" on php-konstruktiomenetelmä. Tätä funktiota kutsutaan aina, kun luokan esiintymä on luotu. Tässä tapauksessa asetamme perheen ja ruoan.
  • "julkinen toiminta saa…()" on menetelmä, jota käytetään perheen tai ruoan arvon saamiseksi (kapselointi)
  • "julkinen toimintosarja…()" on menetelmä, jolla määritetään perheen tai ruoan arvo (kapselointi)

Kuinka toteuttaa perintö PHP:ssä

Työskentelemme lehmän ja leijonan kanssa. Sekä lehmä että leijona perivät Animal-luokasta.

Alla oleva luokkakaavio näyttää suhteet.

toteuttaa perintöä PHP:ssä

Huomaa, että lehmä perii eläinluokista ja määrittelee myös oman muuttujansa ja menetelmänsä.

Koodataan nyt Cow-luokka

<?php
class Cow extends Animal
{
    private $owner;
    public function __construct($family, $food)
    {
        parent::__construct($family, $food);
    }
    public function set_owner($owner)
    {
        $this->owner = $owner;
    }
    public function get_owner()
    {
        return $this->owner;
    }
}
?>

Koodataan nyt leijonaluokka

<?php
class Lion extends Animal
{
    public function __construct($family, $food)
    {
        parent::__construct($family, $food);
    }
}
?>

TÄSSÄ,

  • "luokka … laajentaa Animal" saa lehmän ja leijonan käyttämään menetelmiä Animal-luokasta (Perinnöstä).

Luokan objektin luominen

Animal-, Cow- ja Lion-luokkien tulisi olla kaikki samassa hakemistossa yksinkertaisuuden vuoksi.

Luodaan nyt sovellus, joka käyttää luokkiamme.

PHP-luokan esimerkki

<?php
require 'Animal.php';
require 'Cow.php';
require 'Lion.php';
$cow  = new Cow('Herbivore', 'Grass');
$lion = new Lion('Canirval', 'Meat');
echo '<b>Cow Object</b> <br>';
echo 'The Cow belongs to the ' . $cow->get_family() . ' family and eats ' . $cow->get_food() . '<br><br>';
echo '<b>Lion Object</b> <br>';
echo 'The Lion belongs to the ' . $lion->get_family() . ' family and eats ' . $lion->get_food();
?>

Testaamme sovellustamme

Katsotaan nyt sovellustamme verkkoselaimessa

Periytys PHP:ssä

Aivan mahtavaa! Katsotaanpa nyt OOP:n kolmatta periaatetta, polymorfismia.

Oletetaan, että haluamme kehittää sovelluksen, joka muodostaa yhteyden erilaisiin tietokantakoneisiin, kuten MySQL ja SQL Palvelin vaan käytä samaa yhtenäistä käyttöliittymää.

Voimme luoda rajapinnan, joka määrittelee standardimenetelmät ja abstraktin luokan, joka toteuttaa yleiset menetelmät.

  • liitäntä – Se on samanlainen kuin luokka. Se määrittelee vain menetelmät ja parametrit.
  • Tiivistelmä luokka – Se on luokka, jota ei voida käyttää objektin luomiseen suoraan. Sen tarkoituksena on tarjota osittaisia ​​tai kokonaisia ​​toteutuksia yleisistä menetelmistä.

Alla oleva luokkakaavio havainnollistaa abstraktien luokka-, käyttöliittymä- ja toteutusluokkien välistä suhdetta.

Periytys PHP:ssä

Luodaan nyt abstrakti luokkamme

<?php
abstract class DBCommonMethods
{
    private $host;
    private $db;
    private $uid;
    private $password;
    public function __construct($host, $db, $uid, $password)
    {
        $this->host     = $host;
        $this->db       = $db;
        $this->uid      = $uid;
        $this->password = $password;
    }
}
?>

TÄSSÄ,

  • "abstrakti luokka" tarkoittaa, että luokkaa ei voida käyttää suoraan php:n objektin luomiseen
  • "$host,$db…" ovat luokkamuuttujia, jotka ovat yhteisiä kaikille toteutuksille
  • "funktio __construct(…)" on php-luokan konstruktorimenetelmä, joka asettaa yleisten muuttujien arvot alustuksen yhteydessä

Luodaan nyt käyttöliittymä, joka sisältää vakiomenetelmät, jotka toteutetaan eri tavalla tietokantakoneesta riippuen.

<?php
interface DBInterface
{
    public function db_connect();
    public function insert($data);
    public function read($where);
    public function update($where);
    public function delete($where);
}
?>

TÄSSÄ,

  • "rajapinta" on avainsana rajapintojen luomiseen
  • ”julkinen tehtävä…(…)” ovat vakiomenetelmiä, jotka tulisi ottaa käyttöön

Luodaan nyt konkreettiset luokat, jotka laajentavat DBCommonMethods-luokkaa ja laajentavat DBInterface-liitäntää. MySQLDriver.php

<?php class MySQLDriver extends 
DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) 
{ 
parent::__construct($host, $db, $uid, $password); } 
public function db_connect() { //connect code goes here } 
public function delete($where) { //delete code goes here } 
public function insert($data) { //insert code goes here } 
public function read($where) { //read code goes here } 
public function update($where) { //update code goes here } 
} ?>

MSSQLServerDriver.php

<?php 
class MSSQLServerDriver extends 
DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password)
 { 
 parent::__construct($host, $db, $uid, $password); } 
 public function db_connect() { //connect code goes here } 
 public function delete($where) { //delete code goes here }
 public function insert($data) { //insert code goes here }
 public function read($where) { //read code goes here }
 public function update($where) { //update code goes here }
 } ?>

TÄSSÄ,

  • "class … laajentaa DBCommonMethods" käyttää DBCommonMethods-menetelmiä
  • "… toteuttaa DBInterfacen" varmistaa, että luokka tarjoaa vakiomenetelmiä käytetystä tietokantaohjaimesta riippumatta.

Yllä olevan koodin käyttö Yllä olevaa luokkaa käyttävä koodi näyttäisi tältä

<?php $db = new MySQLDriver($host,$db,$uid,$password); ?>

Or

<?php $db = new MSSQLServerDriver ($host,$db,$uid,$password); ?>

Loput koodista olisi sama molemmille ohjaimille, kuten;

<?php
$db->db_connect();
$db->insert($data);
?>

Yhteenveto

  • Olio-ohjelmointi OOP on tehokas tekniikka, joka mallintaa sovelluksia reaalimaailman objektien jälkeen
  • Luokka on esitys reaalimaailman objekteista ominaisuuksineen ja menetelmineen
  • OOP:n kolme perusperiaatetta ovat;
  • kapselointi
  • Perintö
  • polymorfismi