Kompyuter ilmlari va dasturlash texnologiyalari


Abstraksiya va inkapsulatsiya



Yüklə 90,48 Kb.
səhifə3/6
tarix25.12.2023
ölçüsü90,48 Kb.
#161466
1   2   3   4   5   6
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.

Yüklə 90,48 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə