Jumat, 26 Desember 2025

Class Abstract dan Decorator pemrograman python

from abc import ABC, abstractmethod

class Button(ABC):

    def __init__(self, set_link):
        self.link = set_link

    @abstractmethod
    def click(self):
        pass

    @property
    @abstractmethod
    def link(self):
        pass

class PushButton(Button):

    def click(self):
        print("Go To: {}".format(self.link))

    @Button.link.setter
    def link(self, input):
        self.__link = input

    @link.getter
    def link(self):
        return self.__link

tombol1 = PushButton("datanetid.blogspot.com")
tombol1.click()


Kamis, 25 Desember 2025

Class Abstract pemrograman python

# membuat class abstract
# abc = abstract base class
from abc import ABC, abstractmethod

class Button(ABC):
    @abstractmethod
    def click(self):
        pass

class PushButton(Button):
    def click(self):
        print("push button click")

tombol2 = PushButton()
tombol2.click()


Rabu, 24 Desember 2025

Magic method pemrograman python

class Mangga:

    # magic method
    def __init__(self, nama, jumlah):
        self.nama = nama
        self.jumlah = jumlah

    def __repr__(self):
        return "Debug - Mangga: {} dengan jumlah: {}".format(self.nama, self.jumlah)

    # digunakan saat program telah selesai
    def __str__(self):
        return "Debug Mangga: {} dengan jumlah: {}".format(self.nama, self.jumlah)

    def __add__(self, objek):
        return self.jumlah + objek.jumlah

    @property
    def __dict__(self):
        return "objek ini mempunya nama dan jumlah"

belanja1 = Mangga("manggis", 100)
belanja2 = Mangga("jeruk", 50)
print(repr(belanja1))
print(belanja2)
print(belanja1 + belanja2)
print(belanja1.__dict__)


Selasa, 23 Desember 2025

Diamond Problem pemrograman python

class A:
    def show(self):
        print("ini adalah show A")

class B(A):
    def show(self):
        print("ini adalah show B")

class C(A):
    def show(self):
        print("ini adalah show C")

class D(B,C):
    pass
objek = D()
objek.show()


Senin, 22 Desember 2025

Method Resolution Order pemrograman python

class A:
    def show(self):
        print("ini adalah show A")

class B:
    def show(self):
        print("ini adalah show B")

class C(A, B):
    pass

objek = C()
objek.show()
help(objek)


Minggu, 21 Desember 2025

Multiple Inheritance pemrograman python

class Team():
    def setTeam(self, team):
        self.team = team

    def showTeam(self):
        print(self.team)

class tipe_Hero():
    def setTipe(self, tipe):
        self.tipe = tipe

    def showTipe(self):
        print(self.tipe)

class Hero(Team, tipe_Hero):
    def __init__(self, name, health):
        self.name = name
        self.health = health

archer = Hero("archer", 100)
archer.setTeam("merah")
archer.setTipe("panah")

archer.showTeam()
archer.showTipe()


Kamis, 18 Desember 2025

Override Method pemrograman python

class Hero:
    def __init__(self, name, health):
        self.name = name
        self.health = health

    def showInfo(self):
        print("{} health {}".format(self.name, self.health))

class Hero_intelligent(Hero):
    def __init__(self, name):
        super().__init__(name, 100)

    # override method
    def showInfo(self):
        print("{} \n\tTipe: intelligent, \n\thealth: {}".format(self.name, self.health))  
   
class Hero_strength(Hero):
    def __init__(self, name):
        super().__init__(name, 97)

lina = Hero_intelligent("lina")
axe = Hero_strength("axe")

lina.showInfo()
axe.showInfo()


Rabu, 17 Desember 2025

Super pemrograman python

class Hero:
    def __init__(self, name, health):
        self.name = name
        self.health = health
   
    def showInfo(self):
        print("{} dengan nama: {}".format(self.name, self.health))

class Hero_intelligent(Hero):
    def __init__(self, name):
        # Hero.__init__(self, name, 100)
        super().__init__(name, 100)
        super().showInfo()

class Hero_strength(Hero):
    def __init__(self, name):
        # Hero.__init__(self, name, 200)
        super().__init__(name, 200)
        super().showInfo()

lina = Hero_intelligent("lina")
axe = Hero_strength("axe")


Selasa, 16 Desember 2025

Pendahuluan Inheritance pemrograman python

class Hero:

    def __init__(self, name, health):
        self.name = name
        self.health = health

class Hero_intelligent(Hero):
    pass

class Hero_defence(Hero):
    pass

archer = Hero("Archer", 100)
sword = Hero_intelligent("sword", 70)
axe = Hero_defence("axe",95)

print(archer.name, archer.health)
print(sword.name, sword.health)
print(axe.name, axe.health)


Senin, 15 Desember 2025

Latihan Encapsulasi pemrograman python

class Hero:

    #private class variable
    __jumlah = 0

    def __init__(self, name, health, attPower, armor):
        self.__name = name
        self.__healthStandar = health
        self.__attPowerstandar = attPower
        self.__armorStandar = armor
        self.__level = 1
        self.__exp = 0

        self.__healthMax = self.__healthStandar * self.__level
        self.__attPower = self.__attPowerstandar * self.__level
        self.__armor = self.__armorStandar * self.__level

        self.__health = self.__healthMax

        Hero.__jumlah =+ 1

    @property
    def info(self):
        return "{} level {}: \n\thealth = {}/{} \n\tattack = {} \n\tarmor = {}".format(self.__name, self.__level, self.__health, self.__healthMax, self.__attPower, self.__armor)
   
    @property
    def gainExp(self):
        pass

    @gainExp.setter
    def gainExp(self, addExp):
        self.__exp += addExp
        if (self.__exp >= 100):
            print(self.__name,"level up")
            self.__level += 1
            self.__exp -= 100
            self.__healthMax = self.__healthStandar * self.__level
            self.__attPower = self.__attPowerstandar * self.__level
            self.__armor = self.__armorStandar * self.__level

    def attack(self, musuh):
        self.gainExp = 50

slandar = Hero("slandar", 100, 5, 50)
axe = Hero("axe", 100, 5, 50)
print(slandar.info)

slandar.attack(axe)
slandar.attack(axe)
slandar.attack(axe)
print(slandar.info)


Minggu, 14 Desember 2025

Getter dan Setter pemrograman python

class Hero:

    def __init__(self, name, health, armor):
        self.__name = name
        self.__health = health
        self.__armor = armor
        # self.info = "name {} : \n\thealth = {}".format(self.__name, self.__health)

    @property
    def info(self):
        return "name {} : \n\thealth = {}".format(self.__name, self.__health)
   
    @property
    def armor(self):
        pass

    @armor.getter
    def armor(self):
        return self.__armor
   
    @armor.setter
    def armor(self, input):
        self.__armor = input

    @armor.deleter
    def armor(self):
        print ("armor di delete")
        self.__armor = None

sniper = Hero("sniper", 100, 5)
print(sniper.info)

print(sniper.armor)

sniper.armor = 50
print(sniper.armor)

print ("delete armor")
del sniper.armor


Sabtu, 13 Desember 2025

Staticmethod dan Classmethod pemrograman python

class Hero:

    # private class variable
    __jumlah = 0

    def __init__(self, name):
        self.name = name
        Hero.__jumlah += 1

    # method ini hanya berlaku untuk object
    def getJumlah(self):
        return Hero.__jumlah
   
    # method ini tidak berlaku untuk object
    def getJumlah1():
        return Hero.__jumlah
   
    # method static (decorator)
    @staticmethod
    def getJumlah2():
        return Hero.__jumlah

    @classmethod
    def getJumlah3(cls):
        return cls.__jumlah
   
sniper = Hero("Sniper")
print (Hero.getJumlah2())
archer = Hero("Archer")
print (sniper.getJumlah2())
sword = Hero("sword")
print (Hero.getJumlah3())


Encapsulasi pemrograman python

class Hero:

    def __init__(self, name, health, attackPower):
        self.__name = name
        self.__health = health
        self.__attackPower = attackPower

    # getter
    def getName(self):
        return self.__name

    def getHealth(self):
        return self.__health
   
    # setter
    def diserang(self, serangPower):
        self.__health -= serangPower
       
# awal dari game
sniper = Hero ("sniper", 50, 5)

# game berjalan
print (sniper.getName())
print (sniper.getHealth())
sniper.diserang(5)
print (sniper.getHealth())

Private Variable pemrograman python

class Hero:
    # class variable
    jumlah = 0
    __privateJumlah = 0

    def __init__(self, name, health):
        self.name = name
        self.health = health

        # variabel instance private
        self.__private = "private"

        # variabel instance protected
        self._protected = "protected"

sisi = Hero("sisi", 100)
print (sisi.health)
print (Hero.__dict__)
print (Hero.__privateJumlah)


Rabu, 10 Desember 2025

Latihan OOP tkinter pemrograman python

import tkinter

main_window = tkinter.Tk()

label1 = tkinter.Label(main_window, text="label1")
label2 = tkinter.Label(main_window, text="label2")

tombol1 = tkinter.Button(main_window, text="tombol1")
tombol2 = tkinter.Button(main_window, text="tombol2")

# method positioning
label1.pack()
label2.pack()
tombol1.pack()
tombol2.pack()

# method menampilkan GUI
main_window.mainloop()


Senin, 08 Desember 2025

Methods pemrograman python

class Hero:
    # class variable
    jumlah = 0

    def __init__(self, inputName, inputHealt, inputPower, inputArmor):
        # instance variable
        self.name = inputName
        self.healt = inputHealt
        self.power = inputPower
        self.armor = inputArmor
        Hero.jumlah += 1
    # method tanpa return
    def siapa (self):
        print ("Namaku adalah "+ self.name)

    # method dengan argumen
    def healtUp (self,up):
        self.healt += up
       
    # method dengan return
    def getHealt (self):
        return self.healt

hero1 = Hero ("sniper", 100, 5, 5)
hero2 = Hero ("sword", 130, 7, 2)

hero1.siapa()
hero1.healtUp(10)

print (hero1.getHealt())


Class dan Instance variables pemrograman python

class Hero:
    # class variable
    jumlah = 0

    def __init__(self, inputName, inputHealt, inputPower, inputArmor):
        # instance variable
        self.name = inputName
        self.healt = inputHealt
        self.power = inputPower
        self.armor = inputArmor
        Hero.jumlah += 1
        print ("membuat Hero dengan nama " + inputName)

hero1 = Hero ("sniper", 100, 5, 5)
print (Hero.jumlah)
hero2 = Hero ("sword", 130, 7, 2)
print (Hero.jumlah)
hero3 = Hero ("archer", 99, 5, 1)
print (Hero.jumlah)

print (f"Nama = {hero1.name}, Healt = {hero1.healt}, Power = {hero1.power}")
print (hero1.__dict__)
print (hero2.__dict__)
print (hero3.__dict__)
print (Hero.__dict__)