Примена класа и полиморфизма са пХп

Преглед садржаја
Полиморфизам је способност апстрактне класе или одређеног објекта да на исту методу одговори својим понашањем. Полиморфизам одређује да прослеђени или очекивани параметар или објекти могу имати више облика и имати различито понашање са истим методама.
Када проводимо објектно оријентисано програмирање са полиморфизмима морамо имати на уму да се може позвати инстанца класе или објекта који ће радити и понашати се без обзира на класу којој објекат припада. Ако имамо много класа и објеката, морамо добро структурирати хијерархије класа и апстрактне класе. Друга предност је могућност декларисања или програмирања метода са истим именом иако су њихове функционалности потпуно различите, будући да се позивамо на инстанцу класе.
Као пример, претпоставимо апстрактну класу која представља број возила, који деле неке заједничке податке о нивоу горива, марки и моделу возила.
Својства класе Возила тада ће бити гориво које ће садржавати број литара који су напуњени у возило и марка и модел возило.
 
У наставку дефинишемо уобичајене методе за сва возила која ће пунити гориво и показати колико је преостало док се користи, поред тога морамо бити у могућности да сваком возилу доделимо марку и модел и можемо се консултовати и са његовом марком и моделом . Затим дефинишемо методе за класу Возила.
 гориво = $ гориво; } јавна функција схов фуел () {ретурн $ тхис-> фуел; } јавна функција доделити возило ($ бранд, $ модел) {$ тхис-> брандимодел = $ бранд. ' '. $ модел; } јавна функција сховбрандмодел () {ретурн $ тхис-> маркандмодел; }}?> вар13 -> 
Тада ћемо почети да стварамо класе које наслеђују од возила и имаће своје посебне методе, на пример стварамо класу Аутомобили, она ће имати својство да унапреди аутомобил и сваки пут када напредује трошиће литар горива (тако да се вежба лако разуме)
 класа Аутомобили проширује Возило {публиц фунцтион адванце () {// сваких 10 километара троши литар $ ово-> гориво - = 1; }} // Крај класе 
Сада ћемо применити општу класу за возача возила, овде узимамо у обзир да један или више возача може да управља различитим возилима.
У овој класи ћемо дефинисати генерички или апстрактни конструктор типа
 функција __цонструцт ($ објецт_параметер) {$ тхис-> миобјецт = $ објецт_параметер} 
Тако да тада можемо манипулисати било којим објектом који се прослеђује као параметар конструктора, па ће наша класа имати могућност да прими објекат као параметар, ово је полиморфизам, односно може да користи комплетне објекте, на пример можемо послати класа аутос као параметар и користи све своје методе.
Примене ћемо применити у пхп 5, па је важно запамтити опсег методе и променљиве, у већини језика је врло слично. Да бисмо доделили или променили опсег променљиве или својства, морамо да користимо одговарајућу резервисану реч када декларишемо променљиву или метод према приступу или опсегу који желимо да има:
  • приватни: означава да се променљивој или методи може приступити само методама класе којој објект припада, а не било којој другој.
  • заштићено: означава да је променљивој или методи могуће приступити методама и такође из било које од њених подкласа које припадају овој класи.
  • јавно: означава да су променљиве или методе доступне из било које друге методе или без обзира на то где припадају или коме припадају. Будите опрезни са јавним атрибутима јер би могли изменити вредност коју такође користи друга класа или друга метода.

Затим креирамо класу Дривер која ће имати следеће методе: напунити гориво, доделити возило, видети марку и модел, унапредити возило и проверити преостало гориво како напредује.
 возило = $ објекат; } јавна функција пуњење горивом ($ гориво) {$ ово-> возило-> пуњење горивом ($ гориво); } јавна функција ассигнвехицле ($ маке, $ модел) {$ тхис-> вехицле-> ассигнвехицле ($ маке, $ модел); } јавна функција брандимодел () {ретурн $ тхис-> возило-> сховбрандмодел (); } јавна функција адванцевехицле () {$ тхис-> вехицле-> адванце (); } гориво јавне функције преостало () {врати $ ово-> возило-> прикажи гориво (); }}?> вар13 -> 
Можемо видјети како у свакој функцији класе Аутомобили примјењујемо уобичајене методе класе Супер Вехицлес како бисмо додијелили својства или методе које су посебне и нису заједничке за сва возила.
Хајде да видимо даље како користити ове класе и сам полиморфизам.
 доделити возило ('Феррари', '550 МАРАНЕЛЛО'). '
'; // Приказујемо додељено возило ецхо $ феррари-> брандимодел (). '
'; // Утоваримо гориво у возило означавајући количину у литрама која понавља одјек 'Пуњење горивом'. $ Феррари-> пуњење горивом (50). '
'; // Приказујемо тренутну количину горива која приказује 'Цуррент фуел'. $ Феррари-> гориво преостало (). ' литара
'; ецхо 'Напредно возило
'; $ феррари-> адванцеВехицле (); ецхо $ феррари-> брандимодел (). ' имате '. $ феррари-> преостало гориво ().' литара горива
'; // Креирамо другу инстанцу са другим возилом, на пример можемо створити променљиву која је марка и патент $ хондаХБ0071 = нови управљачки програм (нови аутомобили); ецхо $ хондаХБ0071-> ассигнвехицле ('Хонда', 'АЦЦОРД'). '
'; ецхо $ хондаХБ0071-> макеандмодел (). '
'; ецхо 'Гориво оптерећење'. $ хондаХБ0071-> оптерећење горивом (50). '
'; ецхо 'Цуррент фуел'. $ хондаХБ0071-> преостало гориво (). ' литара
'; ецхо 'Адванце Хонда возило
'; $ хондаХБ0071-> адванцеВехицле (); ецхо $ хондаХБ0071-> макеандмодел (). ' имате '. $ хондаХБ0071-> преостало гориво ().' литара горива
'; ?> вар13 ->
Хајде да видимо праве предности полиморфизма и наслеђивања класа, додајмо класу
 // Класа мотоцикала Мотоцикли проширују Возило {публиц фунцтион адванце () {// сваких 10 километара троши литар $ ово-> гориво - = 1; }} $ мото = нови возач (нови мотоцикли); ецхо $ мото-> доделите возило ('Иамаха', 'ИБР 125'). '
'; ецхо $ мото-> макеимодел (). '
'; ецхо 'Гориво оптерећење'. $ мотоцикл-> пуњење горивом (10). '
'; ецхо 'Цуррент фуел'. $ мото-> преостало гориво (). ' литара
'; ецхо 'Напредује моторно возило
'; $ мото-> адванцеВехицле (); ецхо $ мото-> макеимодел (). ' оставили сте '. $ мото-> фуелремаининг ().' литара горива
'; ?> вар13 ->

Овде можемо видети како успели смо да имплементирамо проширење исте класе кроз полиморфизам поновна употреба родитељске класе Возила и методе и својства која аутомобил и мотоцикл имају заједничко, иако се понашају различито, у овом случају можемо видети да је капацитет горива различит.
Могли бисмо да укључимо потребне прорачуне како бисмо повећали потрошњу горива према возилу.
Предност употребе полиморфизма је у томе што можемо створити сличне методе, али на пример са различитим параметрима.
Имплементација интерфејса са пХп
Интерфејси су декларације које дефинишу које методе класа може имплементирати, скривајући начин на који се те методе користе или управљају. Методе које су декларисане у интерфејсу морају бити јавне, да би им могле приступити класе које имплементирамо. Омогућавају инкапсулацију класа и полиморфизама.
За имплементацију интерфејса са пхп -ом користи се кључна реч имплементс. Ако имамо неколико метода декларисаних у интерфејсу, оне се морају применити у класи. Класе могу имплементирати више од једног интерфејса за приступ различитим методама, тако да можемо имати различите функционалности у различитим класама.
Видимо пример интерфејса
 
Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен
wave wave wave wave wave