Nesneye Dayalı Proğramlama 1

Transkript

Nesneye Dayalı Proğramlama 1
NESNE YÖNELİMLİ PROGRAMLAMA – HAFTA # 1
Yrd.Doç.Dr.Hacer Karacan
NESNEYE YÖNELİMLİ PROGRAMLAMAYA GİRİŞ
•
•
•
•
Program Nedir?
Programlama Dili Nedir?
Programlamanın Tarihçesi
Programlama Türleri
▫
▫
▫
▫
Makine Dili Programlama
Assembly Dili Programlama
Yapısal Programlama
Nesneye Yönelimli Programlama
Program Nedir?
• Bilgisayarlar, bilgisayar programı denen komut setlerinin
kontrolu altında verileri işlerler.
• Bilgisayarda çalışan bilgisayar programlarına yazılım denir.
• Program, günlük hayatta bir sorunu bilgisayar ile çözmek,
rutin işlemleri kolaylaştırmak için yazılan yazılımlardır.
• Kişinin program yazması için öncelikle Genel Programlama
Bilgisine sahip olması gerekir. Peşinden bir Programlama Dili
bilmek gereklidir.
• Dil tercihi yazılacak programa, soruna ve platforma uygun
olarak yapılabilir.
Programlama Dili Nedir?
• Programlama Dili bilgisayarda çözülecek bir sorun için
çözümün bilgisayara adım adım yazılmasını sağlayan formel
kuralları olan ve bu kurallara sıkı sıkıya bağımlılığı gerektiren
bir tanımlar kümesidir.
• Programlama dili son derece standart tanımlar içerir ve bir
programı yazarken bu tanımlardan bir an için bile
uzaklaşılamaz.
▫ Bir program parçasından başkalarının başka şeyler
anlaması mümkün değildir.
• Yazılan bu programlar bir derleyici vasıtası ile Makine diline
çevrilir varsa hataların bulunmasını sağlar ve kullanıcı bu
hataları düzeltir.
Programlamanın Tarihçesi
• 1940-1950 yılları arasında programcılar oldukça fazla kodlanmış
makine komutlarıyla programlarını yazıyorlardı.
• Makine dillerine yakın ancak yine belli bir mikroişlemci için
geliştirilmiş dillerden birisi de ASSEMBLY programlama dilidir.
• Bu süreç içinde belli amaçlar ve alanlar için birçok üst düzey
programlama dili geliştirildi: ADA, BASIC, FORTRAN, COBAL,
PASCAL, PL/I, C, C++…
• 1980’li yıllar üst düzey programlama dillerinin yaygın olarak
kullanıldığı yıllar olmuştur.
• 1990’li yıllar 'Windows'lu yıllar oldu. Windows işletim sistemlerinin
yaşamımıza girmesiyle programlama görsel ve olay- temelli olarak
gelişmiştir
Programlama Türleri
• Programlama türleri makine diline yakınlıktan, insan diline
yakınlığına doğru derecelendirilir.
• Makine Diliyle başlayan programlama, zamanla insan diline
yaklaşan seyir izlemiştir.
• En Temeli makinenin doğrudan anladığı Makine Dili iken,
bugüne
kadar
insan
diliyle
programlama
gerçekleştirilememiştir
Makine Dili Programlama
• Bilgisayarın doğal dilidir.
• Bilgisayarın donanımsal tasarımına bağlıdır.
• Makine dili “010101001”’lerden oluşan komutlardır ve bunlar
doğrudan makineye hitap eder.
• Makine dili işlemci türüne özel olarak yazılmaktadır.
Dolayısıyla, bir işlemci türü için makine diliyle yazılmış
program, diğer işlemciler için uygun olmamaktadır.
Assembly Dili Programlama
• Bilgisayar programlarının yazılmasında kullanılan alt seviyeli
bir dildir.
• Assembly insanlar tarafından anlaşılması zor olan makina
dilinin sayısal ifadelerini, insanlar tarafından anlaşılarak
programlanması daha kolay olan alfabetik ifadelerle
değiştirerek düşük seviyede programlama için bir ortam
oluşturur.
• Bir assembly dil programı çevirici (Assembler) olarak
adlandırılan faydalı bir program tarafından hedef bilgisayarın
makine koduna çevrilir.
Yapısal Programlama
• Uzun ve karmaşık programların, bloklara ayrılarak daha kolay
biçimde yazılabilmesini mümkün kılar.
• Küçük kod parçacıkları seviyesinde yapısal programlama
hiyerarşik program akışı yapılarını tavsiye eder.
▫ Bu yapılar pek çok modern dilde kolayca elde edilebilen, “while”,
“repeat”, “for” gibi yapılardır.
• Bu teknik ile programcılar büyük kod parçalarını daha kısa ve
dolayısıyla anlaşılırlığı yüksek alt yordamlar halinde yazarlar.
• Genel olarak programlarda çok az genel (global) değişken
kullanılır.
▫ Genel değişkenler yerine altyordamlar yerel değişkenler
kullanırlar ve değişkenlerini adres ve değer ile gönderirler.
Nesne Yönelimli Programlama
• Yazılım teknolojisindeki gelişme ve ilerlemeler; yapısal
programlama, yapısal tasarım, yapısal analiz ile başlasa da
nesne yönelimli analiz, tasarım ve programlama ile daha çok
gelişme elde edilmiştir.
• Nesneye yönelimli programlama gerçek dünyayı örnek
almakta tıpkı gerçek dünyada olduğu gibi nesneler ve
nesnelerin birbirleriyle iletimini sağlayan sistemler
kurmaktadır.
• Bu tarz yazılan yazılımlar, daha iyi organize ve anlaşılır
oldukları için bakımları da çok kolay olmakta ve programcıya
zaman ve maliyetten büyük tasarruf sağlamaktadır.
Nesneye Yönelimin Esasları
• Nesne kavramı
• Nesneler arası ilişkiler ve bir birleri arası etkileşimler
• Sınıf kavramı
• Nesneye yönelimli programlanın esasları
• Java Programlama Dili
Modelleme
• Gerçekleştirilmesi maliyetli ya da riskli olan projelerde, projenin beklenmedik
durumlardan dolayı başarısızlığa uğramaması için bir takım fikir ve tasarım
işlemleri (modelleme) yapılır.
• Modelleme fikir bazındaki projenin, gerçek dünyada uygulanabilirliğini sorgular.
• Karşılaşılabilecek sorunlara önceden çözüm bularak işgücü, maliyet, zaman gibi
kaynak kayıplarını önler.
• Nesneye yönelimli programlamayla birlikte modellemeye duyulan ihtiyaç artmış
ve Yazılım projelerinde kullanılmak üzere UML (Unified Modeling Language)
modelleme dili geliştirilmiştir.
• Model oluşturmak şu getirileri sağlar
▫ Yapılacak iş için gereksinimleri ortaya koyar
▫ Anlaşmazlıkları çözümlemeye yardımcı olur.
▫ Yanlışları Önler
Nesne Nedir?
• Sözlük anlamı “Belli bir ağırlığı ve hacmi, rengi olan her
türlü canlı ve cansız varlık.” olan nesne çevremizi saran
dokunabildiğimiz, görebildiğimiz her şeydir.
• Nesneye yönelimli Programlama gerçek dünyayı örnek
almaktadır. Tıpkı gerçek dünyadaki gibi nesneler vardır
ve bir birleri arasında etkileşim içerisindedirler.
Nesnenin Özellikleri
• Gerçek hayatta olduğu gibi NYP’da da her bir nesnenin özellikleri
vardır.
• Nesnelerin özelliklerinin tutukları değerler nesnenin o andaki
durumu hakkında bilgi verirler.
• Bu değerler değiştikçe nesnenin durumu da değişikliğe uğrar.
• Nesnelerin özellikleri genellikle nesnenin içinde ya da dışında
oluşan bir olayla değişir.
Şapka nesnedir,
yeşil olması özelliğidir.
Kapı nesnedir,
açık olması özelliğidir.
Nesnenin Eylemleri
• Nesnenin var olmasındaki temel amaç diğer nesnelere dolayısıyla
sisteme katkı sağlamasıdır.
• Sistemler nesnelerden oluşur ve sistemlerin işlevleri bünyelerindeki
nesnelerin eylemleri ile mümkündür.
• Nesneler var oldukları sürece eylemlerde bulunurlar bu eylemlerden
nesnenin kendisi ya da diğer nesneler etkilenirler.
• Nesneler tasarlanırken ilk olarak sorulan bu nesne hangi eylemlerde
bulunacak sorusudur.
Uçak Bir Nesnedir,
Uçağın Uçması Eylemdir
Nesneleri Modelleme
• Nesnelerin oluşturulabilmesi için öncelikle özelliklerinin ve
eylemlerinin neler olduğuna karar vermek gerekmektedir.
• Bunun kararını vermek için oluşturulmak istenen nesnenin
sistemdeki diğer nesnelerce nasıl kullanılacağının bilinmesi
gerekmektedir.
• Modellenecek nesneler gerçek dünyadakilerle bire bir aynı olmak
durumunda değillerdir.
• Sistem için kullanılan nesnelerin sistemin ihtiyaçlarına cevap
verecek özelliklere ve eylemlere sahip olması yeterlidir.
Nesneler Arası İlişkiler
• Nesneler, daima diğer nesnelerle ilişki içerisindedirler.
• Bu ilişki nesneler arası iletişim şeklinde olabildiği gibi, yapısal ilişkilerde
kurabilirler.
▫ Öyle ki bir nesne başka bir nesnenin parçası olabileceği gibi, birden
çok nesnenin birleşiminden de oluşabilir.
 Örneğin bir araba tekerlekler, kapı. motor, koltuk gibi pek çok
nesnenin bir araya gelmesiyle oluşmuş bir nesnedir.
• Nesneler arası bu ilişkiye toplama (aggregation) denilmektedir.
Nesneler Arası İlişkiler
• Nesneye Yönelimli bir uygulamada tüm veriler ve kodlamalar nesneler
üzerinden yapılırlar bu nedenle iş birliği söz konusudur.
• Nesnelerin birbirleriyle işbirliği yapabilmesi için birbirleriyle ilişki
içersisinde olmaları gerekmektedir.
• Nesneler işbirliğini aralarında mesaj iletimiyle yaparlar. Mesajı alan
nesne bu mesajı nasıl yorumlayacağını bilmekle yükümlüdür.
• Mesajlar genellikle nesnenin bir eylemini gerçekleştirmesi için gerekli
veriyi taşırlar.
Sınıf Nedir?
• Nesneye yönelimli programlamada sınıf bir nesnenin tüm özelliklerini
ve eylemlerini tanımlayan şablondur.
• Bir nesne oluşturulacağı zaman sınıfın verdiği bilgilere bakılır ve bu
bilgiler doğrultusunda nesne oluşturulur.
• Sınıflar nesnelerin ilk oluşumu sırasında gerekli olan başlangıç
durumlarını da belirtirler.
▫ Örneğin, bir marangozhanede masa imal etmek istendiğinde,
oluşturmak istenilen masanın tüm özelliklerini sınıf olarak
belirtmemiz gerekir. Masa kaç ayaklı olacağı, yüksekliği, açılıp
kapanabilirliği gibi zihinde çizilen masa modelini sınıfa yansıtmak
gerekmektedir.
• Sınıf oluşturulduktan sonra sınıfın belirttiği özelliklere ve eylemlere
sahip nesneler oluşturulabilir.
• Gerçek dünyada pek çok nesnenin ismi yoktur. Nesneler ait
oldukları sınıflarla adlandırılırlar.
▫ Örneğin binek otomobilimize de pazarcının sebzeleri taşıdığı araca da
araba diyoruz.
• Sınıflar tanımlanırken genelden sistemin ihtiyaç duyduğu tüm
nesneler göz önüne alınarak sınıflar tanımlanmalı.
• Benzer özellikteki nesneler için tek sınıf oluşturulması yazılım
geliştirme süreçlerinde kolaylıklar sağlamaktadır
Java Programlama Dili
• Java, Sun Microsystems mühendislerinden James Gosling
tarafından
▫ 1990’ların basında gelistirilmeye baslanmıs;
▫ Açık kodlu,
▫ Nesneye yönelik,
▫ Platformdan bagımsız,
▫ Yüksek performanslı,
▫ Çok görevli,
▫ Yüksek seviyeli,
▫ Adım adım isletilen (yorumlanan - “interpreted”) bir dildir.
Java – Temel Özellikler
• Platform bağımsız
▫ Kaynak programları çesitli bilgisayar sistemlerinde derlenip çalıstırılabilen
diller “tasınabilir” (“portable”) olarak nitelendirilir.
 Java ile yazılmıs programlar, her donanım/isletim sistemi platformunda
benzer sekilde çalıştırılabilir.
▫ “Bir kez yaz ve her yerde çalıstır” (“write once, run anywhere”)
• Otomatik çöp toplama (“garbage collection”)
▫ Dinamik bellek yönetimi: Java'da bir nesne olusturulduktan sonra o nesne ile
isiniz bittiginde hiçbir sey yapmanız gerekmez; sanal makine akıllı bir
biçimde kullanılmayan bellek bölümlerini belirli aralıklarla ya da tetiklenen
yordamlarla otomatik olarak temizler ve sisteme iade eder.
• Açık kaynak
▫ Sun, Kasım 2006’da Java bilesenlerini, “GNU General Public Licence” altında
açık kaynak olarak yayınladı.
Java Runtime Environment – JRE
• Java uygulamalarının bilgisayar üzerinde koşturulmasını sağlayan
yazılımdır.
▫ Kullanıcılar Java Çalıstırma Ortamınının son sürümünü java.com
internet sayfasından yükleyebilir
(http://java.com/en/download/help/testvm.xml)
• Java Çalıstırma Ortamı iki kısımdan olusur:
▫ Java Sanal Makinesi (“Java Virtual Machine” - JVM)
▫ Uygulama Programlama Arayüzü (“Application Programming Interface”
– API)
 Bir dizi standart kütüphane saglar.
• JVM ve API birbiriyle tutarlıdır ve bu yüzden JRE altında
birlestirilmistir.
▫ JRE’nin Java uygulamalarını çalıstıran sanal bir bilgisayar oldugunu
düşünürsek; JVM islemci, API kullanıcı arayüzü olarak isimlendirilebilir.
Java Virtual Machine – JVM
• Sanal makineyi bir yönden bir tür hayali mikroişlemci gibi
düşünebiliriz.
• Gerçek tüm mikroişlemciler (Intel Pentium, AMD Athlon, Sun
Sparc, vs.) belirli bir grup komutu işlemek üzere tasarlanmıstır.
• Bu komutlara islemcinin komut kümesi adı verilir. Tüm yazılımlar
çalışabilmek için önce bu komut kümesine dönüştürülür, daha
sonra işlemci bu komutları sıra ile sayısal işlemci komutlarına
dönüştürüp işletir.
• Java Sanal Makinesi de baytkod komut kümesini tıpkı işlemci gibi
adım adım işletir. Java bu nedenle, yorumlanan (“interpreted”)
bir dil olarak adlandırılır.
Application Programming Interface – API
• Java API, Java yazılımlarında kullanılan yazılım kütüphanelerine
genel olarak verilen isimdir.
▫ Java API ile disk, grafik, ağ, veri tabanı, güvenlik gibi yüzlerce konuda
kullanıcılara erisim imkanı sunulur.
▫ Java API, J2SDK’nın (“Java2 Software Development Kit”) bir parçasıdır.
• Sun, farklı uygulama ortamlarını desteklemek için, farklı API’lar
tanımlamıştır:
▫ Java Platform, Micro Edition (Java ME): Avuçiçi aygıtlar gibi kısıtlı
kaynaga sahip ortamlar için
▫ Java Platform, Standard Edition (Java SE): Masaüstü bilgisayarlar ve is
istasyonları için
▫ Java Platform, Enterprise Edition (Java EE): Genis dagıtık sistemler ve
web sunucuları için
Java kaynak dosyasının yapısı
• Programlamada kodların yazıldığı dosyalara kaynak dosyası
denilmektedir.
• Java kaynak dosyaları .java uzantısıyla oluşturulurlar.
• Java kaynak dosyaları oluşturulurken dikkat edilecek ilk kural,
kaynak dosyasının içerisinde dosyayla aynı adı taşıyan bir sınıf yada
arayüz bulunması gerekliliğidir.
• Bir java kaynak dosyası üç ana bölümden oluşur. Bunlar:
▫ Paket Bildirimi
▫ Kütüphane Ekleme
▫ Kod Bloğu
Paket Bildirimi
• Java’da kaynak dosyalar veya derlenmiş halleri bilgisayarımızdaki
dosya sistemine benzer bir hiyerarşide tutulurlar.
• Nasıl ki bilgisayarımızdaki tüm dosyalar bir dizinde tutuluyorsa
kaynak dosyalarımız da mutlaka bir paket içerisinde tutulmalıdır.
• Paketler başka paketlerin içerisinde bulunabilirler.
▫ Örneğin java’da dosya işlemlerini yapan File.java kaynak
dosyası java paketinin içerisindeki io paketine aittir. Bu
nedenle File.java dosyasının en üst kısmında
package java.io
ifadesi bulunur. Bir kaynak dosya sadece bir pakete ait
olabilir dolayısıyla kaynak dosyasında sadece bir adet paket
bildirimi olur.
Kütüphane Ekleme
• Daha önceden yazılmış ve programcının kullanımına sunulmuş
kaynak dosyalar yada bunların derlenmiş hallerine kütüphane
denilmektedir.
• Java’da kütüphane bildirimi, paket bildiriminin ardından
yapılmaktadır.
▫ Örneğin yukarıda bahsettiğimiz File.java kaynak dosyasından
üretilmiş File sınıfını yeni yazacağımız kodda kullanmak
istersek;
import java.io.File;
ifadesini kullanmamız gerekmektedir.
Kütüphane Ekleme
▫ Tek tek sınıf dosyalarını eklemektense bir paket içerisindeki tüm
dosyaları aynı satırda ekleme imkanı da mevcuttur.
• Örneğin Java’nın giriş çıkış işlemlerinin bulunduğu java.io paketinin
içerisindeki tüm kütüphaneleri yazacağımız kodda kullanmak istersek
import java.io.*;
ifadesini kullanırız.
Kütüphane Ekleme
Kod Bloğu
• Paket ve kütüphane işlemlerinden sonra kod bloğu tanımlanır kod
bloğu en az bir adet sınıf veya arayüz tanımından oluşur.
• Kod bloğunda tanımlanan arayüz yada sınıfın en az birinin dosya
ismiyle aynı isimde olması gerekmektedir.
Java’da İsimlendirme
• Java’da isimlendirme yaparken bazı kurallar mevcuttur.
• Dosya İsimleri: Java’da dosya isimleri büyük harfle başlar. Dosya
ismi birden fazla sözcükten oluşuyorsa, sözcükler arasında boşluk
bırakmadan tüm sözcüklerin ilk harfi büyük olacak şekilde
isimlendirilir. Dosya isminin sonuna .java uzantısı eklenir.
▫ Örn. Araba.java
▫
SuSisesi.java
• Sınıf İsimleri: Java’da sınıf isimleri büyük harfle başlar. Sınıf ismi
birden fazla sözcükten oluşuyorsa, sözcükler arasında boşluk
bırakmadan tüm sözcüklerin ilk harfi büyük olacak şekilde isim verilir.
▫ Örn. Surucu
▫
YemekMasası
Java Programlama Dili
• Metod İsimleri: Java’da metod isimleri küçük harfle başlar.
Metod ismi birden fazla sözcükten oluşuyorsa, sözcükler arasında
boşluk bırakmadan ilk sözcük hariç diğer tüm sözcüklerin ilk harfi
büyük olacak şekilde isimlendirilir.
▫ Örn. baglan()
▫
kapiyiAc()
• Paket İsimleri : Java’da paket isimleri tamamen küçük harflerden
oluşur. Alt paketler “.” ile birbirlerinden ayrılır.
▫ Örn. java.io
▫
java.sql
Java Programlama Dili
• Değişken İsimleri: Java’da değişken isimleri küçük harfle
başlar. Değişken ismi birden fazla sözcükten oluşuyorsa, sözcükler
arasında boşluk bırakmadan ilk sözcük hariç diğer tüm sözcüklerin
ilk harfi büyük olacak şekilde isimlendirilir.
▫ Örn. adi
▫
dogumYeri
▫
dogumTarihi
• Sabitler : Java’da sabit isimleri büyük harflerden oluşur. Sabit
ismi birden fazla sözcükten oluşuyorsa, sözcükler arasında “_”
karakteri konularak isimlendirilir.
▫ Örn. RAKIM
▫
PI_SAYISI
Notlandırma
• Arasınav  %30
• Proje  %30
▫ Proje Önerisi (29.02.2012)  %5
▫ Mantıksal Tasarım (28.03.2012)  %10
▫ Proje Raporu (16.05.2012)  % 10
▫ Sunum (09.05.2012 & 16.05.2012)  %5
• Final  %40

Benzer belgeler