C++ ile Nesneye Dayalı Programlama

Benzer belgeler
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

Sınıf Yapısı Kalıtım Çok Şekillilik

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

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

Çok Şekillilik (Polymorphism)

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

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

Nesneye Yönelik Programlama (OOP) 7.Hafta

Kalıtım (Inheritance)

Operatörlere İşlev Yükleme

Inheritance. Inheritance (turetim)

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

BTEP243 Ders 3. class Yazım Kuralı:

ALGORİTMA VE PROGRAMLAMA II

YZM 2116 Veri Yapıları

C++ Dersi: Nesne Tabanlı Programlama

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

NESNE MODELLERİ : SINIFLAR

NESNEYE YÖNELİK PROGRAMLAMA

C++ Dersi: Nesne Tabanlı Programlama

const objects & const member functions

NESNEYE YÖNELİK PROGRAMLAMA

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

Kurucu Fonksiyonlar (Constructors)

1 PROGRAMLAMAYA GİRİŞ

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

#ifndef COMPLEX_H #define COMPLEX_H

BİL-142 Bilgisayar Programlama II

Yrd. Doç. Dr. Caner ÖZCAN

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

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

const objects & const member functions const objects ve const functions Data Member Initializer List Data Member Initializer List

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

YZM 2116 Veri Yapıları

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

Pointer Kavramı. Veri Yapıları

Göstericiler (Pointers)

Object-Oriented Programming Laboratuvar 11

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

Yrd. Doç. Dr. Caner ÖZCAN

Standard Template Library

Nesne Yönelimli Programlama

C++ Dersi: Nesne Tabanlı Programlama

Ne zaman operator overloading yapilir. Operator Overloading

Yrd. Doç. Dr. Caner ÖZCAN

BMH-303 Nesneye Yönelik Programlama

YZM 2116 Veri Yapıları

Operatörlerin Aşırı Yüklenmesi

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

C++ Dersi: Nesne Tabanlı Programlama

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

NESNEYE YÖNELİK PROGRAMLAMA

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

10/17/2007 Nesneye Yonelik Programlama 3.1

Algoritma Geliştirme ve Veri Yapıları 8 Kuyruk ve Yığın Yapısı. Mustafa Kemal Üniversitesi

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

YMT219 VERİ YAPILARI ÖDEV-1

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

Week 7. Düğüm bulma Tekli bağlı liste: phead ve ptail Dairesel bağlı liste Çift bağlı liste

Yrd. Doç. Dr. Caner ÖZCAN

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

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Dizi ( Array ) ve Dizgi ( String )

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

Veri Yapıları Lab Notları 1

YAZILIM MODELLEME VE TASARIMI

Pointers (İşaretçiler)

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

Programlama Dilleri 1. Ders 5: Göstericiler

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

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

C++ Hata Düzeneği Güvenliği

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

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

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:

8. İŞARETCİLER (POINTERS)

YAZILIM MODELLEME VE TASARIMI

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

ALGORİTMA VE PROGRAMLAMA II

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

Erişim konusunda iki taraf vardır:

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

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

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

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

Object-Oriented Programming Laboratuvar 10

Java String İşlemleri

BİL-141 Bilgisayar Programlama I (Java)

Genel Programlama II

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.

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

Nesne Tabanlı Programlama

Yrd. Doç. Dr. Caner ÖZCAN

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

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Programlama Dilleri 3

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

Transkript:

Nesne İşaretçileri Binnur Kurt kurt@cs.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi C++ ile Nesneye Dayalı Programlama 1

Sınıf Yapısı Kalıtım Nesneİşaretçileri Çok Şekillilik C++ ile Nesneye Dayalı Programlama 2

Nesne İşaretçileri İşaretçiler, veri değil, verinin yerleşik bulunduğu bellek gözünün adresini taşırlar. İşaretçiler basit tipte değişkenlere işaret edebildikleri gibi, bir nesneye de işaret edebilirler. İşaretçiler kullanılmadan önce uygun başlangıç değeri atanmalıdır: new operatörü İşletim sisteminden uygun miktarda bellek alanı alır. Döndürdüğü değer bu alanın başlangıç adresidir. Eğer işlem başarısız olursa 0 (NULL) döndürür. Nesne işaretçilerinde new kullanıldığında yukarıdakine ek olarak nesnenin kurucu fonksiyonu çalıştırılır. Böylece nesne yaratılırken başlangıç değerleri atanmış olur. C++ ile Nesneye Dayalı Programlama 3

Nesne İşaretçileri devam delete operatörü Belleğin verimli ve etkin kullanımı için, new operatörünün kullanımına karşılık olarak bellek alanı kullanımı bittiğinde işletim sistemine delete operatörü ile geri verilmelidir. new ile aşağıdaki biçimde bir nesne dizisi için bellek alındığında int * ptr = new int[10]; delete ile delete [ ] ptr; şeklinde işletim siteminde geri verilmelidir. İşaretçi önündeki [] kullanılmaz ise sadece dizinin ilk elemanı için bellek alanı geri verilir. C++ ile Nesneye Dayalı Programlama 4

class person // class of persons char *name; // person's name public: person(); //Default Constructor void setname(char *); // set the name void printname() // print the name cout << "Name is:" << name<<endl; } ~person() cout << "Destructor" << endl; delete name;} person::person() cout << "Constructor" << endl; name = new char; name = '\0'; } void person::setname(char *n) delete name; name = new char[strlen(n)]; strcpy(name, n); } void main() person* persptr = new person[3]; persptr->setname("person1"); (persptr+1)->setname("person2"); (persptr+2)->setname("person3"); persptr->printname(); (persptr+1)->printname(); (persptr+2)->printname(); delete [ ] persptr; } // end main() C++ ile Nesneye Dayalı Programlama example22.cpp 5

Nesne Bağlantılı Listeleri Bir sınıf kendi tipinden bir nesneye işaretçi içerebilir. Bu işaretçi kullanılarak bir nesne zinciri (bağlantılı liste) kurulabilir. class teacher friend class teacher_list; char *name; int age,numofstudents; teacher * next; public: teacher(char *, int, int); // Constructor void print(); char *getname()return name;} ~teacher() // Destructor cout<<" Destructor of teacher" << endl; delete name; } // Pointer to next object of teacher /* linked list for teachers */ class teacher_list teacher *head; public: teacher_list()head=0;} char append(char *,int,int); char del(char *); void print(); C++ ile Nesneye Dayalı Programlama example23.cpp 6

İşaretçiler ve Kalıtım Eğer bir sınıf temel bir sınıftan türetilmiş ise, türetilmiş sınıftan bir işaretçiye herhangi bir tip dönüşümü gerekmeksizin temel sınıftan bir işaretçi atanabilir.temel sınıfın işaretçisi türetilmiş sınıfa işaretçi olabilir. Tersi bir dönüşüm, tip dönüşümü gerektirir. Örneğin, teacher nesnesine bir işaretçi teacher ve principal nesnelerine işaret edebilir. principal ile teacher arasında is a ilişkisi vardır : principal is a teacher. Ancak tersi her zaman doğru değildir : her teacher bir principal olmayabilir. class Base class Derived :publicbase Derived d; Base *bp=&d; Derived *dp=bp; dp = (derived *)bp; // implicit conversion // error Base is not Derived // explicit conversion C++ ile Nesneye Dayalı Programlama 7

Eğer bir sınıf kalıtım ile private olarak temel sınıftan türetilirse, bu durumda tip dönüşümü yapılamaz. Çünkü temel sınıfın public üyeleri temel sınıfa ait işaretçiler tarafından erişilebilir. Ancak türetilmiş sınıftan nesneler yada işaretçiler temel sınıf üyelerine erişemezler. class Base int m1; public: int m2; class Derived : private Base // m2 is not a public member of Derived Derived d; d.m2=5; // error m2 is private member of Derived base *bp=&d; // error private base bp->m2=5; // ok bp = (base*)&d; // ok: explicit conversion bp->m2=5; // ok C++ ile Nesneye Dayalı Programlama 8

İşaretçiler ve kalıtım kullanılarak, heterojen bağlantılı listeler oluşturulabilir. Temel sınıfa işaret eden nesnelerden oluşan liste, bu temel sınıftan türetilmiş tüm sınıflara ait nesneler içerebilir. Heterojen listeleri daha sonra çok şekillilik konusunda tekrar inceleyeceğiz. Örnek: öğretmenler ve müdürler listesi head next next next next next 0 insert() delete() teacher t1 teacher t2 teacher t3 List my_list principal p1 principal p2 C++ ile Nesneye Dayalı Programlama example24.cpp 9

Case Study SnakeClass.cpp C++ ile Nesneye Dayalı Programlama 10

class GameBoard public: GameBoard(TCanvas *cnvs) /* */ } bool ispointonboard(int,int) ; bool GameOver ; int applex,appley,int numberofapplesremaining ; getapple() ; drawapple() ; protected: TCanvas *mycanvas ; private : int BoardWidth,BoardHeight ; C++ ile Nesneye Dayalı Programlama 11