ОХП -ын тухай

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

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

Абстракц

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

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

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

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

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

Полиморфизм

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

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

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

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

Файлтай ажиллах

Файл нь мэдээлэл хадгалагч дээрх нэр бүхий хэсэг. Файлтай ажиллахын тулд эхлээд түүнийг нээх хэрэгтэй. Энэ зорилгод ихэнхдээ fopen() функцыг ашигладаг. Функц нь нээх файлын нэр болон нээлтийн горимыг заасан тусгай тэмдэгтүүдийг оролтын параметр болгон авна. Эхний параметрын хувьд хэрвээ заагдсан нэртэй файл байхгүй бол функц нь алдаа өгнө. Функцээс source төрлийн утгатай файлын дискрипторийг (файлыг нээхэд олгогдсон дугаар) буцаана. Файлыг нээх ажиллагаа бүтэлгүй болсон тохиолдолд FALSE утгыг буцаана. Хоёрдугаар параметр нь файл нээх горимыг заах бөгөөд доорх утгуудыг авна.

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

Манай АУС бараг бэлэн болсон. Сайтын харагдах байдлыг сайжруулах үүднээс бид сайтын үндсэн хавтаст CSS хэвийн хүснэгтийг style.css нэртэйгээр үүсгээд доорх кодыг оруулан өгнө.

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

Яагаад зөвхөн мөрний тухай тусгай хичээл байгаа талаар та гайхаж байж магадгүй. Өнгөцхөн харвал мөр гэдэг нь String гэсэн төрөл бүхий хувьсагч гэдгээс тэгж харагдаж болох талтай. Гэхдээ PHP -д мөртэй үр дүнтэй ажиллахын тулд энэ сэдвийг гүнзгий ойлгосон байх шаардлагатай.

Мөр гэдэг нь String төрөлтэй хувьсагч ба үнэндээ бол тэмдэгтүүдийн багц юм.

Мөрийг дараах байдлаар тодорхойлж болно.

$string_1="Сайн байна уу";          // давхар хашилттай мөр
$string_2='Сайн байна уу';            // дан хашилттай мөр

Мөрийг тодорхойлох нь хувьсагчид утга олгохтой яг ижилхэн хийгдэж байгаа хэдий ч нэг эсвэл давхар хашилтыг мөр дотор гаргах үед асуудал гарахаар байна. Хэрвээ бид

$str="Тэр "сайн байна уу" гэж хэлэв";
echo $str;

гэсэн кодыг бичвэл програмын ажиллагаа нь мөрөнд утга олгох оператор дээр алдаа өгөх болно. Учир нь мөр гэдэг нь хамгийн ойрхон байрлах хашилтын хоорондох тэмдэгтүүдийн багцыг хэлнэ. Иймд дээрх код нь алдаа өгнө. Энэ байдлаас гарахын тулд бид (\) налуу зураас тэмдэгтийг ашиглана. Тэгвэл дээрх кодыг

  Нээгдсэн тоо: 1700 Бүртгүүлэх

Обьект хандалтад программчлалыг суралцахад тойрон гарах аргагүй нэг чухал сэдэв бол онцгой байдлын (exceptions) боловсруулалт юм. Сэдвийг ойлгоход хялбар байх үүднээс шууд онцгой байдал буюу exceptions -ийн тодорхойлолтоос эхлэе. exceptions гэдгийг онцгой байдал гээд орчуулчихлаа. Хир оновчтой болсныг сайн мэдэхгүй. Гэхдээ ойлгох нь чухал даа.

Математикийн үйлдлүүдэд нэг ба тэг тоонууд онцгой шинжүүдтэй. Үржих үйлдэлд нэг ба тэг

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

 

Давталт (Iterator) паттерн нийлмэл обьектын бүх элементүүдэд тэдгээрийн дотоод бүтцийг задлахгүйгээр хандах абстракт интерфейсийг тодорхойлдог. C# хэл дээр…

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

 

Тодорхой нөхцөлд жишээ нь тоог тэгд хуваах гэх мэт тохиолдолд систем өөрөө онцгой нөхцлийн генерацийг хийдэг. Гэхдээ C#

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

 

Програмийг удирдах цэсийг нээх болон хаах ажиллагааг хариуцах компонентийг боловсруулъя. Үүний тулд төслийн components хавтаст Navigation хавтасыг үүсгээд…

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

 

Арифметикийн үндсэн 4 үйлдлийн нэг бол үржих. Нэмэх , хасах үйлдлийн талаар…

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

 

Шаблоны арга (Template Method) хэв дэд классуудад алгоритмын бүтцийг өөрчлөхгүйгээр зарим алхамуудыг дахин тодорхойлох боломж олгосон ерөнхий алгоритмыг…

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

 

Гурвалжны медиантай холбоотой бодлогууд шалгалт шүүлэгт ихээр орж ирдэг. Иймээс гурвалжны медиан, түүний шинжүүдийг бүрэн мэддэг байх хэрэгтэй.

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

 

Бүх онцгой нөхцлүүдийн суурь бол Exception төрөл. Төрөлд онцгой нөхцлийн талаарх мэдээллийг авч болох хэдэн шинжийг тодорхойлсон байдаг.…

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

 

Сорилгын үр дүнгийн QuizResult компонентод сорилгыг дахин эхлүүлэх товч байгаа. react -ийг зохиогчид  програмийг компонент дээр суурилан хийх…

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

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

илэрхийллийг хялбарчил

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

 

ABCD трапецийн бага диагонал BD=6 бөгөөд суурьтай перпендикуляр. Трапецийн AD=3, DC=12 бол B, D мохоо өнцгийн нийлбэрийг ол.

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

 

Геометрийн шалгалтанд сурагчид шалгалтын асуултуудаас нэг асуулт ирнэ. Сурагч "Дотоод өнцөг" сэдвийн асуултуудад хариулах магадлал 0,35 харин "Багтаасан тойрог" сэдвийн асуултуудад хариулах ммагадлал 0,2 байжээ. Шалгалтын асуултуудад энэ хоёр сэдэвт хоёуланд зэрэг хамаарах асуулт байхгүй бол сурагчид энэ хоёр сэдвийн аль нэгэнд нь хамааралтай асуулт ирэх магадлалыг ол.

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