25
Объект хандлагат программчлал (үндсэн ойлголт) Р. Батзоригт 2014-10-29

объект хандлагат программчлал

Embed Size (px)

Citation preview

Page 1: объект хандлагат программчлал

Объект хандлагат программчлал(үндсэн ойлголт)

Р. Батзоригт

2014-10-29

Page 2: объект хандлагат программчлал

Программчлах хэв загвар

• Процедур хандлагат (procedural programming)

• Функц хандлагат (functional programming)

• Объект хандлагат (object oriented)

• Аспект хандлагат (aspect oriented) г.м

Page 3: объект хандлагат программчлал

Процедур хандлагат буюу бүтцийн программчлал

• Программыг давхцсан үүрэггүй процедуруудад хувааж, нэг процедураас нөгөө процедурыг дуудах замаар зорилгодоо хүрэх-Дутагдалтай тал их!

• Давхцалгүй, хялбар ойлгомжтой код бичиж болох авч өөрчлөлтөнд тэсвэртэй (хялбархан өөрчлөлт оруулж болох, программын бусад хэсэгт нөлөөлөхгүй) програмбичихэд хэцүү. Ихэнх bug source code-нд өөрчлөлт оруулсанаас болж үүссэн байдаг.

• Процедур гэдэгт ихэнх (функц хандлагат бус)программчлалын хэлний method, function, procedure-г хамруулна.

Page 4: объект хандлагат программчлал

Функц хандлагат

• Программыг давхцсан үүрэггүй функцуудад хувааж, нэг функцаас нөгөө функцыг дуудах замаар зорилгодоо хүрэх.

• Функц: Функц хандлагат программчлалын хэлний функц нь математикын функц хэлбэртэй байдаг. Функцын аргументад функцыг дамжуулж болдогоороо бусад төрлийн хэлнээс онцгой өөр. Глобал хувьсагчгүй тул төлөвгүй (stateless)-Гол давуу тал. Параллел программчлалд нэн тохиромжтой.

Page 5: объект хандлагат программчлал

Объект хандлагат программчлал

• Программыг давхцсан үүрэггүй харилцан уялдаатай гэхдээ аль болох хамаарал багатай объектуудад хувааж, нэг объектоос нөгөө объект руу мэдээ (message)дамжуулах (объектын метод, функц, процедурыг дуудах) замаар зорилгодоо хүрэх.

Page 6: объект хандлагат программчлал

Object Oriented Programming

• Объект баримжаат (хандлагат, төвт) программчал

• Объект хандалтат биш! Орчуулгын алдаа.

• Шийдэх гэж буй асуудлыг объект хэмээх хийсвэр өгөгдлийн төрлөөр загварчлах-хялбаршуулах арга.

• Зөвхөн сонирхож буй шинж төлөв, түүний өөрчлөлттэй холбоотой үйл хөдлөлийг объектоор төлөөлүүлэн төсөөлж, харилцан ялгаатай үүрэг бүхий объектуудын харилцаан дээр тулгуурлаж системийг бүтээх гэсэн оролдлого.

Page 7: объект хандлагат программчлал

Объект

• Мэдээлэл түүнд боловсруулалт хийх функцын нэгдэл

• Объект өөрийн төлөвийг хадгалах талбар, түүний төлвийг өөрчлөх, боловсруулах зориулалт бүхий методтай байдаг

гэх мэтээр ихэнх ном сурах бичигт тэмдэглэсэн байдаг. Эдгээр тодорхойлолт нь буруу биш ч дутуу, явцуу (өнгөцхөн) дотоод мөн чанарыг дэлгэсэн бүрэн гүйцэд тодорхойлолт биш юм.

Page 8: объект хандлагат программчлал

Объект

Дээрх тодорхойлолт дээр дараах тайлбарыг нэмж болох юм.• Объект өөрийгөө хэн гэдгийг мэддэг• Бусадтай давхцаагүй өөрийн гүйцэтгэх үүрэг

хариуцлагатай. Тэрийгээ хэрхэн гүйцэтгэхээ мэддэг. • Бусдаас тусламж авах (delegation)• Бусадтай төстэй (inheritance)• Бусдаас ялгаатай (polymorphism)• Бусдад үйлчлэх public interface-тэй• Бусдаас нуух зүйлтэй (encapsulation-data, complexity,

implementation hiding)

Page 9: объект хандлагат программчлал

Class-Төрөл (Хэв маяг)

• Aнгилал, төрөл зүйл, хэв маяг гэсэн утгатай үг.• Объект болгон өөрийн төрөл зүйлтэй. Тэр

төрлөөрөө бусдаас ондоошиж, эсвэл бусадтай ижилсдэг.

• Class буюу төрөл нь тухайн объектын хэв шинж, араншинг заасан хийсвэр тодорхойлолт буюу объектыг үүсгэхэд шаардлагатай урьдчилан бэлдсэн хэв, үлгэр-загвар юм.

• Объект: Программ ажиллах явцад санах ойд үүссэн Class-н (хэвэнд цутгаж гаргаж авсан)нэг хувь (instance) .

Page 10: объект хандлагат программчлал

Түлхүүр ойлголтууд

• Удамшил (Inheritance)

• Ондоошил (Polymorphism)

• Тусгаарлалт (Encapsulation)

• Бүрдмэл (Composition)

• Нийлмэл (Aggregation)

• Итгэмжлэл (үүрэг хариуцлагыг бусдад шилжүүлэх) – Delegation

• Хийсвэрлэл - Abstraction

Page 11: объект хандлагат программчлал

Удамшил

• Энгийн буюу дан удамшил

• Нийлмэл удамшил

• Is a (… бол …), a kind of (… бол … ны нэг)

• Нохой бол хөхтөн амьтан.

• Могой бол хэвлээр явагчдын нэг төрөл.

Page 12: объект хандлагат программчлал

Дан удамшил

• Ганцхан классаас эх авч буй удамшлын хэлбэр

Нийтлэг, ерөнхий шинж (generalization)

Онцлог ялгаатай шинж (polymorphism)

Page 13: объект хандлагат программчлал

Нийлмэл удамшил

• Нэгээс дээш тооны классаас эх авч буй удамшлын хэлбэр

• Программыг нарийн төвөгтэй болгодог олон асуудлыг дагуулдаг тул ихэнх хэлэнд дэмждэггүй. C++ хэлэнд diamond problem-g шийдэхийн тулд virtual class гэсэн ойлголт оруулж ирдэг.

Page 14: объект хандлагат программчлал

Ондоошил

• Удам (child) нь өвгөөс (parent) өвлөсөн шинж чанараас гадна өөрийн давтагдахгүй хэв шинжтэй байж болно.

• Өвгөөс өөр аргаар зорилгодоо хүрэх чадварыг ондоошил гэнэ.

• Жишээ: Бүх тээврийн хэрэгсэл нэг цэгээс нөгөөд шилжих чадвартай. Харин энэ зорилгод хүрэхийн тулд нисдэг онгоц агаараар, усан онгоц усаар, машин газраар явдаг.

Page 15: объект хандлагат программчлал

Бүрдмэл хамаарал-Үхсэн ч сэхсэн ч хамтдаа

• Харилцан нэгнийхээ оршин байх нөхцлийг бүрдүүлж буй объектуудын хамаарал буюу салшгүй бүрэлдэхүүн хэсгүүдийн хамаарал

• consists of, composed of … бол …-с бүрддэг. • Is made of ...-г ...-р хийдэг.• part of ... бол ...ны бүрэлдэхүүн хэсэг.• Has а

Page 16: объект хандлагат программчлал

Бүрдмэл хамаарал-Үхсэн ч сэхсэн ч хамтдаа

public class Car {

private Engine[] engines;

public Car () {engines = new Engine[] {new Engine()};

}}

Page 17: объект хандлагат программчлал

Нийлмэл хамаарал

public class Car {private Passenger[] passengers;

public Car() {}

public void setPassenger(Passenger[] passengers) {this. passengers = passengers.clone();

}}

Ерөнхийдөө бүрдмэл хамааралтай төстэй боловч агуулж буй тал бүрэлдэхүүн хэсгийг үүсгэх-устгах үүргийг хүлээдэггүй.

Page 18: объект хандлагат программчлал

Тусгаарлалт

• Бусдад мэдэгдэх шаардлагагүй хэсгийг нууцлах

• Зөвхөн өгөгдлийг бус программын нарийн төвөгтэй хэсэг, спекийг далдлах

• Бусдад харагдах шаардлагатай хэсгээс бусдыг нууснаар программ хялбар, ойлгомжтой болдог.

Page 19: объект хандлагат программчлал

Итгэмжлэл-Delegation

• Объект өөрийн мэдэхгүй (чадахгүй)хариуцаагүй үүрэг-үйлдлийг бусдад даатган шилжүүлэх (өртөөлөх) явдлыг хэлнэ.

• Ө.х бусдаар хийж гүйцэтгүүлэх

• Нийлмэл (aggregation), бүрдмэл (composition) хамааралтай хослуулан маш их хэрэглэдэг. Delegation-г ашигласан олон зохиомжийн хэлбэр (design pattern) байдаг: Proxy, Bridge, Adapter, Decorator pattern г.м

Page 20: объект хандлагат программчлал

Хийсвэрлэл – Abstraction (Generalization)

• Тухайн төрлийн объектод байх нийтлэг хэв шинж, зан авирыг ерөнхийлөн хийсвэрлэх үйл явцыг хэлнэ.

• Хийсвэрлэлийг томъёолон гаргахад програмраммчлалын хэл, тухайн нөхцөл байдлаас хамааран Interface, эсвэл Abstract Class-г ашигладаг.

Page 21: объект хандлагат программчлал

UML тэмдэглэгээ

• Class

Page 22: объект хандлагат программчлал

UML тэмдэглэгээ

• Interface

Page 23: объект хандлагат программчлал

UML тэмдэглэгээ

• Iconic Notation (Provided Interface vs Required Interface)

Page 24: объект хандлагат программчлал

UML тэмдэглэгээ

• Provided Interface vs Required Interface

Page 25: объект хандлагат программчлал

Жишээ дасгал