NESNEYE Y - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

NESNEYE Y

Description:

Title: Memory-Based Learning Instance-Based Learning K-Nearest Neighbor Author: Rich Caruana Last modified by: Y lmaz Created Date: 9/30/2004 5:32:44 PM – PowerPoint PPT presentation

Number of Views:55
Avg rating:3.0/5.0
Slides: 26
Provided by: RichC151
Category:

less

Transcript and Presenter's Notes

Title: NESNEYE Y


1
NESNEYE YÖNELIK PROGRAMLAMANIN TEMEL
ILKELERIGENEL BIR BAKIS
Yilmaz Kiliçaslan
2
Sunum Plani
  • Bir önceki derse baglanti
  • Programlama yaklasimlari
  • Nesneye-Yönelik Programlamanin Ilkeleri
  • Soyutlama
  • Saklama
  • Kalitim
  • Çok biçimlilik

SINIF
SINIF HIYERARSISI
3
Bir Önceki Derse Baglanti
  • Gerçegin bütün düzlemleri karmasikligin
    üstesinden gelmek için, bölümleyerek soyutlama
    ilkesini kullanir.
  • Dijkstranin belirttigi gibi, karmasiklikla nasil
    bas edlecegi antik dönemden beri bilinmektedir
    böl ve yönet (divide et impera divide and
    rule).

4
PROGRAMLAMA YAKLASIMLARI
  • Bir programlama dili algoritmalar ve veri
    yapilarindan olusur.
  • Programlama dilleri programlamaya yaklasim
    açisindan 4 gruba ayrilabilir
  • Prosedür yönelimli diller (örn. Fortran, Pascal)
  • Fonksiyon yönelimli diller (örn. Lisp)
  • Nesne yönelimli diller (örn. C, C, Java)
  • Mantik yönelimli diller (örn. Prolog)

5
PROSEDÜR YÖNELIMLI DILLERE ALTERNATIF OLARAK
NESNE YÖNELIMLI DILLER
  • Geleneksel prosedür yönelimli programlama
    yaklasiminda, bir program gerçeklestirilecek bir
    dizi islem adimini, yani bir algoritmayi,
    tanimlar.
  • Nesneye-yönelik yaklasimda ise, bir program
    birbiriyle etkilesim halinde olan bir nesneler
    sistemini tanimlar.
  • Ci tümüyle prosedürel bir dil olarak
    kullanabiliriz fakat, ancak nesneye-yönelik bir
    yaklasimla bu dilin bütün potansiyelini açiga
    çikarabiliriz.

6
NESNEYE-YÖNELIK PROGRAMLAMANIN TEMEL KAVRAMLARI
  • Nesneye-yönelik programlamanin temel kavramlari,
  • büyük programlar yazmayi kolaylastiran soyutlama
    ve programlari degistirmeyi ve korumayi
    kolaylastiran saklama
  • kalitim ve çok biçimlige izin veren ve
    programlari kolayca genisletilebilir kilan sinif
    hiyerarsisidir.
  • Herhangi bir programlama dilinde bu kavramlari
    uygulayabilirsiniz fakat, nesneye-yönelik
    programlama dilleri salt bu amaçla
    tasarlanmislardir.

7
SOYUTLAMA - 1
Soyutlama , belirli bir bakis açisindan, önemli
özelliklere odaklanabilmek için ayrintilari göz
ardi etme sürecidir.
8
SOYUTLAMA - 2
  • Geleneksel olarak, bir programlama dili soyutlama
    yapmaya izin verdigi ölçüde yüksek-düzeyli
    (high-level) kabul edilir.
  • C (ve diger nesneye-yönelik programla dilleri)
    verilen bir isi Cden daha soyut bir tarzda
    tanimlama imkani verirken, C de Birlestirici
    Dillerden daha soyut bir ortam sunar.

9
PROSEDÜREL SOYUTLAMA-1
  • Islemlere iliskin ayrintilari göz ardi etmemize
    izin veren prosedürel soyutlama en yaygin
    soyutlama tarzidir.
  • Belirli bir dilde bir program yazarken programci
    kendisini bu dilin sunmus oldugu soyutlama
    düzeyiyle sinirlamak zorunda degildir. Birçok dil
    kullanici-tanimli fonksiyonlar (rutinler,
    prosedürler) yardimiyla prosedürel soyutlama
    düzeyini daha yukarilara tasimaya izin verir.

10
PROSEDÜREL SOYUTLAMA-2
  • Kendi fonksiyonlarinizi yazarak, programin
    yaptigi bir dizi isleme bir isim vermis
    olursunuz. Örnegin, iki karakter katarinin
    ayniligini büyük-küçük harf ayrimi gözetmeksizin
    test eden asagidaki kodu,
  • while (s ! \0)
  • if ((s t)
  • ((s gt A) (s lt Z) ((s32)
    t))
  • ((t gt A) (t lt Z) ((t32)
    s)) )
  • s t
  • else break
  • if (s \0) printf(esit \n)
  • else printf(esit degil \n)
  • bir fonksiyon içine yerlestirebiliriz
  • if ( !_stricmp(s, t) ) printf(esit \n)
  • else printf(esit degil \n)

11
PROSEDÜREL DEKOMPOZISYON
  • Yapisal programlama yaklasiminda,
  • ilk tasarim adimi programdan beklenen
    islevselligi belirlemektir. Yanitlanmasi gereken,
    Bu program ne yapacak? sorusudur.
  • Ardindan, istenileni gerçeklestirmesi için
    programin atmasi gereken temel adimlar
    yüksek-düzeyli pseudo kodlar ya da akis
    diyagramlari yardimiyla belirlenir.
  • Sonrasinda, her temel adim daha küçük adimlara
    bölünerek tasarim daha rafine hale getirilir.
  • Bu yaklasima, prosedürel ayristirma (procedural
    decomposition) denir.

12
PROSEDÜREL DEKOMPOZISYON
"Structured programming appears to fall apart
when applications exceed 100,000 lines or so of
code" (Stein 1988)
13
VERI SOYUTLAMASI-1
  • Bir veri tipinin nasil yapilandiginin
    ayrintilarini göz ardi etmemize izin veren
    soyutlama tarzina veri soyutlamasi denir.
  • Örnegin, bilgisayardaki her tür veri ikili
    sayilar olarak düsünülebilir. Fakat, birçok
    programci ondalik sayilarla düsünmeyi tercih
    ettigi için, dillerin çogu tam ve floating
    sayilari destekler.
  • Basic dili karakter katari (string) tipini bir
    veri soyutlamasi olarak destekler. Diger yandan,
    C dili string soyutlamasini dogrudan desteklemez.
    Bu dilde stringler ardisik bellek hücrelerini
    isgal eden bir dizi karakter olarak
    tanimlanmistir.

14
VERI SOYUTLAMASI-2
  • Prosedürel soyutlama kapasitelerinin aksine,
    birçok dil yeni veri soyutlamasi düzeyleri
    yaratmak konusunda sinirli destek saglarlar.
  • C kullanici tanimli veri tiplerini structurelar
    ve typedefler araciligiyla destekler.
  • Birçok programci structurelari basit bir
    degiskenler toplulugu olarak kullanir
  • struct KisiBilgisi
  • char isim30
  • long telefon
  • char adres130
  • char adrese230

15
Nesne Prosedürel Soyutlama Veri Soyutlamasi
  • Bir structurein bildirimini kendisini
    kullanmamiz gereken fonksiyonlari belirtmeden
    yapabiliriz. C dili, içsel olarak birbirlerine
    bagli olmalarina ragmen, prosedürel soyutlamayi
    ve veri soyutlamasini iki ayri teknik olarak
    sunar.
  • Bu tekniklerin birlestigi noktada nesne-tabanli
    ya da nesneye-yönelik programlama yaklasimi dogar.

16
SINIFLAR
  • Nesneye-yönelik programlama, prosedürel soyutlama
    ve veri soyutlamasini siniflar biçiminde
    birlestirir.
  • Bir sinifi tanimlarken, yüksek-düzeyli soyut bir
    yapiya iliskin her sey belirlenir.
  • Bu sinifa ait bir nesneyi kullanirken, sinif
    içinde bildirilmis veri tipleri ve onlar üzerinde
    tanimlanmis islemler göz ardi edilebilir.

17
SARMALAMA
  • Programimizin tasarimini kendi islem kümelerine
    sahip soyut veri tipleri etrafinda yaparak
    kendimizi kodlama / gerçekleme detaylarindan daha
    fazla arindiririz. Bu da bizi nesneye-yönelik
    programlamanin bir diger avantajina, sarmalamaya,
    götürür.

18
Sarmalama Bilgi Saklama
  • Sarmalama, soyutlamayi desteklemek yada
    güçlendirmek için bir sinifin iç yapisinin
    gizlenmesidir. Bu gizleme, bir sinifin görünür
    arayüzü ile özel gerçeklemesi arasinda keskin
    bir ayrim yapmamizi gerektirir.
  • Bir sinifin arayüzü o sinifin ne yapabilecegini,
    gerçeklemesi ise bunu nasil yapabilecegini
    gösterir.

19
Verileri Fonksiyonlarla Gizleme
  • Gerçek bir sarmalama, verileri fonksiyonlarla
    gizlemeyi gerektirir

Fonk.
Erisilebilir verili nesne
Fonk.
VERI
Fonk.
Fonk.
Fonk.
Fonk.
Gizli verili nesne
VERI
Fonk.
Fonk.
Fonk.
20
Parça bütün ve alt-sinif üst sinif hiyerarsileri
21
SINIF HIYERARSISI
  • Nesneye-yönelik programlamanin, prosedürel
    programlamada bulunmayan, bir özelligi, tip
    hiyerarsisi tanimlayabilme yetenegidir.
  • Örnegin, C Dili bütün veri tiplerini birbirinden
    bagimsiz olarak ele alirken, C bir sinifin
    baska bir sinifin alt-tipi olarak tanimlanmasina
    siniflar arasi benzerlikleri bir ortak üst-sinif
    altinda toplamaya izin verir.
  • Birkaç sinif için ortak bir üst-sinif tanimlama
    da bir tür soyutlamadir. Siniflarin ortaklasa
    tasidiklari bazi yönler üzerinde odaklanip
    digerlerini göz ardi etmeye izin verir.
  • Bir sinif hiyerarsisi tanimlamanin 2 pratik
    faydasi vardir
  • Türetilmis sinif üst-sinifin kodunu paylasabilir
  • Türetilmis sinif üst-sinifin arayüzünü
    paylasabilir.

22
KOD KALITIMI
  • Eger yeni bir sinif tanimliyorsaniz ve mevcut bir
    sinifin islevselliginden yararlanmak
    istiyorsaniz, yeni sinifinizi mevcut siniftan
    türetirsiniz. Bu durumda kalitim mekanizmalari
    size mevcut kodu yeniden kullanma imkani saglar.

23
ARAYÜZ KALITIMI
  • Bir diger kalitim stratejisi, türetilmis sinifin
    üst-sinifinin eleman fonksiyonlarinin yalnizca
    isimlerini kalitim yoluyla almasidir. Türetilmis
    sinif bu fonksiyonlar için kendi kodunu kullanir.
  • Arayüz kalitiminin temel faydasi çok-biçimlilige
    izin vermesidir.

24
ÖZET
  • NYPde siniflar,
  • Soyutlama
  • Sarmalama
  • Hiyerarsik veri yapilanmasi
  • için gerekli destegi saglarlar.

25
Kaynaklar
  • Robert, L. 2002. Object-Oriented Programming in
    C. SMS, Indianapolis, Indiana.
  • Stein, J. March 1988. Object-Oriented
    Progran-iming and Database Design. Dr.
    Dobb'sjoumal of Software Tbolsfor tbe
    Professional Programmer, No. 137, p. 18.
Write a Comment
User Comments (0)
About PowerShow.com