Skip to content

Instantly share code, notes, and snippets.

@omayib
Created May 21, 2017 07:54
Show Gist options
  • Save omayib/03c52443646ab2ea6eb1d686cd48788f to your computer and use it in GitHub Desktop.
Save omayib/03c52443646ab2ea6eb1d686cd48788f to your computer and use it in GitHub Desktop.
Pemahaman tentang OOP
/*
21 May 2017
created by Arif Akbarul Huda.
PENGANTAR
Pak Amir adalah orang terpandang didesanya yang memiliki hobi membaca.
Dirumahnya tersimpan ratusan koleksi buku.
Supaya bermanfaat, Pak Amir membuat perpustakaan pribadi dan warga sekitar boleh meminjam.
Perpustakaan tersebut disambut sangat baik oleh warga sekitar.
Untuk mengelola administrasi peminjaman, Pak Amir mempekerjakan dua orang anak buah yaitu Wildan dan Tuti.
Wildan bertanggung jawab mengelola pendaftaran dan memverifikasi anggota perpustakaan.
Sedangkan Tuti berperan sebagai manager transaksi peminjaman yang tugasnya adalah mencatat setiap transaksi peminjaman.
Supaya diakui sebagai anggota perpustakaan, seseorang harus mendaftarkan diri kepada Wildan dengan mencantumkan nama dan nomor telepon.
Wildan berhak melakukan verifikasi setiap pengunjung perpustakaan, memastikan bahwa orang tersebut sudah terdaftar sebagai anggota.
Setelah resmi menjadi anggota, seseorang boleh meminjam kapanpun dengan syarat hanya boleh meminjam satu buah buku dalam sekali transaksi.
Caranya, orang tersebut harus datang ke Tuti dengan membawa satu buah buku yang akan dipinjam.
Selanjutnya Tuti akan memastikan bahwa orang tersebut tidak sedang meminjam buku lain.
Kalau diketauhi ternyata masih memiliki pinjaman, maka seseorang tidak diperbolehkan meminjam buku lagi.
Sebaliknya, jika statusnya tidak sedang meminjam maka Tuti akan mencatat dalam buku transaksi peminjaman.
Dalam sebuah sistem, seorang pengunjung direpresentasikan dengan `Person`.
Peran Wildan direpresentasikan dengan `AuthManager` sedangkan peran Tuti direpresentasikan dengan `LoanManager`.
*/
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
class Person{
private:
public:
Person(string name, string phoneNumber){
};
string getName(){
};
string getPhoneNumber(){
}
void setAsVerifiedPerson(){
};
bool isVerified(){
};
bool operator <(const Person& rhs) const{
return this->name < rhs.name;
};
};
class AuthManager {
private:
public:
void registering(Person person){
};
void verifiyingPerson(Person& personTobeVerify){
};
bool isRegistered(Person person){
};
};
class Book {
private:
public:
Book(string title, string author){
};
string getTitle(){
}
string getAuthor(){
}
bool operator <(const Book& rhs) const{
return this->title < rhs.title;
}
};
class LoanManager{
private:
map<Person,Book> loanHistory;
public:
bool borrowed(Person person, Book book){
};
bool isAllowed(Person person){
};
};
int main(){
//=======================================================
// BAGIAN 1 : POIN 30
//=======================================================
cout<<"===================BAGIAN 1 (30)==========================="<<endl;
AuthManager authManager;
LoanManager loanManager;
Person parjono = Person("Parjono","08245108573");
Person sulaiman = Person("Sulaiman","085647284634");
Person triyono = Person("Triyono","081723957392");
Person udin = Person("Udin","089923833392");
cout<<"person 1 : "<< parjono.getName()<<" , "<< parjono.getPhoneNumber() <<endl;//result : parjono
cout<<"person 2 : "<< sulaiman.getName()<<" , "<< sulaiman.getPhoneNumber() <<endl;//result : sulaiman
cout<<"person 3 : "<< triyono.getName()<<" , "<< triyono.getPhoneNumber() <<endl;//result : triyono
cout<<"person 4 : "<< udin.getName()<<" , "<< udin.getPhoneNumber() <<endl;//result : udin
cout<<"----------------------------------------------"<<endl;
Book pemrogramanAndroid = Book("Pemrograman Android","Gunawan S.");
Book dataMining = Book("Data Mining","Akbarul Huda");
Book pengantarSistemCerdas = Book("Pengantar Sistem Cerdas","Arif Akbarul");
Book robotikaMenggunakanArduino = Book("Robitika Menggunakan Arduino","Nabila Hafsya Z.");
Book mahirPemrogramanWeb = Book("Mahir Pemrograman Web","Hafsya Z.");
cout<<"book 1: "<<pemrogramanAndroid.getTitle()<<" , "<<pemrogramanAndroid.getAuthor()<<endl;
cout<<"book 2: "<<dataMining.getTitle()<<" , "<<dataMining.getAuthor()<<endl;
cout<<"book 3: "<<pengantarSistemCerdas.getTitle()<<" , "<<pengantarSistemCerdas.getAuthor()<<endl;
cout<<"book 4: "<<robotikaMenggunakanArduino.getTitle()<<" , "<<robotikaMenggunakanArduino.getAuthor()<<endl;
cout<<"book 5: "<<mahirPemrogramanWeb.getTitle()<<" , "<<mahirPemrogramanWeb.getAuthor()<<endl;
cout<<"----------------------------------------------"<<endl;
/*
=======================================================
BAGIAN 2 : POIN 30
Keterangan nilai status peminjaman :
true(1) = valid/verified
false(0) = not valied/not verified
=======================================================
*/
cout<<"===================BAGIAN 2 (30)==========================="<<endl;
cout<<"status verifikasi "<<parjono.getName()<<" : "<<parjono.isVerified()<<endl;//result:0
cout<<"status verifikasi "<<sulaiman.getName()<<" : "<<sulaiman.isVerified()<<endl;//result:0
cout<<"status verifikasi "<<triyono.getName()<<" : "<<triyono.isVerified()<<endl;//result:0
cout<<"status verifikasi "<<udin.getName()<<" : "<<udin.isVerified()<<endl;//result:0
cout<<"----------------------------------------------"<<endl;
//parjono, sulaiman, dan triyono mendaftarkan diri sebagai anggota
authManager.registering(parjono);
authManager.registering(sulaiman);
authManager.registering(triyono);
/*
beberapa hari kemudian parjono ingin meminjam buku. Wildan harus memastikan
bahwa parjono dan sulaiman adalah benar-benar anggota perpustakaan.
*/
authManager.verifiyingPerson(parjono);
authManager.verifiyingPerson(sulaiman);
authManager.verifiyingPerson(udin);
cout<<"status verifikasi "<<parjono.getName()<<" : "<<parjono.isVerified()<<endl;//result:1
cout<<"status verifikasi "<<sulaiman.getName()<<" : "<<sulaiman.isVerified()<<endl;//result:1
cout<<"status verifikasi "<<triyono.getName()<<" : "<<triyono.isVerified()<<endl;//result:0
cout<<"status verifikasi "<<udin.getName()<<" : "<<udin.isVerified()<<endl;//result:0
cout<<"----------------------------------------------"<<endl;
/*
=======================================================
BAGIAN 3 : POIN 40
Keterangan nilai status peminjaman :
true(1) = berhasil
false(0) = gagal
=======================================================
*/
cout<<"===================BAGIAN 3 (40)==========================="<<endl;
//parjono meminjam buku Pemrograman android.
bool result1 = loanManager.borrowed(parjono,pemrogramanAndroid);
cout<<"status transaksi 1 peminjaman "<<result1<<endl;//result:1
//beberapa hari kemudian parjono pinjam buku yang lain, namun buku yg pertama belum dikembalikan.
bool result2 = loanManager.borrowed(parjono,dataMining);
cout<<"status transaksi 2 peminjaman "<< result2 <<endl;//result:0
//pada hari yg sama, Sulaiman juga meminjam buku
bool result3 = loanManager.borrowed(sulaiman,mahirPemrogramanWeb);
cout<<"status transaksi 3 peminjaman "<< result3 <<endl;//result:1
//tiba-tiba ada Triyono yg terburu2 juga ingin meminjam buku, padahal belum diverifikasi oleh Wildan
bool result4 = loanManager.borrowed(triyono,pengantarSistemCerdas);
cout<<"status transaksi 4 peminjaman "<< result4 <<endl;//result:0
//begitu juga dengan Udin, belum resmi menjadi anggota, tapi langsung ingin pinjam buku
bool result5 = loanManager.borrowed(udin,pengantarSistemCerdas);
cout<<"status transaksi 5 peminjaman "<< result5 <<endl;//result:0
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment