30. Nesneye dayalı programlama: "nokta" kullanımı

Birazdan modern bir programlama sitili olan Nesneye Dayalı Programlamayı (Object-Oriented Programming [OOP])öğreneceksiniz. Şimdiye kadar gördüklerimizden her ne kadar anlaşılmamış olsa da Python bir OOP dilidir. Nesneye dayalı programları yazmaya başlamadan önce, bu işte kullanılan yazım kurallarını öğreneceğiz.


Bir köpeğin sıradan bir günü

Fido bir köpektir. Sıradan bir günde pek çok iş yapar: yemek yer, koşar, uyur v.b. Bunları nesneye dayalı bir programcı aşağıdaki gibi yazabilir:

Fido = Dog()
Fido.eats()
Fido.runs()
Fido.sleeps()

Bunların yanı sıra Fido'nun pek çok özelliği vardır. Bunlar daha önceden gördüğümüz değişkenlerdir, ancak bunlar Fido'ya aittirler. Fido uzundur ve saçları siyahtır. Bunları bir programcı aşağıdaki gibi ifade edebilir:

Fido.size = "tall"
Fido.hair_colour = "black"

Nesneye dayalı programlamada aşağıdakiler vardır:

Nesneler kendisine ait olan, kendi metot ve özellikleri olan başka nesneleri de kullanabilirler:

Fido.tail.wags()
Fido.tail.type = "bushy"
Fido.left_front_paw.moves()
Fido.head.mouth.teeth.canine.hurt()

Bunun nasıl çalıştığını ileride göreceğiz. Şimdi Reeborg'un "nokta" yı nasıl kullandığını görelim.


Kullanılmış bir robot adını alıyor

Şimdiye kadar yazdığımız programlarda Nesneye Dayalı Programlamayı kullanmadık. Basit bir örnekle başlayalım:

Önce, boş bir dünya ile işe başlayacağız, eğer gerekliyse robot kaldır/ekle add/remove robot  butonuna basarak robotu da kaldıracağız.

RUR-PLE' daki RUR'un Roberge's Used Robot (Roberge'ın Kullanılmış Robotu) anlamına geldiğini hatırlıyor olabilirsiniz; bizim kullandığımız robotlar yaşlı ve hatalıdırlar. [Nasıl tamir edileceğini ileride göreceğiz]. UsedRobot sınıfının ilk gerçeklemesini yaratacağız ve ona uygun bir isim vereceğiz: Reeborg! Sonra ona bir adım atması ve kendini kapatmasını söyleyeceğiz.

Reeborg = UsedRobot()
Reeborg.move()
Reeborg.turn_off()

Deneyin!


Daha Fazla Robot

Metotlarda, fonksiyonların da kullandığı gibi parametreler kullanabilirler. Boş bir dünya ile başlayın ve aşağıdakini deneyin:

# başlangıç noktasına (varsayılan-default) bir robot ekle, ama rengi farklı olsun
Larry = UsedRobot(colour='blue')
# ikinci robot, default renk (gri) yüzü kuzeye dönük
Curly = UsedRobot(1, 3, 'N')
#  üçüncü robot bip taşıyor
Moe = UsedRobot(1, 2, beepers=9, colour='yellow')

Larry.move()
Curly.move()
Moe.move()
Larry.move()
Curly.move()
Moe.move()

Curly.turn_left()
Larry.move()
Curly.move()
# Herhangi bir robotu kapatmak programı sonlandırır.
Moe.turn_off()

Robotların farklı renkleri vardır: grey (gri, default), yellow (sarı), blue (mavi), light blue (açık mavi), green (yeşil) ve purple (mor). Herhangi bir yere yerleştirilebilirler (aynı noktaya birden fazla robot koyulabilir), dört yönden birisine bakabilirler ('E' [varsayılan-by default], 'N', 'S', 'W') veya bip taşıyabilirler. İki adlandırılmış parametre (beepers ve colour) ve üç adlandırılmamış parametre (street, avenue and orientation) olduğuna dikkat edin.Adlandırılmış iki parametre sonda yer almalıdır (eğer adlarını yazarsanız kendi aralarında yer değiştirebilirler), adlandırılmamış parametreler ise  başta aynı sıra muhafaza edilerek yer almalıdır. Bu nedenle, bir yön (orientation) belirtmek istersek, öncelikle cadde (street) ve sokağı (avenue) belirtmeliyiz. 

Aşağıdakiler geçerlidir:

R1 = UsedRobot(2) # 2. cadde, 1.sokak, yüzü doğuya dönük
R2 = UsedRobot(2, 3) # 2. cadde, 3. sokak, yüzü doğuya dönük
R3 = UsedRobot(3, 1, 'S') # 3. cadde, 1. sokak, yüzü güneye dönük
R4 = UsedRobot(5, colour='yellow') # 5. cadde, 1. sokak, yüzü doğuya dönük, rengi sarı

Aşağıdakiler geçerli değildir:

R5 = UsedRobot(3, 'S') # yön 3. parametre değil
R6 = UsedRobot(colour='yellow', 5) # adlandırılmamış parametre, adlandırılmıştan sonra kullanılmaz
previousAdınız nedir? - home - Globalleştirme kötü bir şeydirnext