Nesne tabanlı programlamaya giriş sorusu

Ark_Us

Kilopat
Katılım
7 Nisan 2017
Mesajlar
848
Makaleler
1
Çözümler
7
Herkese merhaba, nesne tabanlı programlamaya giriş yaptım. Videoda anlatılan, yazılan hepsini aşağıya bıraktım.

Python:
# class


class Person:
   
    # class attributes
    adress = "no iformation"
    # constructor (yapıcı metot)
    def __init__(self , name , year):
        # object attributes
        self.name = name
        self.year = year
        print("init metodu çalıştı")


        # methods
   

# object instance

p1 = Person(name= "alev" , year= 1990)
p1 = Person("alev" , 1990)
p2 = Person(name="celal",year=  1995)
p2 = Person("celal", 1995)

# updaing
p1.name = "ava"
p1.adress = "sit"



# acesing object
print(f"name {p1.name}  year {p1.year} adress: {p1.adress}")
print(f"name {p2.name}  year {p2.year} adress: {p2.adress}")

print(p1)
print(p2)

print(type(p1))
print(type(p2))
print(p1 == p2)

Benim anladığım kadarıyla person adlı bir class (bu class fonksiyona pek benziyor) yazıp, 2 nokta üs üste ile birlikde girinti oluşturuluyor ve class attributes bu, tam olarak ne anlama geliyor bilmiyorum. Çevirisine baktım, sınıf öznitelik anlamı çıktı. Sanırım burası kod hakkında bilgi girilen kısmı, tam emin degilim. Sonra constructor (yapıcı metot) denen bir kod yazılıyor, burada benim anladığım def __init__(self, name, year) bu metot ilk degişkeni ya da parametresi self olma zorundaymış. Bu self aşağıdaki p1 ve p2 temsil ettigi söylendi. Sanırım P1 ve P2'den gelen bilgileri almakla yükümlü aşağıdaki self. Name = name ve self. Year = year bu kısmı pek anladığım söylenemez, burada anladığım kadarıyla P1 içine name alanı uluşuyor ve buradan glass içine name ulaşıyor galiba. Emin degilim, benim anladıgım bu. Sanırım eksik anlamışım gibi görünüyor, yanlış anladıysam lütfen beni düzeltin.
 
Son düzenleyen: Moderatör:
Anlattığın kısımda Python'a özgü olan şeyler de var. O yüzden şöyle anlatmaya çalışayım.

Nasıl sayılar, metinler, karakterler gibi veri tipleri varsa biz de sınıflar sayesinde kendi veri tiplerimizi yapabiliyoruz. Yaptığımız sınıfların verileri bulunuyor. Attributes dediği o oluyor. Mesela insanın adı ve doğum yılı vardır. Ad metin, doğum yılı ise sayıdır. Sayı ve metin veri türlerini kullanarak bir veri
tipi oluşturmuş olduk.

Sınıflardan oluşan veriler nesne diye anılır. Nesneler consturoctur (yapıcı) ile oluşturulur. Senin a = 5 demenden farklı olmasından anlamışsındır. Nesnelerin metotları da olabiliyor. Bunlar da aslında fonksiyon. Ama o nesneye özel fonksiyonlar. Mesela bir listede .append() demen gibi. Liste bir nesne ve sen onun bir metodunu çağırmış oluyorsun. Gidip bir sayıya .append() diyemezsin. Ona özeldir.

Genel olarak böyle özetlemeye çalıştım. Çok daha uzun ve karışık bir iştir. Açıkçası Python ile başlamak bence pek de mantıklı değil. Sonrasında Java, C# veya C++ gördüğünde bu olayları tekrar sıfırdan öğrenmiş gibi olacaksın. Tam tersini yapsan Python'a kolayca ayak uydurabilir durumda olurdun.
 
Anlattığın kısımda Python'a özgü olan şeyler de var. O yüzden şöyle anlatmaya çalışayım.

Nasıl sayılar, metinler, karakterler gibi veri tipleri varsa biz de sınıflar sayesinde kendi veri tiplerimizi yapabiliyoruz. Yaptığımız sınıfların verileri bulunuyor. Attributes dediği o oluyor. Mesela insanın adı ve doğum yılı vardır. Ad metin, doğum yılı ise sayıdır. Sayı ve metin veri türlerini kullanarak bir veri.
Tipi oluşturmuş olduk.

Sınıflardan oluşan veriler nesne diye anılır. Nesneler consturoctur (yapıcı) ile oluşturulur. Senin a = 5 demenden farklı olmasından anlamışsındır. Nesnelerin metotları da olabiliyor. Bunlar da aslında fonksiyon. Ama o nesneye özel fonksiyonlar. Mesela bir listede .append() demen gibi. Liste bir nesne ve sen onun bir metodunu çağırmış oluyorsun. Gidip bir sayıya .append() diyemezsin. Ona özeldir.

Genel olarak böyle özetlemeye çalıştım. Çok daha uzun ve karışık bir iştir. Açıkçası Python ile başlamak bence pek de mantıklı değil. Sonrasında Java, C# veya C++ gördüğünde bu olayları tekrar sıfırdan öğrenmiş gibi olacaksın. Tam tersini yapsan Python'a kolayca ayak uydurabilir durumda olurdun.

O zaman öyle bilgi buldum yazılıma Python'dan başlanmalı diye bende öyle yaptım ama belli bir noktaya kadar ilerleyince Python'dan başlayanlar OOP bölümünde zorluk çekecegi bilgisine ulaşdım ama sanırım geç kaldım diyerek bende devam etme gereği gördüm sizden ricam ben bu kodları çalışmalarını doğru anlamış mıyım yoksa eksikmi anlamışım.
Şimdi son satırda yazdıgınız beni düşündürmedi degil ben size bir SS atayım Python'da ne kadar ilerledigime dair siz yazılım işini bende kat be kat daha iyi biliyorsunuz zaten birkaç bilgide Java ve C# ya da CSS'den başlanmalı diyordu ama bu seferde yazılım dilini öğrenmekde zorluk çekilecegi yazıyordu yazılımın mantıgnı ve temel atma konusunda Python denildigi için bende Python'dan başladım eğer ki çok zorlancaksam burada bırakıp başka dile başlamalı mıyım ?

not: attığım ss lerde sağ tarafa bakmanız yeterli
 

Dosya Ekleri

  • Ekran Görüntüsü (645).png
    Ekran Görüntüsü (645).png
    54 KB · Görüntüleme: 32
  • Ekran Görüntüsü (646).png
    Ekran Görüntüsü (646).png
    57,1 KB · Görüntüleme: 33
  • Ekran Görüntüsü (647).png
    Ekran Görüntüsü (647).png
    58,7 KB · Görüntüleme: 39
Son düzenleme:
44'e kadar olan kısımda gördüğüm kadarıyla sınıf yok. C dillerinden herhangi birini iyi biren birisi için birkaç saatlik iş var 44'e kadar.

Maalesef Technopat'ta birisi yazılıma başlayayım mı dediği an ağzı olan herkes Python diye bağırıyor. Sorsan anca %1'i daha önce Python'da iş görür bir şey yazmıştır.

Python'da zorlanmazsın. Python'da öğrenince diğerlerine geçince zorlanırsın.

Java veya C#'tan başlanmalı kısmı da yanlış. Siz ne istiyorsanız ondan başlayabilirsiniz. İlgilendiğiniz özel bir alan varsa onunla alakalı dil ile başlanması daha mantıklı olacaktır.
CSS programlama dili değil. CSS'ten isteseniz de başlayamazsınız.

Sadece düzgün eğitim veren bir yere ihtiyacınız var bence.
 
Yani zaten bütün diller en temelde atığım şeyleri öğretmeye başlayacak diyorsunuz bir de ne kadar zorlanacağım gerçe öğrenirken biraz zorlanıyorum bunun sebebide BTK'daki egitmen çok iyi anlattığı söylenemez ben şu kadar kısma kadar forum ağırlıklı ögrendim bu egitmenle devam etseydim ohoo işim vardı neyse ki 44'de kadar kafamda hiç soru işareti kalmayarak ilerledim en azından ben öyle düşünüyorum.
 

Yeni konular

Geri
Yukarı