SlideShare a Scribd company logo
Объект хандлагат програмчлалын хэл  Java Хичээл :  C S203 Багш :   Д.Энхжаргал Mongolia University of Science & Technology Лекц №2.  Java  хэлний үүсэл хөгжил,  Анхны хялбар програмын бүтэц, ажиллах зарчим
ОХТехнологиин үндсэн ойлголтууд ОХТ-ийн үндсэн ойлголтууд: Class Object Instance Message Encapsulation Inheritance & Method override Polymorphism Объект Хандлагат Технологийн тулгын 3 чулуу: E n с apsulation I nheritance P olymorphism   буюу товчоор  ( EIP)
ОХ Технологиийн үндсэн ойлголтууд Class :   Ижил шинж чанар болон үйлдлүүдтэй бүлэг объектуудын нэгдэл юм.   Өөрөөр хэлбэл:  ОХП-д Класс нь өгөгдөл үйлдлүүдээс бүрдэнэ. Object:  классын нэг тохиолдол.   ӨХ: Класс бол төрөл, объект нь  тухайн төрлийн хувьсагч юм. Объект бүр өөрийн дахин давтагдашгүй шинж чанартай. Message:  мэдээ, зурвас. ОХП-д объектууд хоорондоо мэдээ дамжуулах бөгөөд  Message sending  нь нэг ёсондоо объектын  гишүүн функц   дуудалт юм. Encapsulation  -Битүүмжлэл Inheritance  - Удамшил   Method override   -Даран тодорхойлогдсон арга   Method overload –  Дахин тодорхойлогдсон арга Polymorphism  – Олон хэлбэршил   Data hiding  - Өгөгдлийн далдлалт Method  -Арга буюу классын гишүүн функц
Java хэлний үүсэл гарал   1991 онд Sun Microsystems Inc компаниас тухайн үеийн зах зээлд ихээхэн нийлүүлэгдэж байсан ахуйн хэрэглээний электрон төхөөрөмжүүдүүдийг байрлалаас (платформоос) үл хамааран удирдах програмчлалын хэлний хэрэгцээ, шаардлагыг соргогоор мэдэрч “Green” төслийг санаачлан хөгжүүлсэн.  Хэдийгээр Green төсөл 1993 онд  бизнесийн шалтгааны улмаас зогсоход хүрсэн боловч Sun компани нийтийг хамрах болсон вэбийн хэрэглээнд зориулан “Оак” хэлийг интернет програмчлалд ашиглах болсон Хожим нь тэд “Оак” нэртэй өөр програмчлалын хэл байдагийг олж мэдээд 1995 онд програмчлалын хэлнийхээ нэрийг Java болгон өөрчилсөн.  Ийнхүү дөрвөн жилийн нөр их хөдөлмөрийн үр дүнд Java хэлийг 1995 онд олон нийтэд албан ёсоор зарлажээ.
Java хэлний үүсэл гарал   Өнөөдөр Java хэл нь том хэмжээний (large-scale) энтерпрайзын хэрэглээний програм хангамжуудыг хөгжүүлэх, вэб серверүүдийн үйл ажиллагааг сайжруулах, цахилгаан төхөөрөмжүүдийн удирдлагын програмчлал зэрэг олон янзын хэрэглээнд ашиглагдаж байна. Java хэл нь C++ хэл дээр түшиглэн зохиогдсон гэдэг утгаараа түүнд Си хэлний синтакс (бичиглэлийн дүрэм), C++ хэлний объект хандлагат ойлголтуудыг өөртөө шингээсэн тэдгээрийн хязгаарлагдмал, сул талыг шийдвэрлэж чадсан хэрэглээний өргөн боломжтой хүчирхэг хэл юм.  Дашрамд дурдахад Си хэл бол бүтэцлэгдсэн буюу уламжлалт програмчлалын хэлний гол төлөөлөгч бөгөөд C++ хэл нь Си хэлэн дээр түшиглэн зохиогдсон. Товчхондоо, C++ хэл нь Си хэлийг обьект хандлагат чанруудаар баяжуулан сайжруулсан хэл юм. үргэлжлэл
Java програмын хөгжүүлэлтийн орчин   Алхам 1:  Java програмаа үүсгэж  java өргөтгөлтэй хадгалах.  ямар нэг едитор програм ашиглан java өргөтгөлтэй файл (filename.java) үүсгэн хадгална.  Алхам 2:  Java програмаа байт код руу хөрвүүлэх .  Програмаа хөрвүүлэхдээ javac (Java compiler) командыг ашиглана. Тухайлбал, hello.java нэртэй програмыг хөрвүүлэхийн тулд командын  урилгын мөрөнд   javac hello.java   хэмээн бичиж өгнө. Хэрвээ програм алдаагүй хөрвүүлэгдсэн бол програмын хөрвүүлэгдсэн хувилбарыг агуулах  .class  файл (class өргөтгөлтэй файл) тухайн директорт үүснэ.  Байт-код (bytecode) нь Java процоессорт зориулагдсан заавруудын дараалал  юм.  javac нь  бидний бичсэн  програмыг байт-код руу хөрвүүлнэ.
Java програмын хөгжүүлэлтийн орчин Java   Virtual   Machine (JVM)  гэдэг бол компьютерийн систем дээр ажиллаж буй  Java  интерпретатор юм.  Өх:  JVM  нь байт-кодыг төв процессорт ойлгомжтой хэл рүү хөрвүүлэгч програм юм. Дээрх зураг дээрх Java интерпретатор (interpreter) нь компьютерийн систем дээр ажиллаж буй биелэгдэх програм бөгөөд компьютерийн систем (платформ) бүр өөрийн гэсэн Java интерпретатортой.  "Бодит процессор" гэсэн нь компьютерийн систем ийн  төв процессорыг хэлж байна. үргэлжлэл
Java програмын хөгжүүлэлтийн орчин Java -гийн байт - кодууд нь  JVM   агуулах ямар ч платформ дээр биелэгддэг тул  Java  хэлийг авсаархан ( portable ) хэлэнд тооцдог.  Java виртуаль машин (Virtual Machine) нь байт-кодыг машины хэл рүү хөрвүүлдэг. Тэгэхлээр Java Virtual Machine нь байт-кодын интерпретатор (interpreter) юм.  үргэлжлэл
Java програмын хөгжүүлэлтийн орчин Алхам 3:  Програмыг санах ой руу ачаалах  .  Програм биелэгдэхийнхээ өмнө санах ойд байрлахыг ачаалах ( loading ) гэнэ.  Классын ачаалагч нь програмын байт - кодыг агуулах . class  файлыг үндсэн санах ой руу дамжуулдаг. Түүгээр ч зогсохгүй таны програмд ашиглагдсан . class  файлуудыг мөн адил санах ойд ачаалдаг. Ачаалагдах тэдгээр . class  файлууд нь компьютерийн хатуу дискэнд эсвэл сүлжээнд ч байрладаг байж болох юм. Алхам 4:  Байт кодыг хянах .  Классууд ачаалагдахад байт-кодыг хянагч ( bytecode   verifier ) нь тэдгээр байт-кодууд нь  Java -гийн  security  (нууцлал хамгаалалт)-ын шаардлагуудыг хангаж байгаа эсэхийг нягтлана. Энэ нь сүлжээгээр дамжигдан ирж буй  Java  програмууд нь таны файлууд болон системийн хэвийн үйл ажиллагаанд саад учруулахгүй байхад онцгой анхаарч аюулгүйн баталгаа гаргаж өгдөг.  Алхам 5 : Биелэлт .  JVM  нь програмын байт-кодыг биелүүлэх замаар програмд тодорхойлсон үйлдлүүдийг гүйцэтгэдэг.  Java -гийн эхний хувилбаруудад  JVM  нь  Java  байт-кодыг хялбархан хөрвүүлдэг ( interpreter ) байсан. Ихэнхи  Java  програмууд нь удаан ажилдаг байсан шалтгаан гэвэл  JVM  тухайн агшинд нэг л байт-кодыг хөрвүүлж биелүүлдэг. JVM -ийг  java  командаар холбож ажлуулдаг. Тухайлбал,  hello  нэртэй  Java  програмыг ажлуулахдаа командын урилгын  мөрөнд    java   hello   хэмээн бичиж өгнө.  үргэлжлэл
Java хэлний програм биелэх дараалал   үргэлжлэл
Java 2 -ийн just-in-time (JIT) компилятор J ust-in-time (JIT) нь Java програмын биелэлтийн хурдыг нэмэгдүүлэх зорилгоор бүтээгдсэн компилятор юм   .  JVM-ийн нэг хэсэг бөгөөд байт-кодыг хэсэг хэсгээр хэрэгцээтэй үед нь компиляци хийдэг.  Өх: Java програмыг шууд бүхлээр нь биелэх кодонд компиляци хийхэд учир дутагдалтай байдаг учраас just-in-time (хэрэгтэй цагт нь) гэж нэрлэгдэх компилятороор кодыг биелэлтийн үед шаардлагатай хэмжээгээр компиляц хийдэг. Java 2  нь мөн програмын дахин дахин биелэгдэх хэсэг ( Hot spots)-ийг тодорхойлон хөрвүүлэлтийг сайжруулж хурдыг нэмэгдүүлэх боломжоор хангагдсан.
Анхны хялбар Java програм ын бичлэг 1 мөрийн public:  Хандалтыг тодорхойлогч түлхүүр үг бөгөөд  түүнд програмын дурын хэсгээс хандаж болох нийтийн хандалт  юм. Анхаар ! main  функцыг  ( аргыг )  агуулах класс үргэлж  public  ханд алттай байна. class :   Java  хэлний бусад програмчлалын   хэлнүүдээс ялгарах   нэг ялгаа бол   түүний үндсэн код ( main  функц)   ямар   нэг класс   (class)  дотор бай даг .  Манай програмын агуулга их хаалт  { … }- нд бичигдэнэ.  Гэхдээ энэ нь ОХП хэлнүүдийн гол онцлог болсон өгөгдлийн хийсвэрлэл болох   класс хараахан биш юм шүү. Энэ нь зүгээр л  Java  хэлний хувийн онцлог Hello : классын нэр нь програмыг агуулсан файлын нэртэй  адилхан  байх ёстой.   Java  хэл нь үсгэн мэдрэгчтэй  (case sensitive)  хэл. ӨХ: том жижиг үсгийн ялгааг мэдэрдэг. Манай програмын нэр  Hello.java  байх ёстойг анхаарна уу !
Анхны хялбар Java програм ын бичлэг 2 мөрийн public :   main  арга  ( функц )   public  ханд алттай байдаг.  Учир нь аливаа програмын үндсэн код болох main аргыг далдлах шаардлагагүй байдаг.  static :  Аливаа Java програм ажиллах үед  JVM   нь ямар нэгэн обьект үүсэхээс өмнө санах ойд тогтмол (статикаар) байрлах main аргыг дуудаж ажлуулдаг.  Иймд main аргыг зарлахдаа static түлхүүр үгийг ашигладаг.  void :  main аргыг зарлахдаа буцаах утгыг void ( хоосон) хэмээн тодорхойлсон байна. Энэ нь тухайн арга үйлдлээ гүйцэтгэж дуусаад ямар нэгэн тодорхой утга буцаахгүйг илэрийлж байна .  String [] args: аливаа арга  ( функц ) -д мэдээлэл (параметр) дамжуулахдаа дугуй хаалт ()-ийг ашигладаг. энд main аргад String төрлийн args нэртэй массивыг параметр болгон тодорхойлсон байна. Тэгэхээр Java програмд аргументууд дамжуулвал тэдгээрийг тэмдэгт мөр төрлийн хувьсагч байдлаар хүлээн авдаг болох нь харагдаж байна.   үргэлжлэл
Анхны хялбар Java програм ын бичлэг 3  мөрийн System.out.println("Hello world!");   өгүүлбэртэй танилцъя. System.out   буюу стандарт гаралтын объектын  println  хэмээх арга нь стандарт гаралтын төхөөрөмж рүү мэдээлэл гаргах үүрэгтэй арга юм. Өх.  println  арга нь системийн хандалтыг зохицуулах  System  хэмээх стандарт классын  out  объектын арга  ( гаралтанд харьяалагдах арга )  юм.  Классын хувьсагч болох объектын гишүүн өгөгдөл ба аргуудад хандах бичиглэлийн ерөнхий хэлбэр [Object name]. [variable name] [Object name]. [method name] ([parameters]) Манай жишээнд  println  аргад  Hello world!   гэсэн тэмдэрт мөрийг аргумент болгон дамжуулсанаар түүнийг дэлгэцэнд хэвлэж байна. Цаашид бид энэхүү энэхүү  System.out  объектын   println  аргыг өргөн ашиглана.  үргэлжлэл Програмын код нь тодорхой зорилгын дор тодорхой дарааллаар биелэгдэх statement буюу өгүүлбэрүүдээс бүрдэнэ. Өгүүлбэрүүд нь хоорондоо цэгтэй таслал (;)-аар зааглагддаг.
Манай хичээл програмчлалын хэл судлахаас гадна гол нь програмчлалын дэвшилтэт ТЕХНОЛОГИ судалж байгаа гэдэг утгаараа оюутан лабораторийн ажил гүйцэтгэхээс гадна онолын мэдлэгээ бататган, онолын ойлголтуудаар чөлөөтэй жишээ гарган ярилцаж, тэдгээр ойлголтын давуу боломж, хэрэглээний ач холбогдлын талаар  тайлбарлах чадвартай байх шаардлагатай. Өнөөдөр бидний хэлэлцэх асуудал ? Эхний лаборатори дээр туршиж үзсэн дасгал ажлаар гүйцэтгэсэн алхмуудын цаана хийгдэж байгаа үйл ажиллагааны зарчмыг сайтар ойлгож, хаанаас нь ч асуусан тайлбарлаж чаддаг байх ! Ямар үед  path  хувьсагчид утга олгох шаардлага гардаг вэ ?  Ямар утга олгодог вэ? Ямар арга замуудаар олгох боломжтой вэ ? Консолоос  Java  програм ажлуулахад  DOS -ийн командуудын үүрэг, хэрэглээ Хэлэлцэх асуудал
Encapsulation En capsul ation :   Тухайн объектод шаардлагатай өгөгдлүүд болон үйлдлүүдийг нэгтгэн далдлах үйл явц юм. Нэгтгэх: Тухайн объектын өгөгдлүүд болон функцуудыг нэг капсулд хийх. Далдлах: Объектын дотоод бүтцийг далдлах Тухайн объектод шаардлагатай өгөгдлүүд Тухайн объект дээр хийгдэх үйлдлүүд Computer Processor speed RAM Use(); Buy();
Хийсвэрлэл  (Abstraction) Хүн төрөлхтөн өөртөө хүндрэлтэй асуудлаа хийсвэрлэн дүрсэлж ирсэн бөгөөд бодит амьдралын биет юмсыг тэр чигээр нь компьютерт буулгах боломжгүй учраас програм зохиогч нь үйл ажиллагаандаа хийсвэрлэлийг өргөнөөр ашигладаг.   Програмчлалд бодит амьдралын шаардлагад нийцүүлэн асуудлаа оновчтой хийсвэрлэж оруулсанаар  програмын хүндрэл  (software complexity)- ийг шийдвэрлэх боломжтой. Програмын хүндрэл  (software complexity)   яагаад үүсч байна? Аливаа байгууллагын үйл ажиллагаанд програм хангамжийн хэрэглээ улам бүр өсч байна Хэн ч системийг бүхлээр нь ойлгохооргүй нарийн нийлмэл үйл ажиллагааны цогц байдаг. Програм хангамж нь хэрэглэгчийн гар дээр очсон цагаасаа эхлэн тодорхой хугацаанд  засвар үйлчилгээг шаарддаг. Гэтэл тухайн програмыг зохиосон програм зохиогч ажлаасаа хэдийн гараад явчихсан байх нь түгээмэл үзэгдэл юм. Ялангуяа Объект Хандлагат Технологи нь хийсвэрлэлтийг илүү сонгодог утгаар нь хэрэгжүүлдэг учраас хүчирхэг технологи болж чадсан гэхэд хилсдэхгүй. Учир нь уламжлалт буюу бүтэцлэгдсэн аргаар систем хөгжүүлэхэд програмын код нь өгөгдлөө удирддаг учраас програмын гол цөм гэж үзэн програмын функцэд илүү ач холбогдол үзүүлж ирсэн. Харин Объект Хандлагат аргаар систем хөгжүүлэхэд эсрэгээр өгөгдөл нь функцээ удирддаг гэж үздэг.ОХПрограмчлалын хэлнүүд нь өгөгдлийн хүчирхэг хийсвэрлэлтийг ашигладаг.  Өгөгдлийн хийсвэрлэл  (Data abstraction)
Хийсвэрлэл  (Abstraction) Аливаа програмчлалын хэл нь өгөгдөл болон түүнийг боловсруулах функцээс бүрддэг. Процедур хандлагат програмчлалын хэлнүүд функцэд суурилсан байдаг бол  Java, C++  гэх мэт хэлнүүд нь өгөгдлийн хийсвэрлэл буюу объектод тулгуурласан тул тэдгээрийг Объект Хандлагат Програмчлалын хэл гэдэг.   Хийсвэрлэл нь  “ ямар нэгэн зүйл ” -ийг тодорхой шинж чанараар нь бүлэглэн, хэрэггүй хэсгээс нь тусгаарлах үйл явц юм.  Бүтэцлэгдсэн програмчлалд хийсвэрлэлийг хэрэгжүүлэх гол хэсэг нь функц байсан. Харин ОХПрограмчлалд классд өгөгдөл болон функцуудыг нэгтгэн далдлаж өгсөнөөр Өгөгдлийн Хийсвэр Төрөл  ( ӨХТ )  тодорхойлж, ашиглах замаар хийсвэрлэлийг хэрэгжүүлдэг.  Програмчлалын хэл бүр өөрийн гэсэн Өгөгдлийн Хийсвэр Төрөл  ( ӨХТ ) -тэй. Тухайлбал: Паскаль хэлний ӨХТ нь Бичлэг  (record) С хэлний ӨХТ нь Бүтэц  (struct) Java  болон бусад ОХПрограмчлалын хэлний хувьд ӨХТ нь класс  ( class)  юм.   Хийсвэрлэл Generalization  – ижил төстэй шинж чанраар нь бүлэглэн ерөнхийлөх Extensibility  -Өргөтгөх буюу удамшуулах Flexibility – кодын өөрчлөлт болон шинэ онцлогийг хялбархан оруулах боломж Өгөгдлийн хийсвэрлэл  (Data abstraction)
Өгөгдлийн хийсвэрлэл  (Data abstraction) Generalization – ижил төстэй шинж чанараар нь бүлэглэн ерөнхийлөх Extensibility – Өргөтгөх буюу удамшуулах 3.  Flexibility –  кодын өөрчлөлт болон шинэ онцлогийг хялбархан оруулах боломж Гишүүн өгөгдлийг шинээр тодорхойлох
ОХ Технологиийн үндсэн ойлголтууд:   Объект Объект:  Бодит амьдралын биет юм буюу түүний хийсвэрлэл юм. Объект  Бодит зүйлс. Жишээ нь: машин, камер, үүл Хийсвэр зүйлс. Жишээ нь: хичээл, шүлэг... Бодит ертөнц объектуудаас бүрддэг
Класс  Объект хэмээх ойлголттой салшгүй холбоотой.   Ижил шинж чанар, үйлдлүүдтэй бүлэг объектуудын нэгдэл юм. Объект Бид өдөр тутмынхаа амьдралд янз бүрийн объектуудтай харьцаж байдаг. Бодит амьдралын биет юмс буюу түүний хийсвэрлэл юм. Жишээ нь: Бодит объект: Ном, Үзэг, Компьютер... Хийсвэр объект: Хичээл, Шүлэг Аливаа систем нь объектуудаас бүрддэг.  ОХПрограмчлалд Объект нь Шинж чанар  ( өгөгдөл ) Үйлдэл  ( функцууд ) -ийн нэгдэл юм. Жишээ нь:  Машин   Класс, объект Машин Íýð ¯íý Өнгө Давхих Õóäàëäàæ-àâàõ Çàñàõ
Класс  Ижилхэн шинж чанар болон үйлдлүүдтэй бүлэг объектуудын нэгдэл юм. Жишээ нь. Дараах объектууд нь ижил шинж чанар болон   ижил үйлдлүүдтэй тул тэдгээрийг бүлэглэн “Машин” классыг үүсгэж болно. Өөрөөр хэлбэл: ОХП-д Класс нь Өгөгдөл Үйлдлүүдээс бүрдэнэ.   Класс, объект Katsra's car HONDA Ryo's car EUNOS Shuji's car SUBARU Keisuke's car DAIHATSU
Хийсвэрлэл  (Abstraction) Хүн төрөлхтөн өөртөө хүндрэлтэй асуудлаа хийсвэрлэн дүрсэлж ирсэн бөгөөд компьютерийн програмчлалд ч програмын хүндрэл  (software complexity)- ийг удирдан зохицуулах зорилгоор хийсвэрлэлийг өргөн ашигладаг.  Програмын хүндрэл  (software complexity)   яагаад үүсч байна? Аливаа байгууллагын үйл ажиллагаанд програм хангамжийн хэрэглээ улам бүр өсч байна Хэн ч системийг бүхлээр нь ойлгохооргүй нарийн нийлмэл үйл ажиллагааны цогц байдаг. Програм хангамж нь хэрэглэгчийн гар дээр очсон цагаасаа эхлэн тодорхой хугацаанд  засвар үйлчилгээг шаарддаг. Гэтэл тухайн програмыг зохиосон програм зохиогч ажлаасаа хэдийн гараад явчихсан байх нь түгээмэл үзэгдэл юм. Мөн програмын засвар үйлчилгээг хийхэд тухайн програм хангамжийн баримтжуулалт бүрэн зөв хийгдсэн байх шаардлагатай.  Програмчлалд хийсвэрлэлийг хэрэгжүүлнэ гэдэг нь:  Аливаа зүйлийг тодорхой шинж чанараар нь бүлэглэн тусгаарлаж буй хэрэг юм. Класс
Хийсвэрлэл  (Abstraction) Аливаа програмчлалын хэл нь өгөгдөл болон түүнийг боловсруулах функцээс бүрддэг. Процедур хандлагат програмчлалын хэлнүүд функцэд суурилсан байдаг бол  Java, C++  гэх мэт хэлнүүд нь өгөгдлийн хийсвэрлэл буюу объектод тулгуурласан тул тэдгээрийг Объект Хандлагат Програмчлалын хэл гэдэг.  Програмчлалд хийсвэрлэлтийг бодит амьдралын шаардлага, хэрэглэгчийн хүсэл сонирхолд нийцүүлэн хийлгүй буруу зөрүү, дутуу дулимаг хийвэл програмын чанарт муугаар нөлөөлдөг.   Програмчлалд Өгөгдлийн Хийсвэр Төрөл  ( ӨХТ )  буюу Хэрэглэгчийн Тодорхойлсон Төрөл  ( ХТТ )  тодорхойлж, ашиглах замаар хийсвэрлэлийг хэрэгжүүлдэг. Програмчлалын хэл бүр өөрийн гэсэн Өгөгдлийн Хийсвэр Төрөлтэй. Тухайлбал: Паскаль хэлний ӨХТ нь Бичлэг  (record) С хэлний ӨХТ нь Бүтэц  (struct) Java  болон бусад ОХПрограмчлалын хэлний ӨХТ нь класс   юм.   Өгөгдлийн хийсвэрлэл  &  Класс
ОХ Технологиийн үндсэн ойлголтууд:  Instantiation Katsra's car HONDA Ryo's car EUNOS Shuji's car SUBARU Keisuke's car DAIHATSU Instance 1   Баяраа HONDA Улаан Kastra Instance2  Өлзий EUNOS Хар Ryo Instance 3   Сувдаа SUBARU Цэнхэр Shuji Instance  4   Амар DAIHATSU Саарал Keisuke Классын нэр Шинж чанар ( өгөгдөл ) Үйлдэл ( функц ) Машин Эзэмшигч Төрөл  Өнгө Үйлдвэрлэгч Авах Хурдлах Instance  :   классын нэг тохиолдол буюу объект
Хийсвэрлэл: Аливаа зүйлийг тодорхой шинж чанараар нь бүлэглэн ерөнхийлж буй хэрэг юм. ОХП-д хийсвэрлэлийг хэрэгжүүлэхээс гадна, тэрхүү хийсвэрлэсэн төрөлөө өргөтгөн удамшуулах боломжтой, мөн шаардлагатай кодын өөрчлөлтийг хялбархан оруулах боломжтой байдаг.  Generalization  – ижил төстэй шинж чанраар нь бүлэглэн ерөнхийлөх Extensibility  -Өргөтгөх буюу удамшуулах Flexibility – кодын өөрчлөлт болон шинэ онцлогийг хялбархан оруулах боломж Харин объект хандлагат бус програмчлалын хэлнүүдэд хийсвэрлэсэн төрлөө өргөтгөн удамшуулах боломжгүй бөгөөд хийсвэрлэсэн төрөлдөө шаардлагатай нэмэлт өөрчлөлтийг оруулахад төвөгтэй байдаг. Иймд дараах дүгнэлтийг хийж болно. ОХТ-ийн өгөгдлийн хүчирхэг хийсвэр төрөл нь түүнийг програмчлалын хүчирхэг технологи болгож чадсан.    Класс
Өгөгдлийн хийсвэрлэл  (Data abstraction) Generalization – ижил төстэй шинж чанараар нь бүлэглэн ерөнхийлөх Extensibility – Өргөтгөх буюу удамшуулах 3.  Flexibility –  кодын өөрчлөлт болон шинэ онцлогийг хялбархан оруулах боломж Гишүүн өгөгдлийг шинээр тодорхойлох
Объектын танигдах шинж Объект бүр дахин давтагдашгүй шинж чанартай Энэ тохиолдолд ялгагдах шинж чанрыг нэмж тодорхойлох шаардлагатай. Жишээ нь Ïðîôåññîð  “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã Ïðîôåññîð  “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã Ïðîôåññîð  “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã
ОХ Технологиийн үндсэн ойлголтууд:   Объект Объект хандлагат програмчлалд  Объект нь шинж чанар  ( өгөгдөл ) үйлдэл  ( функцууд ) -ээс тогтоно. ЖИШЭЭ:  Ñèñòåì íü îáúåêòóóäààñ á¿ðäýíý - Îáúåêò á¿ð ºãºãäºë áà ôóíêöóóäýýñ á¿ðäýíý - Òóõàéí îáúåêò äàõü ºãºãäºë áîëîí ôóíêöóóä íü õîîðîíäîî ñàëøã¿é õîëáîîòîé Ãàð óòàñ Íýð ¯íý Õýðýãëýõ Õóäàëäàæ-àâàõ Çàñàõ Îáúåêòûí íýð ªãºãäºë   Ôóíêö
ОХПрограмчлалын гол онцлог Structured technology Бүтэцлэгдсэн технологи Object oriented technology Объект хандлагат технологи хүчирхэг Data   Abstraction Илүү хүчирхэг өгөгдлийн хийсвэрлэлийг ашиглах болсон  нь ОХТ-ийг хүчирхэг болгож чадсан.
Класс  ( ойлголт сэргээх ) Класс Хичээл Өгөгдлүүд -Хичээлийн нэр -Хичээлийн код -Кредит -Заах багш -7 хоногт орох цаг Үйлдлүүд -Оюутан бүртгэх -Шалгалт авах -Даалгавар шалгах Class :   Ижил шинж чанар болон үйлдлүүдтэй бүлэг объектуудын нэгдэл юм.   Өөрөөр хэлбэл:  ОХП-д Класс нь өгөгдөл үйлдлүүдээс бүрдэнэ. a + b = 10
ОХ Технологиийн үндсэн ойлголтууд:   Instantation Katsra's car HONDA Ryo's car EUNOS Shuji's car SUBARU Keisuke's car DAIHATSU Тохиолдол1   Баяраа HONDA Улаан Kastra Тохиолдол 2  Өлзий EUNOS Хар Ryo Тохиолдол 3   Сувдаа SUBARU Цэнхэр Shuji Тохиолдол 4   Амар DAIHATSU Саарал Keisuke Классын нэр Шинж чанар ( өгөгдөл ) Үйлдэл ( функц ) Машин Эзэмшигч Төрөл  Өнгө Үйлдвэрлэгч Авах Хурдлах Instantiation  :   классын нэг тохиолдол буюу объект
Объектын танигдах шинж Объект бүр дахин давтагдашгүй шинж чанартай Энэ тохиолдолд ялгагдах шинж чанрыг нэмж тодорхойлох шаардлагатай. Жишээ нь Ïðîôåññîð  “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã Ïðîôåññîð  “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã Ïðîôåññîð  “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã

More Related Content

PPS
Sw203 Lecture6 Inheritance
PPT
CS203 Лекц01 Prefeace
PPS
Sw203 Lecture10 Polymorphism
PPTX
Java lecture3
PPTX
өгөгдлийн сангийн системийн үндэс
PPT
PPS
Sw203 Lecture4 Class Object
PPTX
сургуулийн мэдээллийн системийг хөгжүүлэх нь
Sw203 Lecture6 Inheritance
CS203 Лекц01 Prefeace
Sw203 Lecture10 Polymorphism
Java lecture3
өгөгдлийн сангийн системийн үндэс
Sw203 Lecture4 Class Object
сургуулийн мэдээллийн системийг хөгжүүлэх нь

What's hot (20)

PDF
C cons
PDF
u.cs101 "Алгоритм ба програмчлал" Лекц №1
PDF
Lec4 хereglegchiinpunkts
PDF
Ogogdliin sangiin zohion baiguulalt lekts
PDF
Java programchlal s.uuganbayr
PPS
Html хичээл
PPTX
Лекц 6 - 7
PPTX
It101 lec6 10.06
PPT
Lecture1
PDF
Lecture 1
PDF
Алгоритм
PPTX
Java lecture5
PPS
Давталттай алгоритмын бодлогууд
PPS
Sw203 Lecture5 Class Acess Modifiers
PPTX
U.cs101 алгоритм программчлал-2
PPT
Програмчлалын хэл
PPS
Sw203 Lecture9 Encapsulation
DOC
User requirements
PPTX
Cs203 lecture13 composition
C cons
u.cs101 "Алгоритм ба програмчлал" Лекц №1
Lec4 хereglegchiinpunkts
Ogogdliin sangiin zohion baiguulalt lekts
Java programchlal s.uuganbayr
Html хичээл
Лекц 6 - 7
It101 lec6 10.06
Lecture1
Lecture 1
Алгоритм
Java lecture5
Давталттай алгоритмын бодлогууд
Sw203 Lecture5 Class Acess Modifiers
U.cs101 алгоритм программчлал-2
Програмчлалын хэл
Sw203 Lecture9 Encapsulation
User requirements
Cs203 lecture13 composition
Ad

Viewers also liked (20)

PPT
001 c++ class охп
PDF
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
PPS
Sw203 Lecture3 Advanced Java Program
PDF
Database design & Normalization (1NF, 2NF, 3NF)
PPTX
Java lecture4
PDF
Лабораторийн ажил № 2
PPS
Sw203 Lecture7 Method Override
PPTX
Java лекц2
PPTX
Java лекц8
PPTX
Java лекц1
PDF
Programchlaliin c hel
PPTX
Lecture8 9
PDF
Lec5 angi
PPTX
Lecture 4 нийлмэл удамшил
PPT
Ood lesson1
PPTX
Dsi lec13
PPT
Lecture3 охп удамшил
PPTX
Dsi lec11
PPT
C lects (7)
PDF
Small Basic を実務で使ってみませんか - CLR/H第56回勉強会ライトニングトーク
001 c++ class охп
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
Sw203 Lecture3 Advanced Java Program
Database design & Normalization (1NF, 2NF, 3NF)
Java lecture4
Лабораторийн ажил № 2
Sw203 Lecture7 Method Override
Java лекц2
Java лекц8
Java лекц1
Programchlaliin c hel
Lecture8 9
Lec5 angi
Lecture 4 нийлмэл удамшил
Ood lesson1
Dsi lec13
Lecture3 охп удамшил
Dsi lec11
C lects (7)
Small Basic を実務で使ってみませんか - CLR/H第56回勉強会ライトニングトーク
Ad

Similar to CS203 Лекц02 Oop (20)

PPT
Lecture2
PPTX
Pl lecture3
ODP
Лекц-3
PDF
Video lab1-web
PPTX
PL Lecture3
PDF
Лабораторийн ажил № 1
ODP
Лекц-1
PPTX
Pl lecture7
ODP
Lecture 1
PPTX
PPTX
Java lecture2
PDF
Java Programming Жава Програмчлалын тухай Лекц
PDF
PDF
C# hicheelin lekts
PPTX
Pl lecture6
PPT
си хэлний ойлголт
PPT
Ood lesson12.1 ---------
PDF
Lecture vcp413
PPTX
Java lecture4
PPTX
PL Lecture2
Lecture2
Pl lecture3
Лекц-3
Video lab1-web
PL Lecture3
Лабораторийн ажил № 1
Лекц-1
Pl lecture7
Lecture 1
Java lecture2
Java Programming Жава Програмчлалын тухай Лекц
C# hicheelin lekts
Pl lecture6
си хэлний ойлголт
Ood lesson12.1 ---------
Lecture vcp413
Java lecture4
PL Lecture2

More from Jargalsaikhan Alyeksandr (14)

PDF
Microsoft IT Academy
PPTX
Computer ethics and system security
PPTX
Cs203 lecture 14 reflection
PPS
Sw203 Lecture12 Composition
PPT
PPS
S W203 Lecture8 Interface
PPS
Sw203 Lecture8 Interface
PPT
Sw203 Lecture11 Casting
Microsoft IT Academy
Computer ethics and system security
Cs203 lecture 14 reflection
Sw203 Lecture12 Composition
S W203 Lecture8 Interface
Sw203 Lecture8 Interface
Sw203 Lecture11 Casting

CS203 Лекц02 Oop

  • 1. Объект хандлагат програмчлалын хэл Java Хичээл : C S203 Багш : Д.Энхжаргал Mongolia University of Science & Technology Лекц №2. Java хэлний үүсэл хөгжил, Анхны хялбар програмын бүтэц, ажиллах зарчим
  • 2. ОХТехнологиин үндсэн ойлголтууд ОХТ-ийн үндсэн ойлголтууд: Class Object Instance Message Encapsulation Inheritance & Method override Polymorphism Объект Хандлагат Технологийн тулгын 3 чулуу: E n с apsulation I nheritance P olymorphism буюу товчоор ( EIP)
  • 3. ОХ Технологиийн үндсэн ойлголтууд Class : Ижил шинж чанар болон үйлдлүүдтэй бүлэг объектуудын нэгдэл юм. Өөрөөр хэлбэл: ОХП-д Класс нь өгөгдөл үйлдлүүдээс бүрдэнэ. Object: классын нэг тохиолдол. ӨХ: Класс бол төрөл, объект нь тухайн төрлийн хувьсагч юм. Объект бүр өөрийн дахин давтагдашгүй шинж чанартай. Message: мэдээ, зурвас. ОХП-д объектууд хоорондоо мэдээ дамжуулах бөгөөд Message sending нь нэг ёсондоо объектын гишүүн функц дуудалт юм. Encapsulation -Битүүмжлэл Inheritance - Удамшил Method override -Даран тодорхойлогдсон арга Method overload – Дахин тодорхойлогдсон арга Polymorphism – Олон хэлбэршил Data hiding - Өгөгдлийн далдлалт Method -Арга буюу классын гишүүн функц
  • 4. Java хэлний үүсэл гарал 1991 онд Sun Microsystems Inc компаниас тухайн үеийн зах зээлд ихээхэн нийлүүлэгдэж байсан ахуйн хэрэглээний электрон төхөөрөмжүүдүүдийг байрлалаас (платформоос) үл хамааран удирдах програмчлалын хэлний хэрэгцээ, шаардлагыг соргогоор мэдэрч “Green” төслийг санаачлан хөгжүүлсэн. Хэдийгээр Green төсөл 1993 онд бизнесийн шалтгааны улмаас зогсоход хүрсэн боловч Sun компани нийтийг хамрах болсон вэбийн хэрэглээнд зориулан “Оак” хэлийг интернет програмчлалд ашиглах болсон Хожим нь тэд “Оак” нэртэй өөр програмчлалын хэл байдагийг олж мэдээд 1995 онд програмчлалын хэлнийхээ нэрийг Java болгон өөрчилсөн. Ийнхүү дөрвөн жилийн нөр их хөдөлмөрийн үр дүнд Java хэлийг 1995 онд олон нийтэд албан ёсоор зарлажээ.
  • 5. Java хэлний үүсэл гарал Өнөөдөр Java хэл нь том хэмжээний (large-scale) энтерпрайзын хэрэглээний програм хангамжуудыг хөгжүүлэх, вэб серверүүдийн үйл ажиллагааг сайжруулах, цахилгаан төхөөрөмжүүдийн удирдлагын програмчлал зэрэг олон янзын хэрэглээнд ашиглагдаж байна. Java хэл нь C++ хэл дээр түшиглэн зохиогдсон гэдэг утгаараа түүнд Си хэлний синтакс (бичиглэлийн дүрэм), C++ хэлний объект хандлагат ойлголтуудыг өөртөө шингээсэн тэдгээрийн хязгаарлагдмал, сул талыг шийдвэрлэж чадсан хэрэглээний өргөн боломжтой хүчирхэг хэл юм. Дашрамд дурдахад Си хэл бол бүтэцлэгдсэн буюу уламжлалт програмчлалын хэлний гол төлөөлөгч бөгөөд C++ хэл нь Си хэлэн дээр түшиглэн зохиогдсон. Товчхондоо, C++ хэл нь Си хэлийг обьект хандлагат чанруудаар баяжуулан сайжруулсан хэл юм. үргэлжлэл
  • 6. Java програмын хөгжүүлэлтийн орчин Алхам 1: Java програмаа үүсгэж java өргөтгөлтэй хадгалах. ямар нэг едитор програм ашиглан java өргөтгөлтэй файл (filename.java) үүсгэн хадгална. Алхам 2: Java програмаа байт код руу хөрвүүлэх . Програмаа хөрвүүлэхдээ javac (Java compiler) командыг ашиглана. Тухайлбал, hello.java нэртэй програмыг хөрвүүлэхийн тулд командын урилгын мөрөнд javac hello.java хэмээн бичиж өгнө. Хэрвээ програм алдаагүй хөрвүүлэгдсэн бол програмын хөрвүүлэгдсэн хувилбарыг агуулах .class файл (class өргөтгөлтэй файл) тухайн директорт үүснэ. Байт-код (bytecode) нь Java процоессорт зориулагдсан заавруудын дараалал юм. javac нь бидний бичсэн програмыг байт-код руу хөрвүүлнэ.
  • 7. Java програмын хөгжүүлэлтийн орчин Java Virtual Machine (JVM) гэдэг бол компьютерийн систем дээр ажиллаж буй Java интерпретатор юм. Өх: JVM нь байт-кодыг төв процессорт ойлгомжтой хэл рүү хөрвүүлэгч програм юм. Дээрх зураг дээрх Java интерпретатор (interpreter) нь компьютерийн систем дээр ажиллаж буй биелэгдэх програм бөгөөд компьютерийн систем (платформ) бүр өөрийн гэсэн Java интерпретатортой. "Бодит процессор" гэсэн нь компьютерийн систем ийн төв процессорыг хэлж байна. үргэлжлэл
  • 8. Java програмын хөгжүүлэлтийн орчин Java -гийн байт - кодууд нь JVM агуулах ямар ч платформ дээр биелэгддэг тул Java хэлийг авсаархан ( portable ) хэлэнд тооцдог. Java виртуаль машин (Virtual Machine) нь байт-кодыг машины хэл рүү хөрвүүлдэг. Тэгэхлээр Java Virtual Machine нь байт-кодын интерпретатор (interpreter) юм. үргэлжлэл
  • 9. Java програмын хөгжүүлэлтийн орчин Алхам 3: Програмыг санах ой руу ачаалах . Програм биелэгдэхийнхээ өмнө санах ойд байрлахыг ачаалах ( loading ) гэнэ. Классын ачаалагч нь програмын байт - кодыг агуулах . class файлыг үндсэн санах ой руу дамжуулдаг. Түүгээр ч зогсохгүй таны програмд ашиглагдсан . class файлуудыг мөн адил санах ойд ачаалдаг. Ачаалагдах тэдгээр . class файлууд нь компьютерийн хатуу дискэнд эсвэл сүлжээнд ч байрладаг байж болох юм. Алхам 4: Байт кодыг хянах . Классууд ачаалагдахад байт-кодыг хянагч ( bytecode verifier ) нь тэдгээр байт-кодууд нь Java -гийн security (нууцлал хамгаалалт)-ын шаардлагуудыг хангаж байгаа эсэхийг нягтлана. Энэ нь сүлжээгээр дамжигдан ирж буй Java програмууд нь таны файлууд болон системийн хэвийн үйл ажиллагаанд саад учруулахгүй байхад онцгой анхаарч аюулгүйн баталгаа гаргаж өгдөг. Алхам 5 : Биелэлт . JVM нь програмын байт-кодыг биелүүлэх замаар програмд тодорхойлсон үйлдлүүдийг гүйцэтгэдэг. Java -гийн эхний хувилбаруудад JVM нь Java байт-кодыг хялбархан хөрвүүлдэг ( interpreter ) байсан. Ихэнхи Java програмууд нь удаан ажилдаг байсан шалтгаан гэвэл JVM тухайн агшинд нэг л байт-кодыг хөрвүүлж биелүүлдэг. JVM -ийг java командаар холбож ажлуулдаг. Тухайлбал, hello нэртэй Java програмыг ажлуулахдаа командын урилгын мөрөнд java hello хэмээн бичиж өгнө. үргэлжлэл
  • 10. Java хэлний програм биелэх дараалал үргэлжлэл
  • 11. Java 2 -ийн just-in-time (JIT) компилятор J ust-in-time (JIT) нь Java програмын биелэлтийн хурдыг нэмэгдүүлэх зорилгоор бүтээгдсэн компилятор юм . JVM-ийн нэг хэсэг бөгөөд байт-кодыг хэсэг хэсгээр хэрэгцээтэй үед нь компиляци хийдэг. Өх: Java програмыг шууд бүхлээр нь биелэх кодонд компиляци хийхэд учир дутагдалтай байдаг учраас just-in-time (хэрэгтэй цагт нь) гэж нэрлэгдэх компилятороор кодыг биелэлтийн үед шаардлагатай хэмжээгээр компиляц хийдэг. Java 2 нь мөн програмын дахин дахин биелэгдэх хэсэг ( Hot spots)-ийг тодорхойлон хөрвүүлэлтийг сайжруулж хурдыг нэмэгдүүлэх боломжоор хангагдсан.
  • 12. Анхны хялбар Java програм ын бичлэг 1 мөрийн public: Хандалтыг тодорхойлогч түлхүүр үг бөгөөд түүнд програмын дурын хэсгээс хандаж болох нийтийн хандалт юм. Анхаар ! main функцыг ( аргыг ) агуулах класс үргэлж public ханд алттай байна. class : Java хэлний бусад програмчлалын хэлнүүдээс ялгарах нэг ялгаа бол түүний үндсэн код ( main функц) ямар нэг класс (class) дотор бай даг . Манай програмын агуулга их хаалт { … }- нд бичигдэнэ. Гэхдээ энэ нь ОХП хэлнүүдийн гол онцлог болсон өгөгдлийн хийсвэрлэл болох класс хараахан биш юм шүү. Энэ нь зүгээр л Java хэлний хувийн онцлог Hello : классын нэр нь програмыг агуулсан файлын нэртэй адилхан байх ёстой. Java хэл нь үсгэн мэдрэгчтэй (case sensitive) хэл. ӨХ: том жижиг үсгийн ялгааг мэдэрдэг. Манай програмын нэр Hello.java байх ёстойг анхаарна уу !
  • 13. Анхны хялбар Java програм ын бичлэг 2 мөрийн public : main арга ( функц ) public ханд алттай байдаг. Учир нь аливаа програмын үндсэн код болох main аргыг далдлах шаардлагагүй байдаг. static : Аливаа Java програм ажиллах үед JVM нь ямар нэгэн обьект үүсэхээс өмнө санах ойд тогтмол (статикаар) байрлах main аргыг дуудаж ажлуулдаг. Иймд main аргыг зарлахдаа static түлхүүр үгийг ашигладаг. void : main аргыг зарлахдаа буцаах утгыг void ( хоосон) хэмээн тодорхойлсон байна. Энэ нь тухайн арга үйлдлээ гүйцэтгэж дуусаад ямар нэгэн тодорхой утга буцаахгүйг илэрийлж байна . String [] args: аливаа арга ( функц ) -д мэдээлэл (параметр) дамжуулахдаа дугуй хаалт ()-ийг ашигладаг. энд main аргад String төрлийн args нэртэй массивыг параметр болгон тодорхойлсон байна. Тэгэхээр Java програмд аргументууд дамжуулвал тэдгээрийг тэмдэгт мөр төрлийн хувьсагч байдлаар хүлээн авдаг болох нь харагдаж байна. үргэлжлэл
  • 14. Анхны хялбар Java програм ын бичлэг 3 мөрийн System.out.println("Hello world!"); өгүүлбэртэй танилцъя. System.out буюу стандарт гаралтын объектын println хэмээх арга нь стандарт гаралтын төхөөрөмж рүү мэдээлэл гаргах үүрэгтэй арга юм. Өх. println арга нь системийн хандалтыг зохицуулах System хэмээх стандарт классын out объектын арга ( гаралтанд харьяалагдах арга ) юм. Классын хувьсагч болох объектын гишүүн өгөгдөл ба аргуудад хандах бичиглэлийн ерөнхий хэлбэр [Object name]. [variable name] [Object name]. [method name] ([parameters]) Манай жишээнд println аргад Hello world! гэсэн тэмдэрт мөрийг аргумент болгон дамжуулсанаар түүнийг дэлгэцэнд хэвлэж байна. Цаашид бид энэхүү энэхүү System.out объектын println аргыг өргөн ашиглана. үргэлжлэл Програмын код нь тодорхой зорилгын дор тодорхой дарааллаар биелэгдэх statement буюу өгүүлбэрүүдээс бүрдэнэ. Өгүүлбэрүүд нь хоорондоо цэгтэй таслал (;)-аар зааглагддаг.
  • 15. Манай хичээл програмчлалын хэл судлахаас гадна гол нь програмчлалын дэвшилтэт ТЕХНОЛОГИ судалж байгаа гэдэг утгаараа оюутан лабораторийн ажил гүйцэтгэхээс гадна онолын мэдлэгээ бататган, онолын ойлголтуудаар чөлөөтэй жишээ гарган ярилцаж, тэдгээр ойлголтын давуу боломж, хэрэглээний ач холбогдлын талаар тайлбарлах чадвартай байх шаардлагатай. Өнөөдөр бидний хэлэлцэх асуудал ? Эхний лаборатори дээр туршиж үзсэн дасгал ажлаар гүйцэтгэсэн алхмуудын цаана хийгдэж байгаа үйл ажиллагааны зарчмыг сайтар ойлгож, хаанаас нь ч асуусан тайлбарлаж чаддаг байх ! Ямар үед path хувьсагчид утга олгох шаардлага гардаг вэ ? Ямар утга олгодог вэ? Ямар арга замуудаар олгох боломжтой вэ ? Консолоос Java програм ажлуулахад DOS -ийн командуудын үүрэг, хэрэглээ Хэлэлцэх асуудал
  • 16. Encapsulation En capsul ation : Тухайн объектод шаардлагатай өгөгдлүүд болон үйлдлүүдийг нэгтгэн далдлах үйл явц юм. Нэгтгэх: Тухайн объектын өгөгдлүүд болон функцуудыг нэг капсулд хийх. Далдлах: Объектын дотоод бүтцийг далдлах Тухайн объектод шаардлагатай өгөгдлүүд Тухайн объект дээр хийгдэх үйлдлүүд Computer Processor speed RAM Use(); Buy();
  • 17. Хийсвэрлэл (Abstraction) Хүн төрөлхтөн өөртөө хүндрэлтэй асуудлаа хийсвэрлэн дүрсэлж ирсэн бөгөөд бодит амьдралын биет юмсыг тэр чигээр нь компьютерт буулгах боломжгүй учраас програм зохиогч нь үйл ажиллагаандаа хийсвэрлэлийг өргөнөөр ашигладаг. Програмчлалд бодит амьдралын шаардлагад нийцүүлэн асуудлаа оновчтой хийсвэрлэж оруулсанаар програмын хүндрэл (software complexity)- ийг шийдвэрлэх боломжтой. Програмын хүндрэл (software complexity) яагаад үүсч байна? Аливаа байгууллагын үйл ажиллагаанд програм хангамжийн хэрэглээ улам бүр өсч байна Хэн ч системийг бүхлээр нь ойлгохооргүй нарийн нийлмэл үйл ажиллагааны цогц байдаг. Програм хангамж нь хэрэглэгчийн гар дээр очсон цагаасаа эхлэн тодорхой хугацаанд засвар үйлчилгээг шаарддаг. Гэтэл тухайн програмыг зохиосон програм зохиогч ажлаасаа хэдийн гараад явчихсан байх нь түгээмэл үзэгдэл юм. Ялангуяа Объект Хандлагат Технологи нь хийсвэрлэлтийг илүү сонгодог утгаар нь хэрэгжүүлдэг учраас хүчирхэг технологи болж чадсан гэхэд хилсдэхгүй. Учир нь уламжлалт буюу бүтэцлэгдсэн аргаар систем хөгжүүлэхэд програмын код нь өгөгдлөө удирддаг учраас програмын гол цөм гэж үзэн програмын функцэд илүү ач холбогдол үзүүлж ирсэн. Харин Объект Хандлагат аргаар систем хөгжүүлэхэд эсрэгээр өгөгдөл нь функцээ удирддаг гэж үздэг.ОХПрограмчлалын хэлнүүд нь өгөгдлийн хүчирхэг хийсвэрлэлтийг ашигладаг. Өгөгдлийн хийсвэрлэл (Data abstraction)
  • 18. Хийсвэрлэл (Abstraction) Аливаа програмчлалын хэл нь өгөгдөл болон түүнийг боловсруулах функцээс бүрддэг. Процедур хандлагат програмчлалын хэлнүүд функцэд суурилсан байдаг бол Java, C++ гэх мэт хэлнүүд нь өгөгдлийн хийсвэрлэл буюу объектод тулгуурласан тул тэдгээрийг Объект Хандлагат Програмчлалын хэл гэдэг. Хийсвэрлэл нь “ ямар нэгэн зүйл ” -ийг тодорхой шинж чанараар нь бүлэглэн, хэрэггүй хэсгээс нь тусгаарлах үйл явц юм. Бүтэцлэгдсэн програмчлалд хийсвэрлэлийг хэрэгжүүлэх гол хэсэг нь функц байсан. Харин ОХПрограмчлалд классд өгөгдөл болон функцуудыг нэгтгэн далдлаж өгсөнөөр Өгөгдлийн Хийсвэр Төрөл ( ӨХТ ) тодорхойлж, ашиглах замаар хийсвэрлэлийг хэрэгжүүлдэг. Програмчлалын хэл бүр өөрийн гэсэн Өгөгдлийн Хийсвэр Төрөл ( ӨХТ ) -тэй. Тухайлбал: Паскаль хэлний ӨХТ нь Бичлэг (record) С хэлний ӨХТ нь Бүтэц (struct) Java болон бусад ОХПрограмчлалын хэлний хувьд ӨХТ нь класс ( class) юм. Хийсвэрлэл Generalization – ижил төстэй шинж чанраар нь бүлэглэн ерөнхийлөх Extensibility -Өргөтгөх буюу удамшуулах Flexibility – кодын өөрчлөлт болон шинэ онцлогийг хялбархан оруулах боломж Өгөгдлийн хийсвэрлэл (Data abstraction)
  • 19. Өгөгдлийн хийсвэрлэл (Data abstraction) Generalization – ижил төстэй шинж чанараар нь бүлэглэн ерөнхийлөх Extensibility – Өргөтгөх буюу удамшуулах 3. Flexibility – кодын өөрчлөлт болон шинэ онцлогийг хялбархан оруулах боломж Гишүүн өгөгдлийг шинээр тодорхойлох
  • 20. ОХ Технологиийн үндсэн ойлголтууд: Объект Объект: Бодит амьдралын биет юм буюу түүний хийсвэрлэл юм. Объект Бодит зүйлс. Жишээ нь: машин, камер, үүл Хийсвэр зүйлс. Жишээ нь: хичээл, шүлэг... Бодит ертөнц объектуудаас бүрддэг
  • 21. Класс Объект хэмээх ойлголттой салшгүй холбоотой. Ижил шинж чанар, үйлдлүүдтэй бүлэг объектуудын нэгдэл юм. Объект Бид өдөр тутмынхаа амьдралд янз бүрийн объектуудтай харьцаж байдаг. Бодит амьдралын биет юмс буюу түүний хийсвэрлэл юм. Жишээ нь: Бодит объект: Ном, Үзэг, Компьютер... Хийсвэр объект: Хичээл, Шүлэг Аливаа систем нь объектуудаас бүрддэг. ОХПрограмчлалд Объект нь Шинж чанар ( өгөгдөл ) Үйлдэл ( функцууд ) -ийн нэгдэл юм. Жишээ нь: Машин Класс, объект Машин Íýð ¯íý Өнгө Давхих Õóäàëäàæ-àâàõ Çàñàõ
  • 22. Класс Ижилхэн шинж чанар болон үйлдлүүдтэй бүлэг объектуудын нэгдэл юм. Жишээ нь. Дараах объектууд нь ижил шинж чанар болон ижил үйлдлүүдтэй тул тэдгээрийг бүлэглэн “Машин” классыг үүсгэж болно. Өөрөөр хэлбэл: ОХП-д Класс нь Өгөгдөл Үйлдлүүдээс бүрдэнэ. Класс, объект Katsra's car HONDA Ryo's car EUNOS Shuji's car SUBARU Keisuke's car DAIHATSU
  • 23. Хийсвэрлэл (Abstraction) Хүн төрөлхтөн өөртөө хүндрэлтэй асуудлаа хийсвэрлэн дүрсэлж ирсэн бөгөөд компьютерийн програмчлалд ч програмын хүндрэл (software complexity)- ийг удирдан зохицуулах зорилгоор хийсвэрлэлийг өргөн ашигладаг. Програмын хүндрэл (software complexity) яагаад үүсч байна? Аливаа байгууллагын үйл ажиллагаанд програм хангамжийн хэрэглээ улам бүр өсч байна Хэн ч системийг бүхлээр нь ойлгохооргүй нарийн нийлмэл үйл ажиллагааны цогц байдаг. Програм хангамж нь хэрэглэгчийн гар дээр очсон цагаасаа эхлэн тодорхой хугацаанд засвар үйлчилгээг шаарддаг. Гэтэл тухайн програмыг зохиосон програм зохиогч ажлаасаа хэдийн гараад явчихсан байх нь түгээмэл үзэгдэл юм. Мөн програмын засвар үйлчилгээг хийхэд тухайн програм хангамжийн баримтжуулалт бүрэн зөв хийгдсэн байх шаардлагатай. Програмчлалд хийсвэрлэлийг хэрэгжүүлнэ гэдэг нь: Аливаа зүйлийг тодорхой шинж чанараар нь бүлэглэн тусгаарлаж буй хэрэг юм. Класс
  • 24. Хийсвэрлэл (Abstraction) Аливаа програмчлалын хэл нь өгөгдөл болон түүнийг боловсруулах функцээс бүрддэг. Процедур хандлагат програмчлалын хэлнүүд функцэд суурилсан байдаг бол Java, C++ гэх мэт хэлнүүд нь өгөгдлийн хийсвэрлэл буюу объектод тулгуурласан тул тэдгээрийг Объект Хандлагат Програмчлалын хэл гэдэг. Програмчлалд хийсвэрлэлтийг бодит амьдралын шаардлага, хэрэглэгчийн хүсэл сонирхолд нийцүүлэн хийлгүй буруу зөрүү, дутуу дулимаг хийвэл програмын чанарт муугаар нөлөөлдөг. Програмчлалд Өгөгдлийн Хийсвэр Төрөл ( ӨХТ ) буюу Хэрэглэгчийн Тодорхойлсон Төрөл ( ХТТ ) тодорхойлж, ашиглах замаар хийсвэрлэлийг хэрэгжүүлдэг. Програмчлалын хэл бүр өөрийн гэсэн Өгөгдлийн Хийсвэр Төрөлтэй. Тухайлбал: Паскаль хэлний ӨХТ нь Бичлэг (record) С хэлний ӨХТ нь Бүтэц (struct) Java болон бусад ОХПрограмчлалын хэлний ӨХТ нь класс юм. Өгөгдлийн хийсвэрлэл & Класс
  • 25. ОХ Технологиийн үндсэн ойлголтууд: Instantiation Katsra's car HONDA Ryo's car EUNOS Shuji's car SUBARU Keisuke's car DAIHATSU Instance 1 Баяраа HONDA Улаан Kastra Instance2 Өлзий EUNOS Хар Ryo Instance 3 Сувдаа SUBARU Цэнхэр Shuji Instance 4 Амар DAIHATSU Саарал Keisuke Классын нэр Шинж чанар ( өгөгдөл ) Үйлдэл ( функц ) Машин Эзэмшигч Төрөл Өнгө Үйлдвэрлэгч Авах Хурдлах Instance : классын нэг тохиолдол буюу объект
  • 26. Хийсвэрлэл: Аливаа зүйлийг тодорхой шинж чанараар нь бүлэглэн ерөнхийлж буй хэрэг юм. ОХП-д хийсвэрлэлийг хэрэгжүүлэхээс гадна, тэрхүү хийсвэрлэсэн төрөлөө өргөтгөн удамшуулах боломжтой, мөн шаардлагатай кодын өөрчлөлтийг хялбархан оруулах боломжтой байдаг. Generalization – ижил төстэй шинж чанраар нь бүлэглэн ерөнхийлөх Extensibility -Өргөтгөх буюу удамшуулах Flexibility – кодын өөрчлөлт болон шинэ онцлогийг хялбархан оруулах боломж Харин объект хандлагат бус програмчлалын хэлнүүдэд хийсвэрлэсэн төрлөө өргөтгөн удамшуулах боломжгүй бөгөөд хийсвэрлэсэн төрөлдөө шаардлагатай нэмэлт өөрчлөлтийг оруулахад төвөгтэй байдаг. Иймд дараах дүгнэлтийг хийж болно. ОХТ-ийн өгөгдлийн хүчирхэг хийсвэр төрөл нь түүнийг програмчлалын хүчирхэг технологи болгож чадсан. Класс
  • 27. Өгөгдлийн хийсвэрлэл (Data abstraction) Generalization – ижил төстэй шинж чанараар нь бүлэглэн ерөнхийлөх Extensibility – Өргөтгөх буюу удамшуулах 3. Flexibility – кодын өөрчлөлт болон шинэ онцлогийг хялбархан оруулах боломж Гишүүн өгөгдлийг шинээр тодорхойлох
  • 28. Объектын танигдах шинж Объект бүр дахин давтагдашгүй шинж чанартай Энэ тохиолдолд ялгагдах шинж чанрыг нэмж тодорхойлох шаардлагатай. Жишээ нь Ïðîôåññîð “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã Ïðîôåññîð “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã Ïðîôåññîð “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã
  • 29. ОХ Технологиийн үндсэн ойлголтууд: Объект Объект хандлагат програмчлалд Объект нь шинж чанар ( өгөгдөл ) үйлдэл ( функцууд ) -ээс тогтоно. ЖИШЭЭ: Ñèñòåì íü îáúåêòóóäààñ á¿ðäýíý - Îáúåêò á¿ð ºãºãäºë áà ôóíêöóóäýýñ á¿ðäýíý - Òóõàéí îáúåêò äàõü ºãºãäºë áîëîí ôóíêöóóä íü õîîðîíäîî ñàëøã¿é õîëáîîòîé Ãàð óòàñ Íýð ¯íý Õýðýãëýõ Õóäàëäàæ-àâàõ Çàñàõ Îáúåêòûí íýð ªãºãäºë Ôóíêö
  • 30. ОХПрограмчлалын гол онцлог Structured technology Бүтэцлэгдсэн технологи Object oriented technology Объект хандлагат технологи хүчирхэг Data Abstraction Илүү хүчирхэг өгөгдлийн хийсвэрлэлийг ашиглах болсон нь ОХТ-ийг хүчирхэг болгож чадсан.
  • 31. Класс ( ойлголт сэргээх ) Класс Хичээл Өгөгдлүүд -Хичээлийн нэр -Хичээлийн код -Кредит -Заах багш -7 хоногт орох цаг Үйлдлүүд -Оюутан бүртгэх -Шалгалт авах -Даалгавар шалгах Class : Ижил шинж чанар болон үйлдлүүдтэй бүлэг объектуудын нэгдэл юм. Өөрөөр хэлбэл: ОХП-д Класс нь өгөгдөл үйлдлүүдээс бүрдэнэ. a + b = 10
  • 32. ОХ Технологиийн үндсэн ойлголтууд: Instantation Katsra's car HONDA Ryo's car EUNOS Shuji's car SUBARU Keisuke's car DAIHATSU Тохиолдол1 Баяраа HONDA Улаан Kastra Тохиолдол 2 Өлзий EUNOS Хар Ryo Тохиолдол 3 Сувдаа SUBARU Цэнхэр Shuji Тохиолдол 4 Амар DAIHATSU Саарал Keisuke Классын нэр Шинж чанар ( өгөгдөл ) Үйлдэл ( функц ) Машин Эзэмшигч Төрөл Өнгө Үйлдвэрлэгч Авах Хурдлах Instantiation : классын нэг тохиолдол буюу объект
  • 33. Объектын танигдах шинж Объект бүр дахин давтагдашгүй шинж чанартай Энэ тохиолдолд ялгагдах шинж чанрыг нэмж тодорхойлох шаардлагатай. Жишээ нь Ïðîôåññîð “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã Ïðîôåññîð “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã Ïðîôåññîð “ Íÿìñ¿ðýí ” Ìàòåìàòèê çààäàã

Editor's Notes

  • #7: Учир нь Java хөрвүүлэгч (Java compiler) нь Java дээр бичсэн анхдагч эх код (Source program)-ийг Java байт-код руу хөрвүүлэх бөгөөд үр дүнд нь class өргөтгөлтэй файл үүснэ. Манай жишээний хувьд hello.class файл үүснэ.
  • #14: Учир нь аливаа програмын үндсэн код болох main аргыг далдлах шаардлагагүй байдаг.