2. Bölüm Nesne Merkezli Programlamanın Temelleri Java ile Nesne Merkezli Programlamaya Giriş Akın Kaldıroğlu

Benzer belgeler
Akın Kaldıroğlu Java ile Nesne Merkezli Programlama

3. Bölüm Soyut Sınıflar (Abstract Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Sunum İçeriği. Programlamaya Giriş

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

NESNEYE YÖNELİK PROGRAMLAMA

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

5. Bölüm Alt Sınıflar (Nested Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

BİL-142 Bilgisayar Programlama II

BİL-141 Bilgisayar Programlama I (Java)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Java String İşlemleri

Klavyeden Basit Giriş/Çıkış İşlemleri

HSancak Nesne Tabanlı Programlama I Ders Notları

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

YZM 2105 Nesneye Yönelik Programlama

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 8: Sınıf (Class) Yapılarına Giriş

Nesne Tabanlı Programlama. Ders Notları

Lambda İfadeleri (Lambda Expressions)

public static int Toplam int x, int y

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

C++ Dersi: Nesne Tabanlı Programlama

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

BTEP243 Ders 3. class Yazım Kuralı:

Lecture 11: Generics

Bölüm 9. Altprogramlar ISBN

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Genel Programlama II

MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI

Ders 8 Konu Özeti ve Problemler

Java ile Nesne Merkezli ve Fonksiyonel Programlama

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2.

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

BMH-303 Nesneye Yönelik Programlama

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Java da İstemci Tarafı Uygulamalar

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

Programlama Dillerinde Kullanılan Veri Tipleri

HSancak Nesne Tabanlı Programlama I Ders Notları

Java Programlamada Paket Yapısı Ve Import

ALGORİTMA VE PROGRAMLAMA II

Öğr. Gör. Serkan AKSU 1

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Prof. Dr. Aybars UĞUR

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Nesne Yönelimli Programlama

Bigisayar Programlama

Hafta 13 Fonksiyonlar

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Nesne Yönelimli Programlama

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Doç. Dr. Aybars UĞUR

Nesne Tabanlı Programlama

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

JAVA API v2.0 Belge sürümü: 2.0.2

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Java Class Yapısında Finalize Metotunun Kullanımı

Nesne Yönelimli Programlama

Yrd. Doç. Dr. Caner ÖZCAN

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Java Kodunuzun Nesne-Merkezli Olmadığının 10 İşareti

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

Yazılım Kodlama ve İ simlendirme Standartları v1.0

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Yazılım Mühendisliği 1

Java Dersi. Altuğ Bilgin Altıntaş

Merge (Bireşim) Algoritmayı önce bir örnek üzerinde açıklayalım.

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

Java Programlama Giriş

C# Metotlar ve Metot Tanımlama

Programlama Dilleri 3

C++ Dersi: Nesne Tabanlı Programlama

Nesneye Yönelik Programlama (OOP) 7.Hafta

Transkript:

Java ile Nesne Merkezli Programlamaya Giriş 2. Bölüm Nesne Merkezli Programlamanın Temelleri Akın Kaldıroğlu Mayıs 2015

Küçük Ama Önemli Bir Konu Ø Bu dosya ve beraberindeki tüm, dosya, kod, vb. eğiam malzemelerinin tüm hakları Akın Kaldıroğlu na aier. Ø Bu eğiam malzemelerini kişisel bilgilenme ve gelişiminiz amacıyla kullanabilirsiniz ve isteyenleri hip:// adresine yönlendirip, bu malzemelerin en güncel hallerini almalarını sağlayabilirsiniz. Ø Yukarıda bahsedilen amaç dışında, bu eğiam malzemelerinin, Acari olsun/ olmasın herhangi bir şekilde, toplu bir eğiam faaliyeande kullanılması, bu amaca yönelik olsun/olmasın basılması, dağırlması, gerçek ya da sanal/ Internet ortamlarında yayınlanması yasakrr. Böyle bir ihayaç halinde lüten benimle, akin@javaturk.org adresinden ileaşime geçin. Ø Bu ve benzeri eğiam malzemelerine katkıda bulunmak ya da düzeltme ve eleşarilerinizi bana iletmek isterseniz çok sevinirim. Ø Bol Java lı günler dilerim. 2

Tanımlar 3

Soyutlama I Ø Soyutlama, bir şeyin, sahip olunan bakış açısı iabariyle, en önemli özelliklerini ön plana çıkarırken, önemli olmayan özelliklerini basrrmakrr, görmezden gelmekar: Ø Önemli olan özellikler, genel olarak o şeyi diğer şeylerden ayırt eden unsurlardır ya da ana, asli özelliklerdir, Ø Ayırt edici olmayanlara ise ikincil ya da arizi özellikler denir. Ø Zihnimiz karşılaşrğı her nesneyi tek tek algılamak yerine, nesneleri, karekterisak özellikleriyle algılar, sonra da ya zihinde var olan kavramsal bir kategoriyle örtüştürür ya da böyle bir kategori yoksa, bu nesneden yola çıkarak yeni bir kategori oluşturur. 4

Soyutlama II Ø soyutlama İng. abstrac-on (Lat. abstracao < abstrahere = çekip çıkarmak, soymak, ayırmak): 1. Gerçekte ayrılamaz olanı düşüncede ayırma eylemi. (Ör. Biçimi, rengi, boyutları özdekten ayırıp düşünme.) 2. Geneli ve öz olanı arınmış bir biçimde elde etmek için özle ilgili olmayanı bir yana bırakma. Bir tasarımın ya da bir kavramın nitelik ve bağınr gibi öğelerini göz önüne almayarak dikkaa doğrudan doğruya kavrama çeken düşünme eylemi. (Ör. Üçgen kavramında; üçgenin büyük, küçük, eşkenarlı ya da dik açılı oluşunu göz önüne almamak gibi.) Ø Bilim ve Sanat Terimleri Sözlüğü, hip://www.tdk.gov.tr/ 5

Soyutlama III Ø Soyutlamanın İngilizce karşılığı abstrac-on kelimesidir. Ø Britannica da şöyle tarif edilmektedir: The cogniave process of isolaang, or "abstracang," a common feature or relaaonship observed in a number of things, or the product of such a process. Ø Soyutlama, bu anlamda kavramsallaşrrma ile aynı anlamdadır. 6

Neden Soyutlama? Ø Çünkü zihnimiz bu haliyle soyutlama yapmadan bir nesneyi tüm yönleriyle kavrayamaz. Ø Dolayısıyla soyutlama, bir indirgemedir, basitleşarmedir ya da genellemedir. Ø Soyutlamalar, bir bebeğin dünyayı algılama şeklinde apaçık görülür: Ø Köpek: 4 ayaklı, havlayan ve kuyruğunu sallayan canlı 7

Soyutlama Örneği: Haritalar Ø Haritalar, soyutlamaya mükemmel bir örnekarler: Ø Farklı türdeki haritalar, aynı gerçekliğin farklı yönlerini beamlerler, amaçları dışındaki özellikleri göstermezler. Ø Dolayısıyla zihin de soyutlamaları bir amaç doğrultusunda yapar. Ø Amaç ya da ilgi alanı, aynı gerçekliğin farklı soyutlamalarının yapılmasını sağlar: Ø Otel zincirlerinin ya da benzin istasyonlarının haritaları, Ø Aynı binaya bakan farklı meslekteki kişilerin farklı soyutlamaları. 8

İstanbul Metro Haritası 9

"Ne"lik ve "Nasıl"lık Ø Soyutlamalar, bir şeyin "ne"liği üzerine yoğunlaşır, "nasıl"lık üzerine eğilmez. Ø Yani temel özellikleri, o özelliklerin oluşumundan, nasıl meydana geldiğinden bağımsız olarak ele alır: Ø Araba yı algılamak için, motor yapısını bilmeye gerek yoktur, Ø Ya da bir insanla ortaklık kurmak için onun DNA dizilerini bilmeye de gerek yoktur. 10

Soyutlama ve Gerçeklik Ø Soyutlama, sonsuz karmaşıklıktaki gerçekliği basitleşarerek anlama çabasıdır. Ø Aslında bütün soyutlamalar birer kurgudur, insanın gerçekliğe giydirdiği bir kisvedir, çoğu gerçeklikte ya yoktur ya da bizim algıladığımız şekilde değildir: Ø Banka ya da banka hesabı ya da bilgisayarda dosya sistemi tamamen insan kurgusudur Ø Dosya sistemine karşın hard diskin fiziksel yapısı ve dosya kopyalamayı düşünün. Ø Metre ya da gram ise gerçeklikte bizim algıladığımız şekilde değildir. Ø Dolayısıyla insan zihni, gerçekliği algılamak için olduğu kadar kendi gerçekliğini oluşturmak için soyutlamalar yapar. 11

Model I Ø Bir şey ile ilgili farklı açılardan ya da ilgi alanlarından yapılan soyutlamaların bütününe model denir. Ø Modeller, bir neseyi ya da olguyu daha bütünsel olarak ifade ederler, çünkü birden fazla soyutlama barındırırlar. Ø Bu nesne ve olguların çoğu zaman bir tek açıdan yapılan soyutlamayla anlaşılamayacak kadar farklı vechelere sahip olmasındandır. Ø Dolayısıyla modellerle biz gerçeklikteki şeylerin, zihnimizin daha rahat algılaması amacıyla, birden fazla bakış açısıyla elde edilmiş formal tanımlarını yapmış oluruz. 12

Model II Ø Ya da başka bir deyişle soyutlamaları da sınıflandırırız: Ø Bir binanın staak, dinamik açılardan özelliklerini ve davranışlarını farklı soyutlamalarla ortaya koyarız. Ø Aynı binanın elektrik donanımı, ısıtma/soğutma/ havalandırma düzeni ve ısı yalırmı vs., hepsi birer soyutlamadır. Ø Bir binayı ancak bu soyutlamaların bütünü temsil edebilir ki bu durumda binanın modeli elde edilmiş olur. 13

Sınıflandırma Ø Zihin, sonsuz sayıda soyutlama ile uğraşır, Ø Ve bu soyutlamalarla elde edilen genellemeler birer kategori oluşturur, Ø Soyutlamayı yönlendiren ilgi alanları ya da kriterler çerçevesinde kategori oluşturmaya sınıflandırma (classifica-on) denir. Ø Böylece nesneler, olgular, duygular vs. hepsi belli sınıflara ait hale gelirler. Ø Sınıflar, kavramsal genellemeleri, nesneler ise sınıfların gerçeklikte var olan örneklerini oluşturur. 14

Sınıflandırma Örneği Natural Objects Plant Animal Mineral Mammal Fish Bird Reptile Amphibian Insect Dog Cow Monkey... 15

Sınıf ve Nesne Ø Konuşmalarımızda "Köpek dediğin sadık olmalı." ya da "Köpekler çok sadık hayvanlardır." diyorsak, komşunun köpeğinden ya da sokakta az önce karşılaşrğımız köpekten değil de kavramsal olarak köpek sını3ndan bahsediyoruz demekar ve söylediklerimiz, var olmuş ve olacak bütün köpekler için geçerlidir. Ø "Komşunun köpeği çok sadık." dediğimizde ise köpek sınıonın bir örneği ya da nesnesi olan, soyut olmayıp somut olan bir canlıdan bahsediyoruz demekar. Ø İlk durumda "köpek" bir sınıo, "komşunun köpeği nde ise köpek bir nesneyi (object ya da instance) temsil eder. 16

Soyutlama ve Programlama Ø Peki bütün bunların yazılım ve programlamayla ne alakası var? Ø Yazılım gelişarme ve programlama da bir dizi soyutlamayı içerir. Ø Programlama dilleri de birer soyutlamadır haia modeldir: Ø Değişkenler ve veri Apleri Ø Operatörler ve kontrol yapıları Ø Fonksiyonlar Ø Sınıflar, modüller vs. 17

Bilgisayarda Soyutlamalar 18

Programlama Dilleri ve Soyutlama 19

Yazılım Mühendisliği ve Modelleri 20

Yazılım Mühendisliği ve Modeller Ø Çok basit olanlar dışında hemen hiç bir iş problemi, problemi ifade eden kişinin ağzından çıkar çıkmaz programlanıp, bir yazılım haline gearilemez. Ø Dolayısıyla yazılım gelişarme sürecinde, ihayacın alınmasından gerçekleşarilmesine kadar geçen süreçte pek çok modelin kurgulaması, karmaşık yazılımları gelişarilebilir kılar. Ø Ancak bu modeller yardımıyla karmaşık ihayaçları ve yazılmları basitleşarir ve anlaşılır hale geaririz. 21

Yazılım Mühendisliği Modelleri Ø Yazlım gelişarme süreci en temelde üç modelden oluşur: Ø Analiz (Analysis): Bu ihayacın modelidir. Ø Tasarım (Design): Bu ihayacın çözümünün modelidir. Ø Gerçekleş-rme (Implementa-on): Bu da çalışan modeldir. Ø Analiz modeli, ihayacın ne olduğunu anlamaya yönelikar. Ø Tasarım modeli, ihayacın nasıl yerine gearileceğini ortaya koyar. Mimari tasarım da bu modelin içindedir. Ø GerçekleşArme de, analizde detaylandırılan ihayaçların tasarımda ortaya konan çözüm modelini bir programlama dili ile kodlanır. 22

Modeller 23

Modellemenin Zorlukları Ø Sınırı yoktur, sonsuz sayıda ve derinlikte modeller oluşturulabilir. Ø Detay miktarı, amaç ve imkanlarla belirlenir. Ø Mutlak doğru model ancak gerçekliğin kendisidir. Ø Doğruluk ya da yanlışlık, ancak gerçekliğe uygunlukla ölçülebilir, Ø Gerekli özellikleri alıp gereksizleri bırakmak, soyutlamanın dolayısıyla da modelin doğruluğunu belirler. Ø Modellerin tesani yapmak zordur. Ø En iyi test, yazılımın müşteriyi ne kadar memnun eeğidir. 24

Başarılı Yazılım Ø En iyi, başarılı yazılım, ihayaçlarını tam ve doğru olarak yerine gearendir. Ø Bu sebeple doğru modeller için modellenen iş alanı çok iyi bilinmeli ve doğru soyutlamalar yapılmalıdır. Ø Bu bilgi, tecrübe, yararcılık ve yoğun ve sağlıklı bir ileaşim gerekarir. Ø Ayrıca yazılım gelişarmenin prensipleri, yazılım modelleri de iyi bilinmeli ve uygulanmalıdır. 25

Sınıf ve Nesne 26

Nesne (Object) Ø Nesne, insan zihninin algıladığı herhangi bir kavramsal ya da fiziksel şeydir: Ø Öğrenciler, derslere devam ediyorlar. Ø Öğretmen, sınısa öğrencileri dinliyor. Ø Dersler yarın başlıyor. Ø Nesnelerin özellikleri vardır ve bu özellikler, nesnelerin durumlarını (state) ve davranışlarını (behavior) ifade eder: Ø Sarı boyalı sınısa öğrenci şiir okuyor. Ø Kırmızı top suya yuvarlandı. 27

Sınıf I Ø Sınıf, benzer nesnelerin kategorisidir. Ø Sınıf, nesneler için bir kalıprr, şablondur, yani kendisinden ürealecek olan nesnelerin sahip olacağı özellikler ile davranışları tarif eder. Ø Sınıf, nesnelerinin özellikleri değişik Aplerde değişkenlerle ya da bir başka deyişle veri yapılarıyla (data structures), davranışlarını ise metotlarla (method) (fonksiyon (funcaon)/prosedür (procedure)) ifade eder. Ø Nesnenin özelliklerinin bütününe durum (state), metotların bütününe de arayüz (interface) denir. 28

Sınıf II Ø Böylece, aynı sınısan ürealen nesneler aynı Apte olurlar, yani: Ø Aynı özelliklere sahipar ama özelliklerin değerleri değişebilir, Ø Aynı davranışlara sahipar, Ø Davranışlar genelde duruma bağlı olduğundan, farklı durumdaki nesnelerin davranışları da farklı olur. 29

Yazılımın Nesnesi Ø Yazılımın nesnesi ise gerçek dünyadaki, kavramsal ya da fiziksel, bir nesneyi temsil etmek üzere, onun özelliklerini ve davranışlarını ifade eden yapıdır: Ø Yazılımın nesnesi, temsil eeği gerçek dünyadaki nesnenin durumunu, sınıonda tanımlanan değişkenlerle, davranışlarını da metotlarla yerine gearir. Ø Yani nesne, sınıonın ifade eeği soyut yapının hayat bulmuş, gerçekleşmiş halidir. 30

Durum Ø Nesnelerin durumu ile daha çok durağan (staac), görülen ve hissedilen, özellikleri kastedilir ve programlama dillerinde farklı Aplerde bir grup değişken ile ifade edilir. Ø Nesnenin durumunu oluşturan her bir ayrık bilgiye ise özellik (afribute) denir: Ø Öğrenci Ø No, isim, soy isim, doğum tarihi, cinsiyet, adres, bölüm, aldığı dersler, vs. Ø Ders Ø No, isim, bölüm, veren kişi, kredi sayısı, vs. 31

Davranış Ø Nesneler davranırlar, hareket ederler, belli işleri yerine gearirler. Ø Yazılım nesnelerinin davranışlarına, yerine geardiği sorumluluk (responsibility), verdiği hizmet (service) ya da aldığı mesaj (message) olarak bakmak, işimizi kolaylaşrrır: Ø Öğrenci Ø Kayıt olur Ø Ders alır Ø Sınava girer, vs. Ø Ders Ø Öğrencinin kaydolmasına/bırakmasına izin verir Ø Ön şart dersleri hakkında bilgi verir, vs. 32

Mesajlaşma Ø Bir nesne şu 4 şekilden biri ile bir sorumluluk yerine gearir: Ø Nesne, kendi durumu hakkında bilgi verir, Ø Nesne, kendi durumunu değişarir, Ø Nesne, bir işi ya da faaliyea yerine gearir ve zorunlu olmamakla birlikte bu faaliyet sonucunda bize birşeyler geri verir, Ø Nesne, bizim ondan istediğimizi, bir başka nesneye havale eder: Ø Havale edilen nesne bu sefer yukarıdaki 3 durumdan birisiyle istenileni yerine gearir. Ø Nesnelerin birbirlerinden bir sorumluluk/hizmet yerine gearmesini istemeye mesajlaşma (messaging) denir. 33

Nesne- Merkezli Yazılım Ø Nesne- merkezli yazılım sistemi ise, birbirleriyle mesajlaşan ve bu şekilde iş süreçlerini yerine gearen bir grup nesneden başka birşey değildir. Ø Nesneler, yazılım sisteminin yerine geareceği sorumlulukları paylaşırlar öyle ki her bir nesne, temsil eeği kavramla ilgili sorumlulukları yerine gearir. 34

Nesne Sorumluluk İlişkisi I Ø Bir nesne- merkezli yazılım gelişarirken önemli olan, yazılım sisteminin sorumluluklarından yola çıkarak hangi nesnelerin bulunacağı ve sorumlulukların bu nesnelere nasıl dağırlacağıdır. Ø Prosedürel programlamada, nesne kavramı olmadığı için, birbiriyle ilişkili sorumlulukları, fonksiyonlar halinde, olabildiğince birbirlerine yakın olacak şekilde, örneğin aynı dosyaya koymayı tercih ederiz. Ø Bu ise yazılımın daha rahat modellenmesi ve gelişarilmesiyle ilgili pek de önemli bir avantaj sağlamaz. 35

Nesne Sorumluluk İlişkisi II Ø Sağlıklı yazılımlar oluşturmak açısından, sorumlulukları nesnelerle ilişkilendirirken şu iki temel özelliği göz önüne almamız gerekmektedir: Ø İç tutarlılığı yüksek (highly- cohesive) nesneler: Nesne, sadece ve sadece tek bir şeyi soyutlamalı, birden fazla şeyi ile ilgili sorumlulukları bir araya gearmemeli, Ø Bağımlılıkları düşük (lowly- coupled) nesneler: Nesne, üzerine düşen sorumlulukları yerine gearirken, diğer nesnelere olan ihayacı/bağımlılığı olabildiğince az olmalı. Ø İç tutarlılığı düşük nesneler, birden fazla konuyla alakalı sorumluluklara sahip olurlar ve genelde bağımlılıkları da bu yüzden yüksek olur. 36

Yazılım ve Değişim Ø İç tutarlılığı yüksek ve bağımlılıkları az olan nesnelerden oluşan yazılımların, Ø Modellenmeleri, Ø Kodlanmaları, Ø Test edilmeleri, Ø Hatalarının ayıklanması (bug fix) ve Ø herhangi bir sebepten dolayı değişmeleri daha rahat olur Ø Unutmayalım ki yazılımların maliyetlerinin büyük kısmı bakımda harcanmaktadır, gelişarmede değil. 37

Sınıf Tanımlama ve Kod Yapısı 38

Java da Sınıf Tanımlama I Ø Java da sınıf tanımlamak için class anahtar kelimesi kullanılır: <niteleyici>* class <Sınıfİsmi>{ <özellik>* <metot>* } Ø Sınıon tanımı, Java da en geniş blok olan sınıf blokuyla yapılır. Ø Sınıon bir ya da daha fazla niteleyicisi (modifier) olabilir. Ø Sınıon geçerli ve anlamlı bir ismi olmalıdır. 39

Java da Sınıf Tanımlama II Ø Zorunlu olmamakla birlikte sınıon öğeleri, özellikler, kurucular ve metotlar olarak sıralanır. Ø Özellikler farklı Aplerde olan nesne değişkenleridir (instance variables). Ø Metotlar ise nesne fonksiyonlarıdır (instance methods). Ø Kurucu ya da yapılandırıcı (constructor), nesne yararrken çağrılan özel bir Ap metoiur. <niteleyici>* class <Sınıfİsmi>{ <özellik>* <kurucu metot>* <metot>* } 40

Özellik Tanımı Ø Sınısa özellikle şöyle tanımlanır: <niteleyici>* <tip> <değişkenismi> = [ilk değer] Ø Değişkenler için bir grup niteleyici vardır, Ø Java da her değişkenin bir Api olmak zorundadır, Ø Değişkenlere geçerli ve anlamlı bir isim verilmelidir, Ø Değişkene, isteğe bağlı olarak, ilk değer de verilebilir. 41

Metot Tanımı Ø Sınısa metot şöyle tanımlanır: <niteleyici>* <dönüş tipi> <metotismi>(<arguman>*){ <ifade>* } Ø Zorunlu olmamakla birlikte metotlar da farklı niteleyiciler alır, Ø Metotlar, zorunlu olmamakla birlikte, dışarıdan argümanlar alır, bu argümanları, ifadeleri ile işler yani bir iş manrğını yerine gearir ve yine zorunlu olmamakla birlikte, çağrıldıkları ortama bilgi geri döndürürler, Ø Dolayısıyla metota geçilen ve metoian dönen bilgi, metotun çağrıldığı ortam ile metot arasındaki ileaşimin öğelerindendir. 42

Java Kaynak Kodunun Yapısı Ø Sınıon bütün öğeleri sınıf bloku içinde tanımlanır, Ø Sınıon, sadece paket (package) bilgisi ile koduna dahil edeceği (import) diğer yapıların ifadeleri sınıf dışında tanımlanır. Ø En yaygın sınıf niteleyicisi public Ar ve sınıfa her yerden erişilebileceğini ifade eder. Ø Her public sınıf (arayüz ya da enum), kendi ismini taşıyan ve.java uzanrsına sahip olan bir dosyada yer almalıdır. Ø Dolayısıyla her.java kaynak kodu dosyasında en fazla bir tane public sınıf olabilir. 43

<package cümlesi> <import cümlesi>* public class <Sınıfİsmi-1>{... } class <Sınıfİsmi-2>{... }...... class <Sınıfİsmi-n>{... } 44

Nesne Yaratma Ø Java da nesne yaratmak için new anahtar kelimesi kullanılır, Ø new den sonra da kurucu metot çağrısı gelmelidir, Ø YaraRlan nesneyi, kendisine ulaşmakta kullanılacak olan bir referansa atamak gereklidir. Ø Bunların hepsini bir sarrda yapabiliriz: Student studentobject = new Student(); Ø Yukarıdaki sarrda, atamanın sağ taraonda oluşturulan nesne, sol taraondaki Student Apinden olan studentobject isimli bir referansa atanmaktadır. 45

Araba Ø Bir "Araba" soyutlaması yapın. Ø Soyutlamada bulunması gereken davranışlar nelerdir? Ø Gitmek Ø Durmak Ø Hızlanmak Ø vs. Ø Soyutlamada bulunması gereken durum bilgileri nelerdir? Ø Marka Ø Model Ø Yıl Ø Hız 46

public class Car { String make; String model; String year; int speed; int distance; } public void go(int newdistance){ distance += newdistance; } public void accelerate(int newspeed){ speed = newspeed; } public void stop(){ speed = 0; } public String getinfo(){ return "Car Info: " + year + " " + make +...; } 47

Main Metot Ø Java da pek çok sınıonız olsa bile en az bir tanesi main isimli özel bir metota sahip olmalıdır. Ø main metota sahip olan sınıf JVM e geçilerek çalışrrılabilir. Ø main metot, sistemin çalışmaya başladığı yerdir. Ø Nerede tanımlandığının pek önemi yoktur. Ø Dolayısıyla diğer sınıfların nesneleri bu metoia oluşturulur ve üzerindeki metotlar burada çağrılarak sistem çalışmaya başlar. Ø main metotun arayüzü (interface) aşağıdaki gibidir: public static void main(string[] args) 48

Test Sınıo Ø Şimdi de oluşturduğumuz sınıon, test ya da istemci (client) sınıonı oluşturup, main metot içerisinde bir kaç tane araba nesnesi yararn. Ø Daha sonra bu nesnenin durumunu değişarin ve üzerindeki metotları çağırın. Ø YaraRlan nesne üzerindeki değişken ve metotlara "." notasyonuyla ulaşılır: Car arabam = new Car(); int hiz = arabam.speed; arabam.go(50); 49

public class CarTest { public static void main(string[] args) { Car car1 = new Car(); car1.make = "Mercedes"; car1.model = "C200"; car1.year = "2011"; car1.distance = 0; car1.speed = 0; } } String infocar1 = car1.getinfo(); System.out.println(infoCar1); car1.accelerate(80); car1.go(10); infocar1 = car1.getinfo(); System.out.println(infoCar1); car1.accelerate(120); car1.go(20); infocar1 = car1.getinfo(); System.out.println(infoCar1); 50

Diğer Soyutlamalar Ø Aşağıdaki açılardan bakrğınızda soyutlamanızda neler değişir? Ø Sürücü Ø Akaryakıt kullanımı, maksimum hız Ø SaRcı Ø FiyaR Ø Araba tasarımcısı Ø Üstü açılabilir mi? Ø Tamirci Ø Motor özellikleri Ø Sigortacı Ø Nerede ve kim kullanıyor, hasarı var mı? 51

Özet Ø Bu bölümde nesne merkezli programlamaya giriş yaprk. Ø Bu amaçla, Ø Soyutlama, Ø Ne lik ve nasıl lık ayırımı, Ø Sınıf ve nesne kavramlarını, Ø Nesnenin durumu ve davranışlarını Ø Model kavramını ve Yazılım Mühendisliği modellerini, Ø Java kaynak kodunun yapısını işledik. 52