meeting 12 & 13 class, string, set & get function · meeting 12 & 13 class, string, set...

45
Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course College of Multi Media Yogyakarta Spring 2016 - 2017 Tri Anggraeni, S.Kom., M.Sc. Reference : Deitel, P. & Deitel, H. (2014). C++ How to Program 9 th Edition. Massachusetts: Prentice Hall.

Upload: others

Post on 04-Nov-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Meeting 12 & 13 Class, String, set & get Function

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

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

Page 2: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Class : user-defines type

Data members

Member functions

Each class New type

Page 3: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

1. Membuat class dengan 1 fungsi (Coba)

/* GradeBook.cpp Membuat class GradeBook yang berisi member function displayMessage, membuat object GradeBook & menggunakannya untuk memanggil function displayMessage. */ #include <iostream> using namespace std;

Page 4: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

// GradeBook class definition class GradeBook { public: /* function that displays a welcome message to the GradeBook user */ void displayMessage() { cout << "Welcome to the Grade Book!" << endl << endl;

} // end function displayMessage }; // end class GradeBook

Page 5: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Penjelasan program : class GradeBook { Untuk readibilitas : • Nama kelas dimulai dengan huruf kapital • Setiap kata dalam nama kelas diawali huruf

kapital.

• Badan class diletakkan di antara tanda kurung buka kurawal { dan kurung tutup kurawal }

• Letakkan tanda titik koma ( ; ) setelah kurung tutup kurawal class.

Page 6: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

public: Access specifier Harus diikuti tanda titik dua ( : )

• Fungsi dibuat setelah mendeklarasikan access

specifier untuk mengindikasikan bahwa fungsi yang akan dibuat dapat diakses oleh public atau : a. Fungsi yang lain dalam program (seperti

fungsi main) b. Fungsi yang ada di class yang lain

Page 7: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

void displayMessage() function header • Fungsi : Melakukan suatu fungsi Menghasilkan suatu nilai ketika selesai dieksekusi

Contoh : fungsi perhitungan menghasilkan perhitungan

Cara penulisan nama fungsi = variabel. Diawali dengan huruf kecil. Jika mengandung 2

kata/lebih, huruf awal kata ke-2 dst ditulis dengan huruf kapital.

Contoh : displayMessage, calculatePoint, endScore Disebut dengan camel case Karena pola naik

turun huruf kecil dan besarnya seperti punggung unta.

Page 8: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

• Fungsi harus menentukan tipe return : Untuk mengindikasikan tipe dari nilai yang

dihasilkan oleh function.

• void : salah satu tipe return/hasil fungsi displayMessage() Menandakan bahwa fungsi displayMessage()

tidak akan menghasilkan suatu data yang dapat menjadi input pada fungsi lain.

void displayMessage() function header

Page 9: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

void displayMessage() function header

• Nama fungsi harus diikuti tanda kurung. • void displayMessage() tanda kurung tidak berisi

apapun. Menandakan bahwa fungsi displayMessage tidak

membutuhkan data tambahan untuk mengeksekusi baris-baris program di dalamnya.

void displayMessage() { cout << "Welcome to the Grade Book!" << endl << endl; }

Function body (Di dalam tanda kurung kurawal)

Page 10: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

// function main begins program execution int main() { GradeBook myGradeBook; /* create a GradeBook object named myGradeBook */ myGradeBook.displayMessage(); /* call object's displayMessage function */ system("pause"); } // end main

Lanjutan program :

Page 11: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

GradeBook myGradeBook;

• Object : komponen yang dapat digunakan berulang2

• Member function of a class hanya dapat digunakan setelah object class-nya dibuat.

• Contoh : GradeBook myGradeBook; GradeBook tamaraGradeBook;

Name of class Object of the class Variabel yang bertipe GradeBook

User-defined type

Page 12: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

User-defined type • Fundamental type : int, short, long, float,

double, char, boolean. Otomatis diketahui oleh compiler.

• User-defines type (contoh) : GradeBook Hanya diketahui jika class definition

GradeBook sudah dibuat dalam program. Jika tidak : program error

Page 13: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

myGradeBook.displayMessage();

• Variabel myGradeBook memanggil fungsi displayMessage.

• Dilakukan dengan menulis tanda titik setelah nama variabel & nama fungsi.

Contoh lain : • Jika nama variabel : pointTamara dan nama

fungsi : calculatePoint() Cara memanggil fungsi : pointTamara.calculatePoint()

Page 14: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Hasil

Page 15: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

2. Membuat Fungsi dengan 1 Parameter

• Parameter : informasi tambahan yang membantu berjalannya suatu fungsi.

• 1 fungsi dapat memiliki lebih dari 1 parameter.

Coba program berikut :

/* GradeBook2 _Class_Berparameter.cpp Membuat class GradeBook2 yang berisi member function displayMessage yang memiliki

parameter, membuat object GradeBook2 & menggunakannya untuk memanggil function. */

Page 16: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

#include <iostream> #include <string> // untuk menggunakan kelas standar string using namespace std; // GradeBook2 class definition class GradeBook2 { public: /* function that displays a welcome message to the GradeBook user */ void displayMessage(string courseName ) { cout << “Grade book2 for\n" << courseName << "!“ << endl;

} // end function displayMessage }; // end class GradeBook2

Disebut parameter

Page 17: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

void displayMessage(string courseName)

Menunjukkan bahwa fungsi displayMessage memerlukan string untuk berjalan.

String : • Termasuk namespace std • Jika tidak menggunakan using namespace harus

diinisialisasikan dengan cara std::string

Parameter

Tipe Identifier

Page 18: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

void displayMessage(string courseName) • 1 fungsi dapat memiliki lebih dari 1 parameter. • Cara penulisan : dipisah kan dengan tanda koma.

• Contoh :

void displayMessage(string courseName, int jumlahPeserta)

• Jumlah, urutan, dan tipe argumen pada fungsi harus sama dengan jumlah, urutan, dan tipe pada parameternya.

Page 19: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

// function main begins program execution int main() { string nameOfCourse; // string to store the course name GradeBook2 myGradeBook; /* create a GradeBook2 object named myGradeBook */

// prompt for and input course name cout << "Please enter the course name:" << endl; getline( cin, nameOfCourse ); // read a course name with blanks cout << endl; // output a blank line

myGradeBook.displayMessage( nameOfCourse ); /* call myGradeBook's displayMessage function and pass nameOfCourse as an argument */ } // end main

Disebut argument

Page 20: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Alternatif hasil

Please enter the lecture :

Lecture : Tri Anggraeni

User bisa memasukkan nama & pengajar mata kuliah

Ditampilkan oleh program sesuai masukan user

Page 21: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

getline( cin, nameOfCourse ); • Coba ganti menggunakan cin saja tanpa

menggunakan getline. Jalankan program. • Masukkan Algoritma Pemrograman ketika program

meminta untuk memasukkan nama course. Tekan Enter.

• Apa yang terjadi? Hanya kata Algoritma yang kemudian muncul.

Kata Pemrograman tidak muncul. cin hanya membaca & menyimpan karakter

sampai spasi. getline menyimpan seluruh karakter termasuk

spasi.

Page 22: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

3. Data Members, set and get Functions

Page 23: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Data member Variabel yang dideklarasikan di dalam class, tetapi

di luar fungsi.

• Keuntungan menggunakan data member : Semua fungsi yang ada pada kelas dapat

menggunakannya.

• Sebagian besar data member dideklarasikan setelah access specifier private disebut data hiding.

Page 24: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Dengan cara memanggil fungsi getCourseName

Menyimpan course name pada data member GradeBook3

getCourseName

setCourseName

displayMessage

Member functions GradeBook3 class :

Mendapatkan course name dari data member

Men-display (menampilkan) welcome message yang memuat nama mata kuliah (course name)

Page 25: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Coba

/* 08_Class_Set_Get.cpp Membuat class GradeBook3 yang berisi data member courseName dan fungsi member untuk mengeset dan membaca nilainya */ #include <iostream> #include <string> /* untuk menggunakan kelas standar string */ using namespace std;

Page 26: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

// GradeBook3 class definition class GradeBook3 { public: /* fungsi yang menyimpan nama mata kuliah : */ void setCourseName(string name) { courseName = name; /* data member courseName. Diberi nilai name */ } // end function setCourseName /* fungsi yang memperoleh nama mata kuliah dari data member courseName di fungsi setCourseName : */ string getCourseName() { return courseName; /* menghasilkan courseName object */ } // end function getCourseName

Fungsi yang tidak perlu menghasilkan apapun,

sehingga tipenya cukup void

Menyimpan course nam data member GradeBoo

Mendapatkan course na dari data member

Page 27: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

/* fungsi yang menampilkan welcome message */ void displayMessage() { /* statement untuk memanggil getCourseName untuk memperoleh nama mata kuliah */ cout << "Grade book for " << getCourseName() << ".\n" << endl;

} // end function displayMessage private: string courseName; // data member }; // end class GradeBook3

Mendeklarasikan data member dengan private berarti menyembunyikan data

member (data hiding)

Page 28: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

// fungsi main memulai eksekusi program int main() { string nameOfCourse; // string to store the course name GradeBook3 myGradeBook; /* create a GradeBook3 object named myGradeBook */

// menampilkan nilai awal courseName cout << “Course name awal : ” << myGradeBook. getCourseName() << endl << endl;

// prompt untuk menginput course name cout << "Please enter the course name:" << endl;

Menyembunyikan data member courseName yang dideklarasikan di

class GradeBook

Data member courseName digunakan di fungsi setCourseName & getCourseName.

Local string variable yang dibuat untuk menyimpan nama mata kuliah yang dimasukkan oleh user, yang didapat dari fungsi getline

Page 29: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

// read a course name with blanks getline( cin, nameOfCourse ); // mengeset nama mata kuliah myGradeBook.setCourseName(nameOfCourse); cout << endl; // output a blank line // menampilkan pesan dengan nama mata kuliah yang baru myGradeBook.displayMessage(); system("pause"); } // end main

Page 30: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Local variable Variabel yang dideklarasikan di dalam suatu fungsi. Hanya dapat digunakan dari setelah

dideklarasikan, sampai tanda kurung kurawal ( } ) penutup fungsi.

Tidak dapat digunakan di luar fungsi yang mendeklarasikannya.

Page 31: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Seperti inikah hasilnya?

Mengapa “Course name awal : ” tidak berisi apa2?

Cek kode programnya :

Page 32: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Fungsi main program GradeBook :

int main() { string nameOfCourse; // string to store the course name GradeBook3 myGradeBook; /* create a GradeBook3 object named myGradeBook */ // menampilkan nilai awal courseName cout << “Course name awal : ” << myGradeBook.

getCourseName() << endl << endl;

// prompt untuk menginput course name cout << "Please enter the course name:" << endl;

Page 33: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Di GradeBook3 class definition : class GradeBook3 { public: /* fungsi yang menyimpan nama mata kuliah : */

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

Karena itulah nilai Course name awal kosong.

Memperoleh nama mata kuliah dari data member courseName di fungsi setCourseName

Sebelum memanggil getCourseName, fungsi main TIDAK MEMANGGIL fungsi setCourseName, sehingga argumen name-nya kosong

Page 34: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Hasil dari Latihan 2 : Membuat Fungsi dengan 1 Parameter

Hasil dari Latihan 3 : Data Members, set and get Functions

?? Berbedakah Lha trus kenapa pake fungsi get segala ya ??

Page 35: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Bisakah fungsi setCourseName & getCourseName dijadikan 1 ?? Coba : 1. Save as program Class_set_get menjadi Without_Get.cpp. 2. Dari fungsi getCourseName : pindahkan baris “return

CourseName;” ke fungsi setCourseName. 3. Ubah tipe fungsi setCourseName menjadi string (karena

fungsi getCourseName juga bertipe string) 4. Dari fungsi displayMessage : pindahkan “cout << "Grade book

for "” ke fungsi main, di baris ketika fungsi setCourseName dipanggil, sehingga barisnya menjadi : cout << "Grade book for " <<

myGradeBook.setCourseName(nameOfCourse); 5. Di fungsi main : hapus semua baris yang memanggil fungsi

displayMessage & getCourseName. 6. Hapus seluruh definisi fungsi getCourseName &

displayMessage agar tidak terbaca oleh compiler. Jalankan program. Betulkan error2 yang terjadi sampai hasilnya :

Page 36: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Alternatif hasil

Bisa jalan tanpa beda dengan ketika ada fungsi getCourseName!!

Once again :: Kenapa pake fungsi get segala ya

??

Page 37: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Di fungsi main Class_set_get ada myGradeBook.displayMessage(); Memanggil fungsi displayMessage :

void displayMessage() { cout << "Grade book for " << getCourseName() << ".\n" << endl;

}

Memanggil fungsi getCourseName : string getCourseName() { return courseName; Data member }

Mengakses data member melalui fungsi get menjadikan class lebih mudah di-maintain &

mengurangi kemungkinan kesalahan.

Page 38: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Other reasons why we need set & get functions 1. Untuk memungkinkan class client mengeset dan

memperoleh (get) suatu nilai dari data member private. → Class/object client (klien dari suatu object) :

statement yang memanggil fungsi public di object lain.

→ Agar dapat diakses class client, access specifier fungsi set & get harus public seperti pada contoh.

Presenter
Presentation Notes
Class sering menyediakan fungsi public untuk memungkinkan class client mengeset dan memperoleh (get) suatu nilai dari data member private.
Page 39: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

2. Fungsi set & get memungkinkan client untuk berinteraksi dengan sebuah object, dengan tetap mengkapsulasi data private object dalam object itu. → Mendeklarasikan data member dengan access

specifier private merupakan data hiding karena menjadikan data member hanya bisa diakses & digunakan oleh fungsi2 di dalam object dimana data member itu dideklarasikan.

→ Fungsi public set & get memungkinkan class clients untuk dapat mengakses data yg di-hidden (yang dideklarasikan dengan access specifier private).

→ Client tidak dapat memodifikasi dan memperoleh object data.

Page 40: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

• Nama fungsi set & get biasanya diawali oleh kata set atau get.

• Fungsi set sering disebut sebagai mutators (karena fungsi set me-mutate (mengubah) nilai).

• Fungsi get sering disebut sebagai accessors (karena fungsi get mengakses suatu nilai).

Page 41: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

Hanya fungsi get& set yang memanipulasi data member secara langsung yang harus diubah.

Contoh : courseName ingin dibuat sehingga memuat 2 data member : courseNumber & courseTitle. Fungsi displayMessage tetap dapat memanggil

fungsi getCourseName 1 kali & memperoleh courseName yang lengkap yang memuat courseNumber & courseTitle.

Fungsi getCourseName dapat dibuat sehingga menghasilkan 1 string yang berisi courseNumber & courseTitle. Coba !!

Perubahan pada data member courseName tidak perlu mengubah fungsi displayMessage

Page 42: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

/* Set_Get_2_data_member.cpp Menampilkan courseName yang memuat 2 data member :

courseNumber & courseTitle */ #include <iostream> #include <string> // untuk menggunakan kelas standar string using namespace std; // GradeBook3 class definition class GradeBook3 { public: /* fungsi yang mengeset nama mata kuliah */ void setCourseName(string nomor, string title) { courseNumber = nomor; /* menyimpan nama mata kuliah pada object */ courseTitle = title; courseTitle = courseNumber + " " + courseTitle; } // end function setCourseName

Page 43: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

/* fungsi yang membaca nama mata kuliah */ string getCourseName() { return courseTitle; } // end function getCourseName /* fungsi yang menampilkan welcome message */ void displayMessage() { /* statement untuk memanggil getCourseName untuk memperoleh nama mata kuliah */ cout << "Grade book for " << getCourseName() << ".\n" << endl; } // end function displayMessage private: string courseNumber, courseTitle; // data member }; // end class GradeBook3

Page 44: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

// function main begins program execution int main() { string kodeMtKul, namaMtKul; // string to store the course name GradeBook3 myGradeBook; /* create a GradeBook3 object named myGradeBook */ // prompt untuk menginput course number cout << "\nEnter the course number : " << endl; // read a course number with blanks getline( cin, kodeMtKul ); // prompt untuk menginput course title cout << "\nEnter the course title : " << endl;

Page 45: Meeting 12 & 13 Class, String, set & get Function · Meeting 12 & 13 Class, String, set & get Function Game Technology Design Course . College of Multi Media Yogyakarta . Spring 2016

// read a course number with blanks getline( cin, namaMtKul ); // mengeset nama mata kuliah myGradeBook.setCourseName(kodeMtKul, namaMtKul); cout << endl; // output a blank line // menampilkan pesan dengan nama mata kuliah yang baru myGradeBook.displayMessage(); system("pause"); } // end main