41
Reference : Deitel, P. & Deitel, H. (2014). C++ How to Program 9 th Edition. Massachusetts: Prentice Hall. Game Technology Design Major College of Multi Media Yogyakarta Spring 2016/2017 Tri Anggraeni, S.Kom., M.Sc. Pertemuan 14 : Class Part 2 & 3

Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Reference : Deitel, P. & Deitel, H. (2014). C++ How to Program 9th Edition. Massachusetts: Prentice Hall.

Game Technology Design Major College of Multi Media Yogyakarta Spring 2016/2017 Tri Anggraeni, S.Kom., M.Sc.

Pertemuan 14 : Class Part 2 & 3

Page 2: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Review Materi Pertemuan 12 & 13

• Class terdiri atas ……. & …… – Data members & member functions

• Setiap kelas tidak bisa menjadi tipe data baru.

Benar/salah? – Salah

• GradeBook myGradeBook; – GradeBook merupakan tipe data. B / S ? – myGradeBook bukan merupakan variabel. B / S ?

B S

Page 3: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

• myGradeBook.displayMessage(); Artinya : a. myGradeBook merupakan fungsi. B / S ? b. displayMessage merupakan variabel. B / S ?

c. Fungsi myGradeBook memanggil variabel

displayMessage. B / S ?

S S S

Page 4: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Class di Pertemuan 12 & 13

1. Membuat class dengan 1 fungsi 2. Membuat fungsi dengan sebuah parameter 3. Data members, set functions, & get functions

Class Part 2 (Pertemuan ini)

4. Menginisialisasikan objects dengan constructors 5. Meletakkan class pada file lain untuk reusability

Page 5: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Constructor

Fungsi yang harus dinamakan sama dengan nama class-nya.

Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan fungsi yang digunakan untuk

konfirmasi, apakah nama object yang dibuat dari class sudah sama dengan nama constructornya.

Jika sama berarti benar.

Page 6: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Constructor

• Dipanggil oleh C++ setiap kali object dibuat. • Dapat digunakan juga untuk menginisialisasi object

dari suatu class ketika object itu dibuat. • Tidak dapat menghasilkan suatu nilai. Tidak boleh menggunakan return type.

• Dideklarasikan dalam public

Page 7: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Pertemuan 12 & 13

Program ke-1 : Cuma menampilkan pesan "Welcome to the Grade Book!"

Program ke-2 : Menampilkan “Grade book2 for " + nama mata kuliah yang merupakan masukan user

Program ke-3 : Menampilkan “Grade book2 for " + nama mata

kuliah yang merupakan masukan user, tapi pake set & get function & 1 data member

Program ke-4 : Menampilkan “Grade book2 for " + nama & kode mata kuliah yang merupakan masukan user, pake set & get function & 2 data member

Program hari ini : Menampilkan nama mata kuliah dengan

constructor (nama mt kul diset ketika objek dibuat)

Page 8: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

/* GradeBook4.cpp : Membuat constructor & menggunakannya utk

menentukan course name ketika object GradeBook4 dibuat */

#include <iostream> #include <string> using namespace std; class GradeBook4 {

private: string courseName; // data member

Page 9: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

public: GradeBook4 ( string name ) { // constructor dgn 1 argument

/* Constructor tidak boleh menggunakan tipe return. Karena tidak boleh menghasilkan nilai */

setCourseName ( name ); /* memanggil fungsi set & menginisialisasi courseName dengan string yang diambil dari argumen constructor */

} // fungsi untuk mengeset course name : void setCourseName ( string name) { courseName = name; /* memberikan nilai parameter name kepada data member courseName */ } // end setCourseName function

Nama constructor sama dengan nama class Parameter GradeBook4 gradeBook1 ( “2F ALP Algoritma” );

Page 10: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

// function to get the course name : string getCourseName () { return courseName; } // end function getCourseName }; // end class GradeBook4

Page 11: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

int main () { /* membuat 2 object GradeBook4 & menentukan course name untuk object GradeBook4 ketika object itu dibuat : */ GradeBook4 gradeBook1 ( “2F ALP Algoritma” ); GradeBook4 gradeBook2 ( “2F EDG Edu Game” );

/* “2F ALP Algoritma” merupakan argumen yg diteruskan ke constructor object GradeBook4 untuk menginisialisasi course name gradeBook1 */

/* menampilkan courseName untuk setiap GradeBook4 */ cout << “Book 1 : ”

<< gradeBook1.getCourseName() << endl << “Book 2 : ” << gradeBook2.getCourseName() << endl << endl; }

Memanggil constructor GradeBook4

Page 12: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Hasil

Let’s trace from the main Click

Page 13: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Constructor

Jika class tidak mendefinisikan constructor (seperti pada program2 di Pertemuan 12 & 13) : Compiler menyediakan default constructor (constructor

yang tidak memiliki parameter).

Ketika object GradeBook3 dibuat pada fungsi main : GradeBook myGradeBook;

Compiler memanggil default constructor yang dimilikinya.

Page 14: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Di GradeBook4.cpp ada constructor Di Class_Set_Get.cpp TIDAK ADA constructor

• Apa sih constructor? F.......... Fungsi Digunakan untuk :

• Menginisialisasikan object dari suatu class ketika object itu dibuat.

• Memastikan setiap object diinisialisasikan dengan tepat sebelum digunakan pada program.

Jadi apa perbedaan antara Class_Set_Get.cpp & GradeBook4.cpp ??

Page 15: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Meletakkan class pada file lain untuk reusability

• Kelebihan class : dapat di-reuse (digunakan) oleh programmer lain.

• Contoh : penggunaan standard library C++ menggunakan header <string>.

Page 16: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Meletakkan class pada file lain untuk reusability

• Buat folder baru dengan nama Nyoba Reusability.

• Di DevC++, buat file baru. Copas class GradeBook4 di file itu (tanpa fungsi main). Simpan di folder Nyoba Reusability, dengan nama GradeBook, pilih File Type Header Files agar menjadi GradeBook.h dan GradeBook.h menjadi Header files (.h).

• Buat file baru. Copas fungsi main di GradeBook4.cpp. Simpan dengan nama GradeMain.cpp. Lengkapi include-include & using namespacenya. Tambahkan : #include "GradeBook.h“

• Jalankan program

Page 17: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

GradeBook.h

• BUKAN program yang utuh karena tidak memiliki fungsi main.

• HARUS berada di folder/project yang sama dengan file main yang memanggilnya.

include <string> Jika diapit tanda <> : header merupakan C++

Standard Library. include “Grade.h” Jika diapit tanda “” : header BUKAN merupakan C++

Standard Library & berada di direktori program yang sedang diproses.

Page 18: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

3. Memisahkan interface dari implementasi 4. Memvalidasi data dengan fungsi set

Class di Pertemuan 12 & 13 1. Membuat class dengan 1 fungsi √ 2. Membuat fungsi dengan sebuah parameter √ 3. Data members, set functions, & get functions √

Class Part 2 (Pertemuan ini) 1. Menginisialisasikan objects dengan constructors √ 2. Meletakkan class pada file lain untuk reusability √

Page 19: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

• Program sebelumnya : – GradeBook.h berisi definisi class – GradeMain.cpp berisi fungsi main disebut client

code.

• Program sebelumnya : memisahkan definisi class dari client code.

• Interface : mendefinisikan & menstandarkan seperti orang berinteraksi dengan sistem/layanan sistem.

Page 20: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Memisahkan interface dari implementasi

• Interface class : – Menggambarkan service-service/hal-hal yang

dapat digunakan oleh class’s client & bagaimana memanggil service-service itu tapi TIDAK MENGGAMBARKAN bagaimana class melakukan services.

• Pada contoh pertemuan sebelumnya : – Interface class : GradeBook.h – Class’s client : Grade_Main.cpp

Page 21: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Pada software engineering : Fungsi lebih baik dibuat di luar class definition sehingga implementation details (detail isi)-nya dapat di-hidden dari client code. Untuk memastikan bahwa client code tidak

bergantung pada implementation details suatu kelas.

Karena 1 class dapat memiliki banyak client code Perubahan pada implementation (isi) class dapat

menyebabkan masalah yang besar pada suatu software.

Memisahkan interface dari implementasi

Page 22: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Interface class public : berisi fungsi2 public (public services). GradeBook.h : berisi constructor & fungsi2

setCourseName, getCourseName, & displayMessage.

• Class’s client : Grade_Main.cpp : menggunakan fungsi2 GradeBook.h untuk memanggil class’s services.

• Program sebelumnya : Setiap class definition berisi definisi lengkap fungsi-fungsi public & deklarasi data members class itu.

Page 23: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Contoh Pemisahan Interface dari Implementasi

GradeBook.h contoh sebelumnya : Pecah menjadi 2 : 1. Pada DevC++, buat new project dari menu File, Project,

Console Application.

2. Simpan new file yang terbuka dengan nama GradeBook.cpp di folder baru yang bernama “14.2 Memisahkan interface dari implementasi”.

3. Buat file baru (Ctrl + N) atau dari Menu File > New > Source file. Klik Yes pada :

Page 24: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Ketik program GradeBook.h yang baru berikut : /* GradeBook.h : GradeBook class definition Public interface GradeBook yang tidak

memperlihatkan implementasi (isi) dari fungsi2nya */

#include <string> // class GradeBook uses C++ standard string class using namespace std; class GradeBook { public: GradeBook( string ); void setCourseName( string ); string getCourseName(); void displayMessage(); private: string courseName; };

Function prototypes (deklarasi fungsi yang berisi : nama fungsi,

tipe return/hasilnya, & tipe parameternya).

Sama seperti header fungsi pada contoh pertemuan sebelumnya, tetapi diakhiri tanda titik koma

Menunjukkan bahwa constructor membutuhkan

1 parameter string

Tidak menyebut nama parameter : krn di-ignore oleh compiler. Tapi boleh disebutkan untuk dokumentasi program.

Page 25: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

/* GradeBook.cpp (Berisi definisi fungsi-fungsi GradeBook, implementations (isi) dari fungsi2 yg dibentuk di GradeBook.h) */

#include <iostream> #include “GradeBook.h” using namespace std; // constructor : GradeBook::GradeBook( string name ) { setCourseName( name ); } /* Tanpa GradeBook:: fungsi tidak akan dikenali sebagai fungsi

class GradeBook, akan dianggap sebagai fungsi yang bebas seperti main, disebut juga fungsi global */

Binary scope resolution operator (mengikat setiap fungsi pada class GradeBook yang berada di file lain)

Kembali ke file GradeBook.cpp, ketik program berikut :

Page 26: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

// fungsi untuk mengeset course name void GradeBook::setCourseName ( string name ) { courseName = name; } // fungsi untuk memperoleh course name string GradeBook::getCourseName() { return courseName; } // mendisplay pesan selamat datang void GradeBook::displayMessage() { cout << "Welcome to Grade Book for : " << getCourseName() << endl << endl; }

Page 27: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

• Jika fungsi setCourseName & getCourseName hanya ditulis :

void setCourseName ( string name ) { courseName = name; } string getCourseName() { return courseName; }

Error : karena courseName tidak dideklarasikan sebagai variabel lokal pada tiap fungsi. Compiler tidak akan tahu kalau courseName sudah dideklarasikan sebagai data member class GradeBook.

Page 28: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

• Nama parameter pada function prototype harus sama dengan yang ada pada function definition.

• Jika tidak error.

Biasanya programmer membuat function definition dulu, meng-copy baris awalnya, dan menambahkan tanda titik koma pada setiap akhir prototype.

• File .cpp yang berisi definisi fungsi-fungsi diberi nama yang sama dengan nama header class.

Page 29: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

/* Grade_Main.cpp (GradeBook class demonstration after separating its interface from its implementation) */ #include <iostream> #include "GradeBook.h" using namespace std; int main() { // membuat 2 object GradeBook GradeBook gradeBook1( "2F ALP Algoritma" ); GradeBook gradeBook2( "2F EDG Edu Game" ); /* menampilkan courseName untuk setiap GradeBook */ cout << "Book 1 : " << gradeBook1.getCourseName() << "\nBook 2 : " << gradeBook2.getCourseName() << endl << endl; system("pause"); }

Page 30: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

• Compile GradeBook.h • Compile GradeBook.cpp

Ketika meng-compile GradeBook.cpp : Compiler menggunakan informasi padaGradeBook.h untuk memastikan bahwa : 1. Baris awal setiap fungsi persis sama dengan prototype yang ada

pada file GradeBook.h 2. Setiap fungsi mengetahui data member & fungsi2 lain pada

class. Sehingga : a. Fungsi setCourseName & getCourseName dapat mengakses

variabel courseName yang dideklarasikan pada GradeBook.h sebagai data member class GradeBook.

b. Constructor GradeBook dapat memanggil fungsi setCourseName & getCourseName karena fungsi2 itu dideklarasikan sebagai fungsi pada GradeBook.h & karena fungsi2 itu sesuai dengan prototype.

Page 31: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Client code programmer hanya perlu tau GradeBook interface (GradeBook.h), tidak perlu tau GradeBook.cpp, tapi harus bisa menghubungkan object code-nya.

Compilation & Linking Process

Client code programmer dapat langsung menggunakan tanpa perlu mengetahui isi detailnya

Page 32: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Validasi Data dengan Fungsi set Buat project baru dan interface GradeBook.h berikut : /* GradeBook.h : GradeBook class definition Public interface GradeBook yang tidak

memperlihatkan implementasi (isi) dari fungsi2nya */

#include <string> // class GradeBook uses C++ standard string class using namespace std;

class GradeBook { public: GradeBook( string ); void setCourseName( string ); string getCourseName(); void displayMessage(); private: string courseName; };

Sama persis seperti GradeBook.h pada

contoh sebelumnya. Yang dimodifikasi adalah

isi fungsi set

Simpan di folder baru yang bernama “14.3 Validasi Data dengan Fungsi set”

Page 33: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

/* GradeBook.cpp (Isi dari GradeBook member-function definitions. Fungsi setCourseName melakukan validasi */ #include <iostream> #include "GradeBook.h" // include definisi class GradeBook using namespace std; // constructor yang menginisialisasi courseName GradeBook::GradeBook( string name ) { // memvalidasi & menyimpan courseName setCourseName( name ); }

Page 34: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

// fungsi yang mengeset course name // memastikan bahwa course name maksimal 25 karakter void GradeBook::setCourseName( string name ) { // if name memiliki 25 / lebih sedikit karakter : if ( name.length() <= 25 ) { // menyimpan course name pada object courseName = name; // if name lebih dari 25 karakter : } else if ( name.length() > 25 ) { // set courseName hanya 25 karakter awal courseName = name.substr( 0, 25 ); // mulai dari krkter ke-0, sepanjang 25 krkter

Page 35: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

cout << "Nama \"" << name << "\" \nmelebihi panjang maksimal 25 karakter.\n" << "Sistem ini membatasi nama mt kul hanya 25 karakter.\n" << endl; } // end if } // fungsi untuk memperoleh course name string GradeBook::getCourseName() { return courseName; // return object's courseName } // end function getCourseName

Page 36: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

// menampilkan welcome message to the GradeBook user void GradeBook::displayMessage() { /* memanggil fungsi getCourseName untuk memperoleh courseName */ cout << "Welcome to the grade book for\n" << getCourseName() << "!" << endl; } // end function displayMessage

Page 37: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

/* Grade_Main.cpp ( Membuat & memanipulasi object GradeBook; contoh validasi */ #include <iostream> #include "GradeBook.h" // include definition of class GradeBook using namespace std; // function main begins program execution int main() { // create two GradeBook objects // initial course name of gradeBook1 is too long GradeBook gradeBook1( "CS101 Introduction to Programming in C++" );

GradeBook gradeBook2( "CS102 C++ Data Structures" );

Page 38: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

// display each GradeBook's courseName cout << "Grade Book 1 : " << gradeBook1.getCourseName() << "\nGrade Book 2 : " << gradeBook2.getCourseName() << endl; // modify myGradeBook's courseName (with a valid-length string)

gradeBook1.setCourseName( "CS101 C++ Programming" ); // display each GradeBook's courseName cout << "\nGrade Book 1 modified : " << gradeBook1.getCourseName() << endl << endl; system("pause"); } // end main

Page 39: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Alternatif hasil

Page 40: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

• Fungsi set harus dibuat dengan teliti jika diinginkan untuk mengubah nilai data member. Nilai yang baru harus tepat untuk jenis datanya. Contoh :

a. Permintaan untuk mengeset jumlah hari dalam 1 bulan untuk lebih dari 31 hari tidak boleh dilakukan.

b. Permintaan untuk mengeset berat badan menjadi 0 (nol) atau negatif tidak boleh dilakukan.

Page 41: Pertemuan 14 : Class Part 2 & 3 · Fungsi yang harus dinamakan sama dengan nama class-nya. Agar compiler dapat membedakannya dari fungsi-fungsi lain yang ada pada sebuah class. Merupakan

Matikan komputer, monitor, mouse

Pelajari lagi