|
Dasturlash uslublari va paradigmalar
|
bet | 25/30 | Sana | 27.01.2024 | Hajmi | 0,99 Mb. | | #146980 |
Bog'liq PARADIGMA YNProtected kalit so'z bilan inkapsulyatsiya private-ga o'xshaydi, faqat public kalit so'z uning ostida aniqlangan holatlar va xatti-harakatlar o'rtasida sinflararo o'zaro ta'sirga imkon beradi. Bu sizga ikkita sinf ma'lumot almashishi kerak bo'lganda foydalidir, lekin siz ushbu ma'lumotlarning biron bir sinfning umumiy interfeyslarida bo'lishini xohlamaysiz.
Inkapsulyatsiya Ruby-ning ko'plab asosiy dasturchilarida uchraydi. Masalan,,
Sinflar: usullarni qamrab oladi.
Funksiyalar: mantiqni qamrab oladi.
Ob'ektlar: holat va xatti-harakatlarni qamrab oladi.
34) Ob’ektga yo’naltirilgan dasturlash(polimorfizm va uning turlari)
OOP (ob'ektga yo'naltirilgan dasturlash) ning to'rtta asosiy tushunchasi meros, abstraktsiya, polimorfizm va inkapsulyatsiyadir. OOPga yangi kelgan kishi uchun dastlab OOPning so'nggi uchta asosiy tushunchasini tushunish qiyin bo'lishi mumkin (chunki merosni tushunish juda oddiy).
Polimorfizm-bu ob'ektning ko'plab shakllarni olish qobiliyati.
Bir nechta ISA testidan o'tishi mumkin bo'lgan har qanday Java ob'ekti polimorfik deb hisoblanadi. Bu shuni anglatadiki, bolalar sinfining har qanday ob'ekti ota-ona ierarxiyasida har qanday sinf shaklini olishi mumkin va albatta, o'zi. Bu shuni anglatadiki, bolalar sinfi ob'ekti ota-ona ierarxiyasidagi har qanday sinf havolasiga va albatta o'ziga tayinlanishi mumkin.
Masalan, talaba sinfi shaxs sinfiga bog'liq.
Student student = new Student()
Person person = new Student()
Ko'pincha polimorfizm OOPda ota-ona sinfiga havola bolalar sinfi ob'ektiga murojaat qilish uchun ishlatilganda qo'llaniladi. Aslida, bu erda biz dinamik polimorfizm haqida gapiramiz (men buni keyinroq tasvirlab beraman).
Polimorfizmning 2 turi mavjud, ular odatda tilga olinadi.
Dinamik polimorfizm
Shuningdek, u ish vaqti polimorfizmi, dinamik bog'lanish, ish vaqti bilan bog'lanish, kech bog'lanish va usulni bekor qilish deb ataladi. Bu erda turli sinflarda ko'plab shakllar mavjud.
Bu odatda"polimorfizm" deb ataladigan narsa. Buni juda oddiy tushuntirib beray -
Aytaylik, sinflar ierarxiyasidagi sinflarda (ota-ona-bola munosabatlari) bir xil usul imzosi bo'lgan usullar mavjud, ammo bu usullar turli shakllarga ega (bu usulni bekor qilish deb nomlanadi). Keyin ob'ektga sinf havolasi berilganda va ob'ekt usuli chaqirilganda, ob'ekt sinfi usuli bajariladi. Havola sinfi usuli emas (agar havola ota-ona sinfi bo'lsa). Ob'ektni yaratish ish vaqtida sodir bo'lganligi sababli, bajarilishi kerak bo'lgan usul shakli (ob'ektdagi usul) faqat ish vaqtida aniqlanishi mumkin.
Misol(Java tilida):
class Person {
public void teach(){
System.out.println("Person can teach");
}
}
class Teacher extends Person {
public void teach() {
System.out.println("Teacher can teach in a school");
}
}
public class TestTeacher {
public static void main(String args[]) {
Person person = new Person(); //Person reference and object
Person another_person = new Teacher(); //Person reference, Teacher object
Teacher teacher = new Teacher(); //Teacher reference and obj. person.teach();//output: Person can teach // Here you can see Teacher object's method is executed even-
// -though the Person reference was used
another_person.teach();//output: Teacher can teach in a school teacher.teach();//output: Teacher can teach in a school
}
}
|
| |