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



Benzer belgeler
BTEP243 Ders 3. class Yazım Kuralı:

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

Inheritance. Inheritance (turetim)

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

Pros and Cons of Pointers. Pointers. Avantajlar. Dezavantajlar

Object-Oriented Programming Laboratuvar 10

const objects & const member functions

10/17/2007 Nesneye Yonelik Programlama 3.1

C++ Dersi: Nesne Tabanlı Programlama

Ne zaman operator overloading yapilir. Operator Overloading

BİL-142 Bilgisayar Programlama II

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

Object-Oriented Oriented Design (OOD) Procedure Based Programlama. OOD Ana Ozellikleri

#ifndef COMPLEX_H #define COMPLEX_H

Object-Oriented Programming Laboratuvar 11

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

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

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

BMH-303 Nesneye Yönelik Programlama

The statement. const Time noon( 12, 0, 0 );

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

C++ ile Nesneye Dayalı Programlama

C++ Dersi: Nesne Tabanlı 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:

Yordamsal Tabanlı Programlama

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

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

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

#ifndef FATURA_H #define FATURA_H

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

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

NESNEYE YÖNELİK PROGRAMLAMA

1 PROGRAMLAMAYA GİRİŞ

BİLG Dr. Mustafa T. Babagil 1

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

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

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

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

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

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

«BM364» Veritabanı Uygulamaları

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

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

C++ Dersi: Nesne Tabanlı 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.

Operatörlere İşlev Yükleme

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

NESNEYE YÖNELİK PROGRAMLAMA

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

Final Sınavı Soruları Bahar 2018

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

C++ Dersi: Nesne Tabanlı Programlama

Pointer Kavramı. Veri Yapıları

Kurucu Fonksiyonlar (Constructors)

Nesne Yönelimli Programlama

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

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

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

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

Nesneye Yönelik Programlama (OOP) 7.Hafta

Ad Soyad: İmza: Object-Oriented Programming Quiz 4 60dk. Kapalı kitap. Kapalı defter. Kapalı cep telefonu. Hesap makinesi yok.

NESNEYE YÖNELİK PROGRAMLAMA

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

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

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

BMH-303 Nesneye Yönelik Programlama

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

Nesneye Dayalı Programlama

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

C++ Dersi: Nesne Tabanlı Programlama

YZM 2105 Nesneye Yönelik Programlama

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

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

BİL-142 Bilgisayar Programlama II

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

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

11- FONKSİYONLAR (FUNCTIONS)

Göstericiler (Pointers)

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

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;

Lambda İfadeleri (Lambda Expressions)

#ifndef VEKTOR_H #define VEKTOR_H. struct vektor_s { double x; double y; double z; }; typedef struct vektor_s vektor_t;

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

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

BLM401 Mobil Cihazlar için ANDROID İşletim Sistemi. SQLite Veritabanı. BLM401 Dr.Refik SAMET

Object Oriented Programming Ders İzlence Formu

OPERATÖRLER Alıştırmalar

Kalıtım (Inheritance)

Nesne Tabanlı Programlama

Bölüm 10 - Yapılar, Birlikler, Bit İşleme ve Sayma Sabitleri (Enumarations)

Veri Yapıları Lab Notları 1

Transkript:

C++ Class larina baslangic Object oriented programming language olarak kullanildiginda, programming in temel birimi class lardir Object lerin create edilmesinde blueprint gorevi gorur Class data (object attributes) ve behavior (member functions = methods) larin nasil birbirleriyle iliskilendirildigini belirler Class lar, object lerin birbirleriyle interface ler araciligiyla nasil etkilesimde bulunabileceklerini tanimlayan information hiding mechanism alarina sahiptir Object ler dunyamizdaki fiziksel varliklari modeller 11/4/2004 Nesneye Yonelik Programlama 6.1 C Programming Langugae Programming action-oriented Programming birimi function Program tanimindaki yuklemler fuction lari tanimlamada kullanilir C++ Versus C Object-oriented Language C++ Programming object-oriented Programming birimi class Program tanimindaki isimler object leri tanimlar ve class lari belirlemede yardimci olur 11/4/2004 Nesneye Yonelik Programlama 6.2 Structure tanimlama structure User-defined data type Bir veya daha fazla member icerir class larin basitlestirilmis sekli struct Time { int hour; // 0-23 int minute; // 0-59 int second; // 0-59 ; 11/4/2004 Nesneye Yonelik Programlama 6.3 Structure dan Object Create etmek struct Time { int hour; // 0-23 int minute; // 0-59 int second; // 0-59 Time *next; // pointer to next Time object ; // ; gerekli Time timeobject1, timeobject2, timeobject3; Time *timeptr; // pointer to time object Time &timeref = timeobject1; // defines a reference (alias) to an existing object timeptr = &timeobject1; timeobject1.next = &timeobject2; timeobject2.next = &timeobject3; timeobject3.next = 0; // uninitialized ptr 11/4/2004 Nesneye Yonelik Programlama 6.4

Member Access Operators Yuksek oncelikli operatorler ( ( ) ve [ ] ile ayni oncelikli, ve & ile * dan daha oncelikli). Dot operator. struct (class) member a erisim icin kullanilir (object name veya object e reference olan isimler icin) cout << timeobject1.hour; cout << timeref.minute; Arrow operator -> struct (class) member a erisim icin kullanilir (object e point eden pointer lar icin) cout << timeptr->hour; cout << (*time).hour; // same cout << *timeptr.hour; // wrong 11/4/2004 Nesneye Yonelik Programlama 6.5 Structure Kullanimin Dezavantajlari struct kullanilarak create edilen yeni bir object icin initialization a gerek yok Object client leri, object lere istedikleri degerleri atamalarinda herhangi bir kisitlama yok (atanan yanlis degerler olsa bile) Eger struct definitioni degistirilmesi gerekirse, struct daki degisikliklere adapte olabilmek icin butun client code un degistirilmesi gerekebilir. C ve C++ struct in objectlerinin kiyaslanmalarini equality ve relational operator ler kullanilarak yapilmasina olanak tanimaz 11/4/2004 Nesneye Yonelik Programlama 6.6 C++ da class lar Class object creation icin gelistirilmis blueprint dir. Class kullanimi structure larin dezavantajlarini giderir Class tanimi, data members (object attributes) ve member functions (object operations = behaviors) lar well define edilmis ve kontrol edilebilen Data members lara deger atanmasi Class initialization code Member function calls Member function cagrimi Conventional function call baska bir object in member function undan cagri 11/4/2004 Nesneye Yonelik Programlama 6.7 ornek class Time { // a member access specifier Time( ); // a constructor function void settime (int,int,int); void printmilitary( ); void printstandard ( ); private: // a member access specifier int hour; int minute; int second; ; // end of class definition 11/4/2004 Nesneye Yonelik Programlama 6.8

Member Access Specifiers sonraki member access specifierine kadar butun data members veya member function lar butun client (user of object of the class) ler tarafindan erisilebilirler private sonraki member access specifierine kadar ki butun data member ve member function lar ancak ayni class in member function lari tarafindan erisilebilirler protected sonraki member access specifierine kadar ki butun data member ve member functionlar ayni class in member function lari ve bu class tan turetilen (inheritance) class larin member larinca erisilebilinir 11/4/2004 Nesneye Yonelik Programlama 6.9 Class Constructors Class constructor function un ismi class la aynidir ornek: Time( ) Bir object create edilirken daima ilgili constructor function cagrilir Constructor function un amaci ilgili object in data member larini initialize etmek (baslangic degerleri atamak) Default initial deger 0 dir Constructor un return type i yoktur Bir class in bir den fazla constructor u olabilir (function overloading) 11/4/2004 Nesneye Yonelik Programlama 6.10 Class Definition larinin kullanimi #include <iostream> using namespace std; Ornek Class definition yeni bir type belirler Object ler variable declaration syntax i kullanarak create edilirler Ornekler: Time sunset; // create a new Time object Time arrayoftimes[5]; // array of objects Time *ptrtotime; // pointer to Time object Time &dinnertime = sunset; // reference to an existing // Time object 11/4/2004 Nesneye Yonelik Programlama 6.11 class Time { Time( ); void settime (int, int, int); void printmilitary ( ); void printstandard ( ); private: int hour; // 0 to 23 int minute; // 0 to 59 int second; // 0 to 59 ; 11/4/2004 Nesneye Yonelik Programlama 6.12

// Time constructor initializes all data members to 0 Time::Time( ) {hour = minute = second = 0; // set a new Time value using military time void Time::setTime ( int h, int m, int s) { hour = ( h >=0 && h< 24)? h : 0; minute = (m >=0 && m<60)? m : 0; second = (s >= 0 && s < 60)? s : 0; // Print the Time in Military format void Time::printMilitary( ) { cout << ( hour < 10? 0 : ) << hour << : << (minute < 10? 0 : ) << minute; 11/4/2004 Nesneye Yonelik Programlama 6.13 // Print the Time in standard format void Time::printStandard ( ) { cout << ( (hour == 0 hour == 12)? 12 : (hour %12)) << : ; << (minute < 10? 0 : ) << minute << : ; << (second < 10? 0 : ) << second << (hour < 12? AM : PM ); 11/4/2004 Nesneye Yonelik Programlama 6.14 int main( ) { Time t; // create object t of class Time cout << The initial military time is ; t.printmilitary( ); cout << \nthe initial standard time is ; t.printstandard( ); t.settime(13, 27, 6 ); cout << \n\nmilitary time is ; t.printmilitary( ); cout << \nstandard time after settime is ; t.printstandard( ); t.settime(99,99,99 ); cout << \n\nafter attempting invalid settings: ; << \nmilitary time: ; t.printmilitary( ); cout << \nstandard time ; t.printstandard( ); cout << endl; return 0; 11/4/2004 Nesneye Yonelik Programlama 6.15 The initial military time is 00:00 The initial standard time is 12:00:00 AM Military time after settime is 13:27 Standard time after settime is 1:27:06 PM After attempting invalid settings: Military time: 00:00 Standard time: 12:00:00 AM 11/4/2004 Nesneye Yonelik Programlama 6.16

Class larda information hiding C++ class lari client lerden information hiding mechanism a sina sahip privatedata member lari client ler tarafindan direct olarak erisilemezler. Object in state i nin implement detaylari client lerden gizlenebilir Client ler ilgili object le ancak public member function lari ile etkilesir 11/4/2004 Nesneye Yonelik Programlama 6.17 Binary Scope Resolution Operator :: Member functon definitions class definition in icinde verilebilir, fakat genelde class definition in disinda vermek daha iyidir Bu is icin binary scope resolution operator (:: ) kullanilir. void Time::printMilitary( ) { cout << (hour < 10? 0 : ) << hour << : << (minute < 10? 0 : ) << minute; 11/4/2004 Nesneye Yonelik Programlama 6.18 Class Member larina erisim Class in member function (public) lari ve public data member (data member lari public olarak tanimlamak tavsiye edilmez) 3 yontemden biriyle erisilebilinir 1. Class name ve dot operator kullanilarak Ornek: t.printmilitary( ); 2. Class a pointer ve arrow operator kullanilarak Ornek: Time t, *timeptr = &t; timeptr->settime(11,50,0); (*timeptr).settime(11,50,0); 3. Class a reference ve dot operator u kullanarak Ornek: Time &timeref = t; timeref.settime(11,50,0); 11/4/2004 Nesneye Yonelik Programlama 6.19 11/4/2004 Nesneye Yonelik Programlama 6.20

Class larla Header File lerin Kullanimi Class interface ini header file e koyarak client lere sunmak ve private member lari ayri file lerde saklamak (gizlemek) yararli olabilir 11/4/2004 Nesneye Yonelik Programlama 6.21 // Header file time1.h // Need to avoid multiple includes of time1.h #ifndef TIME1_H #define TIME1_H class Time { Time( ); void settime ( int, int, int); private: int hour, minute, second; ; #endif 11/4/2004 Nesneye Yonelik Programlama 6.22 // source file time1.cpp #include <iostream> #include time1.h // Define the constructor function // Initialize the data members to safe values Time::Time( ){ hour = minute = second = 0; // Define the settime member function void Time::setTime ( int h, int m, int s) { hour = ( h>=0 && h< 24)? h:0; minute = ( m>=0 && m < 60)? m:0; second = ( s>= 0 && s < 60)? s: 0; 11/4/2004 Nesneye Yonelik Programlama 6.23 Member lara erisim kntrolu Butun data member larini private olarak tut Eger uygunsa, client lere object in internal state inin degistirilmesini saglayan set function larini sun Eger uygunsa, object in state ini temsil eden data member lari get function lari ile client lere sun Diger function lar client lere service sunarlar public member function larini class definition in basinda grupla, ve private data member lari ve function lari class definition in sonunda grupla. (Default olarak, class larin data ve function member lari private dir) 11/4/2004 Nesneye Yonelik Programlama 6.24

Access Functions && Utility Functions Access functions: client lara asagidakileri yapmaya izin veren class member fonksiyonlardir Object data yi okuma ve geri dondurm Ornek: t.gettime Data yi yazma Ornek: t.printmilitary Object in state ini test etme Ornek: t.isam, t.ispm, t.isaftercurfew 11/4/2004 Nesneye Yonelik Programlama 6.25 Utility Functions: public member function lari tarafindan cesitli gorevleri gerceklestirmek icin cagrilan private function lardir 11/4/2004 Nesneye Yonelik Programlama 6.26 Constructors Yeni bir object create edildigi zaman otomatik olarak cagrilan function lardir Class la ayni isimdedir Parametre alabilirler Geriye deger donduremezler Constructor lar data member lara initial degerleri atamak icin kullanilirlar Pointer lara genelde baslangic degeri olarak NULL atanir Constructor lar overload edilebilir. Bunun icin tek kosul bir constructor parameter tiplerinden ve parameter sayilarindan diger constructor lardan ayrit edilebilmeli 11/4/2004 Nesneye Yonelik Programlama 6.27 Overloaded Constructors class Date { int d, m, y; // private by default Date ( int, int, int ); Date (int, int); // assume month & year present Date (int); // assume only only year present Date ( ); // assume today s date Date( const char *); // date as string ; Date:: Date( int dd, int nm, int yy) { d = dd; m = mm; y = yy; // plus four more constructor definitions 11/4/2004 Nesneye Yonelik Programlama 6.28

Constructor larla default argument lerin kullanimi Eger bir constructor argument icermezse, butun default degerler guvenli degerlere set edilir. Bu tip constructor lere default constructor denir. Her bir class in sadece bir default constructor u vardir class Time { Time (int =0, int =0, int =0); void settime (int, int, int); void printmilitary( ); void printstandard ( ); private: int hour; // 0-23 int minute; // 0-59 int second; // 0-59 ; 11/4/2004 Nesneye Yonelik Programlama 6.29 11/4/2004 Nesneye Yonelik Programlama 6.30 // constructor definition. Calls settime to ensure consistency // with settime. As a rule it is best to avoid repeating similar code Time::Time(int hr, int min, int sec) { // Default values from class specification settime (hr, min, sec ); void Time::setTime(int h, int m, int s) { // illegal values ignored, and 0 used instead hour = ( h>=0 && h< 24)? h:0; minute = ( m>=0 && m < 60)? m:0; second = ( s>= 0 && s < 60)? s: 0; 11/4/2004 Nesneye Yonelik Programlama 6.31 int main( ) { Time t1, // use all default values t2(2), // minutes and secs defaulted t3(21, 34), // second defaulted t4(12,25,99), // all values set t5 (27, 74, 99); // bad values set // rest of main return 0; 11/4/2004 Nesneye Yonelik Programlama 6.32

Destructors Destructor function dynamic olarak create edilen object lerin isgal ettigi memory alanlarinin tekrar heap e geri verilmesini saglar Destructor function un ismi tilde ~ ile baslar ve class in ismi ile sonlanir. Ornek: Time class icin destructor: ~Time() Her bir class in en fazla bir destructor u olabilir. Destructor parameter almaz 11/4/2004 Nesneye Yonelik Programlama 6.33 Object Construction & Destruction Object ler scope larina girildiginde automatic olarak create edilirler. Gerekli memory alani create edilme esnasinda ayrilir ve uygun bir class constructor u cagrilir global objects: program calismaya basladiginda auto local objects: block a girildiginde static local objects: block a ilk girildiginde 11/4/2004 Nesneye Yonelik Programlama 6.34 Object Construction & Destruction Object ler scope larindan cikildiginda automatic olarak yok edilirler. Object in destructor u cagrilir ve object in isgal ettigi memory alani geri verilir global objects: program sonlandiginda auto objects: block dan cikildiginda static local objects: program sonlandiginda Assigning & Passing Objects Bir object digerine = operator u kullanilarak atanabilir. Atama islemi her bir data member icin yapilir Eger data member lar dynamic olarak allocate edilen memory isgal ediyorsa bu soruna sebep olabilir. (Sadece pointer lerin degerleri kopyalanir.) Bu problemin cozumunden daha sonra bahsedilecek 11/4/2004 Nesneye Yonelik Programlama 6.35 11/4/2004 Nesneye Yonelik Programlama 6.36

Assigning & Passing Objects Object ler function lara parameter olarak gonderilebilirler ve function lardan return value olarak geri dondurulebilirler (call-byvalue, default olarak) Call-by-value large object lerin icin inefficient Call-by-reference (ya pointer ler ya da reference lar kullanilarak gerceklenebilir). Hata ya yol acmamak icin call-by-const-reference olarak kullanilabilir Classes Summary C++ da OOP nin temel birimleri Data ve fuctionlar arasindaki bagi belirler Information hiding Object scope Object member larina erisim Class_name.member Pointer_to_class->member Class member larina erisim kontrolu Butun data member lar private get functions, set functions, service functions utility functions 11/4/2004 Nesneye Yonelik Programlama 6.37 11/4/2004 Nesneye Yonelik Programlama 6.38 Classes Summary Constructors En az bir tane: automatic olarak cagrilir Data member lara guvenli deger lerin set edilmesi Overloading, default arguments Destructors En fazla bir tane; no arguments Objec lerin kapladiklari memory alanlarinin guvenli olarak geri verilmesi Assigning objects member-wise copy Passing objects by value, by reference 11/4/2004 Nesneye Yonelik Programlama 6.39