|
Kompyuter ilmlari va dasturlash texnologiyalariAbstraksiya va inkapsulatsiya
|
səhifə | 3/6 | tarix | 25.12.2023 | ölçüsü | 90,48 Kb. | | #161466 |
| Ahmad phyton 2 MI (1)Abstraksiya va inkapsulatsiya.
Abstraksiya va inkapsulatsiya, ob'ektga yo'naltirilgan dasturlash (OOP) prinsiplari bo'yicha muhim qismlardir.
Abstraksiya:
Abstraksiya, ob'ektning asosiy xususiyatlarini aniqlash va boshqa detallarini yashirish prinsipi. Boshqa so'z bilan, biz bitta ob'ektning muhim xususiyatlarini tanlash va ularni aniqlash orqali, uning asosiy xususiyatlari bilan ishlashni ta'minlash. Misol uchun:
# Abstraksiya misoli
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Square(Shape):
def __init__(self, side):
self.side = side
def area(self):
return self.side * self.side
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
# Ob'ekt yaratish
kvadrat = Square(5)
aylana = Circle(3)
# Maydonini hisoblash va chiqarish
print(f"Kvadrat maydoni: {kvadrat.area()}")
print(f"Aylana maydoni: {aylana.area()}")
Bu misolda, Shape sinfi abstrakt sinf (abstract class) sifatida ifodalangan. Uning ichida area metodi abstractmethod sifatida belgilangan. Bu metodning asosiy maqsadi, asosiy sinfda boshqa sinflar uchun zarur bo'lgan funksiya interfeysini ta'minlashdir.
Square va Circle sinflari esa Shape sinfiga voris bo'lib, area metodini o'zgartirib, shu sinf uchun mos ravishda qo'llanilgan maydoni hisoblashadi.
Inkapsulatsiya:
Inkapsulatsiya, ma'lumotlarni yashirish prinsipi hisoblanadi. Bu, ob'ektning ichidagi ma'lumotlarni (o'zgaruvchilar va metodlar) yashirish va ularni faqat ob'ekt orqali foydalanishni ta'minlaydi. Bunda, ma'lumotlar faqat ob'ektning ichidan o'qiladi va o'zgartiriladi, lekin asosiy dastur qismiga ega bo'lmaydi.
Misol:
class BankHisob:
def __init__(self):
self.__balans = 0 # __balans o'zgaruvchisi yashirilgan
def pulQo'shish(self, miqdor):
self.__balans += miqdor
def pulOlish(self, miqdor):
if miqdor <= self.__balans:
self.__balans -= miqdor
else:
print("Yetarli mablag' yo'q")
def balansniKo'rsat(self):
return self.__balans
# Ob'ekt yaratish
hisob = BankHisob()
# Pul qo'shish
hisob.pulQo'shish(1000)
# Pul olish
hisob.pulOlish(500)
# Balansni ko'rsatish
print(f"Hozirgi balans: {hisob.balansniKo'rsat()}")
Ushbu misolda, BankHisob sinfi ichida __balans o'zgaruvchisi yashirilgan. Bunday qilib, ushbu o'zgaruvchiga faqat sinf ichidagi metodlar orqali murojaat qilish mumkin. Bu, o'zgaruvchining bevosita chaqirilishini oldini oladi va dastur kodini toza va qo'l ishlashi mumkin bo'ladi.
Dostları ilə paylaş: |
|
|