REKAYASA PERANGKAT
REKAYASA PERANGKAT
LUNAK (RPL)
LUNAK (RPL)
Implementasi PL
Implementasi PL
Pendahuluan
Pendahuluan
Relevansi
Relevansi
Perkuliahan
Perkuliahan
–
–
Akankah
Akankah
kita
kita
bisa
bisa
menikmati
menikmati
gedung/rumah
gedung/rumah
dari
dari
sebuah
sebuah
gambar
gambar
rancangan
rancangan
tanpa
tanpa
membangunnya
membangunnya
?
?
–
–
Implementasi
Implementasi
PL
PL
adalah
adalah
satu
satu
-
-
satunya
satunya
jalan
jalan
agar PL
agar PL
yang
yang
sudah
sudah
dirancang
dirancang
dengan
dengan
baik
baik
dapat
dapat
digunakan
digunakan
Tujuan
Tujuan
Instruksional
Instruksional
Khusus
Khusus
Mahasiswa
Mahasiswa
akan
akan
dapat
dapat
menjabarkan
menjabarkan
bagaimana
bagaimana
mentransformasikan
mentransformasikan
hasil
hasil
perancangan
perancangan
PL
PL
ke
ke
dalam
dalam
bahasa
Agenda
Agenda
Pembahasan
Pembahasan
Pengertian
Pengertian
dan
dan
Metode
Metode
Bahasa
Bahasa
Object Oriented Programming
Object Oriented Programming
-
-
OOP
OOP
OOP
OOP
: C++
: C++
OOP
OOP
: Java
: Java
Implementasi
Pengertian
Pengertian
,
,
Metode
Metode
Implementasi
Implementasi
hasil
hasil
dari
dari
perancangan
perancangan
ke
ke
dalam
dalam
kode
kode
(
(
coding
coding
)
)
sesuai
sesuai
dengan
dengan
sintaks
sintaks
dari
dari
bahasa
bahasa
pemrograman
pemrograman
yang
yang
digunakan
digunakan
Metode
Metode
:
:
–
–
Pemrograman
Pemrograman
terstruktur
terstruktur
(
(
Structured Programming
Structured Programming
-
-SP
SP
)
)
–
–
Pemrograman
Pemrograman
berorientasi
berorientasi
objek
objek
(O
(O
bject Oriented
bject Oriented
Programming
Bahasa
Bahasa
Structured Programming
Structured Programming
:
:
–
–
C
C
–
–
Pascal
Pascal
–
–
Basic,
Basic,
dll
dll
.
.
Object Oriented Programming
Object Oriented Programming
:
:
–
–
C++
C++
–
–
Java
Java
–
–
Smalltalk,
Smalltalk,
dll
dll
.
.
Object Oriented Programming
Object Oriented Programming
Enkapsulasi
Enkapsulasi
(
(
encapsulation
encapsulation
)
)
–
–
abstraksi
abstraksi
data
data
dan
dan
fungsi
fungsi
–
–
direpresentasikan
direpresentasikan
dalam
dalam
sebuah
sebuah
klas
klas
:
:
atribut
atribut
dan
dan
operasi
operasi
Penyembunyian
Penyembunyian
Informasi
Informasi
(
(
information hiding
information hiding
)
)
–
–
pengaturan akses terhadap anggota klas (atribut dan operasi) dar
pengaturan akses terhadap anggota klas (atribut dan operasi) dar
i sebuah
i sebuah
klas maupun klas itu sendiri
klas maupun klas itu sendiri
–
–
public
public
, private
,
private
, protected
,
protected
dan
dan
friend
friend
Pewarisan
Pewarisan
(
(
inheritance
inheritance
)
)
–
–
penurunan
penurunan
karakteristik
karakteristik
dan
dan
perilaku
perilaku
sebuah
sebuah
klas
klas
–
–
klas
klas
turunan
turunan
(derived class/sub class)
(derived class/sub class)
–
–
klas
klas
induk/dasar
induk/dasar
(super class)
(super class)
Polimorfisme
Polimorfisme
(
(
polymorphism
polymorphism
)
)
–
–
sebuah
sebuah
operasi/antar
operasi/antar
muka
muka
yang
yang
memiliki
memiliki
banyak
banyak
bentuk
bentuk
implementasi
implementasi
–
Object Oriented Programming : C++
Object Oriented Programming : C++
Class/Object
Class/Object
–
–
sifat
sifat
akses
akses
anggota
anggota
klas
klas
(
(
atribut
atribut
&
&
operasi
operasi
) : private
) :
private
(
(
klas
klas
ybs
ybs
.),
.),
protected
protected
(
(
klas
klas
ybs
ybs
.
.
dan
dan
turunannya
turunannya
), public
),
public
(
(
semua
semua
klas
klas
)
)
dan
dan
friend
friend
(
(
klas
klas
tertentu
tertentu
yg
yg
diberi
diberi
hak
hak
)
)
–
–
memiliki
memiliki
konstruktor
konstruktor
dan
dan
destruktor
destruktor
class Sensor{
friend class Display;
public: enum OperatingState {Off, StandBy, Monitor}; // Create a Sensor
Sensor (); // Destructor ~Sensor ();
int ConvertTo (float theScale, float theBias, char* unitsOfMeasure); int AddressOf ();
OperatingState StateOf (); void WaitForMonitor (); // Initialize and Monitor the Sensor
int Initialize (int theInitSequence); void MonitorForAlarmCondition (); ……
Object Oriented Programming : C++
Object Oriented Programming : C++
Class/Object (
Class/Object (
lanjutan
lanjutan
)
)
protected: // Attribute for Sensor – accessible only to derived classes char* ModelNumber; char* Manufacturer; int InitSequence; float Interval; int Address; OperatingState State; float Threshold; float Value; ……
private: // Class variable identifying object type static char* theObjectType = “Sensor”; float Sample();
int SetModelNumber (char* aModelNumber); int SetManufacturer (char* aManufacturer); ……
};
// Declaration of object
Object Oriented Programming : C++
Object Oriented Programming : C++
Generalization
Generalization
–
–
Specialization
Specialization
–
–
mendukung single
mendukung
single
dan multiple inheritance
dan
multiple inheritance
–
–
klas turunan dpt dideklarasikan sbg.
klas turunan dpt dideklarasikan sbg.
public
public
(semua anggota klas
(semua anggota klas
dasarnya dibuat public di klas turunannya) atau
dasarnya dibuat public di klas turunannya) atau private
private
(semua
(semua
anggota klas dasarnya dibuat private di klas turunannya)
anggota klas dasarnya dibuat private di klas turunannya)
class CriticalSensor : public Sensor {
public: // Create and destroy a CriticalSensor CriticalSensor ();
CriticalSensor (const CriticalSensor& aSensor, int theAddress); ~CriticalSensor ();
// Access
float ToleranceOf ();
void MonitorForAlarmCondition (); protected: float Tolerance;
private: int SetTolerance (float theTolerance); ……
Object Oriented Programming : C++
Object Oriented Programming : C++
Aggregation
Aggregation
–
–
mendukung pendefinisian klas dalam klas
mendukung pendefinisian klas dalam klas
Attribute, Service : member
Attribute, Service : member
–
–
sifat akses : private
sifat akses :
private
,
,
protected
protected
,
,
public
public
dan
dan
friend
friend
–
–
atribut dpt dideklarasikan sbg. static
atribut dpt dideklarasikan sbg.
static
(satu instansiasi untuk semua
(satu instansiasi untuk semua
objek dari klas ybs.)
objek dari klas ybs.)
–
–
konstruktor dan destruktor harus memiliki nama yg sama dengan
konstruktor dan destruktor harus memiliki nama yg sama dengan
nama klasnya, destruktor diawali dengan tanda
nama klasnya, destruktor diawali dengan tanda
tilde
tilde
(~)
(~)
class Sensor{
public: Building BuildingAttachedTo (); protected: Building AssociatedBuilding; };
Object Oriented Programming : C++
Object Oriented Programming : C++
Attribute, Service : member (lanjutan)
Attribute, Service : member (lanjutan)
void Sensor::MonitorForAlarmCondition (); {
float SensorReading = 0.0;
AlarmDevice* WarningAlarmDevice = NULL; AlarmEvent* WarningAlarmEvent = NULL;
// Precondition State = StandBy if (StateOf () != StandBy)
ReportError (“Invalid State”); else
{
this.WaitForMonitor (); // trigger on State = Monitor while (StateOf () == Monitor)
{ delay (Interval); …… } }; delete WarningAlarmDevice; delete WarningAlarmEvent; };
Object Oriented Programming : Java
Object Oriented Programming : Java
Class/Object
Class/Object
–
–
sifat akses anggota klas (atribut & operasi) : private
sifat akses anggota klas (atribut & operasi) :
private
(klas ybs.),
(klas ybs.),
protected
protected
(klas ybs. dan turunannya) dan public
(klas ybs. dan turunannya) dan
public
(semua klas)
(semua klas)
–
–
memiliki konstruktor dan tidak ada destruktor
memiliki konstruktor dan tidak ada destruktor
public class Sensor{ // Create a Sensor public Sensor () { // kode di sini }
public int ConvertTo (float theScale, float theBias, String unitsOfMeasure) { // kode di sini }
public int AddressOf () { // kode di sini }
public OperatingState StateOf () { // kode di sini } public void WaitForMonitor () { // kode di sini } // Initialize and Monitor the Sensor
public int Initialize (int theInitSequence); public void MonitorForAlarmCondition (); ……
Object Oriented Programming : Java
Object Oriented Programming : Java
Class/Object (lanjutan)
Class/Object (lanjutan)
// Attribute for Sensor – accessible only to derived classes protected String ModelNumber;
protected String Manufacturer; protected int InitSequence; protected float Interval; protected int Address; protected OperatingState State; protected float Threshold; protected float Value; ……
// Class variable identifying object type
private static String theObjectType = “Sensor”; // Attribute for Sensor – accessible only to this classes private float Sample();
private int SetModelNumber (String aModelNumber); private int SetManufacturer (String aManufacturer); ……
};
// Object instantiation
Object Oriented Programming : Java
Object Oriented Programming : Java
Generalization
Generalization
–
–
Specialization
Specialization
–
–
mendukung single inheritance
mendukung
single inheritance
saja
saja
–
–
menggunakan istilah
menggunakan istilah
‘
‘
extends
extends
’
’
untuk mewarisi, dan
untuk mewarisi, dan
‘super
‘
super
’
’
untuk
untuk
menunjuk ke klas induknya
menunjuk ke klas induknya
–
–
klas turunan akan mendapatkan akses atribut dan operasi dari kla
klas turunan akan mendapatkan akses atribut dan operasi dari kla
s
s
induk yang bukan
induk yang bukan
private
private
public class CriticalSensor extends Sensor { // Create a CriticalSensor public CriticalSensor () { // kode di sini } // Access
public float ToleranceOf () { // kode di sini )
public void MonitorForAlarmCondition () { // kode di sini ) protected float Tolerance;
private int SetTolerance (float theTolerance) { // kode di sini ) ……
Object Oriented Programming : Java
Object Oriented Programming : Java
Aggregation
Aggregation
–
–
mendukung pendefinisian klas dalam klas
mendukung pendefinisian klas dalam klas
Attribute, Service
Attribute, Service
–
–
sifat akses : private
sifat akses :
private
,
,
protected
protected
dan
dan
public
public
–
–
atribut dpt dideklarasikan sbg. static
atribut dpt dideklarasikan sbg.
static
(satu instansiasi untuk semua
(satu instansiasi untuk semua
objek dari klas ybs.)
objek dari klas ybs.)
–
–
tidak ada destruktor
tidak ada destruktor
–
–
deklarasi dan definisi operasi harus dalam satu klas yang sama
deklarasi dan definisi operasi harus dalam satu klas yang sama
public class Sensor{
public Building BuildingAttachedTo (); protected Building AssociatedBuilding;
Object Oriented Programming : Java
Object Oriented Programming : Java
Attribute, Service (lanjutan)
Attribute, Service (lanjutan)
public class Sensor {
private staticString theObjectType = “Sensor”; // Create a Sensor
public Sensor () {
} ……
public void MonitorForAlarmCondition () {
float SensorReading = 0.0;
AlarmDevice WarningAlarmDevice = NULL; AlarmEvent WarningAlarmEvent = NULL; // Precondition State = StandBy
if (StateOf () != StandBy)
ReportError (“Invalid State”); else { // kode di sini } // kode di sini } ……
Implementasi Perancangan (1)
Implementasi Perancangan (1)
Pemrograman Terstruktur
Pemrograman Terstruktur
Monitor sensors executive Establish alarm conditions Alarm output controller Produce display Generate alarm signal Set up conn. to phone net Generate pulses to line Acquire response info Read sensors /* File MonitorSensorsExecutive.c */ # include MonitorSensorsExecutive.h; void ResetSensor (int IDSensor); void ResetAlarm (int IDAlarm); ……/* File MonitorSensorsExecutive.h */ # include ……
void ResetSensor (int IDSensor); void ResetAlarm (int IDAlarm); ……
Implementasi Perancangan (2)
Implementasi Perancangan (2)
Pemrograman Berorientasi Objek
Pemrograman Berorientasi Objek
Vehicle color style year make VehicleOTS VIN validateVIN()
public class VehicleOTS {
privateString VIN; public VehicleOTS () {
}
public void validateVIN (String theVIN) {
// kode di sini }
}
public class Vehicle extends VehicleOTS { privateString color; privateString style; privateDate year; privateString make; public Vehicle () { } }