Chapter 16: Sınıflar ve Veri Soyutlama (Classes and Data Abstraction )

Slides:



Advertisements
Benzer bir sunumlar
Nesnelerin Özellikleri. - Üye nesneler - friend belirtesi - Nesnelerin operatörlere yüklenmesi - this yerel (lokal) değişkeni - inline tanımlı üye fonksiyonlar.
Advertisements

Değişkenler ve bellek Değişkenler
NOKTA, DOĞRU, DOĞRU PARÇASI, IŞIN, DÜZLEMDEKİ DOĞRULAR
Bu proje, AB’nin Kıbrıs Türk Toplumuna Yardım Programı tarafından finanse edilmekte ve WYG Türkiye, WYG International Ltd., SAC Commercial Ltd. Konsorsiyumu.
T.C. İNÖNÜ ÜNİVERSİTESİ Arapgir Meslek YÜKSEKOKULU
Copyright © 2014, Anadolu Sigorta. Tüm hakları saklıdır. Profitability Challange in Casco – Putting Demand into Work İstanbul,
SQL PERFORMANCE ANALYZER
Gerekli olduğunda insanlara ulaşın Yer Uzantıları Reach prospective customers at important moment with location extensions. Location Extentions.
Nesneye Dayalı Programlama
Alakalı müşterileri hedefleyin. Google ile Yeniden Pazarlama Remarketing with Google. Target customers who are already showing interest in your business.
Atlayarak Sayalım Birer sayalım
© 2011 VMware Inc. All rights reserved Confidential VMware Corporate Overview Engin METİN VMware Kıdemli Sistem Mühendisi
VTYS 2012 Mehmet Emin KORKUSUZ Ders - 06.
Introduction to Programming
ETKİN OKUMA. ETKİN NOT ÇIKARMA KAYNAK Trakya Çevre Düzeni Planı Raporu, İstanbul: ….., ALINTI – NOT OSB’nin toplam kapasitesinin %...’ı boş. Sf.28.
Google Display Network Targeting options.
Twinning Project TR 08 IB EN 03 Project over view & activities Integrated Permitting and Inspection in Turkey Cesar Seoanez – Resident Twinning Advisor.
Chapter 3: SQL.
BİL 133 – Algoritma ve Programlama I
Java Threads Dr.Galip AYDIN.
4th grades Telling the time Zamanı söyleme Telling the time Zamanı söyleme.
Bölüm 7 - Diziler İçerik 7.1 Giriş 7.2 Diziler 7.3 Dizileri Tanımlama 7.4 Dizileri Kullanan Örnekler 7.5 Referanslar ve Referans Parametreler.
talebe Turkish Lessons for Foreigners  Introduction talebe is a beginner-level Turkish language course for young and adult learners.
KIR ÇİÇEKLERİM’ E RakamlarImIz Akhisar Koleji 1/A.
Dbase, Clipper v.s. (Veri Tabanı Dilleri). CLEAR SET TALK OFF SET ECHO OFF set date british STORE 0 TO M DO 02,64 say "Tarih = 02,72 say.
The Solution of Linear Systems (Doğrusal Sistemlerin Çözümü, AX=B )
HAZIRLAYAN:SAVAŞ TURAN AKKOYUNLU İLKÖĞRETİM OKULU 2/D SINIFI
ORHAN EREN İLKOKULU 1-A.
Bilgisayar Grafiğine Giriş
Fikri Akdeniz Fikri Akdeniz Çağ University Department of Mathematics and Computer Science TURKEY 23rd IWMS,Ljubljana, Slonenia 11 June, 2014.
VTYS 2012 Mehmet Emin KORKUSUZ Ders - 04.
Copyright © AKAMPUS Kampüs Bilişim Sistemleri ve Danışmanlık A.Ş. Copyright © İDTM A.Ş. İstanbul Dünya Ticaret Merkezi A.Ş.
11 CHAPTER BİLGİ TEKNOLOJİSİ, İNTERNET VE SİZ. © 2005 The McGraw-Hill Companies, Inc. All Rights Reserved. 1-2 Bilgi sistemlerinin 5 temel öğesi 1. İnsan.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Amaçlar Bu derste öğreneceklerimiz: –Switch – Case.
Gün Kitabın Adı ve Yazarı Okuduğu sayfa sayısı
Görsel C# ile Windows Programlama
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Bölüm 12 – Veri Yapıları Konular 12.1Giriş 12.2Kendine.
Factoring agreement is the agreement which includes any or all of the following functions: The collection, the keeping of the borrower and customer records.
Müşterilerle Beraber Değer Yaratmak M. Tolga Akçura Kurucu Ortak.
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
Nesneye Yönelik Programlama
TEST – 1.
Görsel C# Programlama Güz 2009 (6. Hafta).
Nesne Yönelimli Programlama Dersi
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 ++ Nesne.
1. YEREL SAAT Güneşin gökyüzündeki durumuna göre ve yeryüzündeki cisimlerin gölge boyuna göre ayarlanan saate yerel saat denir. *Yani güneşin en tepede.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Fonksiyonlar –Programı modüler hale getirir –Yerel değişkenler,
Bölüm 5 - Fonksiyonlar index 5.1 Giriş 5.2 C de Program Modülleri
Bölüm 6 - Diziler indeks 6.1 Giriş 6.2 Diziler
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Bölüm 6 - Diziler indeks 6.1Giriş 6.2Diziler 6.3Dizilerin.
JAVA’DA DİZİLER Dr.Galip AYDIN.
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 ++ Veri.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Bölüm 2 - C ile Programlamaya Giriş Başlıklar 2.1Giriş.
Hareket halindeki insanlara ulaşın.Mobil Arama Ağı Reklamları Reach customers with Mobile Search Network.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Amaçlar Bu derste öğrenilecekler: –Uygulamaları “method”
1.HAFTA 26 Ağustos 2009 ÇARŞAMBA 2.HAFTA 01 EYLÜL 2009 SALI 3.HAFTA 09 EYLÜL 2009 ÇARŞAMBA 4.HAFTA 15 EYLÜL 2009 SALI 5.HAFTA 23 EYLÜL 2009 ÇARŞAMBA 6.HAFTA.
1.HAFTA 26 Ağustos 2009 ÇARŞAMBA 2.HAFTA 01 EYLÜL 2009 SALI 3.HAFTA 09 EYLÜL 2009 ÇARŞAMBA 4.HAFTA 15 EYLÜL 2009 SALI 5.HAFTA 23 EYLÜL 2009 ÇARŞAMBA 6.HAFTA.
Diferansiyel Denklemler
Bölüm 7 - Diziler İçerik 7.1 Giriş 7.2 Diziler 7.3 Dizileri Tanımlama 7.4 Dizileri Kullanan Örnekler 7.5 Referanslar ve Referans Parametreler.
Görsel C# ile Windows Programlama
Sakarya Üniversitesi Bilgisayar ve Bilişim Bilimleri Fakültesi Bilgisayar Mühendisliği Prof. Dr. Ümit Kocabıçak Prof. Dr. Cemil Öz Doç. Dr. Ahmet Turan.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
5- class & object Nesne Yönelimli Programlama - i
Döngüler ve Shift Register
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Imagine that you are a teacher and you are taking your 20 students to England for the summer school.
9.2 Operant Conditioning “Everything we do and are is determined by our history of rewards and punishments.” –BF Skinner Operant Conditioning: learning.
What is dna? Mrs. Fletcher – Oct
802.1CBdb draft text contribution
Sunum transkripti:

Chapter 16: Sınıflar ve Veri Soyutlama (Classes and Data Abstraction ) Outline 16.1 Giriş 16.2 Bir Sınıf ile Zaman Soyut Veri Tipinin Uygulanması 16.3 Sınıf Faaliyet Alanı ve Sınıf Üyelerine Erişim 16.4 Arayüzü Uygulamadan Ayırmak 16.5 Üyelere Erişimi Kontrol Etmek 16.6 Erişim Fonksiyonları ve Hizmet Fonksiyonları 16.7 Sınıf Nesnelerine İlk Değer Atamak: Yapıcılar 16.8 Yapıcılarla Varsayılan argumanları Kullanmak 16.9 Yıkıcıları Kullanmak 16.10 Yapıcılar ve Yıkıcılar ne zaman Çağırılır? 16.11 Veri Üyeleri ve Üye Fonksiyonları Kullanmak 16.12 Gizli Bir Tuzak 16.13 Kopyalayarak Atama Yapmak 16.14 Yazılımın Yeniden Kullanılırlığı

Bu bölümde neler öğreneceksiniz? Amaçlar Bu bölümde neler öğreneceksiniz? Yazlım mühendisliğinin konularından kapsülleme (en-capsulation) ve veri gizleme (data hiding) konuları Veri soyutlama (data abstraction) and soyut veri tipleri (abstract data types) (ADTs). C++ soyut veri tipleri oluşturmak:sınıflar (classes). Sınıf oluşturmak, kullanmak ve yıkmak. Bir nesnenin veri üyeleri ve fonksiyon üylerine erişimi .

Nesne-yönelimli programlama (Object-oriented programming) (OOP) 16.1 Giriş Nesne-yönelimli programlama (Object-oriented programming) (OOP) Veri (nitelik) ve fonksiyonlar (davranışlar) sınıfların içinde paketlenir. Veri ve fonksiyonlar birbirleriyle yakından ilişkilidirler. Bilgi Saklama (Information hiding) Sınıflarla uygulamanın detayları gizlenir. C++ programlama: sınıf Sınıf bir plana benzer : – yeniden kullanılabilir Nesneler sınıflardan oluşturulurlar. Örneğin, bir evin bir plan yapılması gibi C programcıları fonksiyon odaklı çalışırlar.

16.2 Sınıf ile Zaman Veri Tipinin UyguIaması Sınıflar Nitelikleri (attributes) (veri üyeleri-data members) ve davranışları (behaviors) (fonksiyon üyeler) içinde barındıran nesne modelleridir. Class anahtar kelimesi ile başlanır. 1 class Time { 2 public: 3 Time(); 4 void setTime( int, int, int ); 5 void printMilitary(); 6 void printStandard(); 7 private: 8 int hour; // 0 - 23 9 int minute; // 0 - 59 10 int second; // 0 - 59 11 }; // end class Time Public: and Private: are member-access specifiers. setTime, printMilitary, and printStandard are member functions. Time is the constructor. hour, minute, and second are data members.

16.2 Sınıf ile Zaman Veri Tipinin UyguIaması (II) Format Sınıf tanımlamasının gövdesi küme parantezleri ({ ve }) ile beraber yapılmıştır. Sınıf tanımlaması noktalı virgül ile biter. Veri ve Fonksiyon Üyeler Üye erişim belirteçleri Public - public erişim belirtecinden sonra bildirilen tüm sınıf üyeleri, Time sınıfından oluşturulmuş bir nesne ile erişilebilir. Private – private erişim belirtecinden sonra bildirilen tüm sınıf üyeleri sadece sınıfın üye fonksiyonları tarafından erişilebilir. Protected – daha sonra işlenecektir.

16.2 Sınıf ile Zaman Veri Tipinin UyguIaması (III) Yapıcı Sınıf nesnesinin veri üyelerine ilk değerleri atayan özel bir fonksiyondur. Yapıcılar geri değer döndürmezler. Sınıf ile aynı isme sahiptirler. Tanımlama Bir sınıf tanımlanmış ise bu sınıf daha sonra bir veri tipi olarak kullanılabilir. Time sunset, // object of type Time arrayOfTimes[ 5 ], // array of Time objects *pointerToTime, // pointer to a Time object &dinnerTime = sunset; // reference to a Time object Note: The class name becomes the new type specifier.

16.2 Implementing a Time Abstract Data Type with a Class (IV) İkili faaliyet alanı çözünürlük operatörü (Binary scope resolution operator ) (::) Sınıfın üye adını sınıf adına bağlar. Farklı sınıflar aynı isimli üyelere sahip olabilirler. Bir sınıfa ait fonksiyon üyesini tanımlamak geridonustipi SınıfIsmi::FonksiyonUyeİsmi( ){ … }

16.2 Implementing a Time Abstract Data Type with a Class (V) Eğer fonksiyon üyesi sınıfın içinde tanımlanırsa :: operatörü ve sınıf ismi gerekmez. Sınıf üyesini sınıfın dışında tanımlamak sınıfın public veya private olmasını değiştirmez. Takibeden slaytlarda Time yapıcısı veri üyelerine 0 değerini atamaktadır.

fig16_02.cpp (Part 1 of 3)

fig16_02.cpp (Part 2 of 3)

fig16_02.cpp (Part 3 of 3)

Program Output 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 Program Output

16.3 Class Scope and Accessing Class Members Data members and member functions File scope Nonmember functions Function scope Variables defined in member functions, destroyed after function completes Inside a scope Members accessible by all member functions Referenced by name

16.3 Class Scope and Accessing Class Members (II) Outside a scope Use handles An object name, a reference to an object or a pointer to an object Accessing class members Same as structs Dot (.) for objects and arrow (->) for pointers Example: t.hour is the hour element of t TimePtr->hour is the hour element

fig16_03.cpp (Part 1 of 2)

fig16_03.cpp (Part 2 of 2) Program Output Assign 7 to x and print using the object's name: 7 Assign 8 to x and print using a reference: 8 Assign 10 to x and print using a pointer: 10

16.4 Separating Interface from Implementation Easier to modify programs C++ programs can be split into Header files – contains class definitions and function prototypes Source-code files – contains member function definitions Program Outline: Using the same Time class as before, create a header file Create a source code file Load the header file to get the class definitions Define the member functions of the class

time1.h

time1.cpp (Part 1 of 2)

time1.cpp (Part 2 of 2)

fig16_04.cpp (Part 1 of 2)

fig16_04.cpp (Part 2 of 2) Program Output 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

16.5 Controlling Access to Members Purpose of public Give clients a view of the services the class provides (interface) Purpose of private Default setting Hide details of how the class accomplishes its tasks (implementation) Private members only accessible through the public interface using public member functions

fig16_05.cpp

Borland C++ command-line compiler error messages Time1.cpp: Fig16_05.cpp: Error E2247 Fig16_05.cpp 15: 'Time::hour' is not accessible in function main() Error E2247 Fig16_05.cpp 18: 'Time::minute' is not accessible in function main()   *** 2 errors in Compile *** Program Output Microsoft Visual C++ compiler error messages Compiling... Fig16_05.cpp D:\Fig16_05.cpp(15) : error C2248: 'hour' : cannot access private member declared in class 'Time' D:\Fig16_05\time1.h(18) : see declaration of 'hour' D:\Fig16_05.cpp(18) : error C2248: 'minute' : cannot access private D:\time1.h(19) : see declaration of 'minute' Error executing cl.exe.   test.exe - 2 error(s), 0 warning(s)

16.6 Access Functions and Utility Functions private functions that support the operation of public functions Not intended to be used directly by clients Access functions public functions that read/display data or check conditions For a container, it could call the isEmpty function Next Program to take in monthly sales and output the total Implementation not shown, only access functions

salesp.h

salesp.cpp (Part 1 of 3)

salesp.cpp (Part 2 of 3)

salesp.cpp (Part 3 of 3)

fig16_06.cpp Program Output Enter sales amount for month 1: 5314.76 Enter sales amount for month 2: 4292.38 Enter sales amount for month 3: 4589.83 Enter sales amount for month 4: 5534.03 Enter sales amount for month 5: 4376.34 Enter sales amount for month 6: 5698.45 Enter sales amount for month 7: 4439.22 Enter sales amount for month 8: 5893.57 Enter sales amount for month 9: 4909.67 Enter sales amount for month 10: 5123.45 Enter sales amount for month 11: 4024.97 Enter sales amount for month 12: 5923.92   The total annual sales are: $60120.59

16.7 Sınıf Nesnelerine İlk Değerlerini Atamak: Yapıcılar Yapıcı fonksiyon Sınıf üyelerine ilk değerlerini verir. Sınıf ile aynı isme sahiptir, geri dönüş veri tipi yoktur. Veri üyeleri yapıcılar veya set fonksiyonları ile değer alırlar. Nesnenin Tanımlanması Nesnenin tanımlanması sırasında verilen parametreler yapıcı fonksiyona geçer.

16.7 Sınıf Nesnelerine İlk Değerlerini Atamak: Yapıcılar (II) Format VeriTipi SınıfIsmi(deger1, deger2, …); Yapıcı deger1, deger2, vs. üye değişkenlere atar Veri üyesi kadar parametre yollanmamış ise, en sağdaki parametreler varsayılan (default) değerler alırlar. myClass myObject( 3, 4.0 );

16.8 Yapıcılarla beraber Varsayılan Argümanları Kullanmak Varsayılan (Default) yapıcılar Her sınıf için bir tane Parametresiz çağrılabilirler. Parametrelerin varsayılan (default) değerleri olabilir. Varsayılan (Default) parametreler Varsayılan yapıcı prototipinde (sınıf tanımlanırken) belirlemek Sınıf dışında , fonksiyon tanımlanırken varsayılan parametre değerleri verilmez. Örnek: SampleClass( int = 0, float = 0); Yapıcı sınıf ile aynı isme sahip

time2.h

time2.cpp (Part 1 of 2)

time2.cpp (Part 2 of 2)

fig16_07.cpp (Part 1 of 2)

fig16_07.cpp (Part 2 of 2)

Program Output Constructed with: all arguments defaulted: 00:00 hour specified; minute and second defaulted: 02:00 2:00:00 AM hour and minute specified; second defaulted: 21:34 9:34:00 PM hour, minute, and second specified: 12:25 12:25:42 PM all invalid values specified: Program Output

16.9 Yıkıcıların Kullanımı Sınıfın fonksiyon üyesi Yıkıcılar nesne yok edilirken çağrılırlar. Sistem hafızayı geri alırken sonlandırma temizliğini yapar, böylece hafıza alanı yeni nesnelerin tutulması için tekrar kullanılabilir. Yapıcıların tersi işlem yapar. Yıkıcı isimlendirilirken tilda (~) sınıf isminden sonra konulur. ~Time Parametre ve geri dönüş tipi yok . Yıkıcı fonksiyonlar aşırı yüklenemez.

16.10 Yapıcı ve Yıkıcılar Ne Zaman Çağrılır? Yapıcı ve yıkıcılar otomatik olarak çağrılırlar. Global nesneler Yapıcılar main de dahil diğer tüm fonksiyonlardan önce çağırılırlar. Yıkıcılar main bittiği zaman çağrılır (veya exit fonksiyon çağrıldığında) Global nesneler için yıkıcılar program abort komutu ile bitirildiğinde çağrılmazlar.

16.10 Yapıcı ve Yıkıcılar Ne Zaman Çağrılır? (II) Yerel nesneler Nesne tanımlandığı zaman yapıcı çağrılır. Nesne faaliyet alanı dışına çıktığında yıkıcı çağrılır. Program exit veya abort ile çıktığında yıkıcı çağrılmaz static yerel nesneler Yapıcı static nesnenin tanımlandığı yerde bir kez çağrılır. Yıkıcı main sonlandığında yada exit ile çıkış yaptığında çağrılır. Program abort ile çıktığında static nesne yıkıcısı çağrılmaz

create.h

create.cpp

fig16_08.cpp (Part 1 of 2)

fig16_08.cpp (Part 2 of 2)

Program Output Object 1 constructor (global created before main) Object 2 constructor (local automatic in main) Object 3 constructor (local static in main) Object 5 constructor (local automatic in create) Object 6 constructor (local static in create) Object 7 constructor (local automatic in create) Object 7 destructor Object 5 destructor Object 4 constructor (local automatic in main) Object 4 destructor Object 2 destructor Object 6 destructor Object 3 destructor Object 1 destructor Program Output

16.11 Using Data Members and Member Functions Classes provide public member functions Set (i.e., write) or get (i.e., read) values of private data members Adjustment of bank balance (a private data member of class BankAccount) by member function computeInterest Naming Member function that sets interestRate typically named setInterestRate Member function that gets interestRate would typically be called getInterestRate

16.11 Using Data Members and Member Functions (II) Do set and get capabilities effectively make data members public? No! Programmer decides what the function can set and what information the function can get public set functions should Check attempts to modify data members Ensure that the new value is appropriate for that data item Example: an attempt to set the day of the month to 37 would be rejected Programmer must include these features

time3.h (Part 1 of 2)

time3.h (Part 2 of 2)

time3.cpp (Part 1 of 3)

time3.cpp (Part 2 of 3)

time3.cpp (Part 3 of 3)

fig16_09.cpp (Part 1 of 3)

fig16_09.cpp (Part 2 of 3)

fig16_09.cpp (Part 3 of 3) Program Output Result of setting all valid values: Hour: 17 Minute: 34 Second: 25   Result of attempting to set invalid hour and second: Hour: 0 Minute: 43 Second: 0 Incrementing minute 3 times: Start time: 11:58:00 AM minute + 1: 11:59:00 AM minute + 1: 12:00:00 PM minute + 1: 12:01:00 PM

16.12 A Subtle Trap: Returning a Reference to a Private Data Member Reference to an object Alias for the name of the object May be used on the left side of an assignment statement Reference can receive a value, which changes the original object as well One way to use this capability (unfortunately!) Have a public member function of a class return a non-const reference to a private data member This reference can be modified, which changes the original data

time4.h

time4.cpp (Part 1 of 2)

time4.cpp (Part 2 of 2)

fig16_10.cpp (Part 1 of 2)

fig16_10.cpp (Part 2 of 2) Program Output Hour before modification: 20 Hour after modification: 30   ********************************* POOR PROGRAMMING PRACTICE!!!!!!!! badSetHour as an lvalue, Hour: 74

16.13 Assignment by Default Memberwise Copy Assignment operator (=) Sets variables equal, i.e., x = y; Can be used to assign an object to another object of the same type Memberwise copy — member by member copy myObject1 = myObject2; Objects may be Passed as function arguments Returned from functions (call-by-value default) Use pointers for call by reference

fig16_11.cpp (Part 1 of 2)

fig16_11.cpp (Part 2 of 2) Program Output date1 = 7-4-1993 date2 = 1-1-1990   After default memberwise copy, date2 = 7-4-1993

Object-oriented programmers 16.14 Software Reusability Object-oriented programmers Concentrate on implementing useful classes Tremendous opportunity to capture and catalog classes Accessed by large segments of the programming community Class libraries exist for this purpose Software Constructed from existing, well-defined, carefully tested, portable, widely available components Speeds development of powerful, high-quality software