4 Şubat 2008 Pazartesi

Nesne Tabanlı Programlama

Object Oriented: Nesneye Dayalı Run-Time Type Information RTTI araştırınız…

Genel:
Yazılım projelerinin %84 zamanında bitmez
%30’u asla tamamlanamaz
Çoğu yazılım böceklidir, güvensizdir ve dayanıklı değildir
Devam ettirilmesi güçtür

Yapım Adımları:
İş modelleme (UML araştırınız)
Gereksinimleri belirleme
Analiz ve tasarım
Program yazımı
Test

Gerçekler:
Dünya büyük ve karmaşıktır
Çok şeyler var ama:
Bir işin küçük bir bölümünü yapar
İnsan hatalarını düzeltemez
Yüksek bir öğrenme eğrisi var
Çalışması için bir yapıya ihtiyaç duyar
Hatalar pahalı sonuçlara neden olur

Öneriler:
Planlı çalışın
Küçük sürümler yapın (hata bulmak ve gidermek kolay)
Basit tasarım (google örneğin)
Birden fazla kişi test etsin
Kodlama standardı oluşturun
Entegre edilebilir program (gerekli kod parçalarını alt programlara bölün)
Tekrarlanan kodlara engel olun
Yaptığınız geçici değişiklikleri silin
Parametreli metotlar kullanın
Açıklama satırları ile dokümantasyon yapın
Platforma bağımlı kalmayın
Exception (nadir durumlar) kullanın

Programlama Araçları:
Visual Studio .NET
Borland
Sun Java Eclipse
Python
Ruby…

Başlangıç:
Bir bisiklet aldığınızda kitapçığını mı önce okursunuz yoksa üstüne binip sürer misiniz?
Programlama dilini kavramak için önce öğrenmek için çabalayın, daha sonra kendi programlarınızı yazabilirsiniz
Ekrana basit bir mesaj çıkaran programı yapınız (merhaba dünya!)

Hikaye:
Bilgisayarı bir “uzaylı” olarak düşünün
Açsınız ve uzaylı sizin dilinizi bilmiyor, ama ona bir süre sonra bazı kelimeleri öğrettiniz
Resim çizerek anlaşmaya çalışıyorsunuz
Omzunuza çıkıp bir hindistan cevizi alabilir
Ama uzaylı bir şey anlamadı… Onun bakış açısı ile düşünmelisiniz

Temeller:
Class: SınıfDünya; hayvan, bitki gibi sınıflardan oluşur
Object: Nesne Bitki sınıfındaki hindistan cevizi ağacı gibi
Hayvan sınıfındaki fil nesnesi gibi
Property: ÖzellikHayvan sınıfındaki fil nesnesinin ağırlık özelliği (2 ton) gibi
Event: OlayHer zaman olaylar oluşur. Acıkmak gibi.Filin rahatsızlanma olayı tetiklenebilir, böylece bize yardımcı olur
Method: YöntemOlayın nasıl gerçekleşeceğini adım adım belirtiriz.
–Mesela “hindistan cevizini indirme”:
Kayanın arkasına saklan
Kızgın fil yaklaşınca kaçmaya başla
Ağaca çarpacak, sersemleyecek
Gittikten sonra cevizleri topla ve sonucu bildir

Örnek:
"Uzaylı" adında bir sınıf (class) var
Algy uzaylı sınıfına ait nesne (object)
İsim, kulakŞekli, TVseyretmeyiSever gibi özellikleri (properties) var
KurtarmaTiminiGönder adında bir yöntemi (method) var

Ne yapacağız:
Biz (insan) bir dil öğrenip OOP yöntemi ile nesneleri tanımlayacağız
Bilgisayara programlama dilini kurarak bizimle anlaşmasını sağlamak

Özet:
Etrafımızdaki dünya sınıflara bölünebilir. Mesela kediler, evler ve ağaçlar gibi
Sınıfların içinde alakalı nesneler vardır.Mesela köşedeki sarı bina; ev sınıfının bir objesidir.
Objelerin özellikleri vardır. Böylece nesne daha iyi tanımlanır. Türkçe dilinde sıfatlara benzetebiliriz.Renk, ağırlık ve boy gibi
Olan şeylere olay deriz. Rüzgarın esmesi gibi. Bilgisayarda ise fare tıklanması, tuş basımı gibi
Aksiyon ise olayın içindeki bir adımdır. Mesela düğme tıklanınca ekrana mavi daire çizme komutu gibi.
Metot ise olayın içindeki adım adım çalışan kodlardır. Yemek tarifi gibi.

SINIF
Okuldaki öğrenciler yaş gruplarına göre sınıflara ayrılırlar, böylece benzer şekilde muamele görürler, benzer şeyleri öğrenirler, benzer şekilde test edilirler.
Sınıftaki herkes aynı özellik değerlerine sahip değildirler.


Basic dilinde sınıf:
Class Hayvan

End Class

NESNE
Sınıf içinde bazı şeyler farklılık gösterir.
Mesela adı Tekir olan kedi, hayvan sınıfındandır.
Tekir bir hayvandır. Bunu Basic’te şu şekilde tanımlarız:

Dim Tekir As HayvanTekir = New Hayvan()


Tekir’in ne anlama geldiğini bilgisayar anlamaz. Ama hayvan olduğunu bilir.
İlk satırda Hayvan sınıfını program tarar, varsa problem yok. Deklare (bildirmek) ettik.
İkinci satırda Tekir için bellekte Hayvan sınıfındaki özelliklere göre yer ayırır. Gerçek bir objeye dönüşür.

ÖZELLİKLER
Alanlar, onların türleri ve değerlerMesela kedinin; türü, yüksekliği, ağırlığı, bacak sayısı, kuyruğu var mı gibi…
Bazı değerler sayısal (number), bazıları da metin (string), bazıları da ikiliktir (boolean).
Sayılar üzerinde hesap yapılabilirken, metinlere harf harf erişilebilir. Mantık değerleri ise sadece True ve False olabilir.

Class Hayvan
Dim hayvanTuru As String
Dim ismi As String
End Class

Kullanırken:
Dim Tekir As Hayvan
Tekir = New Hayvan()

Tekir.hayvanTuru = "Kedi"
Tekir.ismi = "Tekir"


Public: Herhangi bir sınıf ulaşabilir
Private: Sadece kendi sınıfı içinde kullanılır
Protected: Yakın sınıflar kullanabilir


Class Hayvan
Public hayvanTuru As String
Public ismi As String
Protected memeli As Boolean
Private dogruYazili As Boolean
End Class


Class HayvanatBahcesi
Dim a As Hayvan = New Hayvan()
a.hayvanTuru = "Kangaru"
a.memeli = False
a.dogruYazili = True
End Class

METHOD
Nesnenin iş yapabilmesi içindir
Ekrana yazmak, hesap yapmak ve fotoğrafın rengini açmak gibi
Metotlar bildiğimiz Sub End Sub arasına yazdığımız alt programlar gibidir.
Public, Private ve Protected özellikleri vardır.


Class Kisi
Public adi As String
Public soyadi As String
Public Sub AdSoyadGoster () 'içinde parametre olabilirdi
Console. WriteLine("Adi " & Me.adi & " " & Me.soyadi)
End Sub
End Class


Kullanımı:
Dim Mehmet As Kisi = New Kisi()
Mehmet.adi = "Mehmet"
Mehmet.soyadi = "Çilli"
Mehmet.AdSoyadGoster ()

Alıntı: http://msdn2.microsoft.com/en-us/library/bb330926(VS.80).aspx

Hiç yorum yok: