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

Post on 06-Jul-2015

265 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Р. Батзоригт

2014-10-29

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Object Oriented Programming

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

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

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

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

Объект

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

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

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

Объект

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

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

implementation hiding)

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

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

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

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

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

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

• Удамшил (Inheritance)

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

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

• Бүрдмэл (Composition)

• Нийлмэл (Aggregation)

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

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

Удамшил

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

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

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

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

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

Дан удамшил

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

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

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

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

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

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

Ондоошил

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

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

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

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

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

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

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

public class Car {

private Engine[] engines;

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

}}

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

public class Car {private Passenger[] passengers;

public Car() {}

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

}}

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

Тусгаарлалт

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

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

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

Итгэмжлэл-Delegation

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

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

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

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

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

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

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

• Class

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

• Interface

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

• Iconic Notation (Provided Interface vs Required Interface)

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

• Provided Interface vs Required Interface

Жишээ дасгал

top related