İyi günler benimçokgen classı tanımlayıp içinde bir alan çevre ve turtle çizimini oluşturmak gerekiyor
bunun altında başka üçgen kara daire gibi claslar oluşturmam gerekiyor yardımcı olurmusunuz?
Sınıf oluşturma hakkında örnek kod için bakınız.
Polygon, Rectangle and Triangle Class in Python
Çokgen çizimi için örnek kod için bakınız.
How to draw pentagon, hexagon and other polygons in Python Turtle?
"altında"dan kastınız miras alma sanırım, dairenin çokgen sınıfını miras alması doğru olmaz.
import turtle
import math
t = turtle.Turtle()
class DüzgünÇokgen():
def __init__(self, gen):
assert gen >= 3
self.gen = gen
self.dışaçı = 360 / gen
self.içaçı = 180 - self.dışaçı
def çiz(self, kenar):
for i in range(self.gen):
t.forward(kenar)
t.right(self.dışaçı)
def alan(self, kenar):
cosA = math.cos(math.radians(self.dışaçı))
sinA = math.sin(math.radians(self.dışaçı))
b_kare = kenar**2 / (1 - cosA) / 2 # cosinüs formülü
return self.gen * (sinA * b_kare /2) # sinüs alan formülü
class Daire:
def alan(self, yarıçap):
return math.pi * yarıçap**2
def çiz(self, yarıçap):
t.circle(yarıçap)
Bu kod oyle demiyor ama :) DuzgunCokgen sinifini da kose uzakligiyla calisacak sekilde duzeltirsek bu iki sinifin arayuzunun ayni olacagini soyluyor.
Miras iliskileri kurarken siniflarin ne olduklarina (neyi temsil ettiklerine) gore degil, nasil arayuzlere, varsayimlara ve beklentilere sahip olduklarina bakmak lazim.
Yani DuzgunCokgen
ve Daire
nin Cokgen
den gelmeleri yanlis olabilir ama AlaniAlinabilenCizim
den gelmeleri yanlis olmayabilir.
Daire
nin Elips
ten veya Kare
nin Dortgen
’den gelmesi de dogru veya yanlis olabilir—beklentilere bagli.
Zaten öyle oluyor, ama tüm metotlarının üstüne yazacağım bir base sınıf oluşturma ihtiyacını burada hissetmedim.
Bunu dairenin çokgen olmadığı gerçeğine dayanarak söylemiştim, aynı tür özelliklere sahip olmalarının dışında bir benzerlikleri yok. Bu da iksinin de geometrik şekil olmasından kaynaklanıyor. GeometrikŞekil
sınıfı miras alınabilirdi.
Evet o zaman aynı interface’i kullanmak iyi olur, ama çokgen için en büyük köşegen uzunluğunu alanı bulmakda kullanmak pek kullanışlı gelmedi bana.