Encapsulasi merupakan konsep utama dalam OOP dimana data dan fungsi dikelompokkan bersama dalam satu class. Class menyembunyikan detail implementasi dan hanya mengekspos interface. Encapsulasi mengurangi ketergantungan antar komponen dan meningkatkan koherensi program.
2. Learning Outcomes
Pada akhir pertemuan ini,
diharapkan mahasiswa
akan mampu :
• Menyimpulkan konsep
Encapsulation dalam PBO
2
3. Outline Materi
• Konsep Encapsulation
• Struct vs Class
• Class Access Control
• Constructor & Destructor
• Object Class
• Access with scope resolution operator (::)
3
4. Konsep Encapsulation
• Encapsulation pengelompokan data dan
functions menjadi satu dalam sebuah class.
• Memiliki batasan akses dg default private (default
access struct public).
• reduces coupling , and almost paradoxically, increases
the ability to create large programs.
• encourage coherence , which means that any given
class does one thing. By increasing coherence, a
program becomes easier to understand, more simply
organized, and this better organization is reflected in a
further reduction in coupling.
• Information hiding
• Class objects communicate across well-defined interfaces
• Implementation details hidden within classes themse4 lves
5. Struct VS Class
struct Product
{ int Prod_id;
char Prod_Name;
float Price;
int Stock_qty;
};
Product Brg1;
class Product
{ public: int
Prod_id;
char
Prod_Name;
float
Price;
int
Stock_qty;
};
Product Brg1;
5
Default
Access
member:
public
Default
Access
member:
private
Struct Object
Class Object
6. 3 Access Level
• Public:
• Bagian class yang dapat diakses oleh
umum baik dari dalam maupun dari luar
class
• Protected:
• Bagian class yang dapat diakses oleh
linkungan internal class dan class
turunannya
• Private:
• Bagian class yang hanya dapat diakses
oleh linkungan internal class itu sendiri 6
7. Constructor & Destructor
class Time
{ private: int hour;
int minute;
int second;
public: Time();
void setTime( int, int, int );
void printUniversal();
void printStandard();
~Time();
};
7
Constructor
Destructor
8. • ConstructCoro nstrumcteomr b&e r Dfuenstcrtuiocnto ryang
pertama kali di kerjakan ketika satu
object di create
• Nama constructor harus sama dengan nama
classnya
• Untuk inisialisasi object
• Minimal ada 1 constructor dalam class (bisa
lebih / di overload), jika tidak di tulis
compiler akan mengenerate default constructor
untuk class tersebut
• Dapat diberikan argumen
8
• Tidak memiliki return value (default: void)
9. Constructor & Destructor
• Destructor member function yang
di kerjakan ketika satu object di
destroy / death (sebagai pengakhiran
object)
• Nama destructor sama dengan nama
classnya ditambah tanda tilde (~) di
awalnya
• Untuk de-inisialisasi / clean up /
dealokasi memory
• Hanya ada 1 desctuctor (tdk dapat di
overload)
• Tidak memiliki argumen
• Tidak memiliki return value
9
10. Object Class
• Deklarasi Object Class
Time timeObject; //object biasa
Time timeArray[ 10 ]; // object array
Time *timePtr; //object pointer
Time &timeRef = timeObject; // object reference
10
11. Access ClassName with :: classMemberName
scope resolution
operator (::)
11
class Time
{ private:
int hour;
int minute;
int second;
public:
Time()
{ hour = minute = second = 0;
}
void setTime( int, int, int );
void printUniversal();
void printStandard();
~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;
}
void Time :: printUniversal()
{ cout << setfill( '0' ) << setw( 2 ) << hour << ":"
<< setw( 2 ) << minute << ":"
<< setw( 2 ) << second;
}
void Time :: printStandard()
{ cout << ( ( hour == 0 || hour == 12 ) ? 12 : hour
% 12 )
<< ":" << setfill( '0' ) << setw( 2 ) << minute
<< ":" << setw( 2 ) << second
<< ( hour < 12 ? " AM" : " PM" );
}
12. Tugas 5
• Tugas 5A: Mahasiswa membuat
ringkasan tentang konsep encapsulation
pada OOP dan implementasinya pada
C++
• Tugas 5B: Mahasiswa membuat analisis
contoh program dengan encapsulation
dari dosen
• Tugas 5C: Mahasiswa membuat
program sederhana dengan
mengggunakan konsep Encapsulation 12