YZM 2105 Nesneye Yönelik Programlama

Benzer belgeler
YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

BİL-141 Bilgisayar Programlama I (Java)

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

YZM 2105 Nesneye Yönelik Programlama

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

HSancak Nesne Tabanlı Programlama I Ders Notları

Nesne Yönelimli Programlama

Nesne Tabanlı Programlama. Ders Notları

Sunum İçeriği. Programlamaya Giriş

YZM 2105 Nesneye Yönelik Programlama

C++ Dersi: Nesne Tabanlı Programlama

BTEP243 Ders 3. class Yazım Kuralı:

YZM 2105 Nesneye Yönelik Programlama

NESNE TABANLI PROGRAMLAMA

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

ALGORİTMA VE PROGRAMLAMA II

Kalıtım (Inheritance)

Nesneye Yönelik Programlama (OOP) 7.Hafta

Ders 8 Konu Özeti ve Problemler

C++ Dersi: Nesne Tabanlı Programlama

YZM 2108 Yazılım Mimarisi ve Tasarımı

SINIF YAPISI ve NESNE YÖNELİMLİ PROGRAMLAMA NESNE YÖNELİMLİ PROGRAMLAMA

public static int Toplam int x, int y

Programlama Dillerinde Kullanılan Veri Tipleri

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

Görsel Programlama-I (Visual Programming) 2.Hafta

BİL-142 Bilgisayar Programlama II

Nesneye Dayalı Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

Nesne Yönelimli Programlama

Ders 8: Metotlar. barisgokce.com

ALGORİTMA VE PROGRAMLAMA II

HSancak Nesne Tabanlı Programlama I Ders Notları

YZM 2116 Veri Yapıları

Nesne Yönelimli Programlama ve Kalıtım

NESNE TABANLI PROGRAMLAMA Temel Kavramlar

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

ALGORİTMA VE PROGRAMLAMA II

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

Operator Aşırı Yükleme (Operator OverLoading)

C++ Dersi: Nesne Tabanlı Programlama

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

ASP.NET ile Bir Web Sitesi Oluşturma

ALGORİTMA VE PROGRAMLAMA I

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

NESNE MODELLERİ : SINIFLAR

İç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.

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

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

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar

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

Nesne Yönelimli Programlama

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir.

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

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

Nesne Yönelimli Programlamaya Giriş - 2. Cem Ahmet MERCAN 16/04/2009

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

ALGORİTMA VE PROGRAMLAMA I

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Programlama Dilleri III 1

Genel Programlama II

Erişim konusunda iki taraf vardır:

1. SINIFLAR Sınıf (Class) Mantığı

Görsel Programlama (Visual Programming) 2.Hafta

ALGORİTMA VE PROGRAMLAMA II

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA

Lecture 11: Generics

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

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Görsel Programlama-I (Visual Programming) 1.Hafta

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

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

YZM 2108 Yazılım Mimarisi ve Tasarımı

Lambda İfadeleri (Lambda Expressions)

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

C++ Dersi: Nesne Tabanlı Programlama

Statik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları

ALGORİTMA VE PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

Görsel Programlama (Visual Programming) 2.Hafta

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

7.1- C#.net Giriş Çıkış İşlemleri ve Visual Studio. M.İLKUÇAR - 1

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

Nesne Yönelimli Programlama

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Programlama Dilleri 3

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

Transkript:

YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1

BÖLÜM - 3 Nesneye Yönelik Programlamaya Giriş Bu bölümde; Nesneye Yönelik Programlama Tarihçesi Nesneye Yönelik Programlamanın Farklılıkları Nesne Kavramı Sınıf Kavramı Sınıf Oluşturulması İsim alanları ve using kullanımı ile ilgili konular anlatılacaktır. 2

Nesneye Yönelik Programlamaya Giriş Nesne yönelimli programlama (OOP), (Object Oriented Programming) nesneyi merkezine alan bir bilgisayar programlama yaklaşımıdır. Nesne yönelimli programlama terminolojisindeki object/nesne ve oriented/yönelimli kavramları ilk olarak 1960 lı yılların başında MIT tarafından yapay zeka ile çalışmalar yapılan araştırma grubunda özelliklere sahip maddeleri isimlendirirken object tanımı kullanıldı. 3

Nesneye Yönelik Programlamaya Giriş 1960lı yıllarda Oslo daki Norwegian Computing Center da Ole-Johan Dahl ve Kristen Nygaard tarafından geliştirilen ayrık olay simülasyonu için tasarlanan Simula I in en önemli versiyon yada değiştirilmiş/özelleştirilmiş versiyonu olan Simula 67 de resmi olarak ilk object kavramı kullanıldı. Simula 67 nin temel prensipleri ve disiplinleri altında yatan daha sonraki birçok dil etkiledi ve kullanıldı. 4

Nesneye Yönelik Programlamaya Giriş 90 lı yıllarda programlama dillerine olan destek artınca nesne yönelimli programlama etkin ve yaygın olarak kullanılmaya başlandı. Nesneye-yönelik programlamanın temel kavramları; büyük programlar yazmayı kolaylaştıran soyutlama, programları değiştirmeyi ve korumayı kolaylaştıran saklama ve programları kolayca genişletilebilir kılan sınıf hiyerarşisi dir. 5

Soyutlama Önemli özelliklere odaklanabilmek için ayrıntıları göz ardı etme sürecidir. 6

Soyutlama Soyutlama temel olarak veri ve kontrol soyutlaması olarak yapılır. Bir veri tipinin nasıl yapılandığının ayrıntılarını göz ardı etmemize izin veren soyutlama tarzına veri soyutlaması denir. Kontrol soyutlaması ise yapısal programlama ile gelen altprogram, fonksiyon gibi kavramlar üzerinde yapılan soyutlamadır. 7

Soyutlama Örnek: Bir Kisi nesnesinde, kişinin yaşını tutan bir tamsayı değişkeni olan yas değişkenini ele alalım. Bu yas değişkenine, programın çalıştırma anında, "-10" değerinin atanmasını kimse engelleyemez. İşte burada nesne yönelimli programlamanın getirdiği görünürlük ve özellik tanımlama gibi yetenekler kullanarak "yas" değerine gerçek bir değerin girilmesi garanti edilebilir. Buna veri soyutlaması adı verilir. 8

Soyutlama Benzer şekilde soyutlama işleminin verileri taşıyan değişkenlerin değil de yöntem veya işlevlerin üzerinde yapılması işlemine kontrol soyutlaması adı verilir. Yani yöntem ile yapılan işlemlerin bir başka nesne tarafından müdahale edilemeyecek hale sokulması işlemidir. 9

Yapısal Programlama ve Nesneye Yönelik Programlama Farklılıkları Yapısal Programlama sadece bir soruna odaklı farklı fonksiyonlar yazılır ve sadece o sorun için fonksiyonlar bulunurlar. Dolayısıyla yapısal programlama yaklaşımıyla oluşturulmuş bir program binlerce ayrı adda tanımlanmış değişken ve yüzlerce farklı fonksiyona sahiptir. En ufak işlem için bile ayrı fonksiyon oluşturulması gerekir ve bu programın karmaşıklığını arttırır. 10

Yapısal Programlama ve Nesneye Yönelik Programlama Farklılıkları (devam ) Gerçek dünyadaki sistemler sadece fonksiyonlardan oluşmaz. Sistemin gerçeğe yakın bir modelini bilgisayarda oluşturmak zordur. 11

Yapısal Programlama ve Nesneye Yönelik Programlama Farklılıkları (devam ) Nesneye Yönelik Programlama yaklaşımı ise yapısal programlama yaklaşımının daha genişletilmiş ve gerçeğe yakın versiyonudur. Değişkenler ve metotlar burada da kullanılır fakat burada nesne üzerine odaklanılır. Nesneye yönelik programlama yaklaşımı doğaldır. Nesnelerden oluşan bir dünya düşünmek basittir. Yapısal programlamadaki büyük ve karmaşık sistemleri tasarlamak yerine, birbiriyle iletişim ve etkileşim halinde nesnelerin olduğu bir dünya kolayca tasarlanabilir. Bu nesnelerin çalışması için ayrıca bir mantık oluşturmaya gerek kalmaz. 12

Yapısal Programlama ve Nesneye Yönelik Programlama Farklılıkları (devam ) Nesneye yönelik programlama yaklaşımında, projenin erken safhalarında projeyi tamamlamak için gerekli olan tüm nesnelerin tanımlanması, nesneleri tanımlayan sınıfların yaratılması yatar. Böylece yaratılan her nesne kendi verisini kendinde barındırır ve diğer nesnelerin kendisinden istediği görevleri yerine getirir. 13

Yapısal Programlama ve Nesneye Yönelik Programlama Farklılıkları (devam ) Hangi unsurların nesne olarak modellenebilir: İnsan kaynakları ile ilgili bir programda; memur, işçi, müdür, genel müdür. Matematiksel işlemler yapan programda; karmaşık sayılar, matris. Kullanıcı arayüzü programında; pencere, menü, çerçeve. 14

Nesne Kavramı Nesne, niteliklere ve davranışlara sahip somut bir varlıktır. Bir nesnenin niteliği onun sahip olduğu özelliklerdir. Nesnenin bir niteliğinin değeri o nesnenin durumunu oluşturur. Bir nesnenin davranışları onun/onunla yapabildiği/yapılabilen şeylerdir. 15

Nesne Kavramı (devam ) Örnek1: Bir firmanın maaş bordrosu programının yapılması Yapısal programlamada herhangi bir işçi için prim adlı bir değişken tanımlanır. Her bir işçi için farklı değerler alır ve yeniden tanımlanır. Program boyunca tüm değerler prim değişkeninde saklanır ve bu değişken üzerinden işlemler yapılır (maaş yazdırma, maaş hesaplama ). 16

Nesne Kavramı (devam ) Örnek1: Bir firmanın maaş bordrosu programının yapılması Maaş bordrosu programı için yapılacak olan programı Nesneye Yönelik Programlama yaklaşımı ile ele alırsak bu programın içereceği nesnelerden birisi maasceki nesnesi olur. 17

Nesne Kavramı (devam ) Örnek1: Bir firmanın maaş bordrosu programının yapılması maasceki nesnesi şunları içerir; Nitelik olarak; Alacak Bilgisi Paranın Değeri Davranış olarak; Yazılabilir Nakite çevrilebilir Miktarını Hesaplayan bir Metot/Fonksiyon 18

Nesne Kavramı (devam ) Örnek1: Bir firmanın maaş bordrosu programının yapılması Maaş Bordrosu programın tasarımı için gereken tüm nesneler düşünülmeli ve nesnelerin nitelikleri ve davranışları tanımlanmalıdır. Başlıca nesneleri şunlar olmalıdır : İşçi Nesnesi, Zaman Çizelgesi Nesnesi, Maaş Çeki Nesnesi 19

Nesne Kavramı (devam ) Her iki programlama yaklaşımıyla da doğru bir Maaş Bordrosu programı üretilebilir. Aynı zamanda iki programlama yaklaşımıyla da yeniden kullanılabilir modüller üretilebilir. İki programlama yaklaşımındaki önemli farklılıklar: Yazılımcının projenin erken safhalarındaki planlama ve düşünme farklılığı Üretilen programların karmaşıklıkları Yeni ihtiyaçların ve düzenlemelerin sisteme adapte edilmesindeki kolaylık 20

Nesne Kavramı (devam ) Örnek2: Bir şehrin trafik karışıklığını gidermek için gerçek zamanlı trafiği simüle eden bir simülasyonun yapılması gerekmektedir. Gerekli olan nesneler : Arac Nesnesi, Yaya Nesnesi, Trafik İşaretçileri Nesnesi Bu nesnelerin her biri kendi bilgilerini saklar ve kendi davranışlarına sahip olur. Böylelikle nesnelerin yardımcılığıyla bir şehrin trafiği gerçek zamanlı olarak simüle edilebilir. 21

Nesne Kavramı (devam ) Örnek2: Bir şehrin trafik karışıklığını gidermek için gerçek zamanlı trafiği simüle eden bir simülasyonun yapılması gerekmektedir. Arac nesnesi şunları içerir : Nitelik olarak; Plaka Bilgisi Sürücü bilgisi Anlık Hızı Bilgisi Davranış olarak; Anlık Hız Değiştirme Metodu Trafik Kuralı Kontrol Metodu 22

Nesne Kavramı (devam ) Örnek2: Bir şehrin trafik karışıklığını gidermek için gerçek zamanlı trafiği simüle eden bir simülasyonun yapılması gerekmektedir. Yaya nesnesi şunları içerir: Nitelik olarak; Kimlik Numarası Anlık Hızı Davranış olarak; Anlık hız değiştirme Metodu Trafik Kuralı kontrol metodu 23

Nesne Kavramı (devam ) Örnek3: Bir Buton nesnesinin niteliklerine ve davranışlarına örnek veriniz. Bir Buton nesnesi şunları içerir: Nitelik olarak; Formdaki konumu Rengi, Üzerindeki Yazısı Davranış olarak; Tıklandığında ekranın rengini değiştirmesi Sürükleyip bırakılabilmesi, Tıklanınca ses çıkarması 24

Nesneye Yönelik Programlama Bir programlama dilinin Nesneye Yönelik Programlama dili olması için şu özelliklere sahip olması gereklidir: 1. Sınıf (Class) 2. Nesneler (Object) 3. Kapsülleme ve Arayüz ( Encapsulation & Interface ) 4. Kalıtım (Inheritance) 5. Çok Biçimlilik (Polymorphism) 25

Sınıflar 26

Sınıf Kavramı Dünyayı anlayabilme kabiliyetimizin çoğu nesneleri ve olayları sınıflar halinde kategorilendirebilmemizden gelmektedir. Örneğin; Çocukken hayvan kavramını, hayvan kelimesini öğrenmeden çok öncesinde biliyordunuz. Hayvanlarla ilk karşılaşmanız aile köpeğinizle veya komşusunun kedisi ile veya bir çiftlikteki keçi ile olmuş olabilir. Konuşmayı öğrendikçe, tüm hayvanlar için aynı terimleri kullanıyorduk. 27

Sınıf Kavramı (devam ) Tecrübelendikçe, hayvanlar arasındaki farkları anlayabildik. Mesela bir köpek ile koyunun arasındaki farkı, sonrasında ise yavruları ile yetişkinleri arasındaki fark gibi... Tasitlar sınıfını anlamanız, Kara taşıtları ile Deniz veya Hava taşıtları arasındaki benzerlikleri görmenize yardımcı olur; aynı şekilde Kara Tasitlari sınıfını anlamanız Otomobil ile Kamyonet arasındaki benzerlikleri görmemize yardımcı olur. 28

Sınıf Kavramı (devam ) Tasitlar Kara Tasitlari Hava Tasitlari Deniz Tasitlari Otomobil Kamyonet 29

Sınıf Kavramını Anlamak C# ile program yazarken, iki farklı türde sınıf yaratabilirsiniz; 1. Main() metodunu ve main metodunda kullanılan diğer metotları da içeren sınıflardır. Bu sınıflar nesne oluşturma amacıyla yaratılmamışlardır. 2. Nesne oluşturma amacıyla yarattığımız sınıflar. 30

Sınıf Kavramını Anlamak (devam ) Nesneye Yönelik programlama yaklaşımı ile düşündüğünüzde, her şey bir nesne ve her nesne bir sınıfın somutlaşmış bir örneğidir. Cansız şeyleri nesneler olarak düşünebilirsiniz, masanız, bilgisayarınız ve eviniz, tüm bunlar sizin konuşmalarınızda nesne olarak geçerler. 31

Sınıf Kavramını Anlamak (devam ) Canlı cisimleri de nesne olarak düşünebilirsiniz, ev bitkiniz, balığınız ve sizin kardeşiniz birer nesnedir. Ayrıca olaylar da nesne dir. Örneğin; Hisse senedi alımlarınız, Bitmek üzere olan bir taksitiniz, Sizin adınıza düzenlenmiş bir parti vb. 32

Sınıf Kavramını Anlamak (devam ) Her nesne daha genel bir sınıfın somutlaşmış bir örneğidir. Örneğin; sizin masanız, tüm masaları içeren Masa sınıfının özel bir örneğidir. Sizin süs balığınız daha genel bir sınıf olan Balık sınıfının somutlaşmış bir örneğidir. Bir nesne, bulunduğu sınıfın somutlaşmış bir örneğidir. 33

Sınıf Kavramını Anlamak (devam ) Sınıf kavramı size nesneler hakkında bilgi sağladığı için kullanışlıdır. Nesneler özelliklerini sınıflardan alırlar. Örneğin: Bir partiye katıldığınızda, siz Parti nesnesi hakkında birçok şeyi (başlangıç saati olduğunu, davetlilerin sayısı olduğunu ve ikramların bulunduğunu) otomatik olarak biliyor olurdunuz. 34

Sınıf Kavramını Anlamak (devam ) Parti nesnesini anlayabilmenizin sebebi daha önceden Parti sınıfı ile ilgili bildiklerinizin olmuş olmasıdır. Tam olarak başlangıç saatini, davetlilerin sayısını veya ikramların neler olduğunu bilmeseniz bile her partinin bir başlangıç saati ve davetli sayısı olması gerektiğini bildiğiniz için bununda bu özelliklere sahip olması gerektiğini biliyorsunuz. Parti BaslangicSaati: (DateTime) DavetliSayisi: (int) 35

Sınıf Kavramını Anlamak (devam ) Farklı bir örnek vermek gerekirse; bir Taksit nesnesi düşünüldüğünde, taksit tutarı ve taksit sayısı özelliklerini barındırmaktadır. Taksit Tutar: (int) Sayisi: (int) Tüm nesneler belirli sınıfların somutlaşmış örnekleri olduklarından dolayı öngörülebilir özelliklere sahiptirler. 36

Sınıf Kavramını Anlamak (devam ) Bir sınıf her nesne için farklı olan veri bileşeni, yani üye değişkenler barındırır. Ayrıca nesnelerin özellikleri, sınıf içerisinde kullanılan diğer değişkenler ile karışmaması için field olarak adlandırılır. Nesnenin örnek değişkenlerinin içerikleri, o nesnenin durumunu belirler. 37

Sınıf Kavramını Anlamak (devam ) Örneğin; Bir Parti nesnesinin durumu Cuma, 20:00, Parti Gun: Cuma Saat: 20:00 Bir Taksit nesnesinin durumu 100tl, 5 ay olabilir. Taksit Tutar:100 Sayisi: 5 38

Sınıf Kavramını Anlamak (devam ) Nesneler kendileri ile ilişkilendirilmiş metotlar barındırabilirler ve aynı sınıftan türetilmiş her nesne bu metotları içerirler. Nesneler ile ilişkilendirilmiş metotlar üye metot olarak adlandırılırlar. Örneğin; İki ayrı parti dogumgunupartisi ve mezuniyetpartisi nesneleri davetgonder() metodunu barındırabilirler. Bu metot aynı yolla çalışır fakat nesnelere ait özel verileri kullanırlar. 39

Sınıf Kavramını Anlamak (devam ) C# ile programlarken, sıklıkla nesnelerin türetileceği sınıflar yaratabilir ya da diğer programcıların yarattığı sınıfları kullanabilirsiniz. (Örn.: Console, Button, Form sınıfları) Ya da sizin yarattığınız sınıfları başka programcılar kullanabilirler. Önceden yaratılmış bir sınıftan nesne türeten bir program ya da bir sınıfa class client denir. 40

Nesnelerin Türetildiği Sınıfları Yaratmak Bir sınıf yarattığımızda, ona bir isim atamalı ve barındıracağı veriyi ve metotları belirlemeliyiz. Örnek: Isci sınıfını yaratmaya karar verdiniz. Isci sınıfının üye değişkenlerinden birisi mutlaka kimliknumarasi ve üye metotlarından birisi ise hoş geldin mesajını gösterecek bir metot olmalıdır. 41

Nesnelerin Türetildiği Sınıfları Yaratmak (devam ) Sınıfları tanımlarken öncelikle bir sınıf başlığı/tanımı yaratılmalıdır. Sınıf başlığı üç parçadan oluşur: 1. İsteğe bağlı bir erişim belirleyici, 2. class anahtar kelimesi, 3. Sınıfın adı [erişim belirleyici] class [sınıfadı] Örneğin; public class Isci Sınıf adları nesnelerin tipini tanımladığı için genellikle tek bir addan oluşur. 42

Nesnelerin Türetildiği Sınıfları Yaratmak (devam ) Isci sınıfını tanımlarken kullanılan public anahtar sözcüğü sınıf erişim belirleyicisidir. Oluşturulan sınıfın amacına uygun olan erişim belirleyicileri kullanılır. 43

Erişim Belirleyicileri Sınıf Erişim Belirleyicisi Public Protected Internal Açıklama Sınıfa erişim sınırsızdır Sınıfa erişim bulunduğu sınıf ve bu sınıftan türetilen sınıflar ile sınırlıdır. Sınıfa erişim ait olduğu assembly ile sınırlıdır. Private Sınıfa erişim ait olduğu sınıf ile sınırlıdır. Assembly, çalıştırılabilir bir uygulama yaratmak için birlikte derlenen kod modüllerinden oluşan gruba denir. Bir C# programı derledikten sonra oluşan.exe dosyası assembly olarak adlandırılır. 44

Erişim Belirleyicileri (devam ) Namespace kullanarak bir sınıf tanımlanırsa, yaratılan sınıf public veya internal olabilir. Eğer bir sınıf yaratılırken erişim belirleyicisi tanımlanmazsa varsayılan olarak internal erişim belirleyicisi atanır. 45

Nesnelerin Türetildiği Sınıfları Yaratmak (devam ) Sınıf başlıkları tanımlanırken kıvırcık parantezler ( {} ) içerisinde sınıf gövdeleri tanımlanmalıdır. Örneğin; public class Isci { //üye değişkenleri ve metotları buraya yazılır } 46

Üye Değişkenlerini ve Üye Metotlarını Yaratmak Bir sınıf yaratıldığında, o sınıfın özellikleri ve metotları tanımlanır. Sınıfın üye değişkenlerini kıvırcık parantez içerisinde, diğer değişken tanımlamalarında kullanılan sözdizimiyle aynı şekilde yani bir tip ve ad şeklinde tanımlanır. 47

Üye Değişkenlerini ve Üye Metotlarını Yaratmak (devam ) Örneğin; Isci sınıfının içerisinde kimlik numarası değişkeni tanımlayabiliriz. Böylece Isci nesnesi yarattığımızda her bir nesne kendi kimlikno değişkenini barındırır. Fakat programcılar sıklıkla sınıfın her bir fieldı için erişim belirleyicisi kullanır ve kimlikno değişkenini private int kimlikno; şeklinde tanımlarlar. 48

Örnek1: Isci sınıfı yaratılması adi, soyadi, kimlikno üye değişkenine sahip bir Isci sınıfı yaratınız. 49

Örnek1: Isci sınıfı yaratılması (devam ) Visual Studio ile sınıf yaratmak için Solution Explorer penceresinden projemize yeni bir class eklemek için; Proje adına sağ tıklayıp Add Class a tıklıyoruz. 50

Örnek1: Isci sınıfı yaratılması (devam ) Açılan pencereden yaratılacak sınıfın adını girip Add butonuna tıklıyoruz. 51

Örnek1: Isci sınıfı yaratılması (devam ) Sınıfın tanımlanacağı isim alanını «hfttf.yzm2105» şeklinde tanımladıktan sonra sınıfa üye değişkenini ekliyoruz. 52

İsim Alanları İsim alanları (ing.: Namespace), birbiri ile ilişkili nesneleri organize etmek için kullanılır. Bir isim alanı içerisinde; Farklı bir isim alanı, Sınıf, Arayüz, Struct, Enum, Delegate tipleri tanımlanabilir. 53

İsim Alanları (devam ) C# kaynak dosyası için bir isim alanı tanımlamadığınızda, derleyici varsayılan olarak bulunduğu projenin adını taşıyan bir isim alanı tanımlar ve kullanır. İsim alanlarının tanımlanmasında erişim belirleyicileri kullanılmaz. 54

İsim Alanları (devam ) Bir isim alanında tanımlanmış sınıflar, yapılar gibi tiplere direk erişebilmemiz için bu isim alanını using anahtar sözcüğü ile erişiriz. 55

İsim Alanları (devam ) Örneğin: System isim alanında tanımlı olan Windows.Forms isim alanını kullanılacağı belirtilmezse, MessageBox.Show("") komutunu aşağıdaki gibi. (nokta) operatörünü kullanarak erişmemiz gerekirdi; System.Windows.Forms.MessageBox.Show(""); 56

Örnek1: Isci sınıfı yaratılması (devam ) Tanımladığımız Isci sınıfını kullanmak için Isci sınıfının bulunduğu isim alanını programımızda belirtmemiz gereklidir. 57

Örnek2: Kutu sınıfı yaratılması Üye değişkenleri genislik, derinlik ve yükseklik olan Kutu sınıfı yaratınız. 58

Örnek3: KimlikBilgileri sınıfı yaratılması Üye değişkenleri (ulong) kimlikno, (string) soyad, ad, babaadi, anneadi, dogumyeri ve (DateTime) dogumtarihi olan KimlikBilgileri sınıfı yaratınız. 59

Örnek4: Fatura sınıfının yaratılması Üye değişkenleri (int) faturano, (ulong) firmavergino, miktar, birimfiyat, tutar, (string) firmaadi, aciklama ve (DateTime) faturakesimtarihi olan Fatura sınıfı yaratınız. 60

Örnek5: Ogrenci sınıfı yaratılması Üye değişkenleri (ulong) kimlikno, ogrno (string) soyad, ad, fakulteadi, bolum, ve (programturu) ogrprgramturu olan Ogrenci sınıfı yaratınız. programturu enum sabitini lisans = 0, yukseklisans = 1 ve doktora = 2 olarak kullanınız. 61

Örnek6: Surucu sınıfının yaratılması Üye değişkenleri (ulong) kimlikno, suruculisansno, (string) soyad, ad, verildigiil, verildigiilce, (DateTime) belgetarihi ve (surucubelgesinifi) srcbelgesinifi olan Surucu sınıfı yaratınız. surucubelgesinifi enum sabitini A2=0, B,C,D,E,F,G ve H olarak kullanınız. 62

Örnek7: Araba sınıfının yaratılması Üye değişkenleri (string) marka, model, renk (int) uretimtarihi, silindirhacmi, motorgucu, (yakitturu) arbyakitturu ve (vitestipi) arbvitestipi olan Surucu sınıfı yaratınız. vitestipi enum sabitini duzvites = 0 ve otomatikvites=1 olarak kullanınız. yakitturu enum sabitini benzin = 0 ve mazot = 1 olarak kullanınız. 63

Üye Değişkenlerini ve Üye Metotlarını Yaratmak (devam ) Sınıfların içerisinde private field ların kullanımı, nesneye yönelik dillerin bir özelliği olan information hiding örneğidir. Information hiding in bir diğer faydası ise verinin doğrulanmasına olanak sağlamasıdır. Değişkenin değerini ayarlayan bir metot özel bir aralıkta bulunup bulunmadığını kontrolünü sağlayabilir. (Örn.: Bir işçinin maaşı asgari ücretinin altında olmaması gibi) 64

Üye Değişkenlerini ve Üye Metotlarını Yaratmak (devam ) Gerçek hayatta information hiding yöntemiyle sıkça karşılaşırız. Örneğin arabanın deposuna ne kadar yakıt kaldığını öğrenmek için depoya baktığımızda göremeyiz. Bunun yerine gerekli bilgiyi bize aracın gösterge panelindeki yakıt göstergesi vermektedir. 65

Üye Değişkenlerini ve Üye Metotlarını Yaratmak (devam ) Benzer şekilde Nesneye Yönelik Programlama yaklaşımında veri field ları sıkça private olarak kullanılır fakat içerdikleri değerlere public metotlar aracılıyla erişilir. Private field ların değerleri kendi sınıfındaki metotlarla tanımlanabilir ve değiştirilebilir olmalıdır. Diğer sınıfların metotlarının erişimine kapalı olmalıdır. 66

Üye Değişkenlerini ve Üye Metotlarını Yaratmak (devam ) Çoğu üye metodu private field lara karşın public olarak kullanılır. Private veri ve public metot ikilisi dışarıdan sınıfın verisine erişilebilir olmasını sağlar. Sadece sınıfların private olmayan metotları private olan verilere erişimini sağlar. 67

Örnek8: Isci Sınıfına Üye Metot Tanımlanması Üye değişkeni olarak kimlikno değişkenini bulunduran ve özel bir karşılama mesajı metodu olan KarsilamaMetodu() bulunduran Isci sınıfı yaratınız. 68

Üye Değişkenlerini ve Üye Metotlarını Yaratmak (devam ) Önceki örnekteki KarsilamaMesaji() metodu static belirleyicisi içermemektedir. Bir sınıfın static metotlarını, o sınıftan nesne yaratmadan çağırabiliriz. Üye metotları o sınıftan türetilmiş bir nesne olmadan kullanılamazlar. 69

Üye Değişkenlerini ve Üye Metotlarını Yaratmak (devam ) Isci sınıfı Main() metodu içermediği için çalıştırılmayacaktır. Isci sınıfından yaratılan nesnelerin hangi özelliklere sahip olacağı ve onunla yapılabileceklerini tanımlar. Bir sınıf diğer sınıflardan yaratılmış bir nesne üye barındırabilir. Örneğin, ad, soyad, adres vb. gibi üye değişkenlerine sahip KimlikBilgileri sınıfından yaratılan bir nesne Isci sınıfının field ı olabilir. 70

Örnek9: Isci Sınıfına Üye Nesne Tanımlanması Üye değişkeni olarak (int) kimlikno, (double) Maas ve (KimlikBilgisi) iscikimlikbilgisi nesnesini barındıran Isci sınıfı yaratınız. 71

Örnek9: Isci Sınıfına Üye Nesne Tanımlanması (devam ) Isci sınıfına KimlikBilgileri sınıfından iscikimlikbilgileri adlı nesne tanımladınız. Bir nesnenin içerisinde başka bir nesne kullanımına composition denir. Bu yaratılan ilişki has an relationship olarak da tanımlanır. 72

Değerlendirme Soruları 73

Değerlendirme Soruları 1) Bir nesne, sınıfın... bir örneğidir. a) Üye b) Katılaşmış c) Somutlaşmış d) Soyut CEVAP : C Şıkkı 74

Değerlendirme Soruları 2) Bir sınıf başlığı içerisinde aşağıdakilerden hangisi bulunmaz? a) İsteğe Bağlı Erişim Belirleyicisi b) Class Anahtar Kelimesi c) Sınıfın Adı d) Sınıf Üyelerinin Başlangıç Değerleri Cevap: D şıkkı. 75

Değerlendirme Soruları 3) Sınıf içerisindeki çoğu üye değişkeni erişim belirleyicisi ile tanımlanır. a) public b) protected c) new d) private Cevap: D şıkkı. 76

Değerlendirme Soruları 4) Sınıf içerisindeki çoğu üye metodu erişim belirleyicisi ile tanımlanır. a) public b) protected c) new d) private Cevap: A şıkkı. 77

Yararlanılan Kaynaklar Sefer Algan, HER YÖNÜYLE C#, Pusula Yayıncılık, İstanbul, 2003 Milli Eğitim Bakanlığı, Nesne Tabanlı Programlama, 2012 Joyce Farrel, An Introduction to Object- Oriented Programming, Cengage Learning, 2011 http://www.algoritmaveprogramlama.com 78

İYİ ÇALIŞMALAR Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr 79