Download - объект хандлагат программчлал
![Page 1: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/1.jpg)
Объект хандлагат программчлал(үндсэн ойлголт)
Р. Батзоригт
2014-10-29
![Page 2: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/2.jpg)
Программчлах хэв загвар
• Процедур хандлагат (procedural programming)
• Функц хандлагат (functional programming)
• Объект хандлагат (object oriented)
• Аспект хандлагат (aspect oriented) г.м
![Page 3: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/3.jpg)
Процедур хандлагат буюу бүтцийн программчлал
• Программыг давхцсан үүрэггүй процедуруудад хувааж, нэг процедураас нөгөө процедурыг дуудах замаар зорилгодоо хүрэх-Дутагдалтай тал их!
• Давхцалгүй, хялбар ойлгомжтой код бичиж болох авч өөрчлөлтөнд тэсвэртэй (хялбархан өөрчлөлт оруулж болох, программын бусад хэсэгт нөлөөлөхгүй) програмбичихэд хэцүү. Ихэнх bug source code-нд өөрчлөлт оруулсанаас болж үүссэн байдаг.
• Процедур гэдэгт ихэнх (функц хандлагат бус)программчлалын хэлний method, function, procedure-г хамруулна.
![Page 4: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/4.jpg)
Функц хандлагат
• Программыг давхцсан үүрэггүй функцуудад хувааж, нэг функцаас нөгөө функцыг дуудах замаар зорилгодоо хүрэх.
• Функц: Функц хандлагат программчлалын хэлний функц нь математикын функц хэлбэртэй байдаг. Функцын аргументад функцыг дамжуулж болдогоороо бусад төрлийн хэлнээс онцгой өөр. Глобал хувьсагчгүй тул төлөвгүй (stateless)-Гол давуу тал. Параллел программчлалд нэн тохиромжтой.
![Page 5: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/5.jpg)
Объект хандлагат программчлал
• Программыг давхцсан үүрэггүй харилцан уялдаатай гэхдээ аль болох хамаарал багатай объектуудад хувааж, нэг объектоос нөгөө объект руу мэдээ (message)дамжуулах (объектын метод, функц, процедурыг дуудах) замаар зорилгодоо хүрэх.
![Page 6: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/6.jpg)
Object Oriented Programming
• Объект баримжаат (хандлагат, төвт) программчал
• Объект хандалтат биш! Орчуулгын алдаа.
• Шийдэх гэж буй асуудлыг объект хэмээх хийсвэр өгөгдлийн төрлөөр загварчлах-хялбаршуулах арга.
• Зөвхөн сонирхож буй шинж төлөв, түүний өөрчлөлттэй холбоотой үйл хөдлөлийг объектоор төлөөлүүлэн төсөөлж, харилцан ялгаатай үүрэг бүхий объектуудын харилцаан дээр тулгуурлаж системийг бүтээх гэсэн оролдлого.
![Page 7: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/7.jpg)
Объект
• Мэдээлэл түүнд боловсруулалт хийх функцын нэгдэл
• Объект өөрийн төлөвийг хадгалах талбар, түүний төлвийг өөрчлөх, боловсруулах зориулалт бүхий методтай байдаг
гэх мэтээр ихэнх ном сурах бичигт тэмдэглэсэн байдаг. Эдгээр тодорхойлолт нь буруу биш ч дутуу, явцуу (өнгөцхөн) дотоод мөн чанарыг дэлгэсэн бүрэн гүйцэд тодорхойлолт биш юм.
![Page 8: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/8.jpg)
Объект
Дээрх тодорхойлолт дээр дараах тайлбарыг нэмж болох юм.• Объект өөрийгөө хэн гэдгийг мэддэг• Бусадтай давхцаагүй өөрийн гүйцэтгэх үүрэг
хариуцлагатай. Тэрийгээ хэрхэн гүйцэтгэхээ мэддэг. • Бусдаас тусламж авах (delegation)• Бусадтай төстэй (inheritance)• Бусдаас ялгаатай (polymorphism)• Бусдад үйлчлэх public interface-тэй• Бусдаас нуух зүйлтэй (encapsulation-data, complexity,
implementation hiding)
![Page 9: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/9.jpg)
Class-Төрөл (Хэв маяг)
• Aнгилал, төрөл зүйл, хэв маяг гэсэн утгатай үг.• Объект болгон өөрийн төрөл зүйлтэй. Тэр
төрлөөрөө бусдаас ондоошиж, эсвэл бусадтай ижилсдэг.
• Class буюу төрөл нь тухайн объектын хэв шинж, араншинг заасан хийсвэр тодорхойлолт буюу объектыг үүсгэхэд шаардлагатай урьдчилан бэлдсэн хэв, үлгэр-загвар юм.
• Объект: Программ ажиллах явцад санах ойд үүссэн Class-н (хэвэнд цутгаж гаргаж авсан)нэг хувь (instance) .
![Page 10: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/10.jpg)
Түлхүүр ойлголтууд
• Удамшил (Inheritance)
• Ондоошил (Polymorphism)
• Тусгаарлалт (Encapsulation)
• Бүрдмэл (Composition)
• Нийлмэл (Aggregation)
• Итгэмжлэл (үүрэг хариуцлагыг бусдад шилжүүлэх) – Delegation
• Хийсвэрлэл - Abstraction
![Page 11: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/11.jpg)
Удамшил
• Энгийн буюу дан удамшил
• Нийлмэл удамшил
• Is a (… бол …), a kind of (… бол … ны нэг)
• Нохой бол хөхтөн амьтан.
• Могой бол хэвлээр явагчдын нэг төрөл.
![Page 12: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/12.jpg)
Дан удамшил
• Ганцхан классаас эх авч буй удамшлын хэлбэр
Нийтлэг, ерөнхий шинж (generalization)
Онцлог ялгаатай шинж (polymorphism)
![Page 13: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/13.jpg)
Нийлмэл удамшил
• Нэгээс дээш тооны классаас эх авч буй удамшлын хэлбэр
• Программыг нарийн төвөгтэй болгодог олон асуудлыг дагуулдаг тул ихэнх хэлэнд дэмждэггүй. C++ хэлэнд diamond problem-g шийдэхийн тулд virtual class гэсэн ойлголт оруулж ирдэг.
![Page 14: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/14.jpg)
Ондоошил
• Удам (child) нь өвгөөс (parent) өвлөсөн шинж чанараас гадна өөрийн давтагдахгүй хэв шинжтэй байж болно.
• Өвгөөс өөр аргаар зорилгодоо хүрэх чадварыг ондоошил гэнэ.
• Жишээ: Бүх тээврийн хэрэгсэл нэг цэгээс нөгөөд шилжих чадвартай. Харин энэ зорилгод хүрэхийн тулд нисдэг онгоц агаараар, усан онгоц усаар, машин газраар явдаг.
![Page 15: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/15.jpg)
Бүрдмэл хамаарал-Үхсэн ч сэхсэн ч хамтдаа
• Харилцан нэгнийхээ оршин байх нөхцлийг бүрдүүлж буй объектуудын хамаарал буюу салшгүй бүрэлдэхүүн хэсгүүдийн хамаарал
• consists of, composed of … бол …-с бүрддэг. • Is made of ...-г ...-р хийдэг.• part of ... бол ...ны бүрэлдэхүүн хэсэг.• Has а
![Page 16: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/16.jpg)
Бүрдмэл хамаарал-Үхсэн ч сэхсэн ч хамтдаа
public class Car {
private Engine[] engines;
public Car () {engines = new Engine[] {new Engine()};
}}
![Page 17: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/17.jpg)
Нийлмэл хамаарал
public class Car {private Passenger[] passengers;
public Car() {}
public void setPassenger(Passenger[] passengers) {this. passengers = passengers.clone();
}}
Ерөнхийдөө бүрдмэл хамааралтай төстэй боловч агуулж буй тал бүрэлдэхүүн хэсгийг үүсгэх-устгах үүргийг хүлээдэггүй.
![Page 18: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/18.jpg)
Тусгаарлалт
• Бусдад мэдэгдэх шаардлагагүй хэсгийг нууцлах
• Зөвхөн өгөгдлийг бус программын нарийн төвөгтэй хэсэг, спекийг далдлах
• Бусдад харагдах шаардлагатай хэсгээс бусдыг нууснаар программ хялбар, ойлгомжтой болдог.
![Page 19: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/19.jpg)
Итгэмжлэл-Delegation
• Объект өөрийн мэдэхгүй (чадахгүй)хариуцаагүй үүрэг-үйлдлийг бусдад даатган шилжүүлэх (өртөөлөх) явдлыг хэлнэ.
• Ө.х бусдаар хийж гүйцэтгүүлэх
• Нийлмэл (aggregation), бүрдмэл (composition) хамааралтай хослуулан маш их хэрэглэдэг. Delegation-г ашигласан олон зохиомжийн хэлбэр (design pattern) байдаг: Proxy, Bridge, Adapter, Decorator pattern г.м
![Page 20: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/20.jpg)
Хийсвэрлэл – Abstraction (Generalization)
• Тухайн төрлийн объектод байх нийтлэг хэв шинж, зан авирыг ерөнхийлөн хийсвэрлэх үйл явцыг хэлнэ.
• Хийсвэрлэлийг томъёолон гаргахад програмраммчлалын хэл, тухайн нөхцөл байдлаас хамааран Interface, эсвэл Abstract Class-г ашигладаг.
![Page 21: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/21.jpg)
UML тэмдэглэгээ
• Class
![Page 22: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/22.jpg)
UML тэмдэглэгээ
• Interface
![Page 23: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/23.jpg)
UML тэмдэглэгээ
• Iconic Notation (Provided Interface vs Required Interface)
![Page 24: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/24.jpg)
UML тэмдэглэгээ
• Provided Interface vs Required Interface
![Page 25: объект хандлагат программчлал](https://reader036.vdocuments.pub/reader036/viewer/2022082219/559a7f271a28abe52f8b4592/html5/thumbnails/25.jpg)
Жишээ дасгал