OOP - Başlangıç çalışmam hk

Selamlar. Bir süredir OOP üzerinde çalışıyorum. Aşağıya ilk örnek kodumu yazdım. Bir iki soru sormak istiyorum müsaadenizle:

Amacım, bir tekstil firmasında üretimde olan ürünlerin kumaş siparişlerini hesaplamak.
Bunun için Ürünler adında bir class açarak, bunların ortak özelliklerini init fonksiyonunda topladım. Kodlarımdaki temel mantık doğru mudur? Bir yanlışlık var mıdır?

Ayrıca, sadece bilgi almak açısından soracağım: İlerleyen zamanlarda Pyqt5 derslerinde, bu verileri kullanıcıdan input alarak girmek mümkün mü? O halde de yine bu şekilde OOP mantığı üzerine mi kod yazmalıyım?

Ayrıca, class içinde belirttiğim her metodun parantez içinde “self” yazmalı mıyım? Mantığı tam olarak nedir?

Teşekkürler.

class Urunler:

    def __init__(self,urunkod,urunad,adet,kumas, kumasen,pastalboy,pastalkat,gr):
        self.urunkod = urunkod
        self.urunad = urunad
        self.adet = adet 
        self.kumas = kumas
        self.kumasen = kumasen
        self.pastalboy = pastalboy
        self.pastalkat = pastalkat
        self.kumasgr = gr
    
    def carp(self):
        a= self.kumasen * self.pastalboy * self.kumasgr
        topla = a * self.pastalkat 
        topla = round(topla,4)
        return topla
    
    def yazdir(self):
        print(f"Ürün kodu: {self.urunkod}\nÜrün Adı: {self.urunad}\nÜrün Kumaşı: {self.kumas}\nGerekli Kumaş: {self.carp()}")

urun1 = Urunler("FP200","Fisher Price - İkili Takım", 2000,"30/1 İnterlok", 1.80, 14,65,0.220)
urun2 = Urunler("FP201","Fisher Price - Tshirt Takım", 3000,"30/20 İki İplik", 1.90, 13.5 ,80 ,0.230)
urun3 = Urunler("FP202","Fisher Price - Şort Takım", 5000,"30/1 Süprem", 1.80, 19 ,55,0.200)

urun1.yazdir()
print("-------------------------")
urun2.yazdir()
print("-------------------------")
urun3.yazdir()
print("-------------------------")

Sinif isimlerini sinifin degil orneginin temsil ettigi seye gore vermek lazim. Burada her bir ornek bir urunu temsil ettigi icin sinifin adi Urun olmali. Urunler, birden fazla Urunun oldugu bir envanteri veya katalogu temsil ediyor gibi duruyor.

__init__, ama kodda dogru yazmissin zaten.

Carpma genelde iki nesne arasinda olan bir sey. Burada hic bir parametre almayip urun.carp() seklinde kullanilan bir fonksiyon var. Acaba ismi fiyat_hesapla veya fiyat_al veya kisaca fiyat olsaydi daha mi iyi olurdu?

Iceride de a ve topla gibi degiskenler var. Onlara isim vermek iyi olur.

Dogrudur, bir yanlislik goremiyorum.

Mumkun.

Simdi de mumkun. "FP200" yerine input() yazmayi deneyebilirsin.

Hangi mantik kolay geliyorsa o sekilde yazmalisin. OOP devam etmekte bir sakinca yok.

Solundaki def ile ayni: Dil bu sekilde tasarlanmis.

Ornek metodlarinin ilk parametresi olmak zorunda ama bu parametrenin adi self olmak zorunda degil.

2 Beğeni

Hocam böyle kapsamlı bir cevap için çok teşekkür ediyorum. Naçizane iki soru sormama daha müsaade edin lütfen:

1- FP200 yerine input() yaz demişsiniz ancak tam olarak nerede yazmalıyım? Yani init altında tanımladığım self.urunad değişkenine mi tanımlamam gerekiyor? Yoksa classın içinde ayrı bir fonksiyon açarak mı çalışmam gerekiyor?

2- Ayrıca, bir classın içinde bir kaç değişken tanımladık diyelim. Ama aynı clasın içinde bir metod açıp, tek kullanımlık bir değişken tanımlayabilir miyim? Başına self yazmama gerek olmadan?

Yapmışsınız zaten:

1 Beğeni

Hay Allah .:slight_smile: Doğru söylüyorsunuz hocam.

Kullanıcıdan input alarak girdi de alabiliyorum şu an. Teşekkürler yardımlarınız için :slight_smile: