Şubat 2008’de derlediğim bir yazıyı günlüğüme eklemeyi unutmuşum. Lazım oldu, zor buldum.

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 ()