BTEP243 Ders 3. class Yazım Kuralı:

Benzer belgeler
Nesneye Yönelik Programlama (OOP) 7.Hafta

C++ Dersi: Nesne Tabanlı Programlama

YZM 2105 Nesneye Yönelik Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

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

Sunum İçeriği. Programlamaya Giriş

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

C++ Dersi: Nesne Tabanlı Programlama

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama.

Kalıtım (Inheritance)

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

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

BİL-142 Bilgisayar Programlama II

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

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

NESNEYE YÖNELİK PROGRAMLAMA

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Örnek1: #include <iostream> #include <string> using namespace std;

1 PROGRAMLAMAYA GİRİŞ

NESNE MODELLERİ : SINIFLAR

public static int Toplam int x, int y

Nesne Yönelimli Programlama

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

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

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

C++ Dersi: Nesne Tabanlı Programlama

#ifndef COMPLEX_H #define COMPLEX_H

Operatörlere İşlev Yükleme

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References)

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

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

Kurucu Fonksiyonlar (Constructors)

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

NESNEYE YÖNELİK PROGRAMLAMA

BİL-141 Bilgisayar Programlama I (Java)

BMH-303 Nesneye Yönelik Programlama

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER SINIFLAR

C++ ile Nesneye Dayalı 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;

Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

C++ Dersi: Nesne Tabanlı Programlama

Nesneye Dayalı Programlama

C++ Dersi: Nesne Tabanlı Programlama

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

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

Inheritance. Inheritance (turetim)

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

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

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

Ders 8: Metotlar. barisgokce.com

YZM 2105 Nesneye Yönelik Programlama

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

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Erişim konusunda iki taraf vardır:

NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ

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

Standard Template Library

Pointer Kavramı. Veri Yapıları

Göstericiler (Pointers)

Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading)

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

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

C++ Dersi: Nesne Tabanlı Programlama

7. HAFTA. Erişim Belirleyiciler

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

YZM 2105 Nesneye Yönelik Programlama

10/17/2007 Nesneye Yonelik Programlama 3.1

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:

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Dr. Fatih AY Tel: fatihay@fatihay.net

Veri Yapıları Lab Notları 1

YZM 2105 Nesneye Yönelik Programlama

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

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

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

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 3

BİLG Dr. Mustafa T. Babagil 1

Operatörlerin Aşırı Yüklenmesi

NESNEYE YÖNELİK PROGRAMLAMA

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Nesneye Dayalı Programlama

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

Bölüm 10 Statik ve Anlık Öğeler

ALGORİTMA VE PROGRAMLAMA I

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

ALGORİTMA VE PROGRAMLAMA I

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

MOBIL UYGULAMA GELIŞTIRME

Bölüm 12. Nesne yönelimli programlama desteği

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

C++ Dersi: Nesne Tabanlı Programlama

Transkript:

BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin / değişkenlerin (data members) ve fonksiyonlarının (member functions / methods) nasıl ilişkilendirileceğini belirler. o Bilgi gizleme (information hiding) mekanizmasına sahiptir. Nesneler ise gerçek dünyadaki fiziksel varlıkları modeller. Sınıflarda Üye Erişim Berlileyicileri (Member Access Specifiers ) Bir sonraki üye erişim belirleyicisine kadar bütün özellikler (data members) veya üye fonksiyonlar (member functions), sınıfın nesnesini yaratmış bütün kullanıcılar tarafından erişilebilirler. Bir sonraki üye erişim belirleyicisine kadar bütün özellikler (data members) veya üye fonksiyonlar (member functions), ancak ayni sınıfın üye fonksiyonları tarafından erişilebilirler. protected: Bir sonraki üye erişim belirleyicisine kadar bütün özellikler (data members) veya üye fonksiyonlar (member functions), ayni sınıfın üye fonksiyonları ve bu sınıftan türetilen (inheritance) sınıfların üyeleri tarafından erişilebilirler. Yapıcı (Constructor) Fonksiyonlar Oluşturduğumuz sınıflar içerisinde yer alan herhangi bir değişkene başlangıç değeri verebilmek için yapıcı fonksiyonlar kullanılır. Yapıcı fonksiyonların en temel ve bilinmesi gereken özellikleri aşağıda sıralanmıştır: Bir sınıf için nesne oluşturulduğu anda o sınıfın ilgili yapıcı fonksiyonu otomatik olarak çağırılmaktadır. Yapıcı fonksiyonun ismi sınıf ismi ile aynı olmak zorundadır. Birden fazla yapıcı fonksiyon tanımlanabilmektedir. (Varsayılan, Parametreli ve Kopyalayıcı). Ancak yine de hepsinin ismi sınıf ismi ile aynı olmak zorundadır. Yapıcılar değer döndürmezler bu yüzden return gibi bir geri dönüş komutu içermezler. Void (boş) bile olamazlar. Nesne oluşturulacağı zaman derleyici tarafından sadece bir kere çalıştırılırlar. Parametre alabilirler. Herhangi bir yapıcı fonksiyon tanımlanmaz ise, derleyici otomatik olarak varsayılan bir yaratıcı oluşturup nesneler için hafızada yer tutmalarını sağlar. class Yazım Kuralı: class <sınıf_ismi> //değişkenler veya bazı fonksiyonlar //erişilmesi istenen değişkenler ve fonksiyonlar (yapıcılar, yıkıcılar ve diğerleri) protected: //türetilen sınıflar tarafından erişilmesi istenen değişkenler ve fonksiyonlar Örnek 1:

//time.h class time //varsayilan yapici fonksiyon (parametresiz) #include"time.h" time okulsaati; Derleyici, saat sınıfı için okulsaati nesnesi yaratıldığı anda varsayılan yapıcı fonksiyonunu otomatik olarak çalıştırır ve saat ve dakika değerlerinin başlangıç değerlerini 0 olarak belirler. Erişim Operatörü (Binary Scope Resolution Operator) :: ve Nokta Operatörü (Dot operator) Üye fonksiyonlar sınıf içerisinde tanımlanırlar, fakat sınıf dışında tanımlamak daha iyidir. Bu tanımlama için erişim operatörü (::) kullanılır. Bunun yanı sıra, sınıfın üye fonksiyonlarına (public üyeler) nokta operatörü ile erişilebilir. Aşağıdaki örnekte her iki operatörün kullanımı gösterilmiştir. Örnek 2: class time //fonksiyonaların prototipleri sınıf içerisinde verilmelidir. ; void goster(); //fonksiyonaların tanımları sınıf dışında erişim operatörü kullanılarak yapılmalıdır. time:: void time::goster( ) cout<<saat<< : <<dakika<<endl;

#include"time.h" time okulsaati; okulsaati.goster( ); Sınıf üyelerine erişim kontrolü Bütün değişkenler (data member) private olarak tutulmalıdır. Eğer gerekirse, bu özelliklerin değiştirilebilmesi için set/setter foksiyonları ve ulaşabilmek için de get/getter fonksiyonları kullanılabilir. Set Fonksiyonları: Bu fonksiyon türü, herhangi bir nesnenin özelliğini değiştirebilmek için kullanılan fonksiyondur. Genellikle herhangi bir değer döndürmezler ancak yeni değeri parametre olarak kabul ederler. Get Fonksiyonları: Bu fonksiyon türü, herhangi bir nesnenin özelliğine ulaşabilmek için kullanılan fonksiyondur. İlgili özelliği geri döndürmekle yükümlüdürler. Örnek 3: //time.h class time st=0; void setdakika(int d) void setsaat(int s) int getdakika() return dakika; int getsaat() return saat; void goster() cout<<saat<<":"<<dakika<<endl; #include"time.h"

time okulsaati; cout<<okulsaati.getsaat()<<":"<<okulsaati.getdakika()<<endl; okulsaati.setdakika(30); okulsaati.setsaat(8); okulsaati.goster(); saat uykusaati(23); uykusaati.goster(); Diğer Yapıcı Türleri Parametreli Yapıcılar (Parameterized / Overloaded Constructors) Yapıcılarda aşırı yükleme (overload) kullanımı mümküdür. Bir yapıcı parametre tipi ve parametre sayısı ile diğer yapıcılardan ayırt edilebilirler. Örnek 4: class time //varsayilan yapıcı fonksiyon //parametreli yapıcı fonskiyonlar time(int s,int d) time(int s) void setdakika(int d) void setsaat(int s) int getdakika() return dakika; int getsaat() return saat;

void goster() cout<<saat<<":"<<dakika<<endl; void gosters() cout<<saat%12<<":"<<dakika; if(saat>12) cout<<"p.m."; else cout<<"a.m."; #include"saat.h" time okulsaati, yemeksaati(12,30), uykusaati(23); okulsaati.goster(); okulsaati.gosters(); cout<<endl; yemeksaati.goster(); yemeksaati.gosters(); cout<<endl; uykusaati.goster(); uykusaati.gosters(); cout<<endl; Yukarıdaki örnekte yaratılan 3 nesne farklı yapıcıların çalıştırılmasını sağlamaktadır. okulsaati nesnesi varsayılan yapıcıyı (time( ) ) yemeksaati(12,30) nesnesi 2 parametre içerdiğinden dolayı, iki parametreli yapıcıyı (time(int s,int d)) uykusaati(23) nesnesi ise tek parametre içerdiğinden, tek parametreli yapıcıyı (time(int s)) kullanmaktadır. Yapıcılarda Varsayılan (Default) değer kullanımı Eğer bir yapıcı parametre içermezse, bütün varsayılan değerler güvenli değerlere atanır. Bu tip yapıcılara varsayılan yapıcılar denir. Her bir sınıfın sadece bir varsayılan yapıcısı olabilir. Örnek 5: classtime time(int s, int d=0)

Önemli Not: Parametreli yapıcı fonksiyonda eğer tüm parametrelere varsayılan değer atanırsa, bu varsayılan yapıcı fonksiyon olarak da kabul edilir. Ayrıca parametresiz bir yapıcı fonksiyon yaratmak hataya yol açar. Örnek: time(int s=0, int d=0) varsayılan fonksiyona time( ) denktir. Kopyalayıcı Yapıcı Fonksiyonlar (Copy Constructor) Yeni oluşturulan nesnenin, varolan bir nesnenin özelliklerine sahip olmasının istendiği durumlarda kopyalayıcı yapıcılar kullanılabilir. Eğer programcı herhangi bir kopyalayıcı yapıcı oluşturmaz ise, gereken durumlarda derleyici bunu otomatik olarak yapar. Derleyici eşitlik operatörü = (assignment operator) kullanıldığı durumlarda kopyalayıcı yapıcıyı oluşturur. Örnek 6: void main( ) Time sabah(10,15); Time aksam = sabah; //eşitlik operatörü kopyalayıcı yapıcının çalışmasını sağlayıp, aksam nesnesine de sabah nesnesinin saat ve dakika değerlerini kopyalar. Programcı tarafından oluşturulan Kopyalayıcı yapıcılar Yazım Kuralı: Sınıf_adi(const sınıf_adi & nesne); Yukarıdaki ifadede nesne varolan bir nesneyi temsil eder. Referans operatörü kullanılarak yeni oluşturulan nesneye varolan nesnenin kopyalanması sağlanır. const anahtar sözcüğünün kullanılma sebebi ise özelliklerin kopyalanırken herhangi bir değişikliğe uğramalarını önlemektir. Örnek 7: class time int dakika, saat; //kapyalayıcı yapıcı fonksiyon time(const time & nesne) saat=nesne.saat; dakika=nesne.dakika; Yıkıcı Fonksiyon (Destructor) Sınıfların nesnelerin hafızadan silmek için kullanılan fonksiyonlara yıkıcı fonksiyonlar denir. Yıkıcı fonksiyonun ismi tilde ~ simgesi ile başlar ve sınıf ismi ile sonlanır.

Yıkıcılar, yapıcılar gibi herhangi bir değer döndürmezler, bu yüzden return gibi bir geri dönüş komutu içermezler. Void (boş) bile olamazlar. Program sonlandığı zaman derleyici tarafından her nesne için bir kere çalıştırılırlar. Parametre almazlar. Parametre alamayacağı için her sınıfın sadece bir tane yıkıcı fonksiyonu olabilir. Herhangi bir yapıcı fonksiyon tanımlanmaz ise, derleyici otomatik olarak varsayılan bir yıkıcı oluşturup nesneleri hafızadan siler. Yıkıcıların kullanımı özellikle dinamik nesne yaratıldığında çok büyük önem taşır. Örnek 8: class time ~ cout<< Nesne başarı ile silinmiştir. <<endl;