Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Python / Zope

Cevapla
 
LinkBack Seçenekler
Eski 13/08/2008, 23:55   #1 (permalink)
iNN
Üye
 
Üyelik Tarihi: 05/2007
Yer: Sakarya
Mesaj: 116
Varsayılan sınıflarla alakalı sorular

arkadaşlar sınıfları kurcalamaya başladım, türkçe kaynaklarda nesne tabanlı programlama ile ilgili birşey bulamadım ingilizcem pek iyi değil, dive into python da sınıflara kadar geldim daha gidemedim, anlamadım çünki sınıfları..

neyse sora sora araştıra araştıra birşeyler öğrendim ve aklıma birşeyler takıldı..

öncelikle __init__ in sınıf çağrıldığında ilk çalışacak kod diye biliyorum, eğer bu doğruysa şöyle bir sorum var, __init__ diye bir fonksiyon tanımlamaktansa sınıfı açtıktan sonra direkt kodu yazsak aynı şey olmaz mı? yani örnek:

Kod:
class deneme:
def __init__(self):
     kod
bunun yerine

Kod:
class deneme:
     kod
yapsak?

ikinci olarak eğer ilk söylediğim doğruysa
Kod:
class deneme:
    def asdasd(self):
        print "ben calistim artik bu sinif icindeki a nin degeri bravo"
        self.a = "bravo"

d = deneme()
d.asdasd()
print d.a
yukarda a yı çağırdım, burda öncelikle şunu sormak istiyorum, self.a ile global a arasında ne fark var

Kod:
class deneme:
    def __init__(self):
        print "hede"
        a = "omer"
yukardaki kodda ise a yı çağıramadım bir türlü, eğer init fonksiyonu deneme çağrıldığında direkt çağrılıyorsa
neden deneme().a şeklinde çağıramıyoruz a yı?

en önemli soru da sanırım bu: sınıfları kullanmaya nedne ihtiyacım var? nerelerde kullanılır ve nesne nedir

teşekkürler..
iNN hatta değil   Alıntı Yaparak Yanıtla
Eski 14/08/2008, 01:38   #2 (permalink)
The Shawshank Redemption
 
Coldplay Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 06/2008
Yer: Sufi's deepest dreams...
Mesaj: 864
Varsayılan

$imdi kodla alakali sorularina cevap veremeyecegim ama genel olarak sinif ve nesne sorularina mantik olarak cevap vermeye cali$ayim.

Sinifi anlatmak icin önce Pythondaki veri tiplerini taniyorsun degil mi? String, int falan. I$te bu veri tipleri gibi ama kendi ürettigimiz tiplere sinif denir. Bunlara kiyasla kendi ürettigimiz tipler cok daha karma$ik olabilir. Pythondaki Int tipi sadece bir tamsayi degerinden ibaretken, bizim kendi yaptigimiz tipler, yani siniflar birden cok deger yaninda birden cok fonksiyon da barindirabilirler. Mesela Ev diye bir sinif yaptigimizda Ev adinda bir veri tipi tanimlami$ oluruz. Bunun icinde int cinsinden metrekare_alan, oda_sayisi, yapim_yili gibi degerler tanimlanmi$ olabilir. Ayriyeten bu Ev isimli veri tipimiz oturma_odasini_isit() veya barinak_sagla() gibi fonksiyonlara da sahip olabilir.

Nesne de bu Ev veri tipinde degi$kenlerin her birine denir. Yani sinif genel olarak evi tanimlarken (sözlükteki tanimi gibi), nesneyle kastedilen belli bir evdir, mesela nergis sokak no:124 daire 15, kat 4 gibi. Ev sinifi o zaman bir fabrika gibidir. Ev tipinde nesneler tanimlar ve üretir. Böylece ayni kodu farkli degerlerle kullanmani saglar. (Benim evim, senin evin, cankaya köskü hepsi sinif olarak evdir, ama metrekare_alan degerleri farklidir mesela).
__________________
Operating System : Ubuntu 8.10 Intrepid Ibex
Desktop : GNOME
Programming Language : Java
Development Tool : Eclipse
Using Eclipse for : Java, C, C++, Python, PHP
Coldplay hatta değil   Alıntı Yaparak Yanıtla
Eski 14/08/2008, 11:42   #3 (permalink)
iNN
Üye
 
Üyelik Tarihi: 05/2007
Yer: Sakarya
Mesaj: 116
Varsayılan

peki neden nesne kullanmalıyım?
iNN hatta değil   Alıntı Yaparak Yanıtla
Eski 14/08/2008, 11:48   #4 (permalink)
Üye
 
Üyelik Tarihi: 08/2008
Mesaj: 13
Varsayılan

Alıntı:
iNN, mesajından alıntı: Mesajı Gör
peki neden nesne kullanmalıyım?
Örneğin herkesin arabasının olduğu bir işin var.
Burada tanımlanacak bir araba sınıfı işleri kolaylaştıracaktır.
Örneğin araba sınıfında model, km. , maxhız, renk, plaka gibi özellikler olur. Her kişi için bir örnekleme ile işini kolayca halledersin. Aynı sınıfın bir de garaja_parketme metodu, ve ya gaza_bas, dur gibi metotları olabilir, yaptığın işe göre herkesin arabası için tek tek uğraşmak yerine bir model sınıftan nesne türeterek işini kolayca halledersin.
Bu tabi dilimin döndüğünce en basit anlatımı. Biraz pratik ve çalışma ile daha sonra "design patterns" (tasarım modellemeleri-şablonları) konusuyla ilgilenirsen, büyük yazılımlarda nasıl işe yaradığını daha iyi anlayacaksın.
Kolay gelsin, başarılar dilerim.
doblo123 hatta değil   Alıntı Yaparak Yanıtla
Eski 14/08/2008, 12:36   #5 (permalink)
The Shawshank Redemption
 
Coldplay Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 06/2008
Yer: Sufi's deepest dreams...
Mesaj: 864
Varsayılan

Alıntı:
iNN, mesajından alıntı: Mesajı Gör
peki neden nesne kullanmalıyım?
Neden insanlar araba teriminin ne oldugunu bilmekle yetinmeyip kendisi de araba sahibi olmak istiyorsa ondan. Nesne hayati kolayla$tirir. Ev gibi araba gibi. Nesne sinif tipinin tanimladigi $eylere birer kimlik verir, onlari bireyselle$tirir. Ve o $eyleri birbirinden ayirt etmeye yarar.

Mesela bir ögrenci kayit programi yapmak istediginde eger Ögrenci tipinde nesnelerin olursa her nesneye farkli bir isim verebilirsin. 1.ye Ahmet, 2. Kemal falan. Ayriyeten Ahmet'le Kemal'in ögrenci no'lari ve adresleri falan da vardir. Bütün bu bilgiler sadece bir tek nesneye yani o ki$iye aittir ve o nesnede kayitlidir. Python'da da bu öyle mi bilmiyorum ama C++, Java gibi dillerde istedigin takdirde bu bilgilerin ba$kasi tarafindan görünmesini engelleyebilirsin. Yani istediginde bilgileri nesneye gizleyebilirsin.

Ve nesne temelli programlamanin en önemli özelliklerinden, nedenlerinden biri de siniflar arasinda kalitim baglari kurulabilmesi. Mesela Ögrenci sinifindan LiseÖgrencisi diye bir alt sinif türetebilirsin ve nesne temelli programlamaya ait bazi özelliklerle bu yeni sinif otomatikman türedigi sinifin özelliklerini alir. Hem de bu özellikleri her defasinda satir satir yazmadan, sadece anahtar kelimeler kullanarak.
__________________
Operating System : Ubuntu 8.10 Intrepid Ibex
Desktop : GNOME
Programming Language : Java
Development Tool : Eclipse
Using Eclipse for : Java, C, C++, Python, PHP
Coldplay hatta değil   Alıntı Yaparak Yanıtla
Eski 14/08/2008, 14:31   #6 (permalink)
iNN
Üye
 
Üyelik Tarihi: 05/2007
Yer: Sakarya
Mesaj: 116
Varsayılan

birşey anladım sanki, ama hala nasıl bunların nasıl yapılabileceği hakkında fikrim yok, kod örnekler verebilirmiyiz?
iNN hatta değil   Alıntı Yaparak Yanıtla
Eski 14/08/2008, 15:31   #7 (permalink)
Yönetim Kurulu
 
Muallim-i Âli Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2008
Yer: İstanbul
Mesaj: 254
Varsayılan

Alıntı:
iNN, mesajından alıntı: Mesajı Gör
öncelikle __init__ in sınıf çağrıldığında ilk çalışacak kod diye biliyorum, eğer bu doğruysa şöyle bir sorum var, __init__ diye bir fonksiyon tanımlamaktansa sınıfı açtıktan sonra direkt kodu yazsak aynı şey olmaz mı? yani örnek:

Kod:
class deneme:
def __init__(self):
     kod
bunun yerine

Kod:
class deneme:
     kod
yapsak?
Yapabilirsin ama her fonksiyonun kendine özgü yararı var.
Kullanıldığı yere göre değişir.

Mesela pyqt4 de;

class...
def __init__(self, ui):
self.ui = ui

vs. şeklinde hazırlanmış bir programda arayüze direk bu kısımdan program
açılır açılmaz işlemler yaptırılabilir. Bu kısımdan önce yazılan kodlar hata verebilir. Nasıl tanımladıysan ona göre kullanım kolaylığı var.

Alıntı:
iNN, mesajından alıntı: Mesajı Gör
ikinci olarak eğer ilk söylediğim doğruysa
Kod:
class deneme:
    def asdasd(self):
        print "ben calistim artik bu sinif icindeki a nin degeri bravo"
        self.a = "bravo"

d = deneme()
d.asdasd()
print d.a
yukarda a yı çağırdım, burda öncelikle şunu sormak istiyorum, self.a ile global a arasında ne fark var
self ' e istediğin her yerden bağlanırsın ama global değişkende durum farklı.
global değişken hangi fonksiyonda vs. ise önce o fonksiyon çağrılır daha
sonra ancak fonksiyonda istediğin global(!) değişkene bağlanır.

Bu verdiğin örnekte sınıf ve fonksiyon tanımlanmış; fonksiyonun ve sınıfın dışından istenilen değişken çağrılmış.
__________________
Güzel gören güzel düşünür, güzel düşünen hayatından lezzet alır.
(Said Nursi)


Java Tutorial:http://java.sun.com/docs/books/tutor.../download.html
Muallim-i Âli hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
Üyelik Sistemi İle İlgili Sorular BerkH PHP 25 05/05/2003 17:22
SORULAR: WinXP'ye terfi? / WinXP mi yoksa ondan sonraki mi? / Home mu Pro mu? vs vs. Sedat Atif Windows 9 11/04/2003 22:10
:.Eski Üye Yeni Sorular.: kaşif ASP 6 21/12/2002 19:17
Avatar yarısması hakkındaki sorular gardiyan Hayata Dair 4 07/08/2002 07:04


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 03:08.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net