

OOP (Object Oriented Programming) [Nesne Yönelimli Programlama] Nedir
-
Birçok programcının korkarak yaklaşmak istemediği veya yeni başlayanların ön yargılı baktığı programlama metodolijisi olan OOP (object oriented Programming)[Nesne Yönelimli Programlama] ile ilk adımımızı atacağız. Konu gerçekten çok basit göreceksiniz ki tahmin ettiğiniz gibi zor bir programlama tekniği değil. geçenlerde bir e-posta geldi ve sırf bu konu için 1.000 lerce YTL ücret istiyorlar. Ben de düşündüm ve biliyorsam paylaşmalıyım bilgimi dedim ardından yazdım makalemi :)
Gelelim konumuza; adından da anlaşılacağı gibi nesne tabanlı bir programlama tekniği diyebiliriz.Daha açacak olursak; bizler programlarımızda kodlar yazarken bazı zamanlar oluyor ki aynı kodu başka bir yerde kullanmamız gerkiyor ve erinmeden,üşenmeden tekrar yazıyorduk. Artık böyle birşey yok. Kodlarımızı sınıflar içerisinde yazarak daha kullanışlı hale getiriyoruz. Düşünün; 1 okul var,okulun içersinde onlarca sınıf,sınıfın içerisinde onlarca öğrenci. Şimdi burada; okul=projemiz, sınıf=class , öğrenci = nesne. Bir öğrenciye ulaşmak için en hızlı yol nedir diye sorsam , muhtemelen hepiniz, Okulun içerisindeki sınıflara,oradan da öğrenciye dersiniz. Ve bu öğrencinin Matematik,türkçe gibi derslerini işleyebildiği gibi aynı öğrenciyi başka yerde kullanrak (atelye binasında) programlama dersine de girebilir. Kısacası öğrenci yani nesnemiz her yerde rahatlıkla hareket edebiliyor :) Biliyorum farklı bir örnek oldu ama , işe yeni başlayan arkadaşlar için açıklayıcı olmuştur umarım :)
Eğer kodları formumuza çift tıkladığımızda açılan sayfaya yazmıyor ve parçalara bölüp ilgili class lar oluşturup oralardan nesnelerimizi çağırıyorsak buna OOP (Object-Oriented Programming) denir. Genel olarak 3 prensibi vardır ve bunlar ;
1- Encapsulation
2- Inheritance
3- Polymorphism.
Encapsulation: obje hakkındaki bilgiler ve işlemler anlamına gelir. Metot ve özellik olarak adlandırdığımız bu işlemler bir nesnenin niteliklerini ve işlemlerini ortaya koyar. Örneğin bir öğrencinin numarası,adı,soyadı gibi.
Inheritance: Bir objenin başka bir obje üzerine kurulmasıdır. Örneğin bir öğrencinin numarasının, masasının, göz renginin olması ve bunlardan da öğrencinin tam objesini etkilemesi gibi.
Polymorphism: Belli bir işlemin (metodun) birçok obje tarafından kullanılmasıdır.
OOP Terimleri
Sınıflar
Yazacağımız programlarda sadece objeler vardır. Bu objeler, veri alışverişi yaparak, birbirleriyle haberleşirler.
Objeler OOP de sınıf olarak ifade edilen şablonlardan yaratılır. Her sınıf içinde, o sınıftan üretilecek nesnelerin özelikleri, davranışları tespit edilir. Örneğin Öğrenci isminde bir sınıf yaratabiliriz. Bu sınıftan üretilecek objelerin ortak yani, bir numara, ad, soyad gibi özellikleri olacaktır.
Sınıflar, obje üretme yanında aralarında akraba ve is ilişkileri kurmak mümkündür.
Nesneler
OOP de objeler sınıflardan üretilir. Objeler, sınıfların aksine canlıdır ve kimlikleri vardır. Aynı sınıftan üretilmiş iki objenin sahip olduğu değişkenler değişik özelliklere sahiptir. Örneğin öğrenci sınıfından üretilen ayşe ve ali isimli iki öğrencinin numaraları değişiktir. Burada adı geçen numarası, sınıf içinde yer alan bir özelliktir. Sınıftan üretilen her obje bu özelliği alır. Objeler üretilirken, obje özellikleri, sahip oldukları yapıya göre, değişik olacaktır. öğrenci örneğinde olduğu gibi, Ali ve Ayşe objeleri değişik numaralara sahiptir.
Metodlar
Metodlar bir objenin dışarıya açılan yoludur. Bir objenin içinde ne oldugu, objenin nasıl çalıştığı dışarıdan görünmez. Objenin sahip oldugu bir özellikleri vardır. Eger objeîle interaksiyon a girmek istiyorsak, dışa açılan yollardan (metodlardan) birini kullanmamız gerekir. objelere, sınıf içinde tanımlanmış ve her objenin sahip oldugu metotlar aracılığıyla mesaj gönderebiliriz. Eger bir objeden bir şey yapmasını bekliyorsak, metodunu kullanarak, ona bir mesaj göndeririz. Obje bu mesajı alarak, gerekli işlemi yapar.
Konstruktör
Objelerin sınıflardan yapıldığını daha önce öğrendik. Objeler üretilirken, sahip olduklari değişkenlerin değişik değerlerde olması gerekir. Öğrenci örneğinde oldugu gibi, Ali ve Ayşe isimli iki objenin değişik numaralara sahip olmaları gerekir. Bu demek oluyor ki, objeler üretilirken, onlara değişik kimlikler verecek bir mekanizmaya ihtiyacımız var.
Bu görevi sınıf içinde konstruktörler üstlenir. Objeler konstruktörler aracılığıyla üretilir. Konstruktör bir obje üretmeden önce, obje için gerekli değişken değerleri belirlenir ve bu değerler parametre olarak konstruktöre gönderilir. Konstruktör bu değerleri kullanarak, objeyi üretir. Her sınıf içinde, obje üretmek için bir konstruktör vardir.
Destruktör
Her sınıf içinde konstruktör yanında bir de destruktör bulunur. Destruktör ün görevi hayatı sona ermiş bir objeyi sistem üzerinden uzaklaştırmaktır. Program bitiminde üretilen bütün nesneler destruktör aracılığıyla yok edilir. -
hocam anlamadığım şey şu , biz fonksiyonlarlada yapabiliyoruz bu işi ? Neden sınıf yapısı ?
Snıf yapısında bilgiler gruplayıp tutuluyor bu yüzden daha mı kolay ulaşım oluyor ? Performanstan mı ? Neden ? Bir türlü bunun cevabını bulamadım.
Yani sınıf ile fonksiyon arasında ne fark var ? Neden sınıf yapısı çok çok çok önemli olarak görülüyor ?
-
zumsuk bunu yazdı:
-----------------------------
hocam anlamadığım şey şu , biz fonksiyonlarlada yapabiliyoruz bu işi ? Neden sınıf yapısı ?
Snıf yapısında bilgiler gruplayıp tutuluyor bu yüzden daha mı kolay ulaşım oluyor ? Performanstan mı ? Neden ? Bir türlü bunun cevabını bulamadım.
Yani sınıf ile fonksiyon arasında ne fark var ? Neden sınıf yapısı çok çok çok önemli olarak görülüyor ?
-----------------------------ingilizcen varsa hocam,
http://answers.yahoo.com/question/index?qid=20071123010704AAtbclw şurda 1-2 bişi var
bide,
http://wiki.answers.com/Q/What_is_the_difference_between_function_and_class_in_cplusplusbu linkte
"A function is a paragraph of code in which the program will perform a specfic task.
A class is a graph of functions that can be shared by many applications." şöyle bi cevapta var
-
sağolasın, yarın bakayım şimdi yatıyorum :)
-
zumsuk bunu yazdı:
-----------------------------
sağolasın, yarın bakayım şimdi yatıyorum :)
-----------------------------dur dur yatma :)
http://www.r10.net/php/478614-class-fonksiyonlari-ile-duz-fonksiyonlari-kullanma-farki-2.html
uzunca analtılmış türkçe oalrak..
Heh şimdi yatabilrisin ii geceler class lı rüyalar :p -
zumsuk bunu yazdı:
-----------------------------
hocam anlamadığım şey şu , biz fonksiyonlarlada yapabiliyoruz bu işi ? Neden sınıf yapısı ?
Snıf yapısında bilgiler gruplayıp tutuluyor bu yüzden daha mı kolay ulaşım oluyor ? Performanstan mı ? Neden ? Bir türlü bunun cevabını bulamadım.
Yani sınıf ile fonksiyon arasında ne fark var ? Neden sınıf yapısı çok çok çok önemli olarak görülüyor ?
-----------------------------Hocam en başta kodlar derli toplu :)
Tekrar kullanma imkanı yüksek..
Baya bi esneklik sağlar..
Örnek vermek gerekirse burda polymorphism'i fazla açıklamamışlar ona göre bi örnek vereyim.
Mesela bi tane soyut class yazıyorsun, hayvan isminde... Ve bütün hayvanlara ait ortak özellikleri burada topluyorsun, yürümek, yemek yemek vs. (fonksiyonlar) aynı şekilde ayak sayısı, kalp odacığı vs vs gibi değerleri de tutuyorsun. (değişkenler) daha sonra bir hayvan pointer dizisi oluşturduğunu varsay. Ve her bir elemanına bir hayvanı atadığını...
hayvan[0]->yuru(); // hayvani yurut..
Bu komutu verdiğinde içinde hangi hayvan olursa olsun onun cinsine göre yürüme yapar, tek array üzerinden bütün hayvanlara erişebilirsin. Aynı şekilde değişkenlere de öyle..
hayvan[1]->getAyakSayisi(); // aslan icin 4 maymun icin 2 vs vs...
Baya yuzeysel gectim ama yararlarindan bi tanesi de bu :)
Fonksiyonlara gore cok daha yararli... :)
-
saol ama yazı cok kucuk gozlerimi yordu..
-
object Oriented Programming aslında en guzel baslangıctır programlamaya girştir.. we
ZoktriP arkadasımızın da dediğii gibi classlar fonksynlara göre daha etkili aslında söle dieym 800 strlık bir oyun yazıoruz kendi capımızda daha 2. dönem imizde bu derste we gayette hoş cıkıo we genlde sınıfalrı kullanuoruzz...
hani bilrsin ya genelden özele kavraı wardr sınıfta benzeri birsey genell kapmama yapıorr...işaretciler sunlar bunlar derken alıp basını gidiorr :)
we object Oriented Programming bnce en önemli yanı zevkli olması ne ileym ben ilk böyle basladım algortmayı bununla öğrndim daha doğrusu javayla bu bnm için iyi oldu hatta cok iyi su an c# a baslaycağzz umarım orda da faydasını görürümm
-
zumsuk bunu yazdı:
-----------------------------
hocam anlamadığım şey şu , biz fonksiyonlarlada yapabiliyoruz bu işi ? Neden sınıf yapısı ?
Snıf yapısında bilgiler gruplayıp tutuluyor bu yüzden daha mı kolay ulaşım oluyor ? Performanstan mı ? Neden ? Bir türlü bunun cevabını bulamadım.
Yani sınıf ile fonksiyon arasında ne fark var ? Neden sınıf yapısı çok çok çok önemli olarak görülüyor ?
-----------------------------fonksiyonunda yetmediği yerler oluyor, şahsen başıma geldi.
ha yine birkaç fonksiyonla vs yaparsin ama hem pratik hem performans, hemde klas :)