  ͻ
  Ŀ           Ŀ                   Ķ
  Ŀ                  Ĵ                        Ķ
  Ŀ                                                 Ķ
  Ŀ                                                 Ķ
  Ŀ                              Ķ
  Ŀ                    C'DE  PENCERELER                 Ķ
  Ķͼ
              ͹               M. Murat Dicle                 ͼ
                ͼ



 rnek programmz Nesneye ynelik almalarda klasik hale gelmi olan basit
  bir pencere sistemidir. Ekrana bir pencere ama/kapama ve pencere almadan
  nce pencere alacak yerin altnn korunmas, pencere boyutlarnn
  deimesi, pencerenin tanmas vb. ilerin yaplmas bu rnek programda
  mevcuttur.

 Programda  nesne tanmlanmtr. En byk nesne (DEDE) olan POINT'tir.
  POINT'ten miras alan nesnemiz (yani BABA) BOX'tur. Ve BOX'tan miras alan en
  kk nesnemiz (OUL) WINDOWS'tur. Tabi buradaki byklk ve kkln
  programlarn kod boyutuyla bir alakas yoktur. imdi bu olay gerek
  hayattan rnek vererek anlatmak gerekirse;


 Bir dedemiz var ve dedemizin bir erkek ocuu oldu ve oluna kendinden bir
  takm eyler veriyor. "Huylar", "eyalar", "eitim" gibi. Ve bu ocuk gnn
  birinde evleniyor, onunda bir olu ya da kz oluyor. Bu baba da yeni doan
  ocuuna kendi babasndan aldklarnn, ocuu iin en gerekli olanlar
  veriyor. Ve ayrca baba da kendi tecrbelerini ekliyor. Bizim ocuk oluyor
  SPER. ocuk, yapaca ilerin aslnda DEDE'sinin ve BABA'snn daha
  evvelden tecrbe etmi olduklarn da biliyor. Eer ocua dedesinden kalan
  bir "huy" yanl ise ve yanl "huy" dedesi tarafndan anlalm ise dedesi
  bu "huy"u deitiriyor. Dolaysyla yeni ocuk da bu "huy"dan vazgemek
  zorunda kalyor. nk dedesinin yapmad eyi ocuk yapamyor. Napsn huyu
  kurusun...


  Sanrm yukardaki bilgisayarla alakas olmayan acayip rnek, biraz olsun
  sizi OOP kunusunda hayal grmenize neden olmutur. Aslnda insanlarn OOP'ye
  gemelerinin yegane sebebi de budur. Tm procedurler'in, tm fonksiyonlar'n
  elle tutulur bir nesne gibi grnr olmasdr. Bylelikle programa daha
  hakim oluyor insan. Ve programnzn sanki maddesel bir deeri varm gibi
  geliyor insana;

      -Ben bu krmz pencereyi beenmedim.
      -yleyse pencereni pembeye boyayalm.

  te olay bundan ibarettir. Belki normal programlamadan OOP programlamaya
  geerken baya zorlanabilirsiniz. Fakat hi ylmayn. nk hereyi bir
  nesne yapabilirsiniz.


 imdi programmzda ad geen nesneleri bir anlatalm. lk DEDE nesnemiz
  POINT'tir. Bu nesne iinde X,Y ve GORUNUR adl deikenler tanmlanm olup
  bunlarla birlikte bu deikenleri deitirmeye, grnr ya da grnmez
  yapmaya ve tamaya yaryan procedrler vardr. Aslnda bu procedrler ve
  deikenler ayn zamandada BOX (BABA) nesne tarafndanda kullanlmaktadr.
  BOX adl nesnede ise GENISLIK ve YUKSEKLIK adl iki adet deiken
  tanmlanmtr. Yine gerek bu deikenleri deitirmek gerekse de belirtilen
  koordinatlara KUTU izme gibi prosedrler mevcuttur. Yalnz burada dikkat
  ettiyseniz procedure isimleri her nesnede bir tanedir. Yani POINT nesnesinde
  MOVE var ise BOX'ta MOVE olamaz. Aslnda olurda ok eyler karr. Ben bunu
  nlemek iin BOX'taki MOVE yerine BOX_MOVE yazdm. Bylelikle hi kimsenin
  eli, hi kimsenin cebine girmiyor. Yine WINDOWS nesnesinde POINT ve BOX
  nesnelerin olduu gibi bnyesinde bulunan deikenleri ve pencereyi
  gsterme-saklama gibi ileri yapan prosedrler mevcuttur. Bilmem dikkatinizi
  ekti mi, burada PROTECT diye bir komut vardr. Bu komut aslnda nesne
  iinde bulunan deikenlerin dorudan deitirilmesini nlemek iindir. Yani
  siz POINT nesnesindeki X deikenini "POINT.X = 0" eklinde
  deitiremezseniz, derleyiciniz hata verir. Deitirme ilemini ancak POINT
  yapabilir. Siz kim oluyorsunuzda koskoca POINT'in X deikenini gizlice
  deitiriyorsunuz. Adam gibi MOVE komutunu kullanarak haber vererek
  deitirseniz o zaman baka tabi. Yani anlayacanz bir nesnede,
  ierisindeki bir deikeni anca kendi iinde bulunan bir prosedr
  deitirebilir.

 Aslnda burada anlatlanlar OOP ile programlamann balangc olarak
  dnebilirsiniz. nk fazla detaya girmek istemedim, zaten anlatmasda bu
  ii anlamaktan daha zor. Ama eer OOP ile ilgileniyorsanz bence C++'ta bu
  ii ok iyi yapabilirsiniz.


  Sizi herzamanki gibi ylece ortada brakayrum. Hadi iyi almalar size,
  kolay gelsin...


  "  Okuyarak renmektense, aratrarak renmeyi yelerim.
     Nasl olsa bilgisayarn patlama gibi bir derdi yok!..      "




