ОХП -ын тухай

Өгөгдөл, дэд программууд (процедур, функцууд) тэдгээрийн боловсруулалтууд хоорондоо холбоо багатай байдаг процедур программчлалын үзэл санааны хөгжлийн үр дүнд обьект хандалтад программчлал үүссэн. ОХП -ын зарчмыг анхлан дэвшүүлсэн программчлалын хэл бол Норвегийн эрдэмтэн Оле-Йохан Далийн (Ole-Johan Dahl) боловсруулсан Симула (Simula) байсан юм. 1967 онд гарсан энэхүү хэлэнд обьект, класс, виртуал аргууд гэх мэтийн дэвшилтэд санаануудыг гарган тавьсан боловч тэр үедээ эдгээрт нэг их анхаарал хандуулаагүй өнгөрчээ.

Гэсэн хэдий ч Алан Кэе, Дэн Ингаллс нар ихэнх зарчмуудыг Smalltalk хэлэнд хөгжүүлэн оруулсан байдаг. Иймээс яг энэхүү хэл нь обьект хандалтад программчлалын хамгийн өргөн дэлгэрсэн анхны хэл болсон юм.  
Өнөөдрийн байдлаар ОХП-ын аргачлалыг нэвтрүүлсэн хэлүүдийн тоо нь бусад аргачлалуудтай харьцуулахад хамгийн ихээр тоологдохоор болжээ.
Объект хандлагат програмчлал гэдэг нь өгөгдлийг холбоо бүхий шинж, аргуудын харилцан ажиллагааг тодорхойлсон бүтэц хэлбэрээр зохион байгуулан программчлах техник юм. Програмчлалын энэ техник нь абстракц, энкапсулээшн (мэдээллийн далдлалт), полморфизм, инхэритээнс (удамшил) зэрэг үндсэн зарчмууд дээр тулгуурладаг.

Абстракц

ОХП -д абстракц гэдэг нь обьектод түүний бусад өөр обьектуудаас ялгарах шинж чанаруудын зарчмын ялгааг тодорхойлон олгохыг хэлнэ. Өөрөөр хэлбэл обьектыг илэрхийлэх мэдэгдхүйц шинж чанаруудыг нөлөө багатайгаас нь салгах арга. Үндсэн санаа нь обьектыг бүрдүүлэгчдийн өгөгдлүүдийг ашиглах аргыг тэдгээрийн боловсруулалтыг илүү энгийн обьект хэлбэрээр салгахад оршиж байгаа юм. Жишээ нь функцийг ашиглах арга, ажиллагааг энгийн функцуудаар хэрэгжүүлэхийг салган өгөх функционал абстракцтай адилаар. Ингэснээр өгөгдөлүүд доод түвшингийн функцуудын тусламжтайгаар дээд түвшингийн функцээр боловсруулагдах юм. Энэ аргачлал нь ОХП-ын үндэс болдог бөгөөд обьекттой ажиллахдаа тэдгээрийн хэрэгжилтэнд хэт орохгүйгээр ажиллах боломжийг олгоно. Тодорхой тохиолдол бүрд энкапсулээшн (мэдээллийн далдлалт), полиморфизм, инхэритээнс (удамшил) зарчмуудын аль нэгийг хэрэглэдэг. Жишээ нь обьектын далд өгөгдлүүдэд хандах хэрэгтэй болбол энкапсулээшн ашиглан хандалтын функц эсхүл шинжийг үүсгэх гэх мэтээр.
Өгөгдлийн абстракц бол программчлалын өргөн дэлгэрсэн техник. Үндсэн санаа нь бол дэд программын боловсруулалтын чухал биш хэсгийг түүнийг тодорхой зорилгод ашиглахад чухал шинж чанаруудаас салгах юм. Ийм салгалтыг программын ашиглалтын бүх боломжуудыг тодорхойлсон тусгай интерфейсээр дамжуулан илэрхийлэх боломжтой.

Энкапсулээшн (мэдээллийн далдлалт)

Энкапсулээшн гэдэг бол программын модулийн ажиллагааны нарийн зүйлийг хэрэглэгч мэдэх шаардлагагүйгээр түүнийг ашиглах боломжийг олгох программчлалын хэлний чанар юм. Өөрөөр хэлбэл программын модул дотор юуг хэрхэн гүйцэтгэж байгааг мэдэх албагүй. Чанар нь хэрэглэгч программын модултай харьцахдаа түүний нийтийн (public) арга ба шинжүүдээр дамжих түүнчлэн чухал хэрэгтэй өгөгдлүүдийг хамгаалах механизмыг бүрдүүлнэ. Хэрэглэгч обьекттой зөвхөн нийтийн (public) арга ба шинжүүдээр дамжин харьцах интерфейс олгосноор обьектын чухал шинж, болон техникийн гүйцэтгэлүүдийг хамгаалахад тустай. Энэ нь оролт гаралт бүхий "хар хайрцаг" ны зарчимтай төстэй. ОХП-д классыг боловсруулахад энэ механизмыг өргөнөөр ашигладаг.

Инхэритээнс (удамшил)

Удамшил (өвлөх гэж ч ярьдаг) бол өмнө нь үүсгэсэн классын (эцэг) шинж болон аргуудыг өвлөн авах шинэ классыг тодорхойлох боломжийг олгох механизм. Өөрөөр хэлбэл өвлөн авагч класс нь өмнө нь үүсгэсэн байсан классын (суурь класс) боломжуудыг гүйцэтгэх чадвартай гэсэн үг.
Зарим хэлүүдэд абстракт класс гэж байдаг. Шууд обьект үүсгэх боломжгүй классыг абстракт гэдэг. Ийм классуудыг тодорхойлохдоо abstract түлхүүр үгийг ашигладаг. Классуудаас обьектыг үүсгэхдээ түүнээс удамшуулсан классыг ашигладаг. Эндээс абстракт классаас зөвхөн инхэритээнс (удамшил) хийх боломжтой гэсэн үг.
Класст нэгээс илүү "эцэг" буюу суурь класс байж болох ба үүнийг олон удамшил гэнэ. Энэ тохиолдолд үүсгэгдсэн класс өөрийн "эцэг" -үүдийн бүх аргуудыг өвлөн авна. Ийм аргачлалын сайн тал гэвэл илүү уян хатан байдал. Олон удамшил механизмыг C++, Python, Эйфель зэрэг хэлүүд дэмждэг. Хэрвээ "эцэг" классуудад ижил нэртэй аргууд байсан тохиолдолд энэ механизмд алдаа гарах эх үүсвэр болно. Бараг ихэнх тохиолдолд энэ механизмыг ашиглахгүй байх боломжтой. Гэхдээ олон удамшил механизмыг ашиглах шаардлагатай болсон бол "эцэг" классуудад ижил нэртэй аргууд байгаа эсэхийг судлах хэрэгтэй.

Полиморфизм

Нэг ижил ангилалын обьектуудын төрөл бүрийн шийдлүүд байх боломжийг полиморфизм гэнэ. Классын шийдлийг удамших үед нь өөрчилж болдог бол полиморфизм дэмждэг программчлалын хэл гэнэ. Механизмын утгыг хураангуйлан хэлбэл "Нэг интерфейс (класс) олон шийдэл" гэж болно. Энэ зарчим нь программыг илүү абстракт болгохын зэрэгцээ кодын дахин ашиглалтын коэффициентийг өндөр болгон өгдөг. Обьектуудын ерөнхий шинжүүдийг системд нэгтгээд интерфейс, класс гэх мэтээр нэрлэж болно. Ерөнхий байдал нь гадаад, дотоод илэрхийлэлтэй байдаг. Гадаад төстэй байдал гэдэгт адилхан нэртэй аргууд, аргуудын багц, аргументын төрөл, тоо зэрэг байх бол дотоод ерөнхий зүйл гэвэл аргуудын ижил үүрэг функцууд байж болно. Нэг аргад өөр өөр үүрэг зориулалт олгохыг аргыг дахин тодорхойлох гэж нэрлэдэг.  

Дээр дурдсан 4 зарчим бол ОХП-ын үндсэн зарчмууд. Онолын талаасаа нилээд ярвагтай ойлголт мэт санагдаж болох ч бид программ бичихдээ эдгээрийг тогтмол хэрэглээд явдаг. Эдгээрийг хэрхэн хэрэгжүүлж байгааг ОХП-ын талаар нийтлэлүүдээс үзээрэй.

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 2232 Нийтийн

Бид АУСистемийнхээ үндсэн класс, хэрэглэгч болон админ талын скриптүүд, баазаа үүсгээд байгаа. Одоо сайтын хэв буюу темплейт хэсгийг кодлох ажилдаа орох цаг болсон. Ингээд энэ хичээлээр хэрэглэгчийн талын хэсгийн хэвийг үүсгэх ажлыг хийх болно.

Оруулан ирэх файлууд.

Манай системийн хуудаснуудын толгой, хөл хэсгүүд бүх хэсэгт ижилхэн байхаар төлөвлөсөн. Энэ нь бичигдэх кодыг бага болгохын дээр сайтын темплейтийн стандарт хэсгийг хэрхэн боловсруулж ашиглахыг харуулах зорилготой. Сайтын үндсэн хавтаст templates нэртэй хавтас үүсгээд түүн дотроо include нэртэй хавтасыг үүсгэнэ.

  Нээгдсэн тоо: 12105 Нийтийн

PHP (Personal Home Page Tools) гэдэг нь веб сервер дээр HTML хуудас үүсгэхэд зориулагдсан програмчлалын хэл юм. Энэ хэлийг сурснаар та хуудасны тоолуур, зочны хуудас гэх мэт энгийн програмаас хэрэглэгчийн үйлдлийг хянах чадвартай том хэмжээний веб сайтыг зохиох боломжтой. Хэлний бүх боломжийг тайлбарлан бичихэд олон хуудас материал болох хэдий ч хэл нь хэн ч үзэхэд энгийн ойлгомжтой. Өнөөдөр олон мянган програм зохиогчид PHP ашиглаж, сая сая веб сайтууд энэ хэл дээр ажиллаж байна.

Хэлний түүхээс

PHP нь програмчлалын бусад хэлнүүдээс ялгаатай нь хэлийг ямар нэгэн компани эсвэл мундаг програм зохиогч боловсруулаагүй харин Расмус Лердорф гэх жирийн програм зохиогч 1994 онд зохиосон. Хэл зохиосон зорилго нь Расмус өөрийн веб хуудасаа илүү интерактив байдалтай болгох байлаа. Удалгүй Расмус програмчлалын C хэл дээр өгөгдлийн сантай холбогдох боломжтой эхний хувилбарыг гаргасан. Энэ нь хэрэглэгчдэд энгийн веб програм зохиох бололцоог олгосон.
1997 онд веб формтой ажиллах боломжтой PHP/FI 2 (Personal Home Page / Form Interpreter) хувилбар гарсан. Энэ хувилбарыг боловсруулах ажилд нилээд олон хүмүүс оролцон ажилласан байна. Ер нь хэл нь анхнаасаа нээлттэй кодтой байсан нь хэн хүссэн хүн хэлийг боловсронгуй болгох ажилд оролцох боломжийг нээж өгсөн. Эдгээр хүмүүст Зив Сураски (Zeev Suraski), Энди Гутманс (Andi Gutmans) нар нь зүй ёсоор тооцогдоно. Расмус дээрх хүмүүстэй хамтран ажилласны үр дүнд 1998 онд PHP 3 гэсэн албан ёсны хувилбарыг гаргасан. Үүний дараа хэл зохиогчид PHP –г цаашид улам боловсронгуй болгосноор 2000 онд хэлний 4.0 хувилбар гарсан ба эдүгээ хэлний 5.0 хувилбар гараад байгаа билээ.

  Нээгдсэн тоо: 1379 Төлбөртэй

Класс, обьект , өвлөгдөх механизмын талаар ойлголттой болсон болохоор одоо шинж болон аргуудын харагдах байдлын талаар авч үзэцгээе. Арга ба шинжүүдэд хандалтыг public, protected, private гэсэн түлхүүр үгнүүдийг ашиглан зохицуулдаг. Өмнөх хичээлүүдэд бид бүх шинжүүдийг public (нээлттэй) хэлбэрээр зарлаж байсан. Ийм төрөл нь бүх аргуудад анхдагч байдлаар өгөгддөг. Өөрөөр хэлбэл аргад ямар төрлийнх гэдгийг шууд заагаагүй бол түүнийг public гэж тооцдог. Классын элементүүдийг public (нээлттэй), protected (хамгаалагдсан), private (хаалттай) байдлаар зарлах боломжтой. Эдгээрийн ялгааг авч үзвэл:

  Нээгдсэн тоо: 4261 Төлбөртэй

Бүх л програмчлалын хэлүүд өгөгдлийн сантай ажилладагийн адилаар PHP нь бас өгөгдлийн сантай ажиллана.
Өгөгдлийн сан - мэдээллийг хадгалагч. Ер нь үүнээс өөр төрөл бүрийн дэлгэрэнгүй тодорхойлолтууд байдаг хэдий ч бид үүгээр хязгаарлахад болно. Өгөгдлийн сан нь мэдээллүүдийг хадгалах тул тэдгээртэй ажиллах програм хэрэгтэй. Иймээс ӨСУС (өгөгдлийн санг удирдах систем) бий болсон. PHP нь өгөгдлийн сантай зөвхөн ӨСУС –ээр дамжин ажилладаг. Өгөгдлийг хадгалах зохион байгуулалтаараа сангууд хэд хэдэн төрөлд хуваагдана. Гэхдээ өнөөдөр холбоост өгөгдлийн сангийн модел нь хамгийн өргөн дэлгэрсэн хэлбэр бөгөөд бид энэ санг авч үзэх болно. Ямар ч холбоост өгөгдлийн сан нь хүснэгтүүдээс бүрдэнэ. Хүснэгт нь багана (талбар), мөр (бичлэгээс) бүрдэнэ. Жишээ нь

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

Нээгдсэн тоо : 352

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

Нээгдсэн тоо : 443

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

Нээгдсэн тоо : 416

 

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 491

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 565

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 555

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 688

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 814

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 818

 
Энэ долоо хоногт

функцийн тодорхойлогдох мужийг ол.

Нээгдсэн тоо : 1547

 

Арифметик прогресын 3-р гишүүн 5, 7-р гишүүн 13 бол эхний 10 гишүүний нийлбэрийг ол.

Нээгдсэн тоо : 896

 

тэгшитгэлийн шийдүүдийн нийлбэрийг ол.

Жич: Тэгшитгэлийг заавал бодох гээд үзээрэй. Иймэрхүү бодлого ЭЕШ -д бараг ирэхгүй ч математикийг ганцхан ЭЕШ -аар хязгаарлавал та өөрийгөө хөгжүүлэхээ боомилсонтой адил.

Нээгдсэн тоо : 555