|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir
Would you like to react to this message? Create an account in a few clicks or log in to continue.

|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir


 
AnasayfaLatest imagesAramaKayıt OlGiriş yap

 

 Nesne Yönelimli Programlama

Aşağa gitmek 
YazarMesaj
FaTaL
Yönetici
Yönetici
FaTaL


Ruh Hali : Nesne Yönelimli Programlama Manyak10
Başak Mesaj Sayısı : 626
Rep Puanı : 12320
Teşekkür Aldı : 18
Kayıt tarihi : 24/10/09
Nerden Nerden : Kocaeli
İş/Hobiler İş/Hobiler : 3D / Maya / After Efect
Lakap Lakap : Fatal

Nesne Yönelimli Programlama Empty
MesajKonu: Nesne Yönelimli Programlama   Nesne Yönelimli Programlama EmptyCuma Ekim 30, 2009 9:33 am

Nesne Yönelimli Programlamaya (OOP) Neden İhtiyaç Duyarız

Nesne yönelimli programlama, daha önceki programlama tekniklerinde
yaşanan kısıtlamalar neticesinde geliştirildi.Nesne yönelimli
programlanın kıymetini anlayabilmek için bu kısıtlamaların neler
olduğunu ve geleneksel programlama dillerinde bu kısıtlamaların nasıl
ortaya çıktığını anlamamız gerekiyor



Prosedürel Diller

Bu çok sayıdaki bağlantı birkaç açıdan probleme neden olur. Birincisi;
bu durum programın kavramsal olarak modellenmesini zorlaştırır.
İkincisi de bu durum program üzerinde değişiklik yapılmasını güç hale
getirir. Global bir veri üzerinde yapılan bir değişiklik, bu veriye
erişen bütün fonksiyonların yeniden yazılmasını zorunlu kılabilir.



Örneğin, envanter programımızda, bir programcı envanter mallarının
ürün kodlarını 5 basamaktan 12 basamağa çıkarmaya karar verebilir. Bu
durumda veri tipinin short tan long a çevrilmesi gerekebilir.Şimdi bu
veri üzerinde işlem yapan tüm fonksiyonların short yerine long ile
işlem görecek şekilde değiştirilmesi zorunludur.



Büyük programlarda, veriler üzerinde değişiklik yapıldığında hangi
fonksiyonların bu verilere eriştiğini söylemek kolay olmayabilir. Bunu
saptasanız bile, bu fonksiyonlar üzerinde yapılabilecek değişiklikler
fonksiyonların diğer global verilerle hatalı çalışmalarına neden
olabilir. Her şey her şeyle bağlantılıdır. Yapılan bir değişiklik, ucu
uzaklara dokunan ve çoğunlukla planlanmamış sonuçlara neden olabilir.



Gerçek Dünyaya Uygun Modelleme



Prosedurel yöntemlerdeki ikinci ve en önemli problem, bu
yöntemlerin farklı veri ve fonksiyonları düzenlerken gerçek dünyayı
yetersiz biçimde modellemeleridir. Fiziksel dünyada biz; insanlar
arabalar gibi çeşitli nesnelerle temas içindeyiz. Bu nesneler ne veriye
benzer ne de fonksiyona. Gerçek dünyanın karmaşık nesneleri hem
niteliklere hem de yeteneklere sahiptir.



Nitelikler



Göz rengi ve mesleki unvan insanlar için örnek olarak
verilebilecek niteliklerdendir. Arabalar için ise motor gücü, kapı
sayısı, rengi bu tür niteliklerdendir. Görüldüğü gibi gerçek dünyadaki
nitelikler programdaki verilere karşılık geliyor: Her biri belirli bir
değere sahiptir. Söz gelişi, mavi (göz rengi için) veya dört (kapı
sayısı için);



Davranış


Davranış gerçek dünyaya ait bir nesnenin bir etkiye karşı
gösterdiği tepkidir. Patronunuzdan zam istediğinizde, patronunuzu sizi
çoğunlukla evet yada hayır diye yanıtlar. Araba kullanırken frene
basarsınız araba çoğunlukla durur. Bu örneklerdeki patronun cevabı veya
arabanın durması bir davranış örneğidir. Davranış bir fonksiyon
gibidir: Bir şey yapması için bir fonksiyon çağırırsınız ve fonksiyon
bu işlemi yapar.



Nesne Yönelimli Yaklaşım

Nesne yönelimli dillerin ardındaki ana fikir verileri ve bu
veriler üzerinde işlem yapan fonksiyonları tek bir birim içinde
birleştirmektir. Bu birim nesne (object) olarak adlandırılır.



Bir nesnenin fonksiyonları, bu nesnenin verilerine erişmeyi
sağlayan tek yoldur.C++ dilinde bu fonksiyonlar üye fonksiyon olarak
adlandırılır. Bir nesnenin içindeki bir veriyi okumak istiyorsanız, bu
nesnenin içindeki bir üye fonksiyonu çağırırsınız. Bu üye fonksiyon
ver,ye erişip değerini size döndürür. Siz veriye doğrudan
ulaşamazsınız. Veriler gizlenmiştir, böylece kazara meydana gelecek
değişikliklerden korunmuş olurlar. Veriler ve ilgili fonksiyonlar tek
bir birim içine paketlenmişlerdir. Verilerin paketlenmesi ve veri
gizliliği nesne yönelimli dillerin tanımlanmasında kullanılan temel
terimlerdir.



Bir nesne ye ait verileri değiştirmek istediğinizde, bu verilerle
etkileşen fonksiyonların neler olduğunu tam olarak bilmeniz gerekir:
Nesnenin üye fonksiyonları.Diğer hiçbir fonksiyon bu verilere erişemez.
Bu, kodlamayı,hataları ayıklamayı ve programın bakımını kolaylaştırır.



Bir C++ programı tipik olarak birkaç tane nesne içerir. Bu
nesneler diğerlerinin üye fonksiyonlarını çağırarak birbirleriyle
iletişim kurarlar.

Şunu vurgulamamız gerekir: C++ da üye fonksiyon olarak ifade edilen
fonksiyonlar diğer nesne yönelimli dillerde yöntem (metod) olarak
adlandırılır. Ayrıca verilere de nitelikler veya örnek değişkenler
denilmektedir. Bir nesnenin üye fonksiyonlarını çağırmak bu nesne ye
mesaj göndermektir. Bu terimler C++ terminolojisinin resmi terimleri
değildir ama, nesne yönelimli tasarımlarda artan sıklıkla kullanılmaya
başlanmıştır.



Bir Benzetme


Nesneleri bir şirket içindeki bölümler olarak düşünebiliriz: Söz
gelişi, satış, muhasebe, insan kaynakları bölümleri gibi. Bölümler
kurumsal organizasyonlara önemli katkılar sağlar. Çok küçükleri hariç
pek çok şirkette insanlar bir gün personel problemleriyle, diğer gün
maaşlarla uğraşıp sonrada satışa çıkmazlar. Her bölümün, görevleri
açıkça belirlenmiş kendi personeli vardır. Ayrıca her bölüm kendi
verilerine sahiptir: Muhasebe bölümü maaş bilgilerini, satış bölümü
satış rakamlarını, personel bölümü de çalışanların kayıtlarını tutar.



Bölümlerdeki insanlar kendi bölümlerinin verilerini denetler ve bu
veriler üzerinde işlem yaparlar. Şirketi bölümlere ayırmak, şirket
faaliyetlerini anlamayı ve denetlemeyi kolaylaştırır; ayrıca şirket
bilgilerinin entegrasyonunun sürekliliğine de yardımcı olur. Muhasebe
bölümü, mesela, maaş verilerinden sorumludur. Eğer siz satış
müdürüyseniz ve Temmuz ayında güney bölgesinde yapılan maaş
ödemelerinin yekününü merak ediyorsanız, Muhasebe bölümüne gidip dosya
dolaplarının altını üstüne getirmezsiniz. Muhasebe bölümündeki ilgili
bir kişiye bir not gönderir; daha sonra görevli kişinin veriye erişip,
istediğiniz bilgiyi size göndermesini beklersiniz. Bu, veriye hatasız
erişilmesini garanti eder ve verinin izinsiz erişimlerle bozulmasını
önler. Kurumsal organizasyonlarla ilgili bu bakış açısı aşağıdaki
şekilde gösterilmiştir. Aynı şekilde, nesneler de, program verilerinin
bütünlüğünü korumaya yardımcı olur; aynı zamanda programları organize
etmenin yollarından biridir.


Nesne Yönelimli Programlama Sekil2kx2dh0

C,Pascal,Fortran vb. diller
prosedurel dillerdir. Yani, dildeki her ifade bilgisayara bir iş
yapması gerektiğini söyler:Girdiyi al,girdi olarak alınan sayıları
topla, altıya böl,sonucu ekranda göster… Prosedurel dilde yazılan bir
program bir komut listesidir.



Fonksiyonlara Bölmek


Programların hacmi büyüdükçe tek bir komut listesinin idaresi güçleşir.
Birkaç yüz ifadeden daha fazlasına sahip program, küçük birimlere
bölünmediği takdirde az sayıda programcı tarafından anlaşılabilir. Bu
nedenler, programların kendilerini üreten insanlara daha anlaşılır
görünmesi amacıyla fonksiyon yapısı geliştirildi. Prosedurel bir
program fonksiyonlara bölünmüştür. Her fonksiyonun (en azından ideal
olarak) açıkça tanımlanmış bir amacı vardır ve program içindeki diğer
fonksiyonlarla arasında açıkça tanımlanmış bir arayüz mevcuttur.



Bir programı fonksiyonlara bölme fikri daha da genişletilebilir: Birkaç
fonksiyon bir araya gelip getirilip modül denilen daha büyük bir birim
içinde gruplana bilir. Fakat prensip her iki durumda da aynıdır: Bir
komut listesini yürüten bileşenlerin gruplanması.



Bir program fonksiyonlara ve modüllere ayırmak yapısal programlamanın
esaslarından biridir.Yapısal programlama, nesne yönelimli
programlamanın çıkışına kadarki on yıllar boyunca programlama yapısını
etkilemiş olan, bir ölçüde üstünkörü tanımlanmış bir disiplindir.

Yapısal Programlamada Karşılaşılan Problemler



Programlar sürekli büyüyüp daha karmaşıklaştıkça, Yapısal programlama
yaklaşımı da zorlanmaya başlar. Program geliştirilirken yaşanılanlarla
ilgili anlatılan dehşet hikayelerini duymuşsunuzdur; hatta böyle bir
hikayenin içinde kendiniz bile yer almış olabilirsiniz. Proje
fazlasıyla karmaşıktır, planların gerisinde kalmışsınızdır,programcı
sayısı arttırılır, karmaşıklık daha da artar, maliyet hızla yükselir,
planların daha da gerisinde kalınır ve felaket kaçınılmaz.



Bu başarısızlıkların ardındaki neden incelendiğinde asıl
zayıflığın prosedurel yaklaşımın kendisinden kaynaklandığı görülür.
Yapısal programlama ne kadar iyi gerçekleştirilirse gerçekleştirilsin,
büyük hacimli programlar haddinden fazla karmaşık hale gelir.



Prosedürel diller de yaşanan bu problemlerin nedenleri nelerdir?
Konuyla ilgili iki problem vardır. Birincisi, fonksiyonların global
verilere erişmesinin sınırsız olması. İkincisi de prosedürel yaklaşımın
temeli olan fonksiyon ve verilerin gerçek dünyanın modellemesinden uzak
olması.



Bu problemleri bir envanter programı örneğinde inceleyelim. Böyle
bir programda, envanterdeki mal yığını önemli bir global veridir. Yeni
malın envantere girilmesi,gösterimi,mal ile ilgili değişik yapılması ve
benzeri işlemler için çeşitli fonksiyonların bu veriye erişmesi gerekir.



Sınırsız Erişim



Prosedürel bir programda, mesela C dilinde yazılmış olsun, iki
çeşit veri vardır. Yerel veri, bir fonksiyon içinde gizlidir ve
yalnızca bu fonksiyon tarafından kullanılır. Envanter programında bir
gösterim fonksiyonu, ekranda hangi malın gösterdiğini hatırlaması
amacıyla yerel veri kullanılabilir. Yerel veri, fonksiyonun işleviyle
yakından ilgilidir ve diğer fonksiyonların yapabileceği
değişikliklerden etkilenmez.



Ancak, iki veya daha fonksiyon aynı veriye erişmek zorunda ise –ve
bu durum programın en önemli verileri için geçerliyse- o halde bu
verinin, örneğimizdeki envanterdeki mal yığını gibi global tanımlanması
gereklidir. Global veri, program içerisindeki tüm fonksiyonlar
tarafından erişilebilir.(Fonksiyonların modül olarak gruplanmasını bu
aşamada dikkate almıyoruz, çünkü bu, konumuzu önemli ölçüde
etkilemiyor.)



Büyük hacimli bir programda bir çok fonksiyon ve global veri
mevcuttur. Bu durumun aşağıdaki şekilde gösterildiği gibi fonksiyonlar
ve veriler arasında daha fazla sayıda potansiyel bağlantıya neden
olması prosedürel yöntemlerde karşılaşılan bir problemdir.

Nesne Yönelimli Programlama Sekil1wt5il7

Nesne Yönelimli Programlama: Düzenli Programlara Doğru



Şunu aklınızdan çıkarmayın: Nesne yönelimli programlama aslında
programın çalışma ayrıntılarıyla ilgilenmez. Onun yerine, programın
genel organizasyonuyla ilgilenir. C++ ‘ taki bir çok program ifadesi
prosedürsel dillerdeki ifadelere benzer, pek çoğu da C deki ifadelerin
aynısıdır. Gerçekten, bir C++ programındaki bir üye fonksiyonun tümü,
C’deki bir prosedürel fonksiyona cok benziyor olabilir. Bir ifade veya
fonksiyonun prosedürel bir C programının veya Nesne Yönelimli C++
programının parçası olup olmadığı ancak daha genel açıdan bakıldığında
görülebilir.
Sayfa başına dön Aşağa gitmek
http://www.refleksforum.com
 
Nesne Yönelimli Programlama
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Programlama Ve C
» Pardus Ile Java Programlama
» Assembly Programlama Dili
» Assembly & Win32 Programlama
» Sistem Programlama ve İleri C Uygulamaları

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir :: Bilgisayar Dersleri :: C/C++-
Buraya geçin: