Matakuliah : <<Kode>>/<<Nama mtkul>> Tahun : <<Tahun Pembuatan>>

Download Report

Transcript Matakuliah : <<Kode>>/<<Nama mtkul>> Tahun : <<Tahun Pembuatan>>

Matakuliah
Tahun
Versi
: <<Kode>>/<<Nama mtkul>>
: <<Tahun Pembuatan>>
: <<versi/revisi>>
Pertemuan 10
Pemrograman Berorientasi Objek
1
Learning Outcomes
•
•
•
•
•
•
Konsep Encapsulation
Struct vs Class
Class Access Control
Constructor & Destructor
Object Class
Access with scope resolution operator
(::)
2
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 themselves
3
Struct VS Class
Default
Access
member:
public
•
•
•
•
•
•
•
struct Product
{ int Prod_id;
char Prod_Name;
float Price;
int Stock_qty;
};
Struct Object
Product Brg1;
Default
Access
member:
private
class Product
{ public: int Prod_id;
char Prod_Name;
float Price;
int Stock_qty;
};
Class Object
Product Brg1;
4
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
5
Constructor & Destructor
• class Time
• { private:
•
•
• public:
•
•
•
•
• };
int hour;
Constructor
int minute;
int second;
Time();
void setTime( int, int, int );
void printUniversal();
void printStandard();
~Time();
Destructor
6
Constructor & Destructor
• Constructor  member function yang 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
– Tidak memiliki return value (default: void)
7
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
8
Object Class
• Deklarasi Object Class
•
•
•
•
Time timeObject; //object biasa
Time timeArray[ 10 ]; // object array
Time *timePtr; //object pointer
Time &timeRef = timeObject; // object reference
9
Access with scope resolution
operator (::)
ClassName :: classMemberName
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" );
}
10
Topik Minggu Depan
• Inheritance (Turunan)
• Tugas: Mahasiswa membuat program
sederhana dengan mengggunakan
konsep Encapsulation: Sistem Elevator
Sederhana
• Tugas(optional): Studi KasusIntercomputer Communications (Ref:
buku-C is for control)
11